我对如何编写代码来实现这个概念感到有点困惑。如果有人知道如何解决我的问题,请帮助我。
我有一个while循环来运行模拟,我希望在 t_domain 给出的时间内看到大量流体的扩散。时间 t 以 dt 的步长递增,两者都是double类型的变量,但我想仅在 Del_t <处获取扩散过程的快照/ em>时间间隔。我的意思是,如果我运行模拟1000秒,时间t增加0.01秒,我想每10秒拍摄一次扩散过程的快照。
现在我无法弄清楚的是打印密度的代码部分,每隔一个步骤到文件。有人能提出建议吗?
while(t<t_domain)
{
//runs a function to solve the continuity equation and Navier Stokes equation
density_solve(fdparam_1.N,r,r0,ux0,vy0,fdparam_1.Dt,fdparam_1.diff,fdparam_1.MAXIT);
//print densities at every nth time step to a file
t+=dt
}
提前致谢
答案 0 :(得分:1)
写一个if语句来检查:
while(t<t_domain)
{
//runs a function to solve the continuity equation and Navier Stokes equation
density_solve(fdparam_1.N,r,r0,ux0,vy0,fdparam_1.Dt,fdparam_1.diff,fdparam_1.MAXIT);
if(((int)t*100)%1000==0)
{
//print densities at every nth time step to a file
}
t+=dt
}
现在每次t都是10倍的打印。
当你的时间以浮点数或精度为0.01时加倍,我将时间乘以100以将其转换为可行的整数。现在我检查它是否可被100 * 10整除,即1000,以检查它是否是完美的多长的10.使长话短说.........
only numbers like 10.00 and 20.00 are accepted and not
numbers like 10.01 or 10.79
答案 1 :(得分:1)
int i = 0;
int times = 23;
while(t<t_domain)
{
//runs a function to solve the continuity equation and Navier Stokes equation
density_solve(fdparam_1.N,r,r0,ux0,vy0,fdparam_1.Dt,fdparam_1.diff,fdparam_1.MAXIT);
//print densities at every nth time step to a file
if(i++%times==0)
{
// print every 23th loop round
}
t+=dt
}
答案 2 :(得分:0)
int iteration = 0;
const int N = 10;
while(t<t_domain)
{
...
if(0 == (iteration++ % N))
{
// will printe once every 10 iterations
printf(...);
}
}