⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stream.c

📁 基于格子Boltzmann方法开源可视化软件的源代码 具有很高的实用价值。对学习LBM方法及其软件开发非常游泳
💻 C
字号:
//##############################################################################//// Copyright (C), 2005, Michael Sukop and Danny Thorne//// stream.c//void stream( lattice_ptr lattice){  double  *f;  int     i, j, n, a;  int     nx, ny, ip, in, jp, jn;    int     subs;#if SAY_HI  printf("stream() -- Hi!\n");#endif /* SAY_HI */ for( subs=0; subs<NUM_FLUID_COMPONENTS; subs++) {#if 0  // Get pointer to distribution functions.  f = lattice->pdf[subs]->f;  // Traverse nodes.  for( n=0; n<lattice->NumNodes; n++)  {    // Copy the rest particle f[0] to ftemp[0].    *(f+9) = *f++;#if 0    for( a=1; a<=8; a++)    {      // S T R E A M         //      //  - f[a] streams to ftemp[a] of its neighboring node.      //      if( *nn != INACTIVE_NODE)       {        pdf[ *nn].ftemp[a] = *f;//printf("STREAM: %d from %d to %d.\n", a, n, *nn);      } /* if( *nn != INACTIVE_NODE)  */      else      {//printf("STREAM: Skipping %d at %d.\n", a, n);      }      // Move nn to neighbor of next element of f.      nn++;      // Move next element of f.      f++;    } /* for( a=1; a<=8; a++) */#else    pdf[].ftemp[ 1] = *f++;       pdf[].ftemp[ 2] = *f++;       pdf[].ftemp[ 3] = *f++;       pdf[].ftemp[ 4] = *f++;       pdf[].ftemp[ 5] = *f++;       pdf[].ftemp[ 6] = *f++;       pdf[].ftemp[ 7] = *f++;       pdf[].ftemp[ 8] = *f++;   #endif    // Advance nn to neighbor of first element of next node.    nn+=3;    // Advance to the next node.    f+=18;   } /* for( n=0; n<NumNodes; n++) */#else  nx = lattice->param.LX;  ny = lattice->param.LY;#if 1//-------------------------------------------------------------[ TEST ]---------  f = lattice->pdf[subs]->ftemp;  for( j=0; j<ny; j++)  {    for( i=0; i<nx; i++)    {      for( a=0; a<9; a++)      {        *f++ = 0.;      }      f+=18;    }  }//-------------------------------------------------------------[ TEST ]---------#endif#if 1  // Get pointer to distribution functions.  f = lattice->pdf[subs]->f;  for( j=0; j<ny; j++)  {    jp = ( j<ny-1)?( j+1):( 0   );    jn = ( j>0   )?( j-1):( ny-1);    for( i=0; i<nx; i++)    {      ip = ( i<nx-1)?( i+1):( 0   );      in = ( i>0   )?( i-1):( nx-1);      lattice->pdf[subs][ j *nx + i ].ftemp[ 0] = *f++;         lattice->pdf[subs][ j *nx + ip].ftemp[ 1] = *f++;         lattice->pdf[subs][ jp*nx + i ].ftemp[ 2] = *f++;         lattice->pdf[subs][ j *nx + in].ftemp[ 3] = *f++;         lattice->pdf[subs][ jn*nx + i ].ftemp[ 4] = *f++;         lattice->pdf[subs][ jp*nx + ip].ftemp[ 5] = *f++;         lattice->pdf[subs][ jp*nx + in].ftemp[ 6] = *f++;         lattice->pdf[subs][ jn*nx + in].ftemp[ 7] = *f++;         lattice->pdf[subs][ jn*nx + ip].ftemp[ 8] = *f++;         f+=18;    } /* if( i=0; i<nx; i++, n++) */  } /* if( j=0; j<lattice->param.LY; j++) */#endif#endif } /* for( subs=0; subs<NUM_FLUID_COMPONENTS; subs++) */#if SAY_HI  printf("stream() -- Bye!\n");#endif /* SAY_HI */} /* void stream( lattice_ptr lattice) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -