0
我正在調試一個Fortran項目,其中的一些高頻操作發生在循環索引的邏輯語句上。由於@Ross的評論,有問題的當前的代碼是:多層循環中循環索引的Fortran邏輯語句
integer:: nz=5,na=10,nb=10,nk=10,nxi=10
real(8),dimension(nz,na*nb*nk*nxi):: pi_ub
integer:: i,j,k
real(8), dimension(nz,na*nb*nk*nxi,na*nb*nk):: nnpc,nndiv,obj_func
do i=1,nz
do j=1,na*nb*nk*nxi
pi_ub(i,j)=some value
do k=1,na*nb*nk
nnpc(i,j,k)=some value
nndiv(i,j,k)=some value
end do
end do
end do
obj_func=0.0d0
do i=1,nz
do k=1,na*nb*nk
do j=1,na*nb*nk*nxi
!Want to show the value of pi_ub(5,910) when k=1
if (i==5 .and. j==910 .and. k==1) then
print *, "pi_ub(5,910)", pi_ub(5,910)
end if
!-----------------------------------------------------------
if (nnpc(i,j,k)<0.0d0 .or. nndiv(i,j,k)<0.0d0) then
exit
else if (nnpc(i,j,k) >=0.0d0 .and. nndiv(i,j,k)>0.0d0)
obj_func=some value
end if
!------------------------------------------------------------
end do
end do
end do
的pi_ub(5910)可以被適當地不IF-ENDIF句話在兩條虛線打印。但是,如果有這樣一個句子,沒有什麼是印刷的。看起來「退出」命令搞砸了。但是不應該在「退出」之前編碼嗎?非常感謝!
這在測試時對我有效。你如何編譯和運行?這是完整的代碼嗎? – Ross
感謝您的跟進,@Ross!原始代碼中有一個IF語句,這似乎是問題所在。我會修改這個問題。謝謝! – Woodpecker
我不清楚你在做什麼,但我很高興你解決了你的問題。 你可能會混淆'exit'和'cycle' - 你應該看看兩者。 – Ross