在我編寫的並行程序中,我定義了大量多維的allocatable
數組(實際上只是一維,二維或三維),這些數組分配了負下限執行期間。 爲什麼這樣做的原因是,每個過程處理,在一個2D例如,由14A
矩陣和共享的層與相鄰進程的重疊14,從而所述基質被分配具有邊界(-1:12,-1:12)
,其中矩陣的「內部」部分對應於從1到的索引。 (斜體代表選擇/輸入依賴)。將可分配數組的子數組傳遞給子例程
的問題是,在做這個我並沒有意識到,這將是不可能依靠this Fortran2003 feature,從而不可能call mysub(A(:,i),...)
在主叫單元和使用實際指的A
虛擬對應的子程序(-1和),因爲A(:,i)
是一個表達式,而不僅僅是一個變量。
如果我將整個數組A
傳遞給子程序(如previous linked answer中所述),但是這會迫使我編寫一個「更大」且不太常用的子程序,而這個子程序的意思是作用於一維子陣列。
是否有可能的allocatable
陣列(例如A(:,1)
)的一個子陣列傳遞到的方式的子程序,該子程序是知道的實際變量的邊界的?
本質:是的,有方式(如通過邊界,並使虛擬形狀明確)。但是,這裏適當的可能需要更多的細節。 – francescalus