连接Fortran中不同模块中定义的类型

时间:2012-03-12 00:32:34

标签: oop object module fortran fortran95

我正在FORTRAN写一个相当小的pde求解应用程序,我正在尝试使用OOP。现在,我有几个模块,其中一些模块使用相应的内部过程定义类型。

现在的问题是如果一个模块使用另一个模块中定义的类型进行操作,后一个模型也可以使用前者的类型进行操作?我举个例子。

说,我有两个模块,一个定义类型 Mesh ,另一个定义类型 NodeVariable 。现在我希望每个 NodeVariable 与要解决的网格相关联,因此我在类型的定义中添加了type(Mesh) :: mesh字段。到目前为止,我可以编写use module-mesh来访问 mesh 类型的定义。但是我也希望网格知道它上面定义的变量,所以我将type(NodeVariable), allocatable :: var(:)声明为一个字段并添加一个过程来动态地向网格添加变量。但现在我卡住了,因为我买不起另一个使用语句:它导致模块使用本身,因此一切都崩溃了。溶液

1 个答案:

答案 0 :(得分:0)

将您使用语句连接的模块考虑到图表中。正如您所发现的,Fortran禁止在此图中循环。解决方案是重新设计图表以避免循环。

在您的情况下,您可以简单地在同一模块中定义两种类型。