Ejemplo n.º 1
0
              #Always doubly-occupy the 3p orbitals for the TM atom
              for p in TM_3p_orbitals:
                for s in [0,1]:
                  dm[s,p,p]=1

              #Control the 3d occupancy for CrO...
              if (el=='Cr'):
                for i,d in enumerate(TM_3d_orbitals):

                  #These are the 3d orbitals we want to fill to get the correct symmetry
                  if ( ('xy' in aos[d]) or ('yz' in aos[d]) or ('z^2' in aos[d]) or ('x2-y2' in aos[d]) ):
                    print('We are singly filling this d-orbital: '+np.str(aos[d]) )
                    dm[0,d,d]=1
      
              m.chkfile=el+basis+"_r"+str(r)+"_s"+str(S[run])+"_"+method+"_"+str(run)+".chk"
              m.irrep_nelec = symm_dict[run]
              m.max_cycle=100
              m = addons.remove_linear_dep_(m)
              m.conv_tol=1e-6
              
              #Only need an initial guess for CrO and CuO...
              if (el=='Cr' or el=='Cu'):
                total_energy=m.kernel(dm)
              else:
                total_energy=m.kernel()
         
              #Compute the Mulliken orbital occupancies...
              m.analyze()
              assert(np.sum(m.mo_occ)==25)
Ejemplo n.º 2
0
          if("U" in method): 
            if("HF" in method): 
              m=UHF(mol)
            else:
              m=UKS(mol)
              m.xc=method[1:]
          else: 
            if(method=="ROHF"):
              m=ROHF(mol)
            else:
              m=ROKS(mol)
              m.xc=method

          if basis=='vdz':
            #m=m.newton()
            m.chkfile= '3d8_vdz.chk' #el+basis+"_r"+str(r)+"_s"+str(S[run])+"_"+method+"_"+str(run)+".chk"
            m.irrep_nelec = symm_dict[run]
            m.max_cycle=100
            m = addons.remove_linear_dep_(m)
            m.conv_tol=1e-5
            m.diis=scf.ADIIS()
            total_energy=m.kernel()
            
            #Compute the Mulliken orbital occupancies...
            m.analyze()
            #m.stability(external=True)
            assert(np.sum(m.mo_occ)==25)
          
          #Once we get past the vdz basis, just read-in the existing chk file...
          else:
            dm= m.from_chk('3d8_vdz.chk') #m.from_chk(el+'vdz'+"_r"+str(r)+"_s"+str(S[run])+"_"+method+"_"+str(run)+".chk")
Ejemplo n.º 3
0
          if("U" in method): 
            if("HF" in method): 
              m=UHF(mol)
            else:
              m=UKS(mol)
              m.xc=method[1:]
          else: 
            if(method=="ROHF"):
              m=ROHF(mol)
            else:
              m=ROKS(mol)
              m.xc=method

          if basis=='vdz':
            #m=m.newton()
            m.chkfile=el+basis+"_r"+str(r)+"_s"+str(S)+"_"+method+"_"+str(run)+"mirror.chk"
            m.irrep_nelec = symm_dict[run]
            m.max_cycle=100
            m = addons.remove_linear_dep_(m)
            m.conv_tol=1e-5
            m.diis=scf.ADIIS()
            total_energy=m.kernel()
            
            #Compute the Mulliken orbital occupancies...
            m.analyze()
            #m.stability(external=True)
            assert(np.sum(m.mo_occ)==25)
          
          #Once we get past the vdz basis, just read-in the existingmirror.chk file...
          else:
            dm=m.from_chk(el+'vdz'+"_r"+str(r)+"_s"+str(S)+"_"+method+"_"+str(run)+"mirror.chk")
Ejemplo n.º 4
0
                            #Control the 3d occupancy for CrO...
                            if (el == 'Cr'):
                                for i, d in enumerate(TM_3d_orbitals):

                                    #These are the 3d orbitals we want to fill to get the correct symmetry
                                    if (('xy' in aos[d]) or ('yz' in aos[d])
                                            or ('z^2' in aos[d])
                                            or ('x2-y2' in aos[d])):
                                        print(
                                            'We are singly filling this d-orbital: '
                                            + np.str(aos[d]))
                                        dm[0, d, d] = 1

                            m.chkfile = el + basis + "_r" + str(
                                r) + "_c" + str(charge) + "_s" + str(
                                    mol.spin
                                ) + "_" + method + "_" + run + ".chk"
                            m.irrep_nelec = symm_dict[run]
                            m.max_cycle = 100
                            m = addons.remove_linear_dep_(m)
                            #m.direct_scf_tol=1e-5
                            m.conv_tol = 1e-6

                            #m.level_shift_factor=0.1
                            #m=scf.newton(m)

                            #Only need an initial guess for CrO and CuO...
                            if (el == 'Cr' or el == 'Cu'):
                                total_energy = m.kernel(dm)
                            else:
                                total_energy = m.kernel()