1

我目前正在用 Fortran 90 写我的文凭论文。在我的代码的某个阶段,我只是想计算一个整数(结果应该在网格单元的笛卡尔网格中给出一个方向)。

没有错误信息,但结果是错误的。会是什么?我正在寻找的值是变量的值idirhf(见下文)。它应该始终是1,23。取决于计算的preferred方向。但是,它通常是idirhf = 0或什idirhf = 1195至或其他的……值fcdxfcdy并且fcdzReal值。它们代表梯度的组成部分。

所有变量都在前面的步骤中声明,未显示。

有人可以帮忙吗?我现在已经在那个小问题上花了几个小时......

这是代码的一部分:

              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
4

1 回答 1

2

您的帖子没有向我们展示在您的双重声明x,y,z中首次使用它们更新之前的值。应该序列idirhfIF

                idirhf = x
                x = 1

真的是

                x = 1
                idirhf = x

于 2012-08-17T10:47:12.247 回答