风平老涡 发表于 2023-9-29 21:42 好的,我再试一下,麻烦您了 |
zjp 发表于 2023-9-29 16:23 从输出结果看,下面的计算有问题。 [Fortran] 纯文本查看 复制代码 !total long-range energy v=vdisp+vli2-0.006661542414d0 其中的vdisp和vli2的都为零。可以看到以下语句有问题: [Fortran] 纯文本查看 复制代码 !diatom energy call pot_li2(r,vli2) 。。。 。。。 subroutine pot_li2(r,v,idg,dv) implicit none 不知编译是如何通过的。 |
Transpose 发表于 2023-9-29 15:07 麻烦您忙看一下,子程序中还有几个子程序,我就是写的主程序调用一下,不知道问题出在哪里? program main implicit none integer,parameter :: n = 200 real*8,parameter :: r = 5.d0,cost = 0 real*8,parameter :: zmin = 20.d0,zmax = 100.d0 real*8 ::z,v integer :: i do i=1,n z=zmin + (zmax-zmin)*(i-1.d0)/(n-1.d0) call potlr_li_li2(z,r,cost,v) write(111,*)z,v enddo stop end subroutine potlr_li_li2(z,r,cost,v) implicit none real*8,intent(in) :: z,r,cost real*8,intent(out) :: v real*8 :: polli,ionli,polyli2,polzli2,ionli2,vdisp,vli2 real*8 :: fac !polarizability of Li polli=165.09246072d0 !ionization energy of Li ionli=0.19809291d0 !excitation energy of Li2 (X --> A) ionli2=0.06371177857d0 !perpendicular polarizability of Li2 call poly_li2(r,polyli2) !parallel polarizability of Li2 call polz_li2(r,polzli2) !dispersion energy fac=0.5d0*ionli*ionli2*polli/(ionli+ionli2)/z**6 vdisp=-fac*(2.d0*polyli2+polzli2+(polzli2-polyli2)*(1.5d0*cost**2-0.5d0)) !diatom energy call pot_li2(r,vli2) !total long-range energy v=vdisp+vli2-0.006661542414d0 return end subroutine subroutine pot_li2(r,v,idg,dv) implicit none |
看起来应该是子程序的问题,需要更多代码才能判断 |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2025-4-12 20:36