|  | 
 
 
 楼主|
发表于 2020-8-8 12:05:32
|
显示全部楼层 
| 本帖最后由 lqhenwunai 于 2020-8-8 12:09 编辑 
 
 复制代码#!/usr/bin/python3
import sys
import numpy as np
class molecule:
        def __init__(self):
                self.Atoms=[]                                        
                self.XYZ_Coords=np.mat(np.zeros((3,3)))
def Get_dipole_for_each_molecule(Atoms,GeomBlock):
        print("\n")
        print("****WARNING2****: This is only for water")
        Molecules=[]
        
        H2O=molecule()
        NMol=300
        NAtom=len(Atoms)
        H_x_avg=0
        H_y_avg=0
        H_z_avg=0
        j=0
#        tmp_mat=np.mat(np.zeros((3,3)))
        for i in range(NAtom):
                H2O.Atoms.append(Atoms[i])
#                tmp_mat[j,0]=GeomBlock[i,0]                
#                tmp_mat[j,1]=GeomBlock[i,1]
#                tmp_mat[j,2]=GeomBlock[i,2]
                H2O.XYZ_Coords[j,0]=GeomBlock[i,0]
                H2O.XYZ_Coords[j,1]=GeomBlock[i,1]
                H2O.XYZ_Coords[j,2]=GeomBlock[i,2]
#                H2O.XYZ_Coords=tmp_mat
                j+=1
                if (i+1)%3==0:
                        Molecules.append(H2O)
                        print(i+1,H2O.XYZ_Coords)
                        j=0
                if i==10:
                        break
        print(Molecules[0].XYZ_Coords)
        print(Molecules[1].XYZ_Coords)
        for i in range(300):
                pass
#                print(Molecules[i].Atoms[i],Molecules[i].XYZ_Coords)
        #        H_x_avg=H_x_avg+GeomBlock[i,0]
#                        H_y_avg=H_y_avg+GeomBlock[i,1]
#                        H_z_avg=H_z_avg+GeomBlock[i,2]
 
 其中Atoms 是个NAtom 大小的由字符串组成的列表。GeomBlock是一个(NAtom,3)维的由numpy定义的matrix。如果需要的话我就再贴上。只是可能就会比较长...
 | 
 |