嘗試從xyz數據文件創建數組。數據文件的排列使得每個原子的x,y,z都在一個新的行上,我希望數組能夠反映這一點。 然後使用這個數組找到列表中每個原子與其他所有原子的距離。Fortran90創建了可分配數組,但元素不正確
爲此陣列已經被複制,使得ATOM1 & atom2應該是相同的輸入文件。
長度是簡單地在列表中的原子數。 寫入語句:WRITE(20,'(3F12.9)')atom1實際上給出了想要的矩陣,但是當我嘗試查找單個元素時,它們都是錯誤的!
任何幫助將非常感激! 謝謝你們。
DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE ::atom1,atom2'
ALLOCATE(atom1(length,3),atom2(length,3))
READ(10,*) ((atom1(i,j), i=1,length), j=1,3)
atom2=atom1
distn=0
distc=0
DO n=1,length
x1=atom1(n,1)
y1=atom1(n,2) !1st atom
z1=atom1(n,3)
DO m=1,length
x2=atom2(m,1)
y2=atom2(m,2) !2nd atom
z2=atom2(m,3)`
你能提供關於元素如何「全部錯誤」的例子和描述? – bobs
您的示例寫入語句表明您已切換數組索引。該寫入的第一條記錄將包含atom1(1:3,1) - 即原子1,2和3的x座標。那是你的意圖嗎? (正如你所寫的,在你的READ語句中嵌套的io-implicit-do是多餘的,這些隱式do的元素訪問順序與整個數組引用的數組元素順序相同,也許你的嵌套錯誤。 – IanH