void peano::applications::pic::demo2::mappings::RegularGrid2PlotSolution::beginIteration(
  peano::applications::pic::demo2::RegularGridState&  solverState
) {
  logTraceInWith1Argument( "beginIteration()", solverState );
  logTraceInWith1Argument( "beginIteration(State)", solverState );
   _vtkWriter.clear();

    _vertexWriter     = _vtkWriter.createVertexWriter();
    _cellWriter       = _vtkWriter.createCellWriter();

    _cellPWriter  = _vtkWriter.createCellDataWriter( "p" ,1);
  logTraceOutWith1Argument( "beginIteration()", solverState );
}
void peano::applications::faxen::lbf::mappings::SpacetreeGrid2CorrectDensity4LB::endIteration(
  peano::applications::faxen::lbf::SpacetreeGridBlockState&  solverState
) {
  logTraceInWith1Argument( "endIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peano::applications::faxen::lbf::mappings::SpacetreeGrid2SORStep::beginIteration(
  peano::applications::faxen::lbf::SpacetreeGridBlockState&  solverState
) {
  logTraceInWith1Argument( "beginIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "beginIteration(State)", solverState);
}
void peano::applications::heatequation::timestepping::mappings::RegularGrid2ApplyRefineDeleteCriterion::beginIteration(
  peano::applications::heatequation::timestepping::RegularGridState&  solverState
) {
  logTraceInWith1Argument( "beginIteration()", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "beginIteration()", solverState );
}
void peano::applications::puregrid::mappings::RegularGrid2SetupGrid::beginIteration(
  peano::applications::puregrid::RegularGridState&  solverState
) {
  logTraceInWith1Argument( "beginIteration()", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "beginIteration()", solverState );
}
void peano::applications::faxen::mappings::RegularGrid2Initialize::endIteration(
		peano::applications::faxen::RegularGridState&  solverState
) {
	logTraceInWith1Argument( "endIteration()", solverState );
	// @todo Insert your code here
	logTraceOutWith1Argument( "endIteration()", solverState );
}
void peano::applications::poisson::multigrid::mappings::SpacetreeGrid2SetupExperiment::endIteration(
  peano::applications::poisson::multigrid::SpacetreeGridState&  solverState
) {
  logTraceInWith1Argument( "endIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peano::applications::heatequation::timestepping::adapters::SpacetreeGrid2PlotGrid::endIteration(
  peano::applications::heatequation::timestepping::SpacetreeGridState&  solverState
) {
  logTraceInWith1Argument( "endIteration(...)", solverState );


 
  #ifdef SharedTBB
  Vertex2IndexMapSemaphore::scoped_lock localLock(_vertex2IndexMapSemaphore);
  #elif SharedOMP
  #pragma omp critical
  #endif
 
  _vertexWriter->close();
  _cellWriter->close();
  
  _vertexTypeWriter->close();
  _vertexRefinementControlWriter->close();
  _vertexMaximumSubtreeWriter->close();
  
  #ifdef Parallel
  _cellDeltaWriter->close();
  _cellWeightWriter->close();
  #endif
  
  delete _vertexWriter;
  delete _cellWriter;
  delete _vertexTypeWriter;
  delete _vertexRefinementControlWriter;
  delete _vertexMaximumSubtreeWriter;
   #ifdef Parallel
  delete _cellDeltaWriter;
  delete _cellWeightWriter;
  #endif
  
  _vertexWriter     = 0;
  _cellWriter       = 0;
  _vertexTypeWriter = 0;
  _vertexRefinementControlWriter = 0;
  _vertexMaximumSubtreeWriter = 0;
   #ifdef Parallel
  _cellDeltaWriter = 0;
  _cellWeightWriter = 0;
  #endif
  
  std::ostringstream snapshotFileName;
  snapshotFileName << "vtk-grid-snapshot-SpacetreeGrid2PlotGrid-"
                   << _snapshotCounter
                   #ifdef Parallel
                   << "-rank" << tarch::parallel::Node::getInstance().getRank()
                   #endif
                   << ".vtk";
  _vtkWriter.writeToFile( snapshotFileName.str() );
  
  _snapshotCounter++;                  
  
  _vertex2IndexMap.clear();
 
  logTraceOut( "endIteration(...)" ); 
}
void peano::applications::heatequation::timestepping::adapters::SpacetreeGrid2PlotGrid::beginIteration(
  peano::applications::heatequation::timestepping::SpacetreeGridState&  solverState
) {
  logTraceInWith1Argument( "beginIteration(...)", solverState );


  #ifdef SharedTBB
  Vertex2IndexMapSemaphore::scoped_lock localLock(_vertex2IndexMapSemaphore);
  #elif SharedOMP
  #pragma omp critical
  #endif
  
  _vtkWriter.clear();
  
  _vertexWriter     = _vtkWriter.createVertexWriter();
  _cellWriter       = _vtkWriter.createCellWriter();
  
  #ifdef Parallel
  _cellDeltaWriter  = _vtkWriter.createCellDataWriter( "delta" ,1);
  _cellWeightWriter = _vtkWriter.createCellDataWriter( "weight" ,1);
  #endif
  
  _vertexTypeWriter               = _vtkWriter.createVertexDataWriter(peano::applications::heatequation::timestepping::SpacetreeGridSingleStepVertex::Records::getInsideOutsideDomainMapping() ,1);
  _vertexRefinementControlWriter  = _vtkWriter.createVertexDataWriter(peano::applications::heatequation::timestepping::SpacetreeGridSingleStepVertex::Records::getRefinementControlMapping() ,1);
  _vertexMaximumSubtreeWriter     = _vtkWriter.createVertexDataWriter("max-subtree" ,1);




  logTraceOut( "beginIteration(...)" );
}
void peano::applications::navierstokes::prototype1::mappings::SpacetreeGrid2CalculatePPERHS::endIteration(
  peano::applications::navierstokes::prototype1::SpacetreeGridFluidStateEnhancedDivFreeEulerExplicit&  solverState
) {
  logTraceInWith1Argument( "endIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peano::applications::heatequation::timestepping::mappings::RegularGrid2RestrictRhs::endIteration(
  peano::applications::heatequation::timestepping::RegularGridState&  solverState
) {
  logTraceInWith1Argument( "endIteration()", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration()", solverState );
}
void peano::applications::faxen::lbf::mappings::RegularGrid2BlockVTKOutput::beginIteration(
		peano::applications::faxen::lbf::RegularGridBlockState&  solverState
) {
	logTraceInWith1Argument( "beginIteration()", solverState );

	// set multi-level simulation data
	_multiLevelSimData = std::auto_ptr<peano::applications::latticeboltzmann::MultiLevelSimData>(
			new peano::applications::latticeboltzmann::MultiLevelSimData(solverState)
	);
	// determine meshsize
	_h = tarch::la::Vector<DIMENSIONS,double>(
			_multiLevelSimData->getSimData(_multiLevelSimData->getSimData(0).getLevel()).getDx()
			*tarch::la::Vector<DIMENSIONS,double>(1.0)
	);

	_vtkWriter.clear();
	_vertex2IndexMap.clear();

	_vertexWriter     = _vtkWriter.createVertexWriter();
	_cellWriter       = _vtkWriter.createCellWriter();

	_densityWriter = _vtkWriter.createCellDataWriter("density",1);
	_velocityWriter    = _vtkWriter.createCellDataWriter("velocity",3);

	//#if defined(Debug) && (!defined(Parallel))
	_blockCounter = 0;
	_blockIdWriter = _vtkWriter.createCellDataWriter("block-id",1);
	//#endif

	logTraceOutWith1Argument( "beginIteration()", solverState );
}
int tarch::plotter::griddata::regular::CartesianGridArrayWriter::getCellIndex( const tarch::la::Vector<3,double>& position ) {
  logTraceInWith1Argument( "getCellIndex(Vector)", position );
  int result(0);
  int base = 1;
  tarch::la::Vector<3,double> h;
  h = getH();
  for (int d=0; d<3; d++) {
    double translatedPointPosition = position(d)-_origin(d) +h(d)/2.0 + tarch::la::NUMERICAL_ZERO_DIFFERENCE;
    int index = 0;
    if (tarch::la::greater(h(d),0.0)) {
      translatedPointPosition        = translatedPointPosition/h(d);
      index = static_cast<int>(floor(translatedPointPosition));
    }
    if (index<0) {
      index = 0;
    }
    if (index>=_numberOfGridPoints(d)-1) {
      index = _numberOfGridPoints(d)-2;
    }
    result += index * base;
    base   *= (_numberOfGridPoints(d)-1);
  }
  logTraceOutWith1Argument( "getCellIndex(Vector)", result);
  return result;
}
void peano::applications::faxen::mappings::SpacetreeGrid2ComputeVelocitiesDerivatives::endIteration(
  peano::applications::faxen::SpacetreeGridState&  solverState
) {
  logTraceInWith1Argument( "endIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peano::applications::faxen::lbf::mappings::RegularGrid2DynamicRefinementForSpacetreeGrid::endIteration(
  peano::applications::faxen::lbf::RegularGridBlockState&  solverState
) {
  logTraceInWith1Argument( "endIteration()", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration()", solverState );
}
Exemple #16
0
void peanoclaw::mappings::Cleanup::endIteration(
    peanoclaw::State&  solverState
) {
    logTraceInWith1Argument( "endIteration(State)", solverState );
    // @todo Insert your code here
    logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peano::applications::faxen::lbf::mappings::RegularGrid2MoveParticles::endIteration(
		peano::applications::faxen::lbf::RegularGridBlockState&  solverState
) {
	logTraceInWith1Argument( "endIteration()", solverState );
	peano::applications::faxen::lbf::services::ForcesService::getInstance().moveParticles(solverState.getDelt());
	logTraceOutWith1Argument( "endIteration()", solverState );
}
void pyclaw_peano_evolveToTime(double time, peanoclaw::runners::PeanoClawLibraryRunner* runner) {
  #ifdef USE_VALGRIND
  CALLGRIND_START_INSTRUMENTATION;
  CALLGRIND_ZERO_STATS;
  #endif

  static tarch::logging::Log _log("::pyclawBindings");
  logTraceInWith1Argument("pyclaw_peano_evolveToTime", time);
  assertionMsg(runner!=0, "call pyclaw_peano_new before calling pyclaw_peano_run.");

  if(_calledFromPython) {
    _pythonState = PyGILState_Ensure();
  }

  runner->evolveToTime(time);

  if(_calledFromPython) {
    PyGILState_Release(_pythonState);
  }

  #ifdef USE_VALGRIND
  CALLGRIND_STOP_INSTRUMENTATION;
  #endif
  logTraceOut("pyclaw_peano_evolveToTime");
}
void peano::applications::navierstokes::prototype1::mappings::SpacetreeGrid2PlotSolutionVTK::beginIteration(
  peano::applications::navierstokes::prototype1::SpacetreeGridFluidStateEnhancedDivFreeEulerExplicit&  solverState
) {
  logTraceInWith1Argument( "beginIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "beginIteration(State)", solverState);
}
void peano::applications::puregrid::mappings::RegularGrid2PerformOneRefinement::endIteration(
  peano::applications::puregrid::RegularGridState&  solverState
) {
  logTraceInWith1Argument( "endIteration()", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration()", solverState );
}
void peano::applications::faxen::lbf::mappings::SpacetreeGrid2SetVelocitiesBoundary::endIteration(
  peano::applications::faxen::lbf::SpacetreeGridBlockState&  solverState
) {
  logTraceInWith1Argument( "endIteration(State)", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peanoclaw::interSubgridCommunication::GridLevelTransfer::updatePatchStateDuringMergeWithWorker(
  int localCellDescriptionIndex,
  int remoteCellDescriptionIndex
) {
  logTraceInWith1Argument("updatePatchStateDuringMergeWithWorker", localCellDescriptionIndex);

  assertion(localCellDescriptionIndex != -1);
  CellDescription& localCellDescription = CellDescriptionHeap::getInstance().getData(localCellDescriptionIndex).at(0);
  Patch localPatch(localCellDescription);

  if(remoteCellDescriptionIndex != -1) {
    CellDescription& remoteCellDescription = CellDescriptionHeap::getInstance().getData(remoteCellDescriptionIndex).at(0);

    assertion1(localCellDescriptionIndex != -1, localPatch);
    if(remoteCellDescription.getUIndex() != -1) {
      assertion1(localPatch.isVirtual() || localPatch.isLeaf(), localPatch);

      //Delete current content of patch
      DataHeap::getInstance().deleteData(localPatch.getUIndex());

      //Merge
      localCellDescription.setUIndex(remoteCellDescription.getUIndex());
    }

    CellDescriptionHeap::getInstance().deleteData(remoteCellDescriptionIndex);
  }

  logTraceOut("updatePatchStateDuringMergeWithWorker");
}
void peano::applications::navierstokes::prototype1::mappings::RegularGrid2InitialiseScenario::endIteration(
  peano::applications::navierstokes::prototype1::RegularGridFluidStateEnhancedDivFreeEulerExplicit&  solverState
) {
  logTraceInWith1Argument( "endIteration()", solverState );
  // @todo Insert your code here
  logTraceOutWith1Argument( "endIteration()", solverState );
}
void peano::applications::navierstokes::prototype1::mappings::RegularGrid2InitialiseScenario::beginIteration(
  peano::applications::navierstokes::prototype1::RegularGridFluidStateEnhancedDivFreeEulerExplicit&  solverState
) {
  logTraceInWith1Argument( "beginIteration()", solverState );
  // @todo Insert your code here
  _log.info("beginIteration()","start iteration for InitialiseScenario mapping ...");
  logTraceOutWith1Argument( "beginIteration()", solverState );
}
Exemple #25
0
void peanoclaw::mappings::ValidateGrid::endIteration(
  peanoclaw::State&  solverState
) {
  logTraceInWith1Argument( "endIteration(State)", solverState );

  //TODO unterweg debug
  #ifdef Parallel
  logInfo("", "END ITERATION" << tarch::parallel::Node::getInstance().getRank() << "!");
  #endif

  if(
    #ifdef Parallel
    tarch::parallel::Node::getInstance().isGlobalMaster()
    #else
    true
    #endif
  ) {

    //Copy collected patches
    std::vector<PatchDescription>& receivedDescriptions = PatchDescriptionHeap::getInstance().getData(_patchDescriptionsIndex);
    logInfo("endIteration(State)", "Received patches: " << receivedDescriptions.size());
    std::vector<PatchDescription> localDescriptions = _validator.getAllPatches();
    for(std::vector<PatchDescription>::iterator i = receivedDescriptions.begin();
        i != receivedDescriptions.end();
        i++) {
      localDescriptions.push_back(*i);
    }
    logInfo("endIteration(State)", "Total patches: " << localDescriptions.size());

    //Construct database
    peanoclaw::statistics::PatchDescriptionDatabase database;
    for(int i = 0; i < (int)localDescriptions.size(); i++) {
      database.insertPatch(localDescriptions[i]);
    }

    //Check for unreferenced patches
    for(int i = 0; i < (int)localDescriptions.size(); i++) {
      if(!localDescriptions[i].getIsReferenced()) {
        logError("endIteration", "Unreferenced Patch found: " << localDescriptions[i].toString() <<
            ", isUnreferenced=" << database.containsPatch(localDescriptions[i].getPosition(), localDescriptions[i].getLevel(), localDescriptions[i].getRank()));
//        assertionFail("");
      }
    }

    _validator.validatePatches();

    logInfo("endIteration", "Validated " << localDescriptions.size() << " subgrids.");
  }

  #ifdef Parallel
  PatchDescriptionHeap::getInstance().finishedToSendBoundaryData(solverState.isTraversalInverted());
  if(tarch::parallel::Node::getInstance().isGlobalMaster()) {
    PatchDescriptionHeap::getInstance().finishedToSendSynchronousData();
  }
  #endif

  logTraceOutWith1Argument( "endIteration(State)", solverState);
}
void peano::applications::faxen::lbf::mappings::RegularGrid2ComputeRightHandSide::beginIteration(
		peano::applications::faxen::lbf::RegularGridBlockState&  solverState
) {
	logTraceInWith1Argument( "beginIteration()", solverState );

	_dx = solverState.getDelx();
	_dy = solverState.getDely();
	_dt = solverState.getDelt();
	logTraceOutWith1Argument( "beginIteration()", solverState );
}
void peano::applications::poisson::jacobitutorial::mappings::RegularGrid2PlotSolution::endIteration(
  peano::applications::poisson::jacobitutorial::RegularGridState&  solverState
) {
  logTraceInWith1Argument( "endIteration()", solverState );

  /**
   * --- inserted manually ---
   *
   * Whenever we startup a plotter iteration, we take the output file name and
   * add a counter. The counter is stored in the state as we have to keep track
   * of it throughout the whole program execution, and mappings should not have
   * a persistent state themselves.
   */
  std::ostringstream newFilename;
  newFilename << "jacobi-solution-on-regular-grid-"
              << solverState.getFilenameCounterAndIncrementIt()
              << ".vtk";

  /**
   * --- inserted manually ---
   *
   * Close the data writers, pipe the data to a file, and destroy all the
   * objects we won't need anymore. This is again technical stuff.
   */
  _vertexWriter->close();
  _cellWriter->close();

  _vertexResidualWriter->close();
  _vertexValueWriter->close();
  _vertexRhsWriter->close();

  delete _vertexWriter;
  delete _cellWriter;
  delete _vertexResidualWriter;
  delete _vertexValueWriter;
  delete _vertexRhsWriter;

  _vertexWriter         = 0;
  _cellWriter           = 0;
  _vertexResidualWriter = 0;
  _vertexValueWriter    = 0;
  _vertexRhsWriter      = 0;

  _vtkWriter.writeToFile( newFilename.str() );

  /**
   * --- inserted manually ---
   *
   * Lets finally tell the user that we've created a file.
   */
  logInfo( "endIteration()", "wrote solution to " << newFilename.str() );

  logTraceOutWith1Argument( "endIteration()", solverState );
}
void peano::applications::navierstokes::prototype1::mappings::RegularGrid2UpdateVelocity::beginIteration(
  peano::applications::navierstokes::prototype1::RegularGridFluidStateEnhancedDivFreeEulerExplicit&  solverState
) {
  logTraceInWith1Argument( "beginIteration()", solverState );

  _tau = solverState.getOdeTau();
  _elementType = solverState.getElementType();

  _log.info("beginIteration()","start iteration for UpdateVelocity mapping ...");
  logTraceOutWith1Argument( "beginIteration()", solverState );
}
void particles::pidt::mappings::MoveParticles::beginIteration(
  particles::pidt::State&  solverState
) {
  logTraceInWith1Argument( "beginIteration(State)", solverState );

  _state = solverState;
  _state.clearStatistics();
  ParticleHeap::getInstance().startToSendBoundaryData(solverState.isTraversalInverted());

  logTraceOutWith1Argument( "beginIteration(State)", solverState);
}
void peano::applications::heatequation::timestepping::mappings::SpacetreeGrid2ComputeImplicitSolutionWithJacobi::beginIteration(
  peano::applications::heatequation::timestepping::SpacetreeGridState&  solverState
) {
  logTraceInWith1Argument( "beginIteration(State)", solverState );

  _solver.clearMeasurements();
  _solver.setTimeStepSize(solverState.getTimeStepSize());
  _solver.setOmega( solverState.getRelaxationFactor() );

  logTraceOutWith1Argument( "beginIteration(State)", solverState);
}