예제 #1
0
파일: pyDensity.py 프로젝트: stvogt/kudi
    def fukuiPlusMartinez(self):
        print "-----------------------------------------------------------------"
        print "\nProcessing Chi plus.... \n\n"
        occ_orb = sp.get_orbitals(self.lines)[0]
        all_orb = sp.get_orbitals(self.lines)[2]
        molecule = self.fchkFile.split("_")[0]
        chiplus=[] 
        denvirt=0.0 
        # Compute the denominator of chiplus
        start = int(len(occ_orb))
        for j in range(start,len(all_orb)):
          ek_ej = float(all_orb[-1])-float(all_orb[j])
          denvirt= denvirt + ek_ej
        # Compute the division to get total chiplus
        for i in range(start,len(all_orb)):
          chiplus_i=(float(all_orb[-1])-float(all_orb[i]))/denvirt
          chiplus.append(chiplus_i)
 
          if i==start:
            cub_sum="F_plus_"+molecule+".cub"
            input1="cubegen 0 MO="+str(i+1)+" "+self.fchkFile+" "+cub_sum+" 0 h" 
            commands.getstatusoutput(input1)
            cubman.sq_cube(cub_sum)
            cubman.mult_cube(cub_sum+"_sq",chiplus_i)
          if i>start:
            cub_out=molecule+"_"+str(i+1)+".cub"
            input1="cubegen 0 MO="+str(i+1)+" "+self.fchkFile+" "+cub_out+" 0 h" 
            commands.getstatusoutput(input1)
            cubman.sq_cube(cub_out)
            cubman.mult_cube(cub_out+"_sq",chiplus_i)
            cubman.sum_total(cub_sum+"_sq"+"_mult",cub_out+"_sq"+"_mult") 		
        os.system("mv "+cub_sum+"_sq_mult"+" fukuiPlusIAP.cub")
        cub_final = "fukuiPlusIAP.cub"
        return cub_final
예제 #2
0
파일: irclib.py 프로젝트: stvogt/ircmagic
def all_symm_orbs_energ(lines):
    occ_energ_symm = {}
    virt_energ_symm = {}
    blocks = get_blocks(lines)
    for blockNum in range(0,len(blocks)):
        # Get the dictcionary with the number of orbitals and respective symmetries
        Occ_dict_num = sp.get_symm_orbs(blocks[blockNum])[0]
        Virt_dict_num = sp.get_symm_orbs(blocks[blockNum])[1]
        #Get the orbital energies:
        occ_energ = sp.get_orbitals(blocks[blockNum])[0]
        virt_energ = sp.get_orbitals(blocks[blockNum])[1]
        all_orbs = sp.get_orbitals(blocks[blockNum])[2]
        #In the first block initialize the symm_orbital dictcionary
        if blockNum == 0:
            for itemNum in range(1,len(occ_energ)+1):
                symm = Occ_dict_num[itemNum]
                occ_energ_symm[symm] = []
            for itemNum in range(len(occ_energ)+1, len(all_orbs)+1):
                symm = Virt_dict_num[itemNum]
                virt_energ_symm[symm] = []
        # Appending the orbital energies of that point in the IRC with the orbtial enengies 
        for itemNum in range(1,len(occ_energ)+1):
            symm = str(Occ_dict_num[itemNum])
            occ_energ_symm[symm].append(occ_energ[itemNum-1])
        for itemNum in range(len(occ_energ)+1, len(all_orbs)+1):
            #print itemNum
            symm = str(Virt_dict_num[itemNum])
            virt_energ_symm[symm].append(virt_energ[itemNum-len(occ_energ)-1])
    all_energ_symm = dict(occ_energ_symm.items() + virt_energ_symm.items())        
    return(all_energ_symm, occ_energ_symm, virt_energ_symm)
예제 #3
0
파일: pyDensity.py 프로젝트: stvogt/kudi
 def LUMO(self):
     virt_energy_list = sp.get_orbitals(self.lines)[1]
     occ_energy_list = sp.get_orbitals(self.lines)[0]
     lumo_energy = virt_energy_list[0]
     lumo_number = int(len(occ_energy_list)) + 1
     lumo = cubman.generate_cube(lumo_number,self.fchkpath, "LUMO.cube",True)
     print "LUMO:  "+str(lumo_number) + "  "+lumo_energy
     return lumo
예제 #4
0
파일: pyDensity.py 프로젝트: stvogt/kudi
    def fukuiMinusMartinez(self):
        print "Processing Chi minus.... \n\n"
        occ_orb = sp.get_orbitals(self.lines)[0]
        molecule = self.fchkFile.split("_")[0]
        chiminus=[]
        denocc=0.0
        # Compute the denominator of chimins
        for j in range(1,len(occ_orb)):
            denocc=denocc+float(occ_orb[j])-float(occ_orb[0])	
        # Compute the division to get total chiminus
        for i in range(0,len(occ_orb)):
            chiminus_i = (float(occ_orb[i])-float(occ_orb[0]))/denocc
            chiminus.append(chiminus_i)	
            # Calculo del cubo perteneciente al orbital i-esimo 
            if i==0:
                print "Computing cube for orbital "+str(i)
                cub_sum="F_minus_"+molecule+".cub"
                input1="cubegen 0 MO="+str(i+1)+" "+self.fchkFile+" "+cub_sum+" 0 h" 
                commands.getstatusoutput(input1)
                cubman.sq_cube(cub_sum)
                cubman.mult_cube(cub_sum+"_sq",chiminus_i)

            if i>0:
                print "Computing cube for orbital "+str(i)
                cub_out=molecule+"_"+str(i+1)+".cub"
                input1="cubegen 0 MO="+str(i+1)+" "+self.fchkFile+" "+cub_out+" 0 h" 
                commands.getstatusoutput(input1)
                cubman.sq_cube(cub_out)
                cubman.mult_cube(cub_out+"_sq",chiminus_i)
                cubman.sum_total(cub_sum+"_sq"+"_mult",cub_out+"_sq"+"_mult") 		
        os.system("mv "+cub_sum+"_sq_mult"+" fukuiMinusIAP.cub")
        os.system("rm *cub_sq")
        cub_final = "fukuiMinusIAP.cub"
        return cub_final
예제 #5
0
파일: pyDensity.py 프로젝트: stvogt/kudi
 def H**O(self):
     occ_energy_list = sp.get_orbitals(self.lines)[0]
     homo_energy = occ_energy_list[-1]
     homo_number = len(occ_energy_list)
     h**o = cubman.generate_cube(homo_number,self.fchkpath, "H**O.cube",True)
     print "H**O:  "+str(homo_number) + "  "+homo_energy
     return h**o
예제 #6
0
파일: pyDensity.py 프로젝트: stvogt/kudi
 def localHyperSoftnessFMOA(self):
    occ_energy_list = sp.get_orbitals(self.lines)[0]
    HOMO_enr = occ_energy_list[-1]
    virt_energy_list = sp.get_orbitals(self.lines)[1]
    LUMO_energy = virt_energy_list[0]
    hard = float(HOMO_enr) - float(LUMO_energy)
    print "HARDNESS:  " + str(hard)
    if not os.path.exists("lhsFMOA"):
        os.makedirs("lhsFMOA")
    os.chdir("lhsFMOA")
    print "CALCULATING THE DUAL DESCRIPTOR"
    dual = cubman.substract_cube(self.LUMO(), self.H**O())
    os.system("mv "+dual+" dualFMOA.cub")
    print "MULTIPlYING THE DUAL DESCRIPTOR"
    HS = cubman.mult_cube("dualFMOA.cub", 1.0/(hard*hard))
    os.system("mv "+HS+" lhsFMOA.cub")
    os.chdir("../")
예제 #7
0
파일: pyDensity.py 프로젝트: stvogt/kudi
 def allCubes(self):
     all_orbs = sp.get_orbitals(self.lines)[2]
     for orbNum in range(1,len(all_orbs)+1):
         cubman.generate_cube(orbNum, self.fchkpath,"cube_"+str(orbNum)+".cub")
예제 #8
0
파일: irclib.py 프로젝트: stvogt/ircmagic
def all_orbs(lines):
  all_orbs = []
  blocks = get_blocks(lines)
  for blockNum in range(0,len(blocks)):
    all_orbs.append(sp.get_orbitals(blocks[blockNum]))
  return all_orbs