作者BrianCashman (最强⑨番-さるの)
看板Fortran
标题Re: [问题] 想请教Fortran如何撰写进度条的语法
时间Mon Aug 17 11:32:59 2009
※ 引述《xpwang (xpwang)》之铭言:
: 标题: [问题] 想请教Fortran如何撰写进度条的语法
: 时间: Sun Aug 16 16:47:55 2009
:
: 不好意思 那我再跟各位高手说清楚一点XDDDD~
: 就是我的数值模式计算时间很长
: 所以我想要在模式在执行同时
: 在萤幕上显示目前模拟的进度
: 例如
: 假设总模拟时间为 36000秒
: 而程式目前演算到的时间为360秒
: 所以白色线条会停在 1 %
: 当然 当演算到时间来到3600秒时 白色线条会停在 10 %
: 0% 100%
: ■■■■■■■■■■□□□□□□□□□□
: 白色部分是会随着模拟进度不同有所前进
: 也就是 yangzi大 所说的样子
: 不知道有现成的副程式
: 或是有人有相关的程式撰写经验吗
: 再次谢谢大家 囧>
: → xpwang:白色部分要显示的是实际上运算的时间 08/17 10:35
: → xpwang:而总模拟时间则是由使用者决定 08/17 10:35
: 推 yangzi:我想他说的是指 '模式已跑了多少TIME STEPS'/总模拟时间 08/17 10:49
: → yangzi:不是真实世界的时间 08/17 10:50
请先说明你程式是否有GUI,有的话,程式若是非messages polling的方式,基本上画面
在进入回圈後会当在那不会更新,只要避免messages不被漏掉,问题不大。
基本的进度计算很简单,就是现在回圈指数除以总回圈数乘以100取整数(非四舍五入),
於每次回圈计算的最後更新进度值,并最後在回圈外补上100%。
若是要计算所需时间,则请加上测量每次或者每几(10 or 100)次回圈所需的时间,
平均後(可用移动平均法)乘以剩下回圈数之比例,就是时间剩余评估量。
若显示是console text mode,在每次write or print後不要换行,每次都用TL控制码
回复列头位置,动起来就会像是你所需要的。
--
不过若是计算量很大,我宁愿让他回圈内做的事情少一点,效率可能还比较高
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.171.91.196