使用 Fortran 结构中的简单代码DO & IF

问题描述

我想在 Do 循环中使用 if (....) then 和 elseif (....) then。但是,我不确定结构及其可能性。谁能帮我这个简单的代码

      Do i=0,1000,1
          T(i)=t-(i*TI)
          if (z(i) .EQ. 0.00) then
              z(i+1)=v*T(i)
          elseif (z(i) .EQ. A) then
              z(i+1)=A-v*T(i)
          endif   
          r1=sqrt(x**2+(z-z(i))**2)
          flux(1)=((alpha*p)/(d*pi*r0**2))*exp(-(r1**2/r0**2))
          flux(2)=0 
      end do

解决方法

您将 zT 索引为这样的数组:

T(i) z(i)

但是您没有将它们定义为数组。您必须以某种方式声明它们的维度。

编译器应该以某种方式抱怨,说您以不正确的方式将它们用作函数或一些类似的相关错误消息。

修复该问题后,尝试遵循循环逻辑检查您是否正确定义了初始值,其他值是使用前面的值计算的。


您也绝对应该在子程序的顶部添加 IMPLICIT NONE