MAIA bb96820c
Multiphysics at AIA
|
#include <cartesiansolver.h>
Public Types | |
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 | |
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) |
template<typename T > | |
void | exchangeData (T *data, const MInt dataBlockSize=1) |
Exchange memory in 'data' assuming a solver size of 'dataBlockSize' per cell. More... | |
template<typename T > | |
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... | |
template<class G , class S , class M > | |
void | exchangeSparseLeafValues (G getData, S setData, const MInt dataSize, M cellMapping) |
Exchange of sparse data structures on max Level. More... | |
template<typename T > | |
void | exchangeAzimuthalPer (T *data, MInt dataBlockSize=1, MInt firstBlock=0) |
Exchange of sparse data structures on max Level. More... | |
template<typename T > | |
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... | |
template<typename T > | |
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... | |
template<typename T > | |
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 () |
Protected Types | |
using | fun = void(CartesianSolver< nDim, SolverType >::*)(std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
Protected Member Functions | |
void | identifyBoundaryCells (MBool *const isInterface, const std::vector< MInt > &bndCndIds=std::vector< MInt >()) |
void | identifyBoundaryCells () |
MBool | cellIsOnGeometry (MInt cellId, Geometry< nDim > *geom) |
checks whether a cell lies on a certain geometry copied the essential part from identifyBoundaryCells More... | |
void | setBoundaryDistance (const MBool *const interfaceCell, const MFloat *const outerBandWidth, MFloatScratchSpace &distance) |
transverses over all neighboring cells for a specified length More... | |
void | markSurrndCells (MIntScratchSpace &inList, const MInt bandWidth, const MInt level, const MBool refineDiagonals=true) |
void | receiveWindowTriangles () |
Receives triangles from neighbors contained in their window cells and inserts them locally. More... | |
void | compactCells () |
Removes all holes in the cell collector and moves halo cells to the back of the collector. More... | |
MInt | createCellId (const MInt gridCellId) |
void | removeCellId (const MInt cellId) |
MInt | inCell (const MInt cellId, MFloat *point, MFloat fac=F1) |
MInt | setUpInterpolationStencil (const MInt cellId, MInt *, const MFloat *, std::function< MBool(MInt, MInt)>, MBool allowIncompleteStencil) |
template<MBool cartesianInterpolation> | |
MFloat | interpolateFieldData (MInt *, MFloat *, MInt varId, std::function< MFloat(MInt, MInt)> scalarField, std::function< MFloat(MInt, MInt)> coordinate) |
MFloat | leastSquaresInterpolation (MInt *, MFloat *, MInt varId, std::function< MFloat(MInt, MInt)> scalarField, std::function< MFloat(MInt, MInt)> coordinate) |
void | checkNoHaloLayers () |
check that each solver has the required number of haloLayers for leaf cells!!! TODO labels:toenhance under production, needs to be cleaned up! More... | |
void | mapInterpolationCells (std::map< MInt, MInt > &cellMap) |
void | setHaloCellsOnInactiveRanks () |
void | patchRefinement (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) |
void | reOrderCellIds (std::vector< MInt > &reOrderedCells) |
reOrder cellIds before writing the restart file! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | recomputeGlobalIds (std::vector< MInt > &, std::vector< MLong > &) |
reOrder cellIds before writing the restart file! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | extractPointIdsFromGrid (Collector< PointBasedCell< nDim > > *&, Collector< CartesianGridPoint< nDim > > *&, const MBool, const std::map< MInt, MInt > &, MInt levelThreshold=999999, MFloat *bBox=nullptr, MBool levelSetMb=false) const |
Creates a list of unique corner points for all cells using a hash map levelThreshold optionally specifies the maximum cell level to be extracted bBox optionally specifies a bounding to box to which the extracted domain shall be truncated. More... | |
Protected Member Functions inherited from Solver | |
Solver (const MInt solverId, const MPI_Comm comm, const MBool isActive=true) | |
MFloat | returnLoadRecord () const |
MFloat | returnIdleRecord () const |
Private Member Functions | |
SolverType & | solver () |
constexpr const SolverType & | solver () const |
void | readPatchProperties () |
void | initAdaptation () |
void | addChildren (std::vector< MInt > &reOrderedIds, const MInt parentId) |
add childs to reOrdered cellIds This is necessary for example if the minLevel shall be raised at the new restart! More... | |
Private Attributes | |
MString | m_gridCutTest {} |
GridProxy & | m_gridProxy |
PatchRefinement * | m_patchRefinement = nullptr |
MBool | m_testPatch = false |
MInt | m_patchStartTimeStep = -1 |
MInt | m_patchStopTimeStep = -1 |
Additional Inherited Members | |
Public Attributes inherited from Solver | |
std::set< MInt > | m_freeIndices |
MBool | m_singleAdaptation = false |
MBool | m_splitAdaptation = true |
MBool | m_saveSensorData = false |
Definition at line 50 of file cartesiansolver.h.
using maia::CartesianSolver< nDim, SolverType >::Cell = maia::grid::tree::Cell |
Definition at line 58 of file cartesiansolver.h.
|
protected |
Definition at line 279 of file cartesiansolver.h.
using maia::CartesianSolver< nDim, SolverType >::Geom = Geometry<nDim> |
Definition at line 55 of file cartesiansolver.h.
using maia::CartesianSolver< nDim, SolverType >::Grid = CartesianGrid<nDim> |
Definition at line 53 of file cartesiansolver.h.
using maia::CartesianSolver< nDim, SolverType >::GridProxy = typename maia::grid::Proxy<nDim> |
Definition at line 54 of file cartesiansolver.h.
using maia::CartesianSolver< nDim, SolverType >::TreeProxy = maia::grid::tree::TreeProxy<nDim> |
Definition at line 56 of file cartesiansolver.h.
maia::CartesianSolver< nDim, SolverType >::CartesianSolver | ( | const MInt | solverId, |
GridProxy & | gridProxy_, | ||
const MPI_Comm | comm, | ||
const MBool | checkActive = false |
||
) |
Definition at line 311 of file cartesiansolver.h.
|
private |
Definition at line 2826 of file cartesiansolver.h.
|
inline |
Definition at line 159 of file cartesiansolver.h.
|
inline |
Definition at line 168 of file cartesiansolver.h.
|
inline |
Definition at line 165 of file cartesiansolver.h.
|
inline |
Definition at line 163 of file cartesiansolver.h.
|
inline |
Definition at line 164 of file cartesiansolver.h.
|
inline |
Definition at line 161 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::calcRecalcCellIdsSolver | ( | const MInt *const | recalcIdsTree, |
MInt & | noCells, | ||
MInt & | noInternalCellIds, | ||
std::vector< MInt > & | recalcCellIdsSolver, | ||
std::vector< MInt > & | reorderedCellIds | ||
) |
[in] | recalcIdsTree | Recalculated cell id mapping provided by grid if adpated |
[out] | noCells | Number of internal cells including halo partition-levelAnchestor |
[out] | noInternalCellIds | Number of internal cells |
[out] | recalcCellIdsSolver | Number of internal cells |
[out] | reorderedCellIds | Map of reorderd cell ids |
Definition at line 2949 of file cartesiansolver.h.
|
protected |
[in] | cellId | |
[in] | geometry | |
[out] | true/false |
Definition at line 399 of file cartesiansolver.h.
|
inline |
Definition at line 80 of file cartesiansolver.h.
|
protected |
Definition at line 1137 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::collectParameters | ( | T | parametersIn, |
ScratchSpace< T > & | parametersOut, | ||
const MChar * | parametersNameIn, | ||
std::vector< MString > & | parametersNameOut | ||
) |
Definition at line 2930 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::collectVariables | ( | T ** | variablesIn, |
ScratchSpace< T > & | variablesOut, | ||
const std::vector< MString > & | variablesNameIn, | ||
std::vector< MString > & | variablesNameOut, | ||
const MInt | noVars, | ||
const MInt | noCells | ||
) |
Definition at line 2907 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::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 |
||
) |
Definition at line 2879 of file cartesiansolver.h.
|
protected |
Definition at line 723 of file cartesiansolver.h.
|
protected |
Definition at line 880 of file cartesiansolver.h.
|
inline |
Definition at line 72 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::exchangeAzimuthalPer | ( | T * | data, |
MInt | dataBlockSize = 1 , |
||
MInt | firstBlock = 0 |
||
) |
dData | |
firstBlock | |
dataBlockSize | |
mode | == 0: Nearest neighbor |
mode | == 1: Linear interpolation |
Definition at line 3408 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::exchangeData | ( | T * | data, |
const MInt | dataBlockSize = 1 |
||
) |
T | Data type |
[in,out] | data | Data to exchange |
[in] | dataBlockSize | Number of variables of type T per cell, default is 1 |
Definition at line 3127 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::exchangeLeafData | ( | std::function< T &(MInt, MInt)> | data, |
const MInt | noDat = 1 |
||
) |
T | Data type |
[in,out] | data | Data to exchange |
[in] | noDat | Number of variables of type T per cell, default is 1 |
Definition at line 3148 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::exchangeSparseLeafValues | ( | G | getData, |
S | setData, | ||
const MInt | dataSize, | ||
M | cellMapping | ||
) |
Given a sparse data structure with getData and setData, and a mapping between the cell id and the data structure index, data is exchange between max level window and halo cells.
getData | |
setData | |
dataSize | |
cellMapping |
Definition at line 3229 of file cartesiansolver.h.
|
protected |
Definition at line 3524 of file cartesiansolver.h.
|
inline |
Definition at line 95 of file cartesiansolver.h.
|
inlineconstexpr |
Definition at line 94 of file cartesiansolver.h.
|
inline |
Definition at line 78 of file cartesiansolver.h.
|
inline |
Definition at line 88 of file cartesiansolver.h.
|
inline |
Definition at line 75 of file cartesiansolver.h.
|
protected |
Directly sets "a_isInterface" in solver
Definition at line 375 of file cartesiansolver.h.
|
protected |
Identifies boundary cells by determining intersections betw. geometry and grid Argument isInterface
must point to an array with a size of at least "solver().grid().tree().size()" elements
Definition at line 326 of file cartesiansolver.h.
|
protected |
Definition at line 1582 of file cartesiansolver.h.
|
private |
|
protected |
bilinear interpolation of cell-Centered scalar(float) field data onto a higher refined mesh works together with setUpInterpolationStencil()
Definition at line 1799 of file cartesiansolver.h.
|
inlineoverridevirtual |
Return if the solver is active on this rank; needs to be implemented in derived solver since access to gridproxy not possible here
Reimplemented from Solver.
Reimplemented in FcSolver< nDim >.
Definition at line 91 of file cartesiansolver.h.
|
protected |
least squares interpolation of cell-Centered scalar(float) field data to the given coordinate works together with setUpInterpolationStencil()
Definition at line 1868 of file cartesiansolver.h.
|
inline |
Definition at line 82 of file cartesiansolver.h.
|
inline |
Definition at line 85 of file cartesiansolver.h.
|
protected |
maps the cells in the solver to the reference grid file, for Interpolation!
Definition at line 1932 of file cartesiansolver.h.
|
protected |
Marks all cells, which are near (within bandWidth) to the given Cells (inList[cellId] = 1) with inList > 0. Useful for refinement (or other purposes!) in all solvers!
[in] | bandWidth | Number of surrounding cells to be marked |
[in] | inList | List with origin cells marked with 1 |
[in] | refineDiagonals | Mark diagonal cells |
[in] | level | Level on which cells are marked |
Definition at line 1057 of file cartesiansolver.h.
|
inline |
Definition at line 66 of file cartesiansolver.h.
|
inline |
Definition at line 67 of file cartesiansolver.h.
|
inline |
Definition at line 68 of file cartesiansolver.h.
|
inline |
Definition at line 69 of file cartesiansolver.h.
|
inline |
Definition at line 87 of file cartesiansolver.h.
|
inline |
Definition at line 65 of file cartesiansolver.h.
|
inline |
Definition at line 71 of file cartesiansolver.h.
|
inline |
Definition at line 81 of file cartesiansolver.h.
|
inline |
Definition at line 74 of file cartesiansolver.h.
|
inline |
Definition at line 73 of file cartesiansolver.h.
|
inline |
Definition at line 86 of file cartesiansolver.h.
|
inline |
Definition at line 70 of file cartesiansolver.h.
|
inline |
Definition at line 76 of file cartesiansolver.h.
|
protected |
Definition at line 2054 of file cartesiansolver.h.
|
private |
read Information for patch refinement (the same way as for the grid generation!)
Definition at line 2161 of file cartesiansolver.h.
|
protected |
The algorithm does the following:
[in] | neighbors | array containing all neighbor domain ids |
[in] | noNeighbors | number of the domain neighbors |
[in] | windowCells | the ids of the window cells per neighbor domain |
[in] | noWindowCells | the number of window cells per neighbor domain |
Definition at line 447 of file cartesiansolver.h.
|
protected |
Definition at line 2845 of file cartesiansolver.h.
|
inline |
Definition at line 79 of file cartesiansolver.h.
|
protected |
Definition at line 912 of file cartesiansolver.h.
|
protected |
Definition at line 2779 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::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 | ||
) |
Definition at line 3008 of file cartesiansolver.h.
|
overridevirtual |
[in] | sensors | Sensor values, must be filled via 'setSensors' before |
[in] | level | Iteration interval of adaption |
[in] | gridFileName | Name of the corresponding grid file |
[in] | recalcIdsTree | Mapping of the recalculated cell ids If 'saveSensorData' is set, for every adaption a 'sensorData_' file with corresponding grid file is written. This might serve for debugging various sensor type or helps tuning specific sensors especially if used in combination. For each solver an individual file with values of each sensor is written. |
Reimplemented from Solver.
Definition at line 2566 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::sensorBand | ( | std::vector< std::vector< MFloat > > & | sensors, |
std::vector< std::bitset< 64 > > & | sensorCellFlag, | ||
std::vector< MFloat > & | sensorWeight, | ||
MInt | sensorOffset, | ||
MInt | sen | ||
) |
Definition at line 2423 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 150 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 97 of file cartesiansolver.h.
|
inlinevirtual |
Definition at line 101 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 110 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 114 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, SysEqn >, LPT< nDim >, LsCartesianSolver< nDim_ >, and LsCartesianSolver< nDim >.
Definition at line 122 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::sensorLimit | ( | std::vector< std::vector< MFloat > > & | sensors, |
std::vector< std::bitset< 64 > > & | sensorCellFlag, | ||
std::vector< MFloat > & | sensorWeight, | ||
MInt | sensorOffset, | ||
MInt | sen, | ||
std::function< MFloat(MInt)> | value, | ||
const MFloat | limit, | ||
const MInt * | bandWidth, | ||
const MBool | refineDiagonals, | ||
const MBool | allowCoarsening = true |
||
) |
nDim | space dimensions |
sensors | array of sensors |
sensorCellFlag | sensor set? |
sensorWeight | sensor weight |
sensorOffset | offset to sensors |
sen | sensorid of current sensor |
value | acessor function using cellid to value |
limit | limit used for value at which to apply adaptation |
Definition at line 2492 of file cartesiansolver.h.
|
inlinevirtual |
Definition at line 134 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, SysEqn >, and LPT< nDim >.
Definition at line 138 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvMbCartesianSolverXD< nDim, SysEqn >, FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 146 of file cartesiansolver.h.
void maia::CartesianSolver< nDim, SolverType >::sensorSmooth | ( | std::vector< std::vector< MFloat > > & | sensors, |
std::vector< std::bitset< 64 > > & | sensorCellFlag, | ||
std::vector< MFloat > & | sensorWeight, | ||
MInt | sensorOffset, | ||
MInt | sen | ||
) |
Definition at line 2632 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 142 of file cartesiansolver.h.
|
inlinevirtual |
Definition at line 105 of file cartesiansolver.h.
|
inlinevirtual |
Reimplemented in FvCartesianSolverXD< nDim_, SysEqn >, FvCartesianSolverXD< 2, FvSysEqnNS< 2 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 2 > >, FvCartesianSolverXD< 3, FvSysEqnNS< 3 > >, FvCartesianSolverXD< nDim, FvSysEqnNS< 3 > >, and FvCartesianSolverXD< nDim, SysEqn >.
Definition at line 118 of file cartesiansolver.h.
|
protected |
For refinemnt (or other purposes!)
Definition at line 940 of file cartesiansolver.h.
|
protected |
Definition at line 2141 of file cartesiansolver.h.
|
protected |
works together with interpolateFieldData() cellId: cell on the highes refinement level which contains the point interpolationCells: collection of stencil cellIds considering the cartesian cell stencil
Definition at line 1623 of file cartesiansolver.h.
|
inlineprivate |
Definition at line 255 of file cartesiansolver.h.
|
inlineconstexprprivate |
Definition at line 256 of file cartesiansolver.h.
|
inline |
Definition at line 89 of file cartesiansolver.h.
|
inline |
Definition at line 77 of file cartesiansolver.h.
|
protected |
Definition at line 266 of file cartesiansolver.h.
|
protected |
Definition at line 261 of file cartesiansolver.h.
|
protected |
Definition at line 262 of file cartesiansolver.h.
|
protected |
Definition at line 267 of file cartesiansolver.h.
|
protected |
Definition at line 288 of file cartesiansolver.h.
|
private |
Definition at line 301 of file cartesiansolver.h.
|
private |
Definition at line 302 of file cartesiansolver.h.
|
protected |
Definition at line 285 of file cartesiansolver.h.
|
protected |
Definition at line 263 of file cartesiansolver.h.
|
protected |
Definition at line 292 of file cartesiansolver.h.
|
protected |
Definition at line 268 of file cartesiansolver.h.
|
protected |
Definition at line 260 of file cartesiansolver.h.
|
protected |
Definition at line 270 of file cartesiansolver.h.
|
private |
Definition at line 304 of file cartesiansolver.h.
|
private |
Definition at line 306 of file cartesiansolver.h.
|
private |
Definition at line 307 of file cartesiansolver.h.
|
protected |
Definition at line 277 of file cartesiansolver.h.
|
protected |
Definition at line 269 of file cartesiansolver.h.
|
protected |
Definition at line 291 of file cartesiansolver.h.
|
protected |
Definition at line 259 of file cartesiansolver.h.
|
protected |
Definition at line 271 of file cartesiansolver.h.
|
protected |
Definition at line 265 of file cartesiansolver.h.
|
protected |
Definition at line 282 of file cartesiansolver.h.
|
protected |
Definition at line 274 of file cartesiansolver.h.
|
protected |
Definition at line 275 of file cartesiansolver.h.
|
protected |
Definition at line 276 of file cartesiansolver.h.
|
protected |
Definition at line 264 of file cartesiansolver.h.
|
private |
Definition at line 305 of file cartesiansolver.h.