Exemple #1
0
void neighborhoodTest()
{
   typedef FlagField<wlb::uint8_t> FField;
   FField ff ( 3,3,3,1 );
   auto i = ff.registerFlag("Interface");
   auto l = ff.registerFlag("Liquid");
   auto g = ff.registerFlag("Gas");

   for( auto it = ff.begin(); it != ff.end(); ++it )
      addFlag(it, l);

   ff.addFlag(1,0,0,i);
   ff.addFlag(1,2,2,g);
   for( auto it = ff.begin(); it != ff.end(); ++it )
   {
      if (it.x() == 1 && it.y() == 1 && it.z() == 1) {
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q19>(it, i) );
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q19>(it, g) );
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q19>(it, l) );
      }

      if (it.x() == 1 && it.y() == 2 && it.z() == 2) {
         WALBERLA_CHECK( !isFlagInNeighborhood<stencil::D3Q19>(it, i) );
         WALBERLA_CHECK( !isFlagInNeighborhood<stencil::D3Q19>(it, g) );
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q19>(it, l) );
      }

   }

   ff.removeFlag(1,0,0,i);
   ff.addFlag(0,0,0,i);
   ff.removeFlag(1,2,2,g);
   ff.addFlag(2,2,2,g);
   for( auto it = ff.begin(); it != ff.end(); ++it )
   {
      if (it.x() == 1 && it.y() == 1 && it.z() == 1) {
         WALBERLA_CHECK( field::isFlagInNeighborhood<stencil::D3Q27>(it, i) );
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q27>(it, g) );
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q27>(it, l) );
      }

      if (it.x() == 2 && it.y() == 2 && it.z() == 2) {
         WALBERLA_CHECK( !isFlagInNeighborhood<stencil::D3Q27>(it, i) );
         WALBERLA_CHECK( !isFlagInNeighborhood<stencil::D3Q27>(it, g) );
         WALBERLA_CHECK( isFlagInNeighborhood<stencil::D3Q27>(it, l) );
      }

   }
}
Exemple #2
0
void printingTest()
{
   typedef FlagField<wlb::uint8_t> FField;
   FField ff ( 3,3,3,1 );
   auto ns = ff.registerFlag("NoSlip");
   auto fs = ff.registerFlag("FreeSlip");
   auto ob = ff.registerFlag("Obstacle");

   for(cell_idx_t i=0; i < cell_idx_c( ff.xSize() ); ++i)
      ff.addFlag(i,0,0,ns);

   for(cell_idx_t i=0; i < cell_idx_c( ff.ySize() ); ++i)
      ff.addFlag(0,i,0,fs);

   ff.addFlag(0,1,0,ob);
   ff.addFlag(1,0,0,ob);

   //printSlice( cout,ff, 2,0 );
}