実行時に Fortran90 派生型とポインターを割り当てることに関して質問があります。コードが入力ファイルを読み取った後、派生変数の型をサブルーチンに渡したいと考えています。したがって、入力に応じて、適切なデータ型を渡します。説明させてください:
私は2つのモジュールを持っています:
モジュール 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は、A を B に置き換えた上記のミラーです (データ型 B にも x と y が整数として定義されています)。
このインターフェイスを持つ 3 番目のモジュールもあります。
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)
任意の提案をいただければ幸いです!!
ありがとうございました