|

楼主 |
发表于 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。如果需要的话我就再贴上。只是可能就会比较长... |
|