2

FORTRAN でかなり小さな pde 解決アプリケーションを作成しており、OOP を使用しようとしています。現在、いくつかのモジュールがあり、それらのいくつかは、対応する内部プロシージャで型を定義しています。

問題は、あるモジュールが別のモジュール内で定義された型で動作し、後のモデルも前者の型で動作する場合、どうすればよいですか? 例を挙げます。

たとえば、2 つのモジュールがあり、1 つはタイプMeshを定義し、もう 1 つはタイプNodeVariableを定義します。ここで、各NodeVariableを解決対象のメッシュに関連付けたいのでtype(Mesh) :: mesh、タイプの定義にフィールドを追加します。これまでのところ、タイプmeshuse module-meshの定義にアクセスするために書くことは問題ありません。しかし、定義された変数をメッシュに認識させたいので、フィールドとして宣言し、その場でメッシュに変数を追加する手順を追加します。しかし、別のuseステートメントを使用する余裕がないため、今は行き詰まっています。これにより、モジュールがそれ自体を使用するようになり、すべてがクラッシュします。解決?type(NodeVariable), allocatable :: var(:)

4

1 に答える 1

0

モジュールが use ステートメントによってグラフに接続されていると考えてください。あなたが発見したように、Fortranはこのグラフのサイクルを禁止しています。解決策は、循環を避けるためにグラフを再設計することです。

あなたの場合、同じモジュールで両方のタイプを定義するだけです。

于 2012-03-12T15:54:21.073 に答える