如何解决使用 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
解决方法
您将 z
和 T
索引为这样的数组:
T(i)
z(i)
但是您没有将它们定义为数组。您必须以某种方式声明它们的维度。
编译器应该以某种方式抱怨,说您以不正确的方式将它们用作函数或一些类似的相关错误消息。
修复该问题后,尝试遵循循环逻辑检查您是否正确定义了初始值,其他值是使用前面的值计算的。
您也绝对应该在子程序的顶部添加 IMPLICIT NONE
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。