展开用于扩散率计算的折叠轨迹 - MD

计算科学 分子动力学 平流扩散 扩散
2021-11-29 11:10:36

我刚刚开始使用 dl_poly classic 进行分子动力学模拟。它会生成一个 HISTORY 文件,该文件记录应用边界条件后的轨迹。现在,在这里我不明白,我应该如何使用折叠轨迹计算扩散率其次,在 dl_poly 中有一种方法可以展开轨迹,可能是使用他们可能已经编写的一些计数器(即在不更改源代码的情况下进行操作)。

但是,根据此处基于问题的答案之一,我编写了一个代码来展开折叠轨迹(我试图通过我自己编写的用于模拟氩液而不是 dl_poly 的程序来验证这一点) -

open(unit=11,file='test.out',status='unknown')

  rx(:,1) = x(:,1)
  do j=2,tsteps
  do i=1,nm

    tmp1 = x(i,j-1) - x(i,j) + boxl/2.d0
    tmp1 = tmp1 - boxL*floor(tmp1/boxL)
    tmp2 = boxL/2.d0 - tmp1
    rx(i,j) = rx(i,j-1) + tmp2
    write(11,*) i,j,x(i,j),ox(i,j),rx(i,j),ox(i,j)-rx(i,j)
  end do
  end do

在上面的程序中,x(i,j)是折叠坐标,ox(i,j)是已经存在的展开坐标(这是我编写的模拟程序的输出),rx(i,j)是我从 展开的坐标x(i,j)i对应于ith粒子并且j对应于jth时间步长。

我在使用上述程序时面临的问题是,在某些情况下,我得到的实际展开坐标与实际展开坐标(即 和 之间+boxl存在 差异-boxlox(i,j)rx(i,j)

这是我用来写下这个逻辑的答案,但我也可能写错了。

1个回答

1)您不能,因此您需要不执行此类操作的轨迹,或者需要即时撤消此类包裹的分析实现,例如通过注意到模拟单元大小的跳跃。

2)不知道,试试 dl_poly 文档。