2

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

现在的问题是,如果一个模块使用另一个模块中定义的类型运行而后一个模型也使用前者的类型运行,我该怎么办?我举个例子。

比如说,我有两个模块,一个定义了Mesh类型,另一个定义了NodeVariable类型。现在我希望每个NodeVariable都与将要解决的网格相关联,因此我type(Mesh) :: mesh在类型的定义中添加了一个字段。到目前为止,我可以编写use module-mesh来访问网格类型的定义,这没有问题。但我也希望网格能够了解其上定义的变量,因此我将其声明type(NodeVariable), allocatable :: var(:)为一个字段并添加一个过程以动态将变量添加到网格中。但是现在我被卡住了,因为我负担不起另一个use语句:它导致模块使用自己,因此一切都崩溃了。解决方案?

4

1 回答 1

0

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

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

于 2012-03-12T15:54:21.073 回答