0

对于我正在制作的分子动力学程序,我的两个模块遇到了一些问题。两者都发生在模块中的力计算中,我尝试更改所有值的精度。其中一个模块打印在下面。我在第 14 行得到错误,第一次力计算,我假设其余的也会有问题。有什么建议么?

module morseforce

contains

  subroutine morse(x1,x2,y1,y2,z1,z2,axi,axj,ayi,ayj,azi,azj,m)
    double precision,intent(in)::x1,x2,y1,y2,z1,z2
    double precision,intent(out)::axi,axj,ayi,ayj,azi,azj
    double precision::rx,ry,rz,rmag
    double precision::fx2,fy2,fz2,fx1,fy1,fz1,m
    double precision::De=118.1d0,alpha=1.253d0, re=3.83d0
    rx=x2-x1
    ry=y2-y1
    rz=z2-z1
    rmag=sqrt(rx**2.0d0+ry**2.0d0+rz**2.0d0)
    fx2=-2.0*De*(1-exp(-alpha*(rx-re))*(alpha)*exp(-alpha*(rx-re)))*(rx/rmag)
    fy2=-2.0*De*(1-exp(-alpha*(ry-re))*(alpha)*exp(-alpha*(ry-re)))*(ry/rmag)
    fz2=-2.0*De*(1-exp(-alpha*(rz-re))*(alpha)*exp(-alpha*(rz-re)))*(rz/rmag)
    fx1=-fx2
    fy1=-fy2
    fz1=-fz2
    axi=fx1/m
    axj=fx2/m
    ayi=fy1/m
    ayj=fy2/m
    azi=fz1/m
    azj=fz2/m
  end subroutine

end module morseforce
4

0 回答 0