私が書いている並列プログラムでは、実行中に負の下限allocatable
で割り当てられる多くの多次元配列 (実際には 1D、2D、または 3D)を定義しました。私がそれを行った理由は、各プロセスが2Dの例では14 x 14の行列を処理し、隣接する4 つのプロセスと2 つのレイヤーのオーバーラップを共有するため、行列は境界で割り当てられます。行列は 1 から10までのインデックスに対応します。(斜体は選択/入力の依存関係を表します)。 A
(-1:12,-1:12)
問題は、これを行う際に、この Fortran2003 機能に依存することが不可能であることを認識していなかったためcall mysub(A(:,i),...)
、呼び出し元ユニットで実行できずA
、実際の境界 ( -1および12 )A(:,i)
は式であり、単なる変数ではないためです。
前のリンクされA
た回答で説明されているように、配列全体をサブルーチンに渡すと問題は解決しますが、これにより、「より大きく」普遍性が低いサブルーチンを作成する必要があり、逆に、1つに作用することを意図しています次元の部分配列。
allocatable
サブルーチンが実際の変数の境界を認識する方法で、配列のサブ配列 (例: A(:,1)
) をサブルーチンに渡すことは可能ですか?