必要なときにいつでも Python から呼び出される Fortran コードがあります。Fortran の計算でエラーが発生する場合があり、これはコマンド STOP で処理されます。これにより、fortran コードと Python コードの両方が完全に停止します。ただし、実行を続けるには python が必要です。Fortran コードを停止しても Python に影響しない他のコマンドはありますか?
1 に答える
3
あなたの場合、いくつかのステータス変数を使用しreturn
、サブルーチンの場合、これは次のようになります
subroutine mySqrt(number, res, stat)
implicit none
real,intent(in) :: number
real,intent(out) :: res
integer,intent(out) :: stat
if ( number < 0.e0 ) then
stat = -1 ! Some arbitrary number
return ! Exit
endif
res = sqrt(number)
stat = 0
end subroutine
関数の場合、これは少し難しいですが、グローバル (モジュール) 変数で解決できますが、これはスレッドセーフではありません (このバージョンでは):
module test
integer,private :: lastSuccess
contains
function mySqrt(number)
implicit none
real,intent(in) :: number
real :: mySqrt
if ( number < 0.e0 ) then
lastSuccess = -1 ! Some arbitrary number
mySqrt = 0. ! Set some values s.t. the function returns something
return ! Exit
endif
mySqrt = sqrt(number)
lastSuccess = 0
end function
function checkRes()
implicit none
integer :: checkRes
checkRes = lastSuccess
end function
end module test
このようにして、最初に関数を評価してから、成功したかどうかを確認できます。必要ありませんstop
。さまざまなエラー コードで作業することもできます。
別の方法 (内部変数を使用しない) は、妥当でない結果 (ここでは負の数など) を設定し、Python コードでそれを確認することです。
于 2013-10-18T14:44:08.783 に答える