使用 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
您正在将 z
和 T
索引为这样的数组:
T(i)
z(i)
但你没有将它们定义为数组。您必须以某种方式声明它们的维度。
编译器应该以某种方式抱怨,说你以不正确的方式将它们用作函数或一些类似的相关错误消息。
修复该问题后,尝试遵循循环逻辑检查您是否正确定义了初始值,并且其他值是使用前面的值计算的。
您还应该在子例程的顶部添加 IMPLICIT NONE
。
我想在 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
您正在将 z
和 T
索引为这样的数组:
T(i)
z(i)
但你没有将它们定义为数组。您必须以某种方式声明它们的维度。
编译器应该以某种方式抱怨,说你以不正确的方式将它们用作函数或一些类似的相关错误消息。
修复该问题后,尝试遵循循环逻辑检查您是否正确定义了初始值,并且其他值是使用前面的值计算的。
您还应该在子例程的顶部添加 IMPLICIT NONE
。