|
|
本帖最后由 Graphite 于 2020-11-16 11:46 编辑
可以算每个原子对距离的同时进行计数。
我写的RDF代码(python)的其中一段,self.pcf是个字典,键是距离r(1 dr ~ 10.0,间隔为dr),值是距离落在r ~r+dr的原子对的计数。 if periodic:
p_vectors = list()
for xmulti in (0, -1, 1):
for ymulti in (0, -1, 1):
for zmulti in (0, -1, 1):
p_vector = np.array([xmulti * self.xlength, ymulti * self.ylength, zmulti * self.zlength])
p_vectors.append(p_vector)
for ref in self.atomtypedict[str(refatomtype)]:
for target in self.atomtypedict[str(targetatomtype)]:
r_ref = np.array(self.atomdict[ref][3:6])
r_target = np.array(self.atomdict[target][3:6])
for p_vector in p_vectors:
dist = np.linalg.norm(r_ref - r_target - p_vector)
for r in self.pcf.keys():
if dist > r and dist < r + dr:
self.pcf[r] += 1
|
|