fortran初学者-将变量写入输出文件
我开始使用CFD fortran程序,希望更新它写入输出文件的变量 我想输出几个列,I和J坐标(fortran初学者-将变量写入输出文件,fortran,Fortran,我开始使用CFD fortran程序,希望更新它写入输出文件的变量 我想输出几个列,I和J坐标(IL和JL),水面高程(SURFEL),坐标底部高程(BELV),水深(HP),最后,这就是我的问题所在,模拟期间坐标的最大水面高程(SURFELMAX)L指的是特定的I,J坐标,LA是模拟中的最后一个坐标 到目前为止,我已经: DO L=2,LA SURFEL=BELV(L)+HP(L) IF (SURFEL.GT.SURFELMAX)THEN SURFELMAX=SUR
IL
和JL
),水面高程(SURFEL
),坐标底部高程(BELV
),水深(HP
),最后,这就是我的问题所在,模拟期间坐标的最大水面高程(SURFELMAX
)L
指的是特定的I,J坐标,LA
是模拟中的最后一个坐标
到目前为止,我已经:
DO L=2,LA
SURFEL=BELV(L)+HP(L)
IF (SURFEL.GT.SURFELMAX)THEN
SURFELMAX=SURFEL
ELSE IF (SURFELMAX.GT.SURFEL) THEN
SURFELMAX=SURFELMAX
WRITE(10,200)IL(L),JL(L),SURFEL,SURFELMAX
ENDIF
ENDDO
除了SURFELMAX
之外,其他一切都正常工作,其中,整个域中任何坐标中出现的最高记录曲面高程都是针对每个坐标写入的,即,列中填充了相同的值,这是整个域在模拟过程中经历的最高值
我是否需要首先为
SURFELMAX
分配一个数组,并让SURFEL
每次检查它是否增加了?如果是这样的话,有人能为我指出正确的方向吗?如果我正确理解了需求,那么您需要在开始写之前计算SURFELMAX
。这可能只是:
SURFELMAX = MAXVAL(BELV(2:LA)+HP(2:LA))
WRITE(10,200) (IL(L), JL(L), BELV(L)+HP(L), SURFELMAX, L=2,LA)
(甚至作为一条线)
看来我没有正确理解;我会再试一次——将以上内容作为对其他人的警告
似乎您确实想要SURFELMAX(2:LA)
,其中每个元素都是给定单元格中迄今为止最高的元素
do L=2, LA
SURFELMAX(L) = MAX(SURFELMAX(L), BELV(L)+HP(L)) ! Store the historical maximum
WRITE (10,200) IL(L), JL(L), BELV(L)+HP(L), SURFELMAX(L)
end do
其中,最初,
SURFELMAX
已设置为足够小的值。如果需要,您还可以显式地计算SURFEL。如果这取决于时间,则必须定义大小为(1:LA,1:T)(T=时间步数,LA=活动坐标数)的二维数组
然后在循环外通过域增加时间步长(例如,迭代器称为I_T)。
最后,将每个坐标处的最大值指定给SURFELMAX(I_,T,L)谢谢您的快速回复-我不确定这是否适用于我所追求的内容-例如,软件模拟几个月的河流流量,每15分钟将水位写入文件。我希望有一个输出文件,其中记录了在整个模拟过程中每个网格单元中分别经历的最大水位。我想我需要在每个时间步制作一个大小为L的水位数组,如果在该时间步中发现任何更高的值,则更新另一个数组?听起来对吗?我该怎么写呢?谢谢你们的帮助谢谢你们两位的回复,我想我现在可以写下我需要的东西了。我真的很感谢你们的帮助。谢谢你们两位的回复,我想我现在可以写我需要的了。我真的很感谢你的帮助。