对于我正在制作的分子动力学程序,我的两个模块遇到了一些问题。两者都发生在模块中的力计算中,我尝试更改所有值的精度。其中一个模块打印在下面。我在第 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