書いているコードをコンパイルしようとすると、奇妙なエラーが発生します。線形代数の計算に使用する Fortran モジュールがいくつかあります。アプリケーションでそれらすべてを使用しなければならないようにしたくないので、それらの周りにラッパー モジュールを作成しました。
module linear_algebra_mod
use sparse_matrix_mod
use csr_matrix_mod
(etc.)
エンドユーザーがuse linear_algebra_mod
それらすべてを取得するために書き込むことができるようにします。ただし、線形代数モジュールをコンパイルすると、次のエラーが発生します。
gfortran -c sparse_matrix_mod.f90
gfortran -c csr_matrix_mod.f90
gfortran -c linear_algebra_mod.f90
linear_algebra_mod.f90:5.8:
use csr_matrix_mod
1
Internal Error at (1):
free_pi_tree(): Unresolved fixup
これは、こことここのバグレポートで取り上げられましたが、私が何をすべきかをそれらから収集することができませんでした.
代わりに csr_matrix モジュールを最初に使用すると、次のようになります。
module linear_algebra_mod
use csr_matrix_mod
use sparse_matrix_mod
エラーが消えます。
この背景情報が役立つ場合: sparse_matrix モジュールは、csr_matrix モジュールが拡張して実際に実装する抽象データ型を定義します。