【发布时间】:2020-07-20 05:58:49
【问题描述】:
我最小的、可重现的示例如下所示:在我的程序mymain 中,我调用了一个子程序,该子程序有一个外部函数f1 和一个变量result 作为参数。在子例程中,函数完成了一些事情(对于这个例子,它只是在特定点被评估),结果通过参数result返回。
PROGRAM mymain
IMPLICIT NONE
REAL(KIND=8) f1
REAL(KIND=8) result
EXTERNAL f1
CALL sub1(f1,result)
PRINT *,result
END PROGRAM mymain
SUBROUTINE sub1(f1,result)
IMPLICIT NONE
REAL(KIND=8) ::f1
REAL(KIND=8), INTENT(OUT) ::result
REAL(KIND=8) ::input
EXTERNAL f1
input=0.5
result=f1(input)
END SUBROUTINE sub1
REAL(KIND=8) FUNCTION f1(x)
REAL(KIND=8), INTENT(IN) ::x
REAL(KIND=8) ::const
const=1.
f1=x**2+const
END FUNCTION f1
我的问题是我想从mymain 中更改函数f1 中的变量const。
在我的实际问题中,子例程是 Fortran 库之一,它采用外部函数的积分,我需要多次调用此子例程,但始终在外部函数中使用不同的参数。
我不知道该怎么做,因为我不能像这样从mymain 调用子例程
CALL sub1(f1(x,const),result)
【问题讨论】:
标签: fortran