Exemplo n.º 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
Exemplo n.º 2
0
if not mf.converged:
    mf = mf.newton()
    mf.kernel()
for i in range(my_kwargs['num_mf_stab_checks']):
    new_mo = mf.stability()[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)
Exemplo n.º 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