예제 #1
0
def run (mf, CASlist=None, **kwargs):
    # I/O
    # --------------------------------------------------------------------------------------------------------------------
    mol = mf.mol
    my_kwargs = {'calcname':           'me2n2_lasscf',
                 'doLASSCF':           True,
                 'debug_energy':       False,
                 'debug_reloc':        False,
                 'nelec_int_thresh':   1e-5,
                 'num_mf_stab_checks': 0}
    bath_tol = 1e-8
    my_kwargs.update (kwargs)
    
    # Set up the localized AO basis
    # --------------------------------------------------------------------------------------------------------------------
    myInts = localintegrals.localintegrals(mf, range(mol.nao_nr ()), 'meta_lowdin')
    
    # Build fragments from atom list
    # --------------------------------------------------------------------------------------------------------------------
    N2 = make_fragment_atom_list (myInts, list (range(2)), 'CASSCF(4,4)', name="N2")
    N2.target_S = N2.target_MS = mol.spin // 2
    Me1 = make_fragment_atom_list (myInts, list (range(2,6)), 'RHF', name='Me1')
    Me2 = make_fragment_atom_list (myInts, list (range(6,10)), 'RHF', name='Me2')
    N2.bath_tol = Me1.bath_tol = Me2.bath_tol = bath_tol
    fraglist = [N2, Me1, Me2] 
    
    # Generate active orbital guess 
    # --------------------------------------------------------------------------------------------------------------------
    me2n2_dmet = dmet (myInts, fraglist, **my_kwargs)
    me2n2_dmet.generate_frag_cas_guess (mf.mo_coeff, caslst=CASlist, force_imp=True, confine_guess=False)
    
    # Calculation
    # --------------------------------------------------------------------------------------------------------------------
    e = me2n2_dmet.doselfconsistent ()
    me2n2_dmet.lasci_log.close ()
    return e
예제 #2
0
    dm0 = reduce(np.dot, (new_mo, np.diag(mf.mo_occ), new_mo.conjugate().T))
    mf = scf.RHF(mol)
    mf.verbose = 4
    mf.kernel(dm0)
    if not mf.converged:
        mf = mf.newton()
        mf.kernel()

# Set up the localized AO basis
# --------------------------------------------------------------------------------------------------------------------
myInts = localintegrals.localintegrals(mf, range(mol.nao_nr()), 'meta_lowdin')
myInts.molden(my_kwargs['calcname'] + '_locints.molden')

# Build fragments from atom list
# --------------------------------------------------------------------------------------------------------------------
N2 = make_fragment_atom_list(myInts, list(range(2)), 'CASSCF(4,4)', name="N2")
Me1 = make_fragment_atom_list(myInts, list(range(2, 6)), 'RHF', name='Me1')
Me2 = make_fragment_atom_list(myInts, list(range(6, 10)), 'RHF', name='Me2')
N2.bath_tol = Me1.bath_tol = Me2.bath_tol = bath_tol
fraglist = [N2, Me1, Me2]

# Load or generate active orbital guess
# --------------------------------------------------------------------------------------------------------------------
me2n2_dmet = dmet(myInts, fraglist, **my_kwargs)
if load_casscf_guess:
    npyfile = 'me2n2_casano.{:.1f}.npy'.format(r_nn)
    norbs_cmo = (mol.nelectron - 4) // 2
    norbs_amo = 4
    N2.load_amo_guess_from_casscf_npy(npyfile, norbs_cmo, norbs_amo)
elif dr_guess is not None:
    chkname = 'me2n2_casdmet_r{:2.0f}'.format(dr_guess * 10)
예제 #3
0
def build(mf,
          m1=0,
          m2=0,
          ir1=0,
          ir2=0,
          CASlist=None,
          active_first=False,
          calcname='c2h4n4',
          **kwargs):
    # I/O
    # --------------------------------------------------------------------------------------------------------------------
    mol = mf.mol
    my_kwargs = {
        'calcname': calcname,
        'doLASSCF': True,
        'debug_energy': False,
        'debug_reloc': False,
        'nelec_int_thresh': 1e-3,
        'num_mf_stab_checks': 0,
        'do_conv_molden': False
    }
    bath_tol = 1e-8
    my_kwargs.update(kwargs)

    # Set up the localized AO basis
    # --------------------------------------------------------------------------------------------------------------------
    myInts = localintegrals.localintegrals(mf, range(mol.nao_nr()),
                                           'meta_lowdin')

    # Build fragments from atom list
    # --------------------------------------------------------------------------------------------------------------------
    N2Ha = make_fragment_atom_list(myInts,
                                   list(range(3)),
                                   'CASSCF(4,4)',
                                   name='N2Ha')  #, active_orb_list = CASlist)
    C2H2 = make_fragment_atom_list(myInts,
                                   list(range(3, 7)),
                                   'RHF',
                                   name='C2H2')
    N2Hb = make_fragment_atom_list(myInts,
                                   list(range(7, 10)),
                                   'CASSCF(4,4)',
                                   name='N2Hb')  #, active_orb_list = CASlist)
    N2Ha.bath_tol = C2H2.bath_tol = N2Hb.bath_tol = bath_tol
    N2Ha.target_S = abs(m1)
    N2Ha.target_MS = m1
    #N2Ha.mol_output = calcname + '_N2Ha.log'
    N2Hb.target_S = abs(m2)
    N2Hb.target_MS = m2
    #N2Hb.mol_output = calcname + '_N2Hb.log'
    if mol.symmetry:
        N2Ha.wfnsym = ir1
        N2Hb.wfnsym = ir2
    fraglist = [N2Ha, C2H2, N2Hb]

    # Load or generate active orbital guess
    # --------------------------------------------------------------------------------------------------------------------
    c2h4n4_dmet = dmet(myInts, fraglist, **my_kwargs)
    c2h4n4_dmet.generate_frag_cas_guess(mf.mo_coeff,
                                        caslst=CASlist,
                                        force_imp=active_first,
                                        confine_guess=(not active_first))

    # Calculation
    # --------------------------------------------------------------------------------------------------------------------
    return c2h4n4_dmet
예제 #4
0
    mf = scf.RHF(mol)
    mf.verbose = 4
    mf.kernel(dm0)
    if not mf.converged:
        mf = mf.newton()
        mf.kernel()

# Set up the localized AO basis
# --------------------------------------------------------------------------------------------------------------------
myInts = localintegrals.localintegrals(mf, range(mol.nao_nr()), 'meta_lowdin')
myInts.molden(my_kwargs['calcname'] + '_locints.molden')

# Build fragments from atom list
# --------------------------------------------------------------------------------------------------------------------
N2Ha = make_fragment_atom_list(myInts,
                               list(range(3)),
                               'CASSCF(4,4)',
                               name='N2Ha')  #, active_orb_list = CASlist)
C2H2 = make_fragment_atom_list(myInts, list(range(3, 7)), 'RHF', name='C2H2')
N2Hb = make_fragment_atom_list(myInts,
                               list(range(7, 10)),
                               'CASSCF(4,4)',
                               name='N2Hb')  #, active_orb_list = CASlist)
N2Ha.bath_tol = C2H2.bath_tol = N2Hb.bath_tol = bath_tol
fraglist = [N2Ha, C2H2, N2Hb]

# Load or generate active orbital guess
# --------------------------------------------------------------------------------------------------------------------
c2h4n4_dmet = dmet(myInts, fraglist, **my_kwargs)
if load_casscf_guess:
    npyfile = 'c2h4n4_cas8_ano.{:.1f}.npy'.format(dr_nn)
    norbs_cmo = (mol.nelectron - 8) // 2
예제 #5
0
    dm0 = reduce(np.dot, (new_mo, np.diag(mf.mo_occ), new_mo.conjugate().T))
    mf = scf.RHF(mol)
    mf.verbose = 4
    mf.kernel(dm0)
    if not mf.converged:
        mf = mf.newton()
        mf.kernel()

# Set up the localized AO basis
# --------------------------------------------------------------------------------------------------------------------
myInts = localintegrals.localintegrals(mf, range(mol.nao_nr()), 'meta_lowdin')
myInts.molden(my_kwargs['calcname'] + '_locints.molden')

# Build fragments from atom list
# --------------------------------------------------------------------------------------------------------------------
N2 = make_fragment_atom_list(myInts, list(range(2)), 'CASSCF(4,4)', name="N2")
N2.bath_tol = bath_tol
fraglist = [N2]

# Load or generate active orbital guess
# --------------------------------------------------------------------------------------------------------------------
me2n2_dmet = dmet(myInts, fraglist, **my_kwargs)
if load_casscf_guess:
    npyfile = 'me2n2_casano.{:.1f}.npy'.format(r_nn)
    norbs_cmo = (mol.nelectron - 4) // 2
    norbs_amo = 4
    N2.load_amo_guess_from_casscf_npy(npyfile, norbs_cmo, norbs_amo)
elif dr_guess is not None:
    chkname = 'me2n2_1edmet_r{:2.0f}'.format(dr_guess * 10)
    me2n2_dmet.load_checkpoint(chkname + '.chk.npy')
else:
예제 #6
0
fake_occ[:norbs_cmo] = 2
fake_occ[norbs_cmo:norbs_omo] = 1
#molden.from_mo (mol, my_kwargs['calcname'] + '_avas.molden', mo, occ=fake_occ)
#if spinS == 0:
#    mf.mo_coeff = mo
'''

# Set up the localized AO basis
# --------------------------------------------------------------------------------------------------------------------
myInts = localintegrals.localintegrals(mf, range(mol.nao_nr()), 'meta_lowdin')
#myInts.molden( my_kwargs['calcname'] + '_locints.molden' )

# Build fragments from atom list
# --------------------------------------------------------------------------------------------------------------------
Fe = make_fragment_atom_list(myInts, [0],
                             'CASSCF(6,5)',
                             name="Fe",
                             add_virtual_bath=add_virtual_bath)
NCHa = make_fragment_atom_list(myInts, [1, 7, 8], 'dummy RHF', name='NCHa')
NCHb = make_fragment_atom_list(myInts, [2, 13, 14], 'dummy RHF', name='NCHb')
NCHc = make_fragment_atom_list(myInts, [3, 9, 10], 'dummy RHF', name='NCHc')
NCHd = make_fragment_atom_list(myInts, [4, 11, 12], 'dummy RHF', name='NCHd')
NCHe = make_fragment_atom_list(myInts, [5, 17, 18], 'dummy RHF', name='NCHe')
NCHf = make_fragment_atom_list(myInts, [6, 15, 16], 'dummy RHF', name='NCHf')
Fe.target_S = spinS
Fe.target_MS = spinS
Fe.mol_output = my_kwargs['calcname'] + '_Fe.log'
Fe.imp_maxiter = 200
Fe.bath_tol = NCHa.bath_tol = NCHb.bath_tol = NCHc.bath_tol = NCHd.bath_tol = NCHe.bath_tol = NCHf.bath_tol = bath_tol
Fe.debug_energy = NCHa.debug_energy = True
fraglist = [Fe, NCHa, NCHb, NCHc, NCHd, NCHe, NCHf]
for l, x in zip(['a', 'b', 'c', 'd', 'e', 'f'],
예제 #7
0
    mf = scf.RHF(mol)
    mf.verbose = 4
    mf.kernel(dm0)
    if not mf.converged:
        mf = mf.newton()
        mf.kernel()

# Set up the localized AO basis
# --------------------------------------------------------------------------------------------------------------------
myInts = localintegrals.localintegrals(mf, range(mol.nao_nr()), 'meta_lowdin')
myInts.molden(my_kwargs['calcname'] + '_locints.molden')

# Build fragments from atom list
# --------------------------------------------------------------------------------------------------------------------
N2Ha = make_fragment_atom_list(myInts,
                               list(range(3)),
                               'CASSCF(4,4)',
                               name='N2Ha')  #, active_orb_list = CASlist)
C2H4 = make_fragment_atom_list(myInts, list(range(3, 9)), 'RHF', name='C2H4')
N2Hb = make_fragment_atom_list(myInts,
                               list(range(9, 12)),
                               'CASSCF(4,4)',
                               name='N2Hb')  #, active_orb_list = CASlist)
N2Ha.bath_tol = C2H4.bath_tol = N2Hb.bath_tol = bath_tol
fraglist = [N2Ha, C2H4, N2Hb]

# Load or generate active orbital guess
# --------------------------------------------------------------------------------------------------------------------
c2h6n4_dmet = dmet(myInts, fraglist, **my_kwargs)
if load_casscf_guess:
    npyfile = 'c2h6n4_casano.{:.1f}.npy'.format(dr_nn)
    norbs_cmo = (mol.nelectron - 8) // 2