我对Fortran还是陌生的,有一个要解决的问题。
我在某个地方声明了一个子例程,有时在程序中我不希望计算该子例程的特定部分。我可以复制该子例程,但不是整洁的编程。
我想解决这个问题的方法是传递一个虚拟参数:
子程序的声明:
subroutinename(...,r,dr,d2r)
用伪参数调用:
call subroutinename(...,r,dr,dummy)
IF (d2r.NE.dummy)...
我尝试实施,但是有问题。d2r是矩阵,因此如何传递可以用作IF语句部分逻辑的值?
您可以在Fortran 90及更高版本中使用可选参数。
subroutine subroutinename(...,r,dr,d2r)
real, optional :: d2r(:,:)
if (present(d2r)) then
!do the computation
end if
你用d2r
参数来调用它
call subroutinename(...,r,dr,d2r)
call subroutinename(...,r,dr)
可选参数需要显式接口。最好通过将子例程放在模块中来确保。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句