[英]How do I read in a consecutive row of a text file in each step of a do-loop in fortran?
[英]Repeating a step in a Fortran loop
我正在嘗試編寫一個 Fortran 90 程序來執行 Euler 的方法來使用自適應時間步來解決 ode 的問題。
我在do while
循環中有一個if
語句,我在其中檢查代碼每次迭代時的錯誤是否小於某個容差。 但是,如果它不小於某個容差,則必須更改某個值(步長)並再次進行計算以獲得新的誤差以與容差進行比較。
它看起來像(原諒我這是我第一次使用這個網站):
do while (some condition)
(Get an approximation to the ODE with various subroutine calls)
(Calculate the error)
if (error < tol)
step = step/2
else
step = 2*step
(Something that will return to the top of my do while loop)
end if
end do
舉個例子,我do while (i < 4)
, i
從 1 開始,我的錯誤不小於我的容忍度,我必須用新的步長對i=1
再次重復計算。
我希望這對閱讀本文的人有意義。 如果您需要任何說明,請告訴我。
因為do while
循環中沒有明確的計數器,這與正常的do i=1,...
循環不同。 您可以使用cycle
來開始新的迭代。 這將與重復當前迭代相同。 但條件將再次評估。 如果它不應該被評估,你將不得不使用go to
或重構你的代碼。
或者嵌套在主循環中的另一個循環可能會更好,但這可能算作上面提到的重組。 取決於條件是什么,您如何更改step
和i
以及公差如何取決於step
和i
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.