現在、Fortran 90 で卒業論文を書いています。コードの特定の段階で、整数を計算したいだけです (結果として、メッシュ セルのデカルト グリッドで方向を示す必要があります)。
エラーメッセージはありませんが、結果は間違っています。それは何でしょうか?私が探している値は、変数の値ですidirhf
(以下を参照)。常に1
、2
、または のいずれかである必要があります3
。preferred
計算された方向に応じて。しかし、それは多くの場合idirhf = 0
、または多分偶数idirhf = 1195
または何でも... 値fcdx
、fcdy
およびfcdz
値Real
です。それらはグラデーションのコンポーネントを表します。
すべての変数は、表示されていない前のステップで宣言されています。
誰でも助けることができますか?私はすでにその小さな問題に何時間も費やしてきました...
コードの一部を次に示します。
distz = ( dr ( k ) + dr ( k - 1 ) + dr ( k + 1) ) / 2.
fcdx = ( fv ( i + 1, j, k ) - fv ( i - 1, j ,k ) ) &
& / ( 2. * dz )
fcdy = ( fv ( i, j + 1, k ) - fv ( i, j - 1, k ) ) &
& / ( 2. * dp )
fcdz = ( fv ( i, j, k + 1 ) - fv ( i, j ,k - 1 ) ) &
& / ( distz )
gradf ( 1 ) = ABS ( fcdx )
gradf ( 2 ) = ABS ( fcdy )
gradf ( 3 ) = ABS ( fcdz )
!
! Prüfung in welche der 3 Kooridnatenrichtung x,y,z
! die HF gebildet werden soll:
!
IF ( gradf(1) > gradf(2) ) THEN
IF ( gradf(1) > gradf(3) ) THEN
idirhf = x
x = 1
ider1 = y
ider2 = z
nsten1 = 5
nsten2 = 5
END IF
END IF
!
IF ( gradf(2) > gradf(1) ) THEN
IF ( gradf(2) > gradf(3) ) THEN
idirhf = y
y = 2
ider1 = x
ider2 = z
nsten1 = 4
nsten2 = 5
END IF
END IF
!
IF ( gradf(3) > gradf(1) ) THEN
IF ( gradf(3) > gradf(2) ) THEN
idirhf = z
z = 3
ider1 = x
ider2 = y
nsten1 = 4
nsten2 = 5
END IF
END IF
! WRITE(*,*)'###Nach gradf-Vergleich.idirhf = ', idirhf