每隔n个步骤打印输出

时间:2015-06-18 10:05:18

标签: c printf

我对如何编写代码来实现这个概念感到有点困惑。如果有人知道如何解决我的问题,请帮助我。

我有一个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
  }

提前致谢

3 个答案:

答案 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(...);
    }
}