Ejemplo n.º 1
0
def gathermo_vecs(flist, act_orbs):
    '''
  input
  flist - chkfile list 
  act_orbs - orbitals you want to optimize basis for
  output
  vecs_list - vectors list, shape: act_mo x nvectors x ncomps
  ovlp - overlap necessary for constraints
  '''
    vecs_list = []
    for f, a in zip(flist, act_orbs):
        mol = lib.chkfile.load_mol(f)
        m = ROHF(mol)
        m.__dict__.update(lib.chkfile.load(f, 'scf'))
        vecs = m.mo_coeff[:, a].T
        vecs_list.append(vecs)
    vecs_list = np.array(vecs_list)
    vecs_list = np.einsum('ijk->jik', vecs_list)
    return vecs_list, m.get_ovlp()
Ejemplo n.º 2
0
m.__dict__.update(lib.chkfile.load('rohf/Cuvtz_r1.725_s1_ROHF_0.chk', 'scf'))

for i in (mol.basis["Cu"]):
    if (len(cu_basis) < 2):
        if (i[0] == 0): cu_basis.append(i)
    elif (len(cu_basis) == 2):
        if (i[0] == 1): cu_basis.append(i)
    elif (len(cu_basis) == 3):
        if (i[0] == 2): cu_basis.append(i)
    else:
        pass
o_basis = []
for i in (mol.basis["O"]):
    if (len(o_basis) == 0):
        if (i[0] == 0): o_basis.append(i)
    elif (len(o_basis) == 1):
        if (i[0] == 1): o_basis.append(i)
    else:
        pass
minbasis = {'Cu': cu_basis, 'O': o_basis}

#Build IAOs
s = m.get_ovlp()
a = lo.iao.iao(mol, mo_coeff, minao=minbasis)
a = lo.vec_lowdin(a, s)
a.dump('b3lyp_iao_b.pickle')

#Plot IAOs
m.mo_coeff[:, :a.shape[1]] = a
print_qwalk_mol(mol, m, method='scf', basename='qwalk/b3lyp_iao_b')