我有一个关于在运行时分配 Fortran90 派生类型和指针的问题。我想在代码读取输入文件后将派生变量类型传递给子例程。因此,根据输入,我传递适当的数据类型。让我解释:
我有两个模块:
模块 A_mod和模块 B_mod。每个都有自己独特的数据类型和子例程。例如:
Module A_mod
type A
real :: x, y
end type
contains
subroutine FunA(me)
type (A), intent(in) :: me
<do stuff>
end subroutine
End module A_mod
模块 B_mod是上述 B 替换 A 的镜像(数据类型 B 也将 x 和 y 定义为整数)。
我还有第三个具有此接口的模块:
interface fun
modular procedure funA, funB
end interface
这是我的问题。用户通过输入文件确定使用哪个模块子程序。如何制作在运行时关联的通用指针?或者类似的不需要指针的东西。
例如:
type (?) :: pt
Call fun(pt)
在程序读取输入文件后,它会选择正确的数据类型以发送到接口子例程“fun”。所以类型在运行前是未知的。
如果 Fortran 让我在代码的执行部分中声明一个变量,它看起来像这样
IF(input.EQ."A") THEN
type(A) :: pt
ELSE
type(B) :: pt
END IF
CALL fun(pt)
任何建议将不胜感激!
谢谢