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

Using a simple code in Fortran structure ( 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