我试图通过 fortran 中的一个小算法(不幸的是,我不是 fortran 程序员)但我需要了解它在做什么:在这里,
omega = 0.d0
s = 1.d0
i = 1
j = 2
k = 3
101 do iperm = 1, 3
omega = omega + s * a1 (i) * a2 (j) * a3 (k)
l = i
i = j
j = k
k = l
enddo
i = 2
j = 1
k = 3
s = - s
if (s.lt.0.d0) goto 101
omega = abs (omega) * alat**3
a1,a2,a3
是向量(每个三个元素,实值,表示 3d 空间中的向量)
s
是单位整数(可以是 1 或 -1 交替)并且i,j,k
是整数,而omega
(我需要了解它是如何到达的)是浮点数值,所以也是alat
。现在上面发生了什么?尤其是iperm =1,3
部分,这是一个正在创建的向量吗?起初我认为 iperm 可能是一些花哨的函数/例程或迭代器,但经过一番搜索后,我认为事实并非如此,iprm 的目的是什么?" " 和 " "iperm
之间是否有一些循环?do
enddo