Неполадка сопроцессора с плавающей точкой в ​​модуле подпрограммы для расчета ускорения в Fortran - PullRequest
0 голосов
/ 06 октября 2018

У меня возникли проблемы с двумя моими модулями для программы молекулярной динамики, которую я делаю.оба происходят при расчете силы в модуле, и я попытался изменить точность всех моих значений.Один из модулей напечатан ниже.Я получаю ошибку в строке 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
...