|
程序可以迭代200次,但是子程序运行一次后,程序就停止了,subroutine SWMS_3D_sub(xm,ym,zm,xstar,ystar,zstar,px,py,pz,funcval)一共10个参数,其中前九个参数是主程序传递来的变量,第十个参数是目标函数funcval。subroutine SetSnk(NumNP,NMat,MatNum,hNew,TPot,Sink,P0,POptm,P2H,P2L,P3,r2H,r2L,xm,ym,zm,xstar,ystar,zstar,px,py,pz,x,y,z,Beta,Length)是SWMS_3D_sub的子程序。
subroutine SWMS_3D_sub运行正常,结果没有问题,但是主程序却只能运行一次,并没有进行迭代。
[Fortran] 纯文本查看 复制代码 if (abs(t-tMax).le.0.001*dt) then
call getdat(i,i,iday)
call gettim(ihours,mins,isecs,i)
Rtime2=iday*24.*60.*60.+ihours*60.*60.+mins*60.+isecs
write(70,*)
write(70,*) 'Real time [sec]',Rtime2-RTime1
write( *,*) 'Real time [sec]',Rtime2-RTime1
stop
end if
在SWMS_3D有一段代码如上所示,运行到这个stop处,子程序就停止运行了,而我需要计算的funcval,
funcval=sfenzi/sqrt(sfenmu1*sfenmu2)
在stop的后面,跳出当前语句,并进行下面代码的运行,应该是用什么?子程序貌似不应用stop?
|
|