Example #1
0
void peanoclaw::tests::StatisticsTest::testGetNeighborPositionOnSameLevel() {
  tarch::la::Vector<DIMENSIONS, double> position;
  assignList(position) =
      2.0/3.0
      ,1.0/3.0
      #ifdef Dim3
      ,1.0/3.0
      #endif
      ;
  tarch::la::Vector<DIMENSIONS, double> size(1.0/3.0);
  int level = 2;
  tarch::la::Vector<DIMENSIONS, double> expectedNeighborPosition;
  assignList(expectedNeighborPosition) =
      1.0
      ,0.0
      #ifdef Dim3
      ,0.0
      #endif
      ;
  tarch::la::Vector<DIMENSIONS, int> discreteNeighborPosition;
  assignList(discreteNeighborPosition) =
      1
      ,0
      #ifdef Dim3
      ,0
      #endif
      ;

  tarch::la::Vector<DIMENSIONS, double> domainOffset(0.0);
  tarch::la::Vector<DIMENSIONS, double> domainSize(1.0);
  peanoclaw::statistics::ParallelGridValidator validator(domainOffset, domainSize, false);

  tarch::la::Vector<DIMENSIONS, double> neighborPosition
    = validator.getNeighborPositionOnLevel(
      position,
      size,
      level,
      level-1,
      discreteNeighborPosition
    );

  validateWithParams2(tarch::la::equals(neighborPosition, expectedNeighborPosition), neighborPosition, expectedNeighborPosition);
}
void peano::kernel::regulargrid::parallel::tests::SetupPartitionerTest::test2D_12x8ForkMessages() {
  #ifdef Dim2
  tarch::la::Vector<DIMENSIONS,int> domain;
  assignList(domain) = 12,9;
  peano::kernel::regulargrid::parallel::SetupPartitioner partitioner(domain,9);

  partitioner._ranks.push_back(0);
  partitioner._ranks.push_back(1);
  partitioner._ranks.push_back(2);
  partitioner._ranks.push_back(3);
  partitioner._ranks.push_back(4);
  partitioner._ranks.push_back(5);
  partitioner._ranks.push_back(6);
  partitioner._ranks.push_back(7);
  partitioner._ranks.push_back(8);

  tarch::la::Vector<DIMENSIONS,int>     partition;
  tarch::la::Vector<DIMENSIONS,double>  domainOffset;
  tarch::la::Vector<DIMENSIONS,double>  h;

  assignList(domainOffset) = -2.0, -3.0;
  assignList(h)            =  0.4,  0.5;

  assignList(partition) = 0,0;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message00 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 1,0;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message10 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 2,0;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message20 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 0,1;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message01 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 1,1;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message11 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 2,1;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message21 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 0,2;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message02 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 1,2;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message12 =
    partitioner.getForkMessage( partition, domainOffset, h );
  assignList(partition) = 2,2;
  peano::kernel::regulargrid::parallel::messages::ForkMessage message22 =
    partitioner.getForkMessage( partition, domainOffset, h );

  //  validateEquals( message00.getNeighbourRanks(), h );

  validateEquals( message00.getH(), h );
  validateEquals( message00.getNumberOfGridPoints()(0), 5 );
  validateEquals( message00.getNumberOfGridPoints()(1), 4 );
  validateEquals( message00.getDomainOffset()(0), domainOffset(0) + 0*h(0));
  validateEquals( message00.getDomainOffset()(1), domainOffset(1) + 0*h(1));

  validateEquals( message10.getH(), h );
  validateEquals( message10.getNumberOfGridPoints()(0), 5 );
  validateEquals( message10.getNumberOfGridPoints()(1), 4 );
  validateEquals( message10.getDomainOffset()(0), domainOffset(0) + 4*h(0));
  validateEquals( message10.getDomainOffset()(1), domainOffset(1) + 0*h(1));

  validateEquals( message20.getH(), h );
  validateEquals( message20.getNumberOfGridPoints()(0), 4 );
  validateEquals( message20.getNumberOfGridPoints()(1), 4 );
  validateEquals( message20.getDomainOffset()(0), domainOffset(0) + 8*h(0));
  validateEquals( message20.getDomainOffset()(1), domainOffset(1) + 0*h(1));

  validateEquals( message01.getH(), h );
  validateEquals( message01.getNumberOfGridPoints()(0), 5 );
  validateEquals( message01.getNumberOfGridPoints()(1), 4 );
  validateEquals( message01.getDomainOffset()(0), domainOffset(0) + 0*h(0));
  validateEquals( message01.getDomainOffset()(1), domainOffset(1) + 3*h(1));
  #endif
}