MAIA bb96820c
Multiphysics at AIA
|
A LS solver based on the semi-lagrangian method // TODO labels:LS documentation LsCartesianSolverSemiLagrangian. More...
#include <lscartesiansolversemilagrangian.h>
Public Types | |
using | CartesianSolver = typename maia::CartesianSolver< nDim, LsCartesianSolverSemiLagrangian > |
using | Grid = typename CartesianSolver::Grid |
using | GridProxy = typename CartesianSolver::GridProxy |
using | Geom = Geometry< nDim > |
Public Types inherited from LsCartesianSolver< nDim > | |
using | Cell = typename maia::grid::tree::Tree< nDim_ >::Cell |
using | GCellCollector = maia::ls::collector::GCells< nDim_ > |
using | PropertyReference = typename GCellCollector::BitsetType::reference |
using | CartesianSolver = typename maia::CartesianSolver< nDim, LsCartesianSolver > |
using | Grid = typename CartesianSolver::Grid |
using | GridProxy = typename CartesianSolver::GridProxy |
using | Geom = Geometry< nDim > |
Public Types inherited from maia::CartesianSolver< nDim_, LsCartesianSolver< nDim_ > > | |
using | Grid = CartesianGrid< nDim > |
using | GridProxy = typename maia::grid::Proxy< nDim > |
using | Geom = Geometry< nDim > |
using | TreeProxy = maia::grid::tree::TreeProxy< nDim > |
using | Cell = maia::grid::tree::Cell |
Public Member Functions | |
LsCartesianSolverSemiLagrangian (const MInt solverId, const MBool *propertiesGroups, GridProxy &gridProxy_, Geom &geometry_, const MPI_Comm comm) | |
Public Member Functions inherited from LsCartesianSolver< nDim > | |
MFloat | time () const override |
Return the time. More... | |
MFloat | timeStep () const |
Returns the timeStep. More... | |
MInt | noVariables () const override |
Return the number of variables. More... | |
virtual void | saveSolverSolution (const MBool, const MBool) |
virtual void | cleanUp () |
Geom & | geometry () const |
Access the solver's geometry. More... | |
LsCartesianSolver (MInt, const MBool *, GridProxy &gridProxy_, Geom &geometry_, const MPI_Comm comm) | |
CHECKNORMAL< nDim > & | checkNormal () const |
MInt | noSolverTimers (const MBool allTimings) override |
MInt | maxLevel () const |
MFloat | c_cellLengthAtCell (const MInt gCellId) const |
MFloat | cellVolumeAtCell (const MInt gCellId) const |
MFloat | c_cellLengthAtLevel (const MInt level) const |
MInt | noInternalCells () const override |
Return the number of internal cells within this solver. More... | |
void | extendVelocity (const MInt set) |
MInt | a_noCells () const |
void | a_appendCollector () |
void | a_resetPropertiesSolver (const MInt cellId) |
Returns property p of the cell cellId . More... | |
maia::ls::cell::BitsetType::reference | a_isBndryCellG (const MInt cellId) |
MBool | a_isBndryCellG (const MInt cellId) const |
MInt | a_maxGCellLevel (const MInt set=-1) const |
MFloat & | a_extensionVelocityG (const MInt cellId, const MInt dim, const MInt set) |
Returns fExt of the cell cellId for index n . More... | |
MFloat | a_extensionVelocityG (const MInt cellId, const MInt dim, const MInt set) const |
Returns fExt of the cell cellId for index n . More... | |
maia::ls::cell::BitsetTypeSet::reference | a_inBandG (const MInt cellId, const MInt set) |
MBool | a_inBandG (const MInt cellId, const MInt set) const |
maia::ls::cell::BitsetTypeSet::reference | a_isGBoundaryCellG (const MInt cellId, const MInt set) |
MBool | a_isGBoundaryCellG (const MInt cellId, const MInt set) const |
MBool | a_isGZeroCell (const MInt cellId, const MInt set) const |
maia::ls::cell::BitsetTypeSet::reference | a_isGZeroCell (const MInt cellId, const MInt set) |
MBool | a_wasGZeroCell (const MInt cellId, const MInt set) const |
maia::ls::cell::BitsetTypeSet::reference | a_wasGZeroCell (const MInt cellId, const MInt set) |
maia::ls::cell::BitsetTypeSet::reference | a_hasPositiveSign (const MInt cellId, const MInt set) |
Returns the hasPositiveSigncellId for the setset . More... | |
MBool | a_hasPositiveSign (const MInt cellId, const MInt set) const |
Returns the hasPositiveSigncellId for the setset . More... | |
MInt | a_levelSetSign (const MInt cellId, const MInt set) |
Returns the signed (MInt) version of hasPositiveSigncellId for the setset . More... | |
MFloat & | a_normalVectorG (const MInt cellId, const MInt dim, const MInt set) |
Returns normalVector of the cell cellId for index n . More... | |
MFloat | a_normalVectorG (const MInt cellId, const MInt dim, const MInt set) const |
Returns normalVector of the cell cellId for index n . More... | |
maia::ls::cell::BitsetType::reference | a_nearGapG (const MInt cellId) |
MBool | a_nearGapG (const MInt cellId) const |
maia::ls::cell::BitsetType::reference | a_regridTriggerG (const MInt cellId) |
MBool | a_regridTriggerG (const MInt cellId) const |
MInt & | a_bodyIdG (const MInt cellId, const MInt set) |
Returns bodyId of the cell cellId for set set . More... | |
MInt | a_bodyIdG (const MInt cellId, const MInt set) const |
Returns bodyId of the cell cellId for set set . More... | |
MInt & | a_secondBodyId (const MInt cellId) |
Returns secondBodyId of the cell cellId for set set . More... | |
MInt | a_secondBodyId (const MInt cellId) const |
Returns secondBodyId of the cell cellId for set set . More... | |
MFloat & | a_curvatureG (const MInt cellId, const MInt set) |
Returns curvature of the cell cellId for set set . More... | |
MFloat | a_curvatureG (const MInt cellId, const MInt set) const |
Returns curvature of the cell cellId for set set . More... | |
MFloat & | a_levelSetFunctionG (const MInt cellId, const MInt set) |
Returns levelSetFunction of the cell cellId . More... | |
MFloat | a_levelSetFunctionG (const MInt cellId, const MInt set) const |
Returns levelSetFunction of the cell cellId . More... | |
MFloat & | a_oldLevelSetFunctionG (const MInt cellId, const MInt set) |
Returns the old levelSetFunction of the cell cellId . More... | |
MFloat | a_oldLevelSetFunctionG (const MInt cellId, const MInt set) const |
Returns the old levelSetFunction of the cell cellId . More... | |
MFloat & | a_levelSetFunctionSlope (const MInt cellId, const MInt dim, const MInt set) |
Returns ls-FunctionSlope of the cell cellId for set dim set . More... | |
MFloat | a_levelSetFunctionSlope (const MInt cellId, const MInt dim, const MInt set) const |
Returns ls-FunctionSlope of the cell cellId for set dim set . More... | |
MFloat & | a_levelSetRHS (const MInt cellId, const MInt set) |
Returns ls-RHS of the cell cellId for set set . More... | |
MFloat | a_levelSetRHS (const MInt cellId, const MInt set) const |
Returns ls-RHS of the cell cellId for set set . More... | |
MFloat & | a_correctedBurningVelocity (const MInt cellId, const MInt set) |
Returns corrected burning velocity of the cell cellId for set set . More... | |
MFloat | correctedBurningVelocity (const MInt cellId, const MInt set) const |
Returns corrected burning velocity of the cell cellId for set set . More... | |
MLong & | a_containingCell (const MInt cellId, const MInt body) |
Returns the containing cellcellId . More... | |
MLong | a_containingCell (const MInt cellId, const MInt body) const |
Returns the containing cellcellId . More... | |
MInt & | a_containingDomain (const MInt cellId, const MInt body) |
Returns the containing DomaincellId . More... | |
MInt | a_containingDomain (const MInt cellId, const MInt body) const |
Returns the containing DomaincellId . More... | |
MFloat & | a_gapWidth (const MInt id) |
Returns the gap widthcellId . More... | |
MFloat | a_gapWidth (const MInt id) const |
Returns the gap widthcellId . More... | |
MInt & | a_potentialGapCell (const MInt id) |
Returns the potential gap cellcellId . More... | |
MInt | a_potentialGapCell (const MInt id) const |
Returns the potential gap cellcellId . More... | |
MInt & | a_potentialGapCellClose (const MInt id) |
Returns the potential gap cell closecellId . More... | |
MInt | a_potentialGapCellClose (const MInt id) const |
Returns the potential gap cell closecellId . More... | |
MFloat & | a_meanCoord (const MInt dir) |
MFloat | a_meanCoord (const MInt dir) const |
MInt | c_noCells () const |
MInt | c_parentId (const MInt gCellId) const |
MInt | c_noChildren (const MInt gCellId) const |
MInt | c_childId (const MInt gCellId, const MInt pos) const |
MFloat | c_coordinate (const MInt gCellId, const MInt dim) const |
Returns the coordinate of the cell cellId for direction dim . More... | |
MInt | c_neighborId (const MInt gCellId, const MInt dir) const |
MInt | a_bandNghbrIdsG (const MInt cellId, const MInt dir, const MInt set) const |
Returns bandNeighborId of the cell cellId for index n . More... | |
MInt | a_hasNeighbor (const MInt gCellId, const MInt dir) const |
Returns noNeighborIds of the gcell CellId variables varId . More... | |
MBool | a_isWindow (const MInt gCellId) const |
Returns IsWindow of the cell cellId . More... | |
maia::ls::cell::BitsetType::reference | a_isWindow (const MInt gCellId) |
Returns IsWindow of the cell cellId . More... | |
MLong | c_globalId (const MInt gCellId) const |
MInt | a_domainId (const MLong gGlobalId) |
MInt | a_localId (const MLong gGlobalId) |
MBool | c_isLeafCell (const MInt gCellId) const |
MBool | a_isHalo (const MInt gCellId) const |
Returns IsHalo of the cell cellId . More... | |
maia::ls::cell::BitsetType::reference | a_isHalo (const MInt gCellId) |
Returns IsHalo of the cell cellId . More... | |
MInt | a_level (const MInt gCellId) const |
Returns the level of the gcell gCellId . More... | |
MFloat & | a_flameSpeedG (const MInt cellId, const MInt set) |
Returns flameSpeed of the cell cellId for index n . More... | |
MFloat | a_flameSpeedG (const MInt cellId, const MInt set) const |
Returns flameSpeed of the cell cellId for index n . More... | |
MBool | forceAdaptation () override |
Returns the levelSet-Adaptation-forcing. More... | |
constexpr MInt | a_bandCellId (MInt id, MInt set) const |
constexpr MInt | a_internalBandCellId (MInt id, MInt set) const |
constexpr MInt | a_bandBndryCellId (MInt id, MInt set) const |
constexpr MInt | a_G0CellId (MInt id, MInt set) const |
constexpr MInt | a_gBndryCellId (MInt id, MInt set) const |
constexpr MInt | a_noBandCells (MInt set) const |
constexpr MInt | a_noInternalBandCells (MInt set) const |
constexpr MInt | a_noBandBndryCells (MInt set) const |
constexpr MInt | a_noG0Cells (MInt set) const |
constexpr MInt | a_noGBndryCells (MInt set) const |
MInt & | a_bandLayer (MInt id, MInt set) |
MInt | a_bandLayer (MInt id, MInt set) const |
MInt & | a_internalBandLayer (MInt id, MInt set) |
MInt | a_internalBandLayer (MInt id, MInt set) const |
MInt | getCurrentTimeStep () const override |
void | resetExtensionVelocity () |
void | initSolver () override |
void | initLocalizedLevelSetCG () |
void | createBaseGgridCG () |
void | createGgridCG (MBool=false) |
void | generateListOfGExchangeCellsCG () |
void | buildLevelSetTube (MInt mode=-1) |
void | fastBuildLevelSetTubeCG () |
void | testCellsCG () |
void | restartLocalizedLevelSetCG () |
MInt | loadLevelSetGridFlowVarsParCG (const MChar *fileName) |
virtual void | writeRestartLevelSetFileCG (MBool, const MString &, const MString &) |
void | prepareAdaptation () override |
prepare adaptation for split adaptation before the adaptation loop More... | |
void | setSensors (std::vector< std::vector< MFloat > > &sensors, std::vector< MFloat > &sensorWeight, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MInt > &sensorSolverId) override |
set solver sensors for split adaptation within the adaptation loop More... | |
void | postAdaptation () override |
post adaptation for split adaptation within the adaptation loop More... | |
void | finalizeAdaptation () override |
finalize adaptation for split sadptation after the adaptation loop More... | |
void | sensorInterface (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override |
void | removeChilds (const MInt) override |
Coarsen the given cell. More... | |
void | removeCell (const MInt) override |
Remove the given cell. More... | |
void | refineCell (const MInt) override |
Refine the given cell. More... | |
void | swapCells (const MInt, const MInt) override |
Swap the given cells. More... | |
void | swapProxy (const MInt cellId0, const MInt cellId1) override |
Swap the given cells. More... | |
MInt | cellOutside (const MFloat *, const MInt, const MInt) override |
Check whether cell is outside the fluid domain. More... | |
void | exchangeAllLevelSetData () |
void | exchangeLevelSet () |
void | exchangeLs (MFloat *, MInt, MInt) |
void | exchangeGapInfo () |
void | initAzimuthalExchange () |
void | resizeGridMap () override |
Swap the given cells. More... | |
MBool | levelSetAdaptationTrigger () |
void | getContainingCellFromNeighbor (MInt body, MInt cellId, MFloat *xCoord, MFloat *xOld) |
MInt | getContainingCellHalo (MFloat *point) |
void | finalizeInitSolver () override |
void | initRotatingLS () |
void | resetContainingGCells () |
void | updateContainingGCells (MInt mode=0) |
void | copyWindowToHaloIds () |
void | checkHaloCells () |
void | setInterfaceList (MIntScratchSpace &interfaceCells) |
void | resetSolverFull () |
void | resetSolver () override |
Reset the solver/solver for load balancing. More... | |
void | balance (const MInt *const noCellsToReceiveByDomain, const MInt *const noCellsToSendByDomain, const MInt *const targetDomainsByCell, const MInt oldNoCells) override |
void | balancePre () override |
void | balancePost () override |
void | finalizeBalance () override |
MBool | hasSplitBalancing () const override |
Return if load balancing for solver is split into multiple methods or implemented in balance() More... | |
void | localToGlobalIds () override |
MInt | noCellDataDlb () const override |
Methods to inquire solver data information. More... | |
MInt | cellDataTypeDlb (const MInt dataId) const override |
MInt | cellDataSizeDlb (const MInt dataId, const MInt gridCellId) override |
void | getCellDataDlb (const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, MInt *const data) override |
Return solver data for DLB. More... | |
void | getCellDataDlb (const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, MFloat *const data) override |
void | setCellDataDlb (const MInt dataId, const MInt *const data) override |
Set solver data for DLB. More... | |
void | setCellDataDlb (const MInt dataId, const MFloat *const data) override |
void | setCellWeights (MFloat *) override |
Set cell weights. More... | |
MInt | noLoadTypes () const override |
void | getDefaultWeights (MFloat *weights, std::vector< MString > &names) const override |
void | getLoadQuantities (MInt *const loadQuantities) const override |
MFloat | getCellLoad (const MInt cellId, const MFloat *const weights) const override |
void | getSolverTimings (std::vector< std::pair< MString, MFloat > > &solverTimings, const MBool allTimings) override |
void | limitWeights (MFloat *) override |
void | getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &domainInfo) override |
void | reconstructOldGField () |
void | rotateLevelSet (MInt returnMode, MFloat *cellData, MInt body, const MFloat *xCoord, const MFloat *xCenter, const MFloat *angle) |
void | processRotatingLevelSet (MFloat &phi, MInt &cellId, MInt &domId, MFloat *point, MInt set) |
MInt | checkSecondLayerCells (std::vector< MInt > &diag2Cells, std::map< MInt, std::vector< MInt > > &dirCode, MFloat *point) |
void | prepareGlobalComm (MInt *noCellsToDom) |
void | globalToLocalIdsContainingCells () |
void | localToGlobalIdsContainingCells () |
void | computeLevelSetRHS () |
void | levelSetConstrainedReinitialization (MInt methodId, MInt startSet, MInt endSet, MInt gapMode) |
void | levelSetHighOrderConstrainedReinitialization (MInt methodId, MInt startSet, MInt endSet, MInt gapMode) |
void | maintainOuterBandLayers (MInt order, MInt startSet, MInt endSet) |
void | determineMinMaxMeanInterfacePosition () |
void | determineSteadyFlameLength () |
void | determineMinMaxMeanRegionInterfacePosition (MFloat xRegN, MFloat xRegP, MFloat yRegN, MFloat yRegP, MInt set) |
void | reinitBand (MInt startSet, MInt endSet) |
void | initializeGControlPoint () |
this function is used to initialize the control point. More... | |
void | initializeIntegrationScheme () |
void | initializeIntegrationScheme_semiLagrange () |
void | setGCellBndryProperty () |
void | applyLevelSetBoundaryConditions () |
void | initializeGField () |
Initializes the solver values with the values of the undisturbed flow The values are given by the property file. The conservative and primitive variables are calculated and set with the given values as also the variables of the cells. More... | |
void | constructGFieldFromSTL (MInt ConstructFlag) |
Used for initializing G field into the domain. ConstructFlag == 0: only reinitialization part will be called (used cell-type depends on the initMode) == 1: only initialization part will be called (which uses all cells in the domain) == 2: both initialization and reinitialization part will be called (currently unused!) (however only cells in the band are used for the initialization, only usefull after band-cells have been found!) == 3: only initialization part will be called (which uses all band-cells in the domain) only usefull after band-cells have been found! More... | |
void | rotateSTL (MInt direction) |
void | rotateSTL (MInt direction, MInt body, MFloat *center) |
void | spatiallyAdaptiveCorrectionFromSTL () |
this function does a correction based on the curvature of the geometry. The high curvature regions are corrected, while the low curvature regions are left untouched. The number of the corrected is controlled by the multiple level thresholds. remarks: this works only with control 2 (moving STL). More... | |
void | levelSetReinitialization (MInt mode=1) |
void | setBandNewArrivals (MInt computingSet=-1) |
void | updateLowerGridLevels (MInt mode=-1) |
void | updateAllLowerGridLevels (MInt mode=-1) |
void | determineG0Cells (MInt computingSet=-1) |
void | determineBandCells (MInt mode=-1) |
void | updateBndryCellList () |
void | resetOutsideCells (MInt mode=-1) |
void | resetOldOutsideCells () |
void | computeCurvature (MInt mode=-1) |
void | computeCurvaturePeriodic () |
void | determinePropagationSpeed () |
void | computeNormalVectors (MInt mode=-1) |
void | computeNormalVectorsPeriodic () |
void | computeNormalVectorsAtFront () |
void | computeExtensionVelocityGEQUPVMarksteinOpt (MFloat *FfluidDensity, MInt set) |
void | computeGCellTimeStep () |
void | levelSetRestriction () |
void | computeZeroLevelSetArcLength () |
void | setUpBodyToSetTable () |
void | computeBodyPropertiesForced (MInt returnMode, MFloat *bodyData, MInt body, MFloat time, MBool printPosition=false) |
returns a specific property of the specifuec body used to provide a unique function for both level-set and moving boundary code return mode: 1: body venter 2: body velocity 3: body acceleration 4: body temperature More... | |
void | identifyBodies (MInt mode=0) |
sets a_bodyIdG(gCells,set) for all sets exept for the collected levelset (this is done in buildCollectedLevelSet()) More... | |
void | setUpLevelSetInterpolationStencil (MInt cellId, MInt *interpolationCells, MInt position) |
MInt | setUpLevelSetInterpolationStencil (MInt cellId, MInt *interpolationCells, MFloat *point) |
void | shiftOldLevelSetField (MInt dir, MInt set, MInt body) |
void | buildCollectedLevelSet (MInt mode=1) |
void | reBuildCollectedLevelSet (MInt mode) |
void | gapHandling () |
void | levelSetGapCorrect () |
void | levelSetGapRecorrect () |
void | finalizeLevelSetInitialization () |
void | setUpPotentialGapCells () |
Set up cells, that may be tagged as gap cells during the solver run! Initialises the arrays, according to the specifiec properties: More... | |
void | allocateLevelSetMemory () |
void | allocateRotatingLs () |
void | initializeCollectedLevelSet (MInt mode) |
void | regionGrowing (MInt cellId, MInt region) |
void | setChildRegions (MInt cellId, MInt region) |
MBool | levelSetSolver () |
MBool | gRungeKutta () |
MBool | semiLagrangeTimeStep () |
MBool | regridLevelSet () |
MBool | levelSetReinitializationTrigger () |
MBool | inCell (MInt cellId, MFloat *point) |
MBool | gapCellsExist () |
MBool | localGapCellsExist () |
MFloat | firstOrderEikonalSolver (MInt cellListSize, MInt maxIterations, MInt set) |
MFloat | secondOrderEikonalSolver (MFloat *q, const MInt *nghbrs, MInt cellListSize, MInt maxIterations, MInt set) |
MFloat | fifthOrderEikonalSolver (MInt cellListSize, MInt maxIterations, MInt *crCells, MInt noCRCells, MFloat *factors, MInt crMode, MInt set) |
MFloat | computeDistanceFromSTL (MFloat *target, MInt *closestElement, MFloat *closestPoint, MInt set, MFloat sphereRadiusFactor=F5) |
MFloat | interpolateOldLevelSet (MInt *interpolationCells, MFloat *point, MInt referenceSet) |
MFloat | interpolateLevelSet (MInt *interpolationCells, MFloat *point, MInt referenceSet) |
MInt | determineLevelSetSignFromSTL (MFloat *target, MInt set) |
this function checks if the "target" coordinates is inside(return 1) or outside (return -1) STL and return level set sign. More... | |
MInt | hyperbolicExtensionOpt (MFloat *q, MInt *cellList, MInt cellListSize, MFloat convergenceCriterion, MInt set) |
MInt | getContainingCell (MFloat *point) |
MInt | getContainingCell (MInt startCell, MFloat *point, MInt set=-1) |
void | exchangeIntBuffers (MInt *, MInt *, MInt, MInt) |
void | exchangeBuffersGlobal (T *sendBuffer, T *receiveBuffer, MInt *, MInt *, MInt *, MInt *, MInt, MInt offset=1) |
void | readLevelSetProperties () |
void | preTimeStep () override |
void | postTimeStep () override |
void | buildMultipleLevelSet (MInt mode=1) |
MBool | _levelSetSolutionStep () |
MBool | finalizeLevelSet_ (const MInt t_levelSet, const MInt t_output) |
MBool | solutionStep () override |
void | finalizeLevelSet () |
void | saveRestartFile (const MBool, MInt *) |
void | writeRestartFile (const MBool, const MBool, const MString, MInt *recalcIdTree) override |
void | reIntAfterRestart (MBool) override |
MBool | prepareRestart (MBool, MBool &) override |
Prepare the solvers for a grid-restart. More... | |
MFloat | reduceData (const MInt, MFloat *data, const MInt dataBlockSize=1) |
MFloat | crankAngle (const MFloat, const MInt) |
void | determinePeriodicDistance () |
Public Member Functions inherited from maia::CartesianSolver< nDim_, LsCartesianSolver< nDim_ > > | |
CartesianSolver (const MInt solverId, GridProxy &gridProxy_, const MPI_Comm comm, const MBool checkActive=false) | |
MInt | minLevel () const |
Read-only accessors for grid data. More... | |
MInt | maxLevel () const |
MInt | maxNoGridCells () const |
MInt | maxRefinementLevel () const |
MInt | maxUniformRefinementLevel () const |
MInt | noNeighborDomains () const |
MInt | neighborDomain (const MInt id) const |
MLong | domainOffset (const MInt id) const |
MInt | noHaloLayers () const |
MInt | noHaloCells (const MInt domainId) const |
MInt | haloCellId (const MInt domainId, const MInt cellId) const |
MInt | noWindowCells (const MInt domainId) const |
MInt | windowCellId (const MInt domainId, const MInt cellId) const |
MString | gridInputFileName () const |
MFloat | reductionFactor () const |
MFloat | centerOfGravity (const MInt dir) const |
MInt | neighborList (const MInt cellId, const MInt dir) const |
const MLong & | localPartitionCellGlobalIds (const MInt cellId) const |
MLong | localPartitionCellOffsets (const MInt index) const |
MInt | noMinCells () const |
MInt | minCell (const MInt id) const |
const MInt & | haloCell (const MInt domainId, const MInt cellId) const |
const MInt & | windowCell (const MInt domainId, const MInt cellId) const |
MBool | isActive () const override |
constexpr GridProxy & | grid () const |
GridProxy & | grid () |
virtual void | sensorDerivative (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorDivergence (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorTotalPressure (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorEntropyGrad (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorEntropyQuot (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorVorticity (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorInterface (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
void | sensorLimit (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt, std::function< MFloat(MInt)>, const MFloat, const MInt *, const MBool, const MBool allowCoarsening=true) |
simple sensor to apply a limit for a value More... | |
void | sensorSmooth (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
sensor to smooth level jumps NOTE: only refines additional cells to ensure a smooth level transition this requires that all other sensors are frozen i.e. no refine/coarse sensors set! More... | |
void | sensorBand (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
This sensor generates a max refinement band around the cells with max refinement level. In order for it to work, the property addedAdaptationSteps has to be equal to /maxRefinementLevel() - minLevel()/. This sensor also ensures a smooth transition between levels. Do not use together with sensorSmooth. More... | |
virtual void | sensorMeanStress (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorParticle (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorSpecies (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorPatch (std::vector< std::vector< MFloat > > &sensor, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) |
virtual void | sensorCutOff (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
void | saveSensorData (const std::vector< std::vector< MFloat > > &sensors, const MInt &level, const MString &gridFileName, const MInt *const recalcIds) override |
Saves all sensor values for debug/tunig purposes. More... | |
void | assertValidGridCellId (const MInt) const |
MLong | c_parentId (const MInt cellId) const |
Returns the grid parent id of the cell cellId . More... | |
MLong | c_neighborId (const MInt cellId, const MInt dir) const |
Returns the grid neighbor id of the grid cell cellId dir . More... | |
MInt | c_noCells () const |
MInt | c_level (const MInt cellId) const |
MLong | c_globalGridId (const MInt cellId) |
void | exchangeData (T *data, const MInt dataBlockSize=1) |
Exchange memory in 'data' assuming a solver size of 'dataBlockSize' per cell. More... | |
void | exchangeLeafData (std::function< T &(MInt, MInt)> data, const MInt noDat=1) |
Blocking exchange memory in 'data' assuming a solver size of 'dataBlockSize' per cell NOTE: exchange is only performed on leaf-cells and leaf-NeighborDomains Assumes, that updateLeafCellExchange has been called in the proxy previously! More... | |
void | exchangeSparseLeafValues (G getData, S setData, const MInt dataSize, M cellMapping) |
Exchange of sparse data structures on max Level. More... | |
void | exchangeAzimuthalPer (T *data, MInt dataBlockSize=1, MInt firstBlock=0) |
Exchange of sparse data structures on max Level. More... | |
void | collectVariables (T *variablesIn, ScratchSpace< T > &variablesOut, const std::vector< MString > &variablesNameIn, std::vector< MString > &variablesNameOut, const MInt noVars, const MInt noCells, const MBool reverseOrder=false) |
generalised helper function for writing restart files! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | collectVariables (T **variablesIn, ScratchSpace< T > &variablesOut, const std::vector< MString > &variablesNameIn, std::vector< MString > &variablesNameOut, const MInt noVars, const MInt noCells) |
generalised helper function for writing restart files! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | saveGridFlowVars (const MChar *fileName, const MChar *gridFileName, const MInt noTotalCells, const MInt noInternal, MFloatScratchSpace &dbVariables, std::vector< MString > &dbVariablesName, MInt noDbVars, MIntScratchSpace &idVariables, std::vector< MString > &idVariablesName, MInt noIdVars, MFloatScratchSpace &dbParameters, std::vector< MString > &dbParametersName, MIntScratchSpace &idParameters, std::vector< MString > &idParametersName, MInt *recalcIds, MFloat time) |
This function writes the parallel Netcdf cartesian grid cell based solution/restart file currently used in PostData, LPT and LS solvers! More... | |
void | collectParameters (T, ScratchSpace< T > &, const MChar *, std::vector< MString > &) |
This function collects a single parameters for the massivley parallel IO functions. More... | |
void | calcRecalcCellIdsSolver (const MInt *const recalcIdsTree, MInt &noCells, MInt &noInternalCellIds, std::vector< MInt > &recalcCellIdsSolver, std::vector< MInt > &reorderedCellIds) |
Derive recalc cell ids of the solver and reordered cell ids. More... | |
Public Member Functions inherited from Solver | |
MString | getIdentifier (const MBool useSolverId=false, const MString preString="", const MString postString="_") |
virtual | ~Solver ()=default |
virtual MInt | noInternalCells () const =0 |
Return the number of internal cells within this solver. More... | |
virtual MFloat | time () const =0 |
Return the time. More... | |
virtual MInt | noVariables () const |
Return the number of variables. More... | |
virtual void | getDimensionalizationParams (std::vector< std::pair< MFloat, MString > > &) const |
Return the dimensionalization parameters of this solver. More... | |
void | updateDomainInfo (const MInt domainId, const MInt noDomains, const MPI_Comm mpiComm, const MString &loc) |
Set new domain information. More... | |
virtual MFloat & | a_slope (const MInt, MInt const, const MInt) |
virtual MBool | a_isBndryCell (const MInt) const |
virtual MFloat & | a_FcellVolume (MInt) |
virtual MInt | getCurrentTimeStep () const |
virtual void | accessSampleVariables (MInt, MFloat *&) |
virtual void | getSampleVariableNames (std::vector< MString > &NotUsed(varNames)) |
virtual MBool | a_isBndryGhostCell (MInt) const |
virtual void | saveCoarseSolution () |
virtual void | getSolverSamplingProperties (std::vector< MInt > &NotUsed(samplingVarIds), std::vector< MInt > &NotUsed(noSamplingVars), std::vector< std::vector< MString > > &NotUsed(samplingVarNames), const MString NotUsed(featureName)="") |
virtual void | initSolverSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const std::vector< MInt > &NotUsed(noSamplingVars)) |
virtual void | calcSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const MBool NotUsed(exchange)) |
virtual void | calcSamplingVarAtPoint (const MFloat *NotUsed(point), const MInt NotUsed(id), const MInt NotUsed(sampleVarId), MFloat *NotUsed(state), const MBool NotUsed(interpolate)=false) |
virtual void | balance (const MInt *const NotUsed(noCellsToReceiveByDomain), const MInt *const NotUsed(noCellsToSendByDomain), const MInt *const NotUsed(targetDomainsByCell), const MInt NotUsed(oldNoCells)) |
Perform load balancing. More... | |
virtual MBool | hasSplitBalancing () const |
Return if load balancing for solver is split into multiple methods or implemented in balance() More... | |
virtual void | balancePre () |
virtual void | balancePost () |
virtual void | finalizeBalance () |
virtual void | resetSolver () |
Reset the solver/solver for load balancing. More... | |
virtual void | cancelMpiRequests () |
Cancel open mpi (receive) requests in the solver (e.g. due to interleaved execution) More... | |
virtual void | setCellWeights (MFloat *) |
Set cell weights. More... | |
virtual MInt | noLoadTypes () const |
virtual void | getDefaultWeights (MFloat *NotUsed(weights), std::vector< MString > &NotUsed(names)) const |
virtual void | getLoadQuantities (MInt *const NotUsed(loadQuantities)) const |
virtual MFloat | getCellLoad (const MInt NotUsed(cellId), const MFloat *const NotUsed(weights)) const |
virtual void | limitWeights (MFloat *NotUsed(weights)) |
virtual void | localToGlobalIds () |
virtual void | globalToLocalIds () |
virtual MInt | noCellDataDlb () const |
Methods to inquire solver data information. More... | |
virtual MInt | cellDataTypeDlb (const MInt NotUsed(dataId)) const |
virtual MInt | cellDataSizeDlb (const MInt NotUsed(dataId), const MInt NotUsed(cellId)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MInt *const NotUsed(data)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MLong *const NotUsed(data)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MFloat *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MInt *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MLong *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MFloat *const NotUsed(data)) |
virtual void | getGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIntVars)) |
virtual void | setGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIdVars)) |
void | enableDlbTimers () |
void | reEnableDlbTimers () |
void | disableDlbTimers () |
MBool | dlbTimersEnabled () |
void | startLoadTimer (const MString name) |
void | stopLoadTimer (const MString &name) |
void | stopIdleTimer (const MString &name) |
void | startIdleTimer (const MString &name) |
MBool | isLoadTimerRunning () |
virtual MInt | noSolverTimers (const MBool NotUsed(allTimings)) |
virtual void | getSolverTimings (std::vector< std::pair< MString, MFloat > > &NotUsed(solverTimings), const MBool NotUsed(allTimings)) |
virtual void | getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &NotUsed(domainInfo)) |
void | setDlbTimer (const MInt timerId) |
virtual void | prepareAdaptation (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) |
virtual void | reinitAfterAdaptation () |
virtual void | prepareAdaptation () |
prepare adaptation for split adaptation before the adaptation loop More... | |
virtual void | setSensors (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) |
set solver sensors for split adaptation within the adaptation loop More... | |
virtual void | saveSensorData (const std::vector< std::vector< MFloat > > &, const MInt &, const MString &, const MInt *const) |
virtual void | postAdaptation () |
post adaptation for split adaptation within the adaptation loop More... | |
virtual void | finalizeAdaptation () |
finalize adaptation for split sadptation after the adaptation loop More... | |
virtual void | refineCell (const MInt) |
Refine the given cell. More... | |
virtual void | removeChilds (const MInt) |
Coarsen the given cell. More... | |
virtual void | removeCell (const MInt) |
Remove the given cell. More... | |
virtual void | swapCells (const MInt, const MInt) |
Swap the given cells. More... | |
virtual void | swapProxy (const MInt, const MInt) |
Swap the given cells. More... | |
virtual MInt | cellOutside (const MFloat *, const MInt, const MInt) |
Check whether cell is outside the fluid domain. More... | |
virtual void | resizeGridMap () |
Swap the given cells. More... | |
virtual MBool | prepareRestart (MBool, MBool &) |
Prepare the solvers for a grid-restart. More... | |
virtual void | reIntAfterRestart (MBool) |
MPI_Comm | mpiComm () const |
Return the MPI communicator used by this solver. More... | |
virtual MInt | domainId () const |
Return the domainId (rank) More... | |
virtual MInt | noDomains () const |
virtual MBool | isActive () const |
void | setSolverStatus (const MBool status) |
MBool | getSolverStatus () |
Get the solver status indicating if the solver is currently active in the execution recipe. More... | |
MString | testcaseDir () const |
Return the testcase directory. More... | |
MString | outputDir () const |
Return the directory for output files. More... | |
MString | restartDir () const |
Return the directory for restart files. More... | |
MString | solverMethod () const |
Return the solverMethod of this solver. More... | |
MString | solverType () const |
Return the solverType of this solver. More... | |
MInt | restartInterval () const |
Return the restart interval of this solver. More... | |
MInt | restartTimeStep () const |
Return the restart interval of this solver. More... | |
MInt | solverId () const |
Return the solverId. More... | |
MBool | restartFile () |
MInt | readSolverSamplingVarNames (std::vector< MString > &varNames, const MString featureName="") const |
Read sampling variables names, store in vector and return the number of sampling variables. More... | |
virtual MBool | hasRestartTimeStep () const |
virtual MBool | forceAdaptation () |
virtual void | preTimeStep ()=0 |
virtual void | postTimeStep ()=0 |
virtual void | initSolver ()=0 |
virtual void | finalizeInitSolver ()=0 |
virtual void | saveSolverSolution (const MBool NotUsed(forceOutput)=false, const MBool NotUsed(finalTimeStep)=false)=0 |
virtual void | cleanUp ()=0 |
virtual MBool | solutionStep () |
virtual void | preSolutionStep (MInt) |
virtual MBool | postSolutionStep () |
virtual MBool | solverConverged () |
virtual void | getInterpolatedVariables (MInt, const MFloat *, MFloat *) |
virtual void | loadRestartFile () |
virtual MInt | determineRestartTimeStep () const |
virtual void | writeRestartFile (MBool) |
virtual void | writeRestartFile (const MBool, const MBool, const MString, MInt *) |
virtual void | setTimeStep () |
virtual void | implicitTimeStep () |
virtual void | prepareNextTimeStep () |
Definition at line 16 of file lscartesiansolversemilagrangian.h.
using LsCartesianSolverSemiLagrangian< nDim >::CartesianSolver = typename maia::CartesianSolver<nDim, LsCartesianSolverSemiLagrangian> |
Definition at line 18 of file lscartesiansolversemilagrangian.h.
using LsCartesianSolverSemiLagrangian< nDim >::Geom = Geometry<nDim> |
Definition at line 21 of file lscartesiansolversemilagrangian.h.
using LsCartesianSolverSemiLagrangian< nDim >::Grid = typename CartesianSolver::Grid |
Definition at line 19 of file lscartesiansolversemilagrangian.h.
using LsCartesianSolverSemiLagrangian< nDim >::GridProxy = typename CartesianSolver::GridProxy |
Definition at line 20 of file lscartesiansolversemilagrangian.h.
LsCartesianSolverSemiLagrangian< nDim >::LsCartesianSolverSemiLagrangian | ( | const MInt | solverId, |
const MBool * | propertiesGroups, | ||
GridProxy & | gridProxy_, | ||
Geom & | geometry_, | ||
const MPI_Comm | comm | ||
) |
Definition at line 10 of file lscartesiansolversemilagrangian.cpp.