40template <MInt nDim,
class SysEqn>
43template <MInt nDim,
class SysEqn>
49template <MInt nDim,
class SysEqn>
52template <MInt nDim,
class SysEqn>
55template <MInt nDim,
class SysEqn>
58template <MInt nDim,
class SysEqn>
61template <MInt nDim,
class SysEqn>
64template <MInt nDim,
class SysEqn>
67template <MInt nDim,
class SysEqnOld,
class SysEqnNew>
70template <MInt nDim,
class SysEqn>
73template <MInt nDim,
class SysEqn>
76template <MInt nDim, MInt nDist,
class SysEqnLb,
class SysEqnFv>
79template <MInt nDim,
class SysEqn>
82template <MInt nDim,
class ppType>
85template <MInt nDim,
class SysEqn>
88template <MInt nDim,
class SysEqn>
94#if !defined(NDEBUG) || defined(MAIA_ASSERT_ACCESSORS)
95#define ENSURE_VALID_CELL_ID_CONTAINER(id) \
97 if(id < 0 || id >= maxNoGridCells()) { \
98 TERMM(1, "Invalid cell id " + std::to_string((id)) + "\n\n AT: " + AT_); \
102#define ENSURE_VALID_CELL_ID_CONTAINER(id) \
196template <MInt nDim_,
class SysEqn>
212 template <
class SolverType>
215 template <MInt nDim, SolverType SolverTypeR, SolverType SolverTypeL>
217 template <MInt nDim,
class SysEqn_>
219 template <MInt nDim,
class SysEqn_>
221 template <MInt nDim,
class SysEqn_>
223 template <MInt nDim,
class SysEqn_>
225 template <MInt nDim,
class SysEqn_>
227 template <MInt nDim,
class SysEqn_>
229 template <MInt nDim, MInt nDist,
class SysEqnLb_,
class SysEqnFv_>
232 template <MInt nDim, MInt nDist,
class SysEqnLb_,
class SysEqnFv_>
234 template <MInt nDim,
class SysEqn_>
236 template <MInt nDim,
class ppType>
238 template <MInt nDim,
class SysEqn_>
254 using Grid =
typename CartesianSolver::Grid;
258 using CartesianSolver::c_noCells;
259 using CartesianSolver::disableDlbTimers;
260 using CartesianSolver::domainId;
261 using CartesianSolver::domainOffset;
262 using CartesianSolver::exchangeData;
263 using CartesianSolver::extractPointIdsFromGrid;
264 using CartesianSolver::getIdentifier;
265 using CartesianSolver::grid;
266 using CartesianSolver::haloCellId;
267 using CartesianSolver::isActive;
268 using CartesianSolver::m_bandWidth;
269 using CartesianSolver::m_freeIndices;
270 using CartesianSolver::m_innerBandWidth;
271 using CartesianSolver::m_Ma;
272 using CartesianSolver::m_outerBandWidth;
273 using CartesianSolver::m_Re;
274 using CartesianSolver::m_recalcIds;
275 using CartesianSolver::m_residualInterval;
276 using CartesianSolver::m_restart;
277 using CartesianSolver::m_restartFile;
278 using CartesianSolver::m_restartInterval;
279 using CartesianSolver::m_restartOffset;
280 using CartesianSolver::m_restartTimeStep;
281 using CartesianSolver::m_revDir;
282 using CartesianSolver::m_sensorParticle;
283 using CartesianSolver::m_solutionInterval;
284 using CartesianSolver::m_solutionOffset;
285 using CartesianSolver::m_solutionOutput;
286 using CartesianSolver::m_solutionTimeSteps;
287 using CartesianSolver::m_solverId;
288 using CartesianSolver::m_useNonSpecifiedRestartFile;
289 using CartesianSolver::maxLevel;
290 using CartesianSolver::maxNoGridCells;
291 using CartesianSolver::maxRefinementLevel;
292 using CartesianSolver::maxUniformRefinementLevel;
293 using CartesianSolver::minLevel;
294 using CartesianSolver::mpiComm;
295 using CartesianSolver::neighborDomain;
296 using CartesianSolver::noDomains;
297 using CartesianSolver::noHaloCells;
298 using CartesianSolver::noNeighborDomains;
299 using CartesianSolver::noWindowCells;
300 using CartesianSolver::outputDir;
301 using CartesianSolver::readSolverSamplingVarNames;
302 using CartesianSolver::restartDir;
303 using CartesianSolver::returnIdleRecord;
304 using CartesianSolver::returnLoadRecord;
305 using CartesianSolver::solverId;
306 using CartesianSolver::solverMethod;
307 using CartesianSolver::startLoadTimer;
308 using CartesianSolver::stopLoadTimer;
309 using CartesianSolver::updateDomainInfo;
310 using CartesianSolver::windowCellId;
318 const MPI_Comm comm);
340 ASSERT(noCells_solver == noCells_grid,
341 "Warning, noCells differ: grid " << noCells_grid <<
", solver " << noCells_solver <<
"no-split-childs "
355 return m_cells.hasProperty(cellId, SolverCell::IsGapCell);
359 return m_cells.hasProperty(cellId, SolverCell::WasGapCell);
365 return m_cells.hasProperty(cellId, SolverCell::IsHalo);
371 return m_cells.hasProperty(cellId, SolverCell::IsWindow);
377 return m_cells.hasProperty(cellId, SolverCell::IsPeriodic);
388 return m_cells.hasProperty(cellId, SolverCell::IsInterface);
396 return m_cells.hasProperty(cellId, SolverCell::IsGhost);
403 return m_cells.hasProperty(cellId, SolverCell::IsWMImgCell);
408 return m_cells.hasProperty(cellId, SolverCell::IsSandpaperTripCell);
412 return m_cells.hasProperty(cellId, SolverCell::IsSandpaperTripCell);
476 ||
m_cells.hasProperty(cellId, SolverCell::IsSplitClone)
477 ||
m_cells.hasProperty(cellId, SolverCell::IsSplitChild)) {
478 TERMM(-1,
"ERROR: Invalid cell " + std::to_string(cellId) +
"/" + std::to_string(
grid().tree().size())
480 + std::to_string(
m_cells.hasProperty(cellId, SolverCell::IsSplitClone))
483 +
" IsSplitChild:" + std::to_string(
m_cells.hasProperty(cellId, SolverCell::IsSplitChild))
500 ASSERT(
false,
"ERROR: calling inactive-neighbor!");
503 std::ignore = cellId;
522 return grid().tree().coordinate(cellId, dir);
536 return grid().tree().level(cellId);
542 return grid().tree().noChildren(cellId);
548 return grid().tree().parent(cellId);
554 return grid().tree().globalId(cellId);
560 return grid().tree().weight(cellId);
566 return grid().tree().child(cellId, pos);
573 return grid().tree().neighbor(cellId, dir);
578 ASSERT(
a_level(cellId) > 0,
"Level-error");
590 return grid().tree().hasProperty(cellId, p);
597 return grid().tree().hasProperty(cellId, Cell::IsToDelete);
604 return grid().tree().hasNeighbor(cellId, dir);
629 return m_cells.hasProperty(cellId, p);
645 return m_cells.rcnstrctnNghbrId(cellId, nghbrNo);
650 return m_cells.rcnstrctnNghbrId(cellId, nghbrNo);
706 return m_cells.reactionRate(cellId, reactionId);
711 return m_cells.reactionRateBackup(cellId, reactionId);
716 return m_cells.reactionRateBackup(cellId, reactionId);
727 return m_cells.speciesReactionRate(cellId, speciesIndex);
731 return m_cells.speciesReactionRate(cellId, speciesIndex);
736 return m_cells.implicitCoefficient(cellId, coefId);
741 return m_cells.implicitCoefficient(cellId, coefId);
766 return m_cells.slope(cellId, varId, dir);
771 return m_cells.slope(cellId, varId, dir);
776 return m_cells.storedSlope(cellId, varId, dir);
781 return m_cells.storedSlope(cellId, varId, dir);
889 return m_bndryCells->
a[bndryId].m_srfcs[0]->m_normalVector[dir];
894 return m_bndryCells->
a[bndryId].m_srfcs[0]->m_cutCoordinates[i][j];
899 return m_bndryCells->
a[bndryId].m_srfcs[0]->m_cutCoordinates[i][j];
904 return m_bndryCells->
a[bndryId].m_srfcVariables[srfc]->m_ghostCellId;
987 return m_cells.localTimeStep(cellId);
992 return m_cells.localTimeStep(cellId);
1025 return m_EEGas.gradUOtherPhase[cellId][uDir +
nDim * gradDir];
1029 return m_EEGas.gradUOtherPhase[cellId][uDir +
nDim * gradDir];
1083 std::ostringstream output;
1084 output <<
"cellId " << cellId <<
" Halo " <<
a_isHalo(cellId) <<
" IsPeriodic " <<
a_isPeriodic(cellId)
1086 <<
a_hasProperty(cellId, SolverCell::IsSplitChild) <<
" splitCell "
1087 <<
a_hasProperty(cellId, SolverCell::IsSplitCell) << std::endl;
1092 <<
" m_associatedInterNallCells.size(): "
1100 "mapped value exceeds grid().tree().size() for cellId "
1119 virtual void Ausm();
1144 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1146 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1148 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1150 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1152 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1154 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1156 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1158 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1160 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1162 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1164 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1172#if defined(WITH_CANTERA)
1213 const std::array<MBool, nDim> dirs = {},
const MBool relocateCenter =
false);
1224 template <
class _ =
void, std::enable_if_t<isDetChem<SysEqn>, _*> =
nullptr>
1292 template <
typename T>
1294 const std::vector<MInt>& rotIndex = std::vector<MInt>());
1295 template <MBool exchangeAll_ = true>
1297 template <
typename T>
1306 template <MBool exchangeAll_>
1310 template <MBool exchangeAll_>
1340 template <
class _ =
void, std::enable_if_t<isEEGas<SysEqn>, _*> =
nullptr>
1343 template <
class _ =
void, std::enable_if_t<isEEGas<SysEqn>, _*> =
nullptr>
1407 MInt*
const sliceCellIds) {
1408 grid().raw().createGridSlice(direction, intercept, fileName, -1,
nullptr, sliceCellIds,
nullptr,
nullptr);
2078 typename SysEqn::PrimitiveVariables*
PV{};
2079 typename SysEqn::ConservativeVariables*
CV{};
2080 typename SysEqn::FluxVariables*
FV{};
2082 typename SysEqn::AdditionalVariables*
AV{};
2084 typename SysEqn::SurfaceCoefficients*
SC{};
2127 return grid().findContainingLeafCell(point);
2132 std::vector<std::vector<MString>>& samplingVarNames,
2133 const MString featureName =
"")
override;
2137 const std::vector<MInt>& noSamplingVars)
override;
2144 const MBool interpolate =
false)
override;
2175 void sensorEntropyGrad(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2176 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2177 void sensorEntropyQuot(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2178 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2179 void sensorVorticity(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2180 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2181 void sensorDerivative(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2182 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2183 void sensorSpecies(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2184 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2185 void sensorParticle(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2186 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2202 const MInt* recalcIds);
2370#ifdef MAIA_TIMER_FUNCTION
2374 return 2 + 17 + additionalTimer;
2382 void getSolverTimings(std::vector<std::pair<MString, MFloat>>& solverTimings,
const MBool allTimings)
override;
2388 TERMM(1,
"solverCelldataType: invalid data id");
2396 MFloat*
const data)
override;
2401 void getGlobalSolverVars(std::vector<MFloat>& globalFloatVars, std::vector<MInt>& globalIdVars)
override;
2402 void setGlobalSolverVars(std::vector<MFloat>& globalFloatVars, std::vector<MInt>& globalIdVars)
override;
2409 if(
grid().hasInactiveRanks()) {
2412 "MPI_IN_PLACE",
"m_forceAdaptation");
2505#ifdef MAIA_FV_LOG_ACCESS_TO_UNAVAILABLE_TIME_STEP
2511 "The time-step was required before it was available;"
2512 "use timeStep(true) if you want the timeStep call to solver communication");
2712 friend class LsFvMb<nDim_, SysEqn>;
2723 friend class VtkIo<nDim_, SysEqn>;
2759 const std::vector<MInt>& rotIndex = std::vector<MInt>());
2779 inline void LSReconstructCellCenter_(
const MUint noSpecies);
2781 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN)
virtual void computeSurfaceValues(
MInt timerId = -1);
2782 ATTRIBUTES2(ATTRIBUTE_ALWAYS_INLINE, ATTRIBUTE_HOT)
inline void computeSurfaceValues_(
const MUint);
2783 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN)
virtual void computeSurfaceValuesLimited(
MInt timerId = -1);
2814 void setSensors(std::vector<std::vector<MFloat>>& sensors,
2815 std::vector<MFloat>& sensorWeight,
2816 std::vector<std::bitset<64>>& sensorCellFlag,
2817 std::vector<MInt>& sensorSolverId)
override;
2822 void sensorInterface(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2823 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2824 void sensorInterfaceDelta(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2825 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen);
2826 void sensorInterfaceLsMb(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2827 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen);
2828 void sensorInterfaceLs(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2829 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen);
2830 void sensorCutOff(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2831 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen);
2832 void sensorPatch(std::vector<std::vector<MFloat>>& sensors, std::vector<std::bitset<64>>& sensorCellFlag,
2833 std::vector<MFloat>& sensorWeight,
MInt sensorOffset,
MInt sen)
override;
2835 std::vector<std::bitset<64>>& sensorCellFlag,
MInt sensorOffset,
MInt sen,
2836 const std::vector<MFloat>& tau,
const MFloat sensorThreshold);
2845 void balance(
const MInt*
const noCellsToReceiveByDomain,
2846 const MInt*
const noCellsToSendByDomain,
2847 const MInt*
const targetDomainsByCell,
2848 const MInt oldNoCells)
override;
2879 template <MInt stencil,
class F>
2880 inline void Ausm_(F& fluxFct);
2883 inline void computePrimitiveVariables_();
2884 template <
class _ =
void, std::enable_if_t<isEEGas<SysEqn>, _*> =
nullptr>
2887 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline
void computeConservativeVariables_();
2888 template <class _ =
void, std::enable_if_t<
isEEGas<SysEqn>, _*> =
nullptr>
2890 template <
MInt stencil, class F>
2892 template <
MInt stencil, class F>
2894 template <
MInt noSpecies>
2904 template <class _ =
void, std::enable_if_t<!
isEEGas<SysEqn>, _*> =
nullptr>
2907 template <class _ =
void, std::enable_if_t<
isEEGas<SysEqn>, _*> =
nullptr>
2909 inline
MBool rungeKuttaStepEEGas();
2921 template <class _ =
void, std::enable_if_t<
isEEGas<SysEqn>, _*> =
nullptr>
2925 template <
MInt diag,
MBool recorrectBndryCellCoords = false>
2927 template <
MBool recorrectBndryCellCoords = false>
2944 template <
MInt noSpecies>
3077template <MInt nDim_,
class SysEqn_>
3080 const MInt*
const bufferIdToCellId,
MFloat*
const data) {
3083 MInt localBufferId = 0;
3084 for(
MInt i = 0; i < oldNoCells; i++) {
3085 const MInt gridCellId = bufferIdToCellId[i];
3087 if(gridCellId < 0)
continue;
3089 const MInt cellId = grid().tree().grid2solver(gridCellId);
3090 if(cellId < 0 || cellId >= noInternalCells()) {
3096 const MInt dataSize = CV->noVariables;
3097 std::copy_n(&a_variable(cellId, 0), dataSize, &data[localBufferId * dataSize]);
3101 TERMM(1,
"Unknown data id.");
3110template <MInt nDim_,
class SysEqn_>
3121 if(m_loadBalancingReinitStage == 0) {
3124 std::copy_n(data, noInternalCells() * CV->noVariables, &a_variable(0, 0));
3128 TERMM(1,
"Unknown data id.");
3134template <MInt nDim,
class SysEqn>
3135template <
class _, std::enable_if_t<isEEGas<SysEqn>, _*>>
3137 const MFloat uDLim = m_EEGas.uDLim;
3138 MBool change =
false;
3139 for(
MInt i = 0; i < nDim; i++) {
3140 if(!((pvars[i] - uOtherPhase[i]) <= uDLim)) {
3141 pvars[i] = uOtherPhase[i] + uDLim;
3143 }
else if(!((pvars[i] - uOtherPhase[i]) >= -uDLim)) {
3144 pvars[i] = uOtherPhase[i] - uDLim;
3152template <MInt nDim,
class SysEqn>
3153template <
typename T>
3155 const std::vector<MInt>& rotIndex) {
3158 RECORD_TIMER_START(m_tcomm);
3159 RECORD_TIMER_START(m_texchange);
3163 if(grid().azimuthalPeriodicity()) {
3165 this->exchangeAzimuthalPer(data, blockSize);
3167 if constexpr(std::is_same<T, MFloat>::value) {
3168 exchangeFloatDataAzimuthal(data, blockSize, rotIndex);
3170 exchangeDataAzimuthal(data, blockSize);
3175 RECORD_TIMER_STOP(m_texchange);
3176 RECORD_TIMER_STOP(m_tcomm);
3183template <MInt nDim,
class SysEqn>
3184template <
typename T>
3188 if(grid().noAzimuthalNeighborDomains() == 0 && m_azimuthalRemappedNeighborDomains.size() > 0) {
3192 this->exchangeAzimuthalPer(&data[0], dataBlockSize);
3195 ScratchSpace<T> windowData(sndSize * dataBlockSize, AT_,
"windowData");
3205 for(
MUint i = 0; i < m_azimuthalRemappedNeighborDomains.size(); i++) {
3206 for(
MUint j = 0; j < m_azimuthalRemappedWindowCells[i].size(); j++) {
3207 MInt cellId = m_azimuthalRemappedWindowCells[i][j];
3208 for(
MInt b = 0;
b < dataBlockSize;
b++) {
3209 windowData[sndCnt * dataBlockSize +
b] = data[
cellId * dataBlockSize +
b];
3213 if(m_azimuthalRemappedNeighborDomains.size() > 0) {
3215 m_azimuthalRemappedWindowCells,
mpiComm(), windowData.getPointer(), haloData.getPointer(),
3220 for(
MUint i = 0; i < m_azimuthalRemappedNeighborDomains.size(); i++) {
3221 for(
MUint j = 0; j < m_azimuthalRemappedHaloCells[i].size(); j++) {
3222 MInt cellId = m_azimuthalRemappedHaloCells[i][j];
3223 for(
MInt b = 0;
b < dataBlockSize;
b++) {
3224 data[
cellId * dataBlockSize +
b] = haloData[rcvCnt * dataBlockSize +
b];
3231#undef ENSURE_VALID_CELL_ID_CONTAINER
GridCell
Grid cell Property Labels.
MFloat surfaceVelocity[3]
static constexpr MInt maxNoOverlappingBodies
FvGapCell(MInt cId, MInt rId, MInt sId, MInt body1, MInt body2)
MInt bodyIds[maxNoOverlappingBodies]
MBool m_useCorrectedBurningVelocity
MFloat a_avariable(const MInt cellId, const MInt varId) const
Returns additional variable v of the cell cellId for variables varId.
MFloat m_static_logData_ic45301_freqFactor[s_logData_ic45301_maxNoEmbeddedBodies]
static constexpr MBool hasAV
MFloat a_variable(const MInt cellId, const MInt varId) const
Returns conservative variable v of the cell cellId for variables varId.
void(FvCartesianSolverXD::* m_reconstructSurfaceData)(MInt)
std::vector< std::vector< MInt > > m_splitChilds
MInt m_pressureRatioEndTimeStep
const MChar ** m_variablesName
void computePrimitiveVariablesMultiSpecies_(const MUint)
typename CartesianSolver::Grid Grid
MBool m_static_updateBodyProperties_c453_firstRun
void computeSrfcs(MInt, MInt, MInt, MInt)
std::shared_ptr< Cantera::Solution > m_canteraSolution
MBool m_azimuthalRecConstSet
MBool m_vtuVelocityGradientOutput
MInt getCurrentTimeStep() const override
Return the current time step.
MBool m_sensorBandRefinement
MFloat a_surfaceFactor(const MInt srfcId, const MInt varId) const
Returns the factor of surface srfcId for variable varId.
virtual void computeConservativeVariables()
Dispatches the computation of the conservative variables for different number of species.
MFloat & a_implicitCoefficient(const MInt cellId, const MInt coefId)
Returns the implicitCoefficient of cell cellId for coefficient coefId.
MFloat m_primaryJetRadius
MInt c_level(const MInt cellId) const
Returns the grid level of the cell cellId.
void resetSolver() override
Reset the solver prior to load balancing.
std::vector< std::vector< MInt > > m_azimuthalMaxLevelWindowCells
MBool m_weightNearBndryCells
MInt m_spongeAveragingOut[s_maxNoSpongeZones]
MInt * m_noMaxLevelWindowCells
virtual void LSReconstructCellCenter()
Dispatch the reconstruction computation to the appropiate loop.
MFloat a_dynViscosity(const MFloat T) const
std::vector< MFloat > m_dampFactor
static constexpr MInt s_maxNoSamplingVariables
MFloat m_referenceTemperature
std::vector< MInt > m_associatedInternalCells
MFloat ** m_periodicDataToReceive
MBool m_useCentralDifferencingSlopes
MBool m_recordWallVorticity
virtual MFloat & vorticityAtCell(const MInt cellId, const MInt dir)
MLong c_neighborId(const MInt cellId, const MInt dir, const MBool assertNeighborState=true) const
Returns the grid neighbor id of the grid cell cellId dir.
void computeRecConstPeriodic_()
static constexpr MInt s_computeFlowStatistics_noSamples
MInt * m_saSrfcProbeNoSamples
void computeQCriterion(MFloatScratchSpace &qCriterion)
MPI_Request * m_mpi_wmRequest
MBool m_structuredFlameOutput
virtual void viscousFlux_Gequ_Pv_Plenum()
Computes the viscous flux using a central difference scheme, modified version for flame plenum comput...
MInt m_normalOutputInterval
MInt a_noSurfaces()
Returns the number of surfaces.
std::vector< MInt > m_reconstructionCellIds
MFloat * infSpeciesMassFraction
virtual void computePrimitiveVariablesCoarseGrid()
Computes the primitive variables: velocity, density, and pressure from the conservative variables and...
static constexpr MInt s_logData_ic45301_maxNoEmbeddedBodies
MFloat cv_p(MInt cellId) const noexcept
Returns the pressure computed from the conservative variables of the cell cellId.
MFloat * m_wmImgRecvBuffer
MBool m_mpiSendRequestsOpen
static constexpr const MInt m_noCorners
MFloat a_cellVolume(const MInt cellId) const
Returns the cell volume of the cell from the fvcellcollector cellId.
MBool m_vtuWritePointData
void(FvCartesianSolverXD::* m_computeViscousFluxMultiSpecies)(MInt)
virtual void initNearBoundaryExchange(const MInt mode=0, const MInt offset=0)
Setup the near-boundary communicator needed for the flux-redistribution method.
const MInt & a_identNghbrId(MInt nghbrId) const
Return ident nghbr Id.
std::vector< MFloat > * m_STGSpongeFactor
MBool a_isPeriodic(const MInt cellId) const
Returns IsPeriodic of the cell cellId.
MFloat * m_sigmaSpongeBndryId
MFloat m_static_applyBoundaryCondition_refMass
MFloat m_static_logData_ic45301_pressurePoints[s_logData_ic45301_maxNoPressurePoints *nDim]
virtual void loadGridFlowVarsPar(const MChar *fileName)
This function loads the flow information of the cells such as variables and attributes like u_velocit...
typename maia::grid::tree::Tree< nDim >::Cell Cell
void exchangeDataAzimuthal(T *data, const MInt dataBlockSize=1)
maia::fv::cell::BitsetType::reference a_isBndryGhostCell(const MInt cellId)
Returns isBndryGhostCell of the cell cellId.
MFloat m_realRadiusFlameTube
MInt m_levelSetAdaptationScheme
std::vector< MFloat > gravity
MFloat * m_wmImgSendBuffer
MInt a_associatedBodyIds(const MInt cellId, const MInt set) const
Returns the associatedBodyIds for fv-CellId cellId and set.
MInt ** m_maxLevelHaloCells
MInt * m_cellsInsideSpongeLayer
MFloat a_nuEffOtherPhase(const MInt cellId) const
MFloat ** m_externalSource
MBool m_outputPhysicalTime
void exchangeFloatDataAzimuthal(MFloat *data, MInt noVars, const std::vector< MInt > &rotIndices)
MFloat computeTimeStepApeDirectional(MInt cellId) const noexcept
virtual MBool adaptationTrigger()
MFloat & a_psi(const MInt cellId)
Returns psi of the cell cellId for variables varId.
std::array< MInt, 2 *s_maxNoSamplingVariables > m_samplingVariablesStatus
Status of sampling variables to check if variable is already computed and exchanged.
MFloat computeWMViscositySpalding(MInt)
void setCellDataDlb(const MInt dataId, const MFloat *const data) override
Set solver data for DLB.
MFloat m_meanVelocityOutlet
MFloat m_static_computeFlowStatistics_pdfAverage[s_computeFlowStatistics_noSamples2 *s_computeFlowStatistics_noPdfs *s_computeFlowStatistics_noPdfPoints]
MInt ** m_setToBodiesTable
MFloat m_adaptationDampingDistance
MFloat m_static_logData_ic45299_amplitude[s_logData_ic45299_maxNoEmbeddedBodies]
void computeSpeciesReactionRates()
Dispatches the species reaction rate computation at each cell by calling the relevant method from the...
MInt m_normalOutputInitCounter
MBool m_reExcludeBndryDiagonals
MInt getCellIdByIndex(const MInt index)
Required for sampling, for FV the index is already the cell id.
void setAndAllocateCombustionGequPvProperties()
reads in the combustion properties
MInt m_averageStartTimeStep
MInt m_noSpongeBndryCndIds
number of sponge boundary IDs
void setMultilevelSecondary(const MBool state=true)
MBool m_firstUseWriteVtuOutputParallelQout
MInt a_splitChildId(const MInt sc, const MInt ssc)
MFloat * m_stgSpongePositions
MFloat a_flameSpeed(const MInt cellId, const MInt set) const
Returns the flamespeed-value for fv-CellId cellId and set.
MInt & a_noLevelSetFieldData()
Returns the noSets for fv-CellId cellId and set.
void viscousFluxCompact_(F &viscousFluxFct)
Computes the viscous fluxes using a compact stencil with increased stability for flows with dominatin...
MFloat & a_levelSetFunction(const MInt cellId, const MInt set)
Returns the levelSet-value for fv-CellId cellId and set.
void getSolverTimings(std::vector< std::pair< MString, MFloat > > &solverTimings, const MBool allTimings) override
Get solver timings.
MFloat * m_molarFormationEnthalpy
void resizeGridMap() override
Swap the given cells.
MFloat * m_secondCoordSpongeOut
virtual void determineLESAverageCells()
MFloat m_static_applyBoundaryCondition_EVelL2
Collector< FvBndryCell< nDim, SysEqn > > * m_bndryCells
virtual void calcSamplingVariables(const std::vector< MInt > &varIds, const MBool exchange) override
Calculate sampling variables.
FvBndryCndXD< nDim_, SysEqn > * m_fvBndryCnd
MBool requiresTimeStepUpdate() const
Returns true if the time-step should be updated on this step.
virtual void nonReflectingBCAfterTreatmentCutOff()
std::vector< MInt > m_reconstructionNghbrIds
const MInt & a_maxLevelHaloCells(MInt domain, MInt id) const
Return max level halo cells.
static constexpr MInt s_computeFlowStatistics_noSamples3
void setAndAllocateSpongeLayerProperties()
Reads and initializes properties associated with sponge boundary conditions.
MInt cellDataSizeDlb(const MInt dataId, const MInt gridCellId) override
Return data size to be communicated during DLB for a grid cell and given data id.
virtual MInt getAdjacentLeafCells_d2_c(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
virtual void applyExternalOldSource()
void computeConservativeVariablesMultiSpecies_(const MUint)
MFloat m_timeStepConvergenceCriterion
MFloat reduceData(const MInt cellId, MFloat *data, const MInt dataBlockSize=1, const MBool average=true)
determines the value of 'data' in the given cell by recusively volumetric averaging among all its off...
void deleteSrfcs()
Deletes all surfaces existing.
virtual void advanceExternalSource()
static constexpr MInt s_logData_ic45301_maxNoPressurePoints
void balance(const MInt *const noCellsToReceiveByDomain, const MInt *const noCellsToSendByDomain, const MInt *const targetDomainsByCell, const MInt oldNoCells) override
Balance the solver.
MFloat m_perturbationAmplitudeCorr
MInt m_bndrySurfacesOffset
MLong c_childId(const MInt cellId, const MInt pos) const
Returns the grid child id of the grid cell cellId at position pos.
void setMeanMolarWeight_PV(MInt cellId)
const MChar ** m_vorticityName
MBool m_useWallNormalInterpolation
FvCartesianSolverXD()=delete
std::vector< std::vector< MInt > > m_azimuthalRemappedWindowCells
MFloat & a_rightHandSide(const MInt cellId, MInt const varId)
Returns the right hand side of the cell cellId for the variable varId.
MFloat m_yOffsetFlameTube
void computeCoarseGridCorrection(MInt)
const MInt & a_noPart(MInt cellId) const
Return no particles.
MBool m_static_advanceSolution_firstRun
MFloat a_coordinate(const MInt cellId, const MInt dir) const
Returns the coordinate of the cell from the fvcellcollector cellId for dimension dir.
MBool m_divergenceTreatment
void computeConservativeVariablesCoarseGrid()
Computes the primitive variables: velocity, density, and pressure from the conservative variables and...
MFloat & a_curvatureG(const MInt cellId, const MInt set)
Returns the curvature-value for fv-CellId cellId and set.
MBool m_calcSlopesAfterStep
void getGlobalSolverVars(std::vector< MFloat > &globalFloatVars, std::vector< MInt > &globalIdVars) override
Get/set global solver variables during DLB.
MFloat & a_speciesReactionRate(const MInt cellId, const MInt speciesIndex)
virtual void smallCellRHSCorrection(const MInt timerId=-1)
MBool m_weightInactiveCell
void writeRestartFile(MBool) override
Geom & geometry()
Access the solver's geometry (non-const version)
MFloat * m_wmSrfcProbeSendBuffer
MString reactionMechanism
MFloat & a_uOtherPhase(const MInt cellId, const MInt dir)
void reInitActiveCellIdsMemory()
Allocate memory to arrays according to the current number of cells.
struct FvCartesianSolverXD::@8 m_EEGas
std::vector< MInt > findWallNormalNeighbors(MInt pointId)
MFloat ** m_receiveBuffersNoBlocking
MFloat computeWMViscositySpalding3D(MInt)
MFloat m_rhoVVInfinity[3]
MFloat m_forcingAmplitude
MFloat m_thermalProfileStartFactor
ATTRIBUTES2(ATTRIBUTE_ALWAYS_INLINE, ATTRIBUTE_HOT) inline void computeSurfaceValues_(const MUint)
virtual void updateJet()
jet volume forcing jet volume forcing with vortex rings. Velocity profile and forcing ref: "Effects o...
MBool m_azimuthalNearBndryInit
virtual void writeListOfActiveFlowCells()
MInt m_loadBalancingReinitStage
MPI_Request * m_mpi_receiveRequest
virtual void updateMaterialNo()
void rotateVectorAzimuthal(MInt side, MFloat *data, MInt noData, const std::vector< MInt > &indices)
void sensorEntropyQuot(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
MFloat a_surfaceArea(const MInt srfcId) const
Returns the area of surface srfcId.
std::vector< MFloat > m_normalSamplingCoords
MFloat c_cellLengthAtCell(const MInt cellId) const
Returns the length of the cell for level.
MFloat m_normJetTemperature
MInt m_wmSurfaceProbeInterval
MInt a_noSplitCells() const
typename SysEqn::PrimitiveVariables PrimitiveVariables
MFloat m_forceCoefficient
MFloat c_cellLengthAtLevel(const MInt level) const
Returns the length of the cell for level.
MInt m_timeStepComputationInterval
How often should the time-step be recomputed?
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) virtual void computeSurfaceValuesLimited(MInt timerId
MBool m_specialSpongeTreatment
const MInt & a_bndryCndId(MInt bndryId) const
Return BndryCndId.
void setAndAllocateJetProperties()
reads in the jet properties
void copyGridProperties()
MFloat getAveragingFactor()
std::vector< MFloat > m_azimuthalRecConsts
MBool m_detChemExtendedOutput
void resetExternalSources()
Reset external sources.
MInt m_noMaxLvlMpiSendNeighbors
MFloat & a_rhoInfinity()
Return rho infinity.
MBool m_static_redistributeMass_firstRun
virtual void setConservativeVariables(MInt cellId)
computes conservative from primitive variables for given cell id
MFloat & a_slope(const MInt cellId, MInt const varId, const MInt dir) override
Returns the slope of the cell cellId for the variable varId in direction dir.
std::shared_ptr< Cantera::Transport > m_canteraTransport
MFloat a_speciesReactionRate(const MInt cellId, const MInt speciesIndex) const
MFloat m_static_advanceSolution_dragCnt
MInt m_wmGlobalNoSrfcProbeIds
void LSReconstructCellCenterCons(const MUint noSpecies)
MFloat a_curvatureG(const MInt cellId, const MInt set) const
Returns the curvature-value for fv-CellId cellId and set.
MInt noCellDataDlb() const override
Methods to inquire solver data information.
virtual void copyRHSIntoGhostCells()
maia::fv::cell::BitsetType::reference a_isSandpaperTripCell(const MInt cellId)
Returns isWMImgCell of the cell cellId.
virtual void setAdditionalActiveFlag(MIntScratchSpace &)
MFloat m_targetDensityFactor
virtual MInt getAdjacentLeafCells_d0_c(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
MInt & a_spongeBndryId(const MInt cellId, const MInt dir)
Returns the spongeBndryId of the cell cellId for direction dir.
MInt a_noSplitChilds(const MInt sc) const
void tripForceCoefficients(MFloat *, MFloat *, MFloat *, MInt, MInt)
MBool m_vtuGeometryOutputExtended
MFloat & a_time()
Return time.
virtual void computeSurfaceValuesLOCD(MInt timerId=-1)
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline void computePrimitiveVariables_()
MBool m_firstUseWriteVtuOutputParallelGeom
const MFloat & a_time() const
Return time.
virtual void updateSplitParentVariables()
std::vector< MInt > m_cellInterpolationIndex
MInt * m_tripAirfoilOrientation
const MFloat & a_Ma() const
Returns the Mach number of the solver.
virtual MFloat getBoundaryHeatFlux(const MInt cellId) const
calculates heat flux of boundary cells
MInt * m_bndryRfnJumpInformation_
virtual void computeSurfaceValuesLimitedSlopes(MInt timerId=-1)
const MFloat & a_PInfinity() const
Return p infinity.
MFloat m_sutherlandConstantThermal
MFloat m_pressureRatioChannel
std::vector< MString > m_speciesName
void getInterpolatedVariablesInCell(const MInt cellId, const MFloat *position, MFloat *vars)
calculates interpolated variables for a given position in a given cell
MInt setUpBndryInterpolationStencil(const MInt, MInt *, const MFloat *)
MFloat m_filterFlameTubeEdgesDistance
void removeCell(const MInt) override
Remove the given cell.
MFloat * m_tripMaxAmpFluc
MFloat m_static_computeFlowStatistics_jointPdfAverage[s_computeFlowStatistics_noSamples2 *s_computeFlowStatistics_noJointPdfs *s_computeFlowStatistics_noPdfPoints *s_computeFlowStatistics_noPdfPoints]
MFloat m_secondaryJetRadius
void getDefaultWeights(MFloat *weights, std::vector< MString > &names) const
Return the default weights for all load quantities.
void getInterpolatedVariables(const MInt cellId, const MFloat *position, MFloat *vars) override
calculates interpolated variables for a given position in a given cell
MBool m_writeCutCellsToGridFile
MFloat & a_oldVariable(const MInt cellId, const MInt varId)
Returns oldVariablesv of the cell cellId variables varId.
void checkForSrfcsMGC_2()
MInt m_restartBackupInterval
MBool a_isSandpaperTripCell(const MInt cellId) const
Returns isWMImgCell of the cell cellId.
MPI_Request * m_mpi_wmRecvReq
MInt m_secondSpongeDirectionsOut[s_maxNoSpongeZones]
MFloat m_static_logData_ic45299_xCutOff
FvSurfaceCollector m_surfaces
virtual void computeReconstructionConstants()
MFloat * m_coordSpongeOut
MInt * m_noWMImgPointsSend
MFloat m_analyticIntegralVelocity
void computeMeanMolarWeights_PV()
Dispatches the mean molar weight computation at the cell center from the primitive variables by calli...
MFloat a_tau(const MInt cellId, const MInt varId) const
Returns the tau of the cell cellId for variable varId.
MFloat * m_tripMaxAmpSteady
std::vector< MInt > m_rotIndVarsCV
MInt * m_spongeBndryCndIds
void findNeighborHood(MInt cellId, MInt layer, std::vector< MInt > &nghbrList)
Obtain list of neighbors for the given extend.
MBool m_statisticCombustionAnalysis
void computeRecConstPeriodic()
std::vector< MFloat > m_wallSetupOrigin
MFloat m_inletTubeAreaRatio
MInt & a_maxLevelWindowCells(MInt domain, MInt id)
Return max level window cells.
MFloat & a_avariable(const MInt cellId, const MInt varId)
Returns additional variable v of the cell cellId for variables varId.
void a_copyPropertiesSolver(const MInt fromCellId, const MInt toCellId)
Returns property p of the cell cellId.
void setAndAllocateAdaptationProperties()
This function reads the properties required for adaptive mesh refinement.
void initAzimuthalReconstruction()
const MFloat & a_externalSource(MInt cellId, MInt var) const
Return external source.
std::vector< std::vector< MInt > > m_wmImgCellIds
MFloat & a_surfaceVariable(const MInt srfcId, const MInt dir, const MInt varId)
Returns the variable varId of surface srfcId in direction dir.
MBool m_static_updateSpongeLayer_first
MInt m_spongeDirectionsOut[s_maxNoSpongeZones]
void resetSponge()
reset sponge properties
std::vector< MFloatTensor > m_interpolationMatrices
std::vector< MFloat > * m_LESVarAverageBal
MBool m_gridInterfaceFilter
MFloat & a_externalSource(MInt cellId, MInt var)
Return external source.
MBool hasRestartTimeStep() const override
MFloat m_convergenceCriterion
std::map< MInt, MInt > m_splitChildToSplitCell
MInt m_noMaxSpongeBndryCells
MFloat a_spongeFactorStart(const MInt cellId) const
Returns the spongeFactorStart of the cell cellId.
MInt & a_surfaceOrientation(const MInt srfcId)
Returns the orientation of surface srfcId.
std::vector< MFloat > m_azimuthalCutRecCoord
MBool a_isInterface(const MInt cellId) const
Returns isInterface of the cell cellId.
virtual void cutOffBoundaryCondition()
virtual void resetRHSNonInternalCells()
MPI_Request m_timeStepReq
Request for reducing the time-step using non-blocking comm.
MFloat * m_sigmaEndSpongeBndryId
MInt noSolverTimers(const MBool allTimings) override
MBool a_isBndryCell(const MInt cellId) const override
Returns isBndryCell of the cell cellId.
MInt m_reConstSVDWeightMode
MInt m_noStgSpongePositions
MBool m_hasExternalSource
std::vector< MFloat > m_wallNormalVectors
MFloat m_oldPositiveMomentOfVorticity
maia::fv::collector::FvCellCollector< nDim > m_cells
Collector for FV cells.
MBool m_timeStepConverged
Convergence status of the current time step.
void checkGhostCellIntegrity()
Checks whether cells' isGhost and the boundary Id coincede. Cells' isGhost is is used to tell the gri...
MFloat m_static_computeFlowStatistics_bodyCntAvg[s_computeFlowStatistics_noSamples *s_computeFlowStatistics_noReClasses]
MFloat * m_bodyVelocityDt2
void saveSolverSolution(const MBool forceOutput=false, const MBool finalTimeStep=false) override
Manages solver-specific output.
MFloat m_static_applyBoundaryCondition_ERhoL1
const MFloat & a_timeRef() const
Return time reference value.
MBool m_integratedHeatReleaseOutput
void finalizeAdaptation() override
MFloat m_flameRadiusOffset
void swapCells(const MInt, const MInt) override
void linearInterpolation(MInt, MInt, MInt *)
std::vector< MInt > m_gapCellId
virtual void initInterpolationForCell(const MInt cellId)
Init the interpolation for points inside a given cell (based on interpolateVariables())
std::vector< MFloat > * m_RANSValues
virtual void findNghbrIds()
SysEqn::PrimitiveVariables * PV
virtual void resetBoundaryCells(const MInt offset=0)
MFloat m_static_applyBoundaryCondition_oldVol2
MInt m_sensorBandRefinementAdditionalLayers
void loadRestartTime(const MChar *fileName, MInt &globalTimeStepInput, MFloat &timeInput, MFloat &physicalTimeInput)
This function loads the flow information of the cells such as variables and attributes like u_velocit...
void extendStencil(const MInt)
extend the reconstruction sencil towards all diagonal cells on the first layer
MInt a_timeStepComputationInterval()
MInt m_static_logData_ic45301_containingCellIds[s_logData_ic45301_maxNoPressurePoints]
MFloat & a_PInfinity()
Return p infinity.
MFloat m_static_computeFlowStatistics_thetaDensityAverage[s_computeFlowStatistics_noSamples *s_computeFlowStatistics_thetaSize *s_computeFlowStatistics_noDat]
MInt cellDataTypeDlb(const MInt dataId) const override
MFloat & a_surfaceCoefficient(const MInt srfcId, const MInt dimCoefficient)
Returns the coefficient dimCoefficient of surface srfcId.
MInt m_tgatherAndSendWait
MFloat a_oldVariable(const MInt cellId, const MInt varId) const
Returns oldVariables v of the cell cellId variables varId.
MInt * m_noWMImgPointsRecv
virtual void resetSolverFull()
MBool a_isHalo(const MInt cellId) const
Returns IsHalo of the cell cellId.
MBool m_checkCellSurfaces
MBool m_static_constructGFieldPredictor_adaptiveGravity
MBool m_considerVolumeForces
MBool m_vtuWriteGeometryFile
MBool useTimeStepFromRestartFile() const
Returns true if the time-step from a restart file should be reused.
virtual MInt getAdjacentLeafCells_d2(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
void prepareAdaptation() override
void bandRefinementSensorDerivative(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, MInt sensorOffset, MInt sen, const std::vector< MFloat > &tau, const MFloat sensorThreshold)
MFloat m_static_applyBoundaryCondition_EVelL1
maia::fv::cell::BitsetType & a_properties(const MInt cellId)
Returns properties of the cell cellId.
MInt m_static_computeFlowStatistics_currentCnt
void calculateHeatRelease()
calculates heatRelease, currently used for postprocessing (average_in)
void setAndAllocateZonalProperties()
MBool m_static_logData_firstRun4
std::array< MFloat, nDim_+2 > computeSpongeDeltas(MInt cellId, std::array< MFloat, 6 >)
void setCombustionGequPvVariables()
reads in the combustion properties
MInt m_zonalTransferInterval
void computeWallNormalPointCoords()
std::vector< MInt > m_wallSetupOriginSide
MInt m_spongeAveragingIn[s_maxNoSpongeZones]
MBool m_isLowestSecondary
MInt m_noPeriodicGhostBodies
MInt * m_bndryRfnJumpInformation
MBool m_static_logCellxd_firstRun
void exchangeAzimuthalRemappedHaloCells()
void loadSampleVariables(MInt timeStep)
load variables for the specified timeStep
void assertDeleteNeighbor(const MInt cellId, const MInt dir) const
Checks wether the cell cellId has a valid neighbor in direction dir.
MFloat time() const override
returns the time
static constexpr MInt s_maxNoEmbeddedBodies
MFloat crankAngle(const MFloat, const MInt)
help-function for engine calculations which returns the crank-angle for a given time mode = 0: return...
void setUpwindCoefficient()
const Geom & geometry() const
the references to CartesianGrid data members end here
MBool forceAdaptation() override
MFloat a_spongeFactor(const MInt cellId) const
Returns the spongeFactor of the cell cellId.
void setSamplingProperties()
Reads properties associated with variable sampling.
MFloat m_burntUnburntTemperatureRatio
std::set< MInt > m_vtuGeometryOutput
MFloat ** m_periodicCellDataDom
void setMultilevelPrimary(const MBool state=true)
Designates solver as primary solver in multilevel computation.
const MFloat & a_bndryNormal(MInt bndryId, MInt dir) const
Return normal direction of bndry srfc.
MFloat m_static_smallCellCorrection_slipCoordinate
MInt & a_identNghbrId(MInt nghbrId)
Return ident nghbr Id.
void applySandpaperTrip()
MFloat m_static_applyBoundaryCondition_oldMass
MInt m_globalNoSpongeLocations
MFloat & a_surfaceArea(const MInt srfcId)
Returns the area of surface srfcId.
MFloat * m_FmolecularWeight
MFloat m_surfaceTangentialVelocity
MFloat m_flameOutletAreaRatio
MFloat * m_bodyVelocityDt1
MInt m_samplingStartIteration
MFloat m_jetForcingPosition
std::vector< MFloat > * m_LESValues
std::vector< MInt > m_averageDir
MFloat m_sutherlandPlusOne
MFloat m_inletOutletAreaRatio
std::vector< MInt > m_maxLvlMpiSendNeighbor
void buildLeastSquaresStencilSimple()
Determine the least squares stencil.
void bilinearInterpolation(MInt, MInt, MInt *)
MBool a_isInactive(const MInt cellId) const
void computeGamma()
Dispatches the gamma computation at each cell by calling the relevant function from the detChemSysEqn...
std::shared_ptr< Cantera::Kinetics > m_canteraKinetics
MFloat a_surfaceCoefficient(const MInt srfcId, const MInt dimCoefficient) const
Returns the coefficient dimCoefficient of surface srfcId.
void computeCellSurfaceDistanceVectors()
MFloat & a_tau(const MInt cellId, const MInt varId)
Returns the tau of the cell cellId for variable varId.
MBool m_useCreateCutFaceMGC
MInt a_cutCellLevel(const MInt cellId) const
Returns the level for cutCells, this can either be the maxRefinementLevel or the level of the current...
maia::fv::cell::BitsetType::reference a_isGapCell(const MInt cellId)
Returns isGapCell of the cell cellId.
std::vector< MFloat > m_tripCoords
MBool m_isMultilevelPrimary
Stores whether this solver is the primary solver (i.e., it has the finshest mesh) of a multilevel com...
SysEqn::FluxVariables * FV
MFloat a_rightHandSide(const MInt cellId, MInt const varId) const
Returns the right hand side of the cell cellId for the variable varId.
MInt m_static_computeFlowStatistics_currentIndex
static constexpr MInt s_computeFlowStatistics_noAngles
MFloat * m_molecularWeight
maia::fv::cell::BitsetType::reference a_isWindow(const MInt cellId)
Returns IsWindow of the cell cellId.
void getWallNormalPointVars()
void writeCutCellsToGridFile()
Writes cut cell information to an existing grid file in order to visualize it in ParaView.
MBool m_saveVorticityToRestart
void initSpanAvgSrfcProbes()
MBool m_static_getDistanceSplitSphere_first
MInt m_pressureLossFlameSpeed
MFloat & a_variable(const MInt cellId, const MInt varId)
Returns conservative variable v of the cell cellId for variables varId.
std::vector< std::vector< MInt > > m_neighborPointIds
void setRestartFileOutputTimeStep()
maia::fv::cell::BitsetType::reference a_isPeriodic(const MInt cellId)
Returns IsPeriodic of the cell cellId.
MFloat a_levelSetFunction(const MInt cellId, const MInt set) const
Returns the levelSet-value for fv-CellId cellId and set.
static constexpr MInt s_computeFlowStatistics_noDat
std::array< MFloat, 6 > computeTargetValues()
constexpr MBool isMultilevelLowestSecondary() const
void a_resetPropertiesSolver(const MInt cellId)
Returns property p of the cell cellId.
virtual void viscousFlux_Gequ_Pv()
Computes the viscous flux using a central difference scheme.
void initWMSurfaceProbes()
MInt a_level(const MInt cellId) const
Returns the level of the cell from the fvcellcollector cellId.
MFloat * m_domainBoundaries
void writeSpanAvgSrfcProbes()
void setMeanMolarWeight_CV(MInt cellId)
Computes the mean molar weight at the given cell ID from the primitive variables. The mean molar weig...
MFloat m_enhanceThreePointViscFluxFactor
std::vector< FvGapCell > m_gapCells
virtual void getDimensionalizationParams(std::vector< std::pair< MFloat, MString > > &dimParams) const
get dimensionalization parameters
void assertValidGridCellId(const MInt cellId) const
Cecks wether the cell cellId is an actual grid-cell.
MBool m_loadSampleVariables
MInt noInternalCells() const override
Return the number of internal cells within this solver.
MLong c_parentId(const MInt cellId) const
Returns the grid parent id of the cell cellId.
std::map< MInt, std::vector< MInt > > m_cellToNghbrHood
const MFloat & a_bndryCutCoord(MInt bndryId, MInt i, MInt j) const
Return cut coordinates of bndry srfc.
std::shared_ptr< Cantera::ThermoPhase > m_canteraThermo
MInt m_noTimeStepsBetweenSamples
Collector< CartesianGridPoint< nDim > > * m_gridPoints
std::vector< std::vector< MInt > > m_wmImgWMSrfcIds
MInt a_reconstructionNeighborId(const MInt cellId, const MInt nghbrNo) const
Returns reconstruction neighbor n of the cell cellId.
void viscousFluxMultiSpecies_()
MFloat m_omegaInfinityFactor
void computeUTau(MFloat *data, MInt cellId)
MFloat m_static_logData_ic45299_freqFactor[s_logData_ic45299_maxNoEmbeddedBodies]
static constexpr MInt s_maxNoSpongeZones
std::vector< std::vector< MInt > > m_azimuthalMaxLevelHaloCells
MInt m_noLevelSetsUsedForMb
MBool postSolutionStep() override
MBool m_averageSpeedOfSound
MFloat & a_levelSetValuesMb(const MInt cellId, const MInt set)
Returns the levelSetMb-value for fv-CellId cellId and set.
void setInputOutputProperties()
Reads properties and initializes variables associated with input/output.
MFloat m_thickeningFactor
void reInitSmallCellIdsMemory()
Reallocate memory to small and master cell id arrays according to the current number of cells.
MBool m_firstUseInitializeVtkXmlOutput
MBool prepareRestart(MBool, MBool &) override
Prepare the solvers for a grid-restart.
std::vector< MInt > m_LESAverageCells
MBool m_firstUseUpdateSpongeLayerCase51
SysEqn::ConservativeVariables * CV
void send(const MBool exchangeAll=false)
Send window cell data to corresponding neighbors.
std::vector< MFloat > gravityRefCoords
MFloat m_initialFlameHeight
void computeAndSetTimeStep()
MFloat m_pressureLossCorrection
void saveDebugRestartFile()
Saves the solver restart file and the grid restartFile NOTE: for debugging purposes only!...
void(FvCartesianSolverXD::* m_computeViscousFlux)()
typename CartesianSolver::GridProxy GridProxy
MFloat * m_secondaryReferenceComposition
virtual void initSolutionStep(MInt)
Initializes the solver.
static constexpr MInt s_computeFlowStatistics_noPdfs
void initSTGSpongeExchange()
virtual void exchangePeriodic()
virtual void correctBoundarySurfaces_()
virtual void saveRestartFile(const MBool)
virtual void viscousFlux()
std::vector< MFloat > * m_curvatureG
MInt m_noPeriodicCellData
MFloat * m_spongeEndIteration
MFloat & a_restrictedRHS(const MInt cellId, const MInt varId)
Returns the restrictedRHS of the cell cellId for variable varId.
MFloat a_localTimeStep(const MInt cellId) const
Returns the local time-step of the cell cellId.
MBool a_hasProperty(const MInt cellId, const SolverCell p) const
Returns solver cell property p of the cell cellId.
MFloat computeTimeStep(MInt cellId) const noexcept
void finalizeBalance() override
Reinitialize solver after all data structures have been recreated.
MString m_currentGridFileName
MFloat m_velocityFlameTube
MBool m_surfDistCartesian
void sensorVorticity(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
MFloat m_xOffsetFlameTube2
MFloat m_static_advanceSolution_meanDrag
const MFloat & a_physicalTime() const
Return physical time.
MFloat m_shearLayerStrength
const MInt & a_maxLevelWindowCells(MInt domain, MInt id) const
Return max level window cells.
static constexpr MInt s_computeFlowStatistics_noSamples2
MFloat & a_surfaceCoordinate(const MInt srfcId, const MInt dir)
Returns the coordinate of surface srfcId in direction dir.
MFloat & a_nuTOtherPhase(const MInt cellId)
void computeDomainAndSpongeDimensions()
Extracts the minimum and maximum coordinates of all cells in the grid.
void setRungeKuttaProperties()
This function reads the properties required for Runge Kutta time stepping.
virtual void initializeRungeKutta()
Reads the Runge-Kutta properties and initializes the variables required for Runge Kutta time stepping...
MInt * m_tripAirfoilBndryId
void finalizeMpiExchange()
Finalize non-blocking MPI communication (cancel open requests, free all requests)
MInt * m_associatedBodyIds
std::vector< std::vector< MInt > > m_saSrfcProbeSrfcs
void startMpiExchange()
Begin non-blocking communication by posting new send requests.
static constexpr MBool hasSC
MInt * m_noPerCellsToSend
MBool a_isGapCell(const MInt cellId) const
Returns isGapCell of the cell cellId.
ATTRIBUTES2(ATTRIBUTE_ALWAYS_INLINE, ATTRIBUTE_HOT) inline void LSReconstructCellCenter_(const MUint noSpecies)
MFloat a_surfaceflux(const MInt srfcId, const MInt fVarId) const
Returns the flux fVarId for surface srfcId.
MFloat m_spongeLimitFactor
void saveGridFlowVarsPar(const MChar *fileName, MInt noTotalCells, MLong noInternalCells, MFloatScratchSpace &variables, std::vector< MString > &dbVariablesName, MInt, MIntScratchSpace &idVariables, std::vector< MString > &idVariablesName, MInt, MFloatScratchSpace &dbParameters, std::vector< MString > &dbParametersName, MIntScratchSpace &idParameters, std::vector< MString > &idParametersName, const MInt *recalcIds)
This function stores the massivley parallel flow information of the cells.
MBool m_mpiRecvRequestsOpen
std::vector< std::pair< MFloat, MFloat > > m_globalSpongeLocations
MInt m_noMaxLvlMpiRecvNeighbors
FvCartesianSolverXD(MInt, MInt, const MBool *, maia::grid::Proxy< nDim_ > &gridProxy_, Geometry< nDim_ > &geometry_, const MPI_Comm comm)
MBool m_vtuVorticityOutput
MFloat m_static_logData_ic45299_cutOffAngle
virtual MBool maxResidual(MInt mode=0)
Computes the global root-mean-square residual. The residual is defined as time derivative of conserva...
MFloat & a_physicalTime()
Return physical time.
virtual void Ausm()
Dispatches the AUSM flux computation for different number of species.
MBool cellOutside(const MInt)
void setNumericalProperties()
Reads and initializes properties associated with the numerical method.
MInt & a_associatedBodyIds(const MInt cellId, const MInt set)
Returns the associatedBodyIds for fv-CellId cellId and set.
void computeGridCellCoordinates(MFloat *)
computes the coordinates of the grid cell centers and stores them into a one-dimensional array
MBool hasChemicalReaction
MFloat a_surfaceCoordinate(const MInt srfcId, const MInt dir) const
Returns the coordinate of surface srfcId in direction dir.
MFloat m_marksteinLengthPercentage
MInt m_noActiveHaloCellOffset
MFloat & a_surfaceUpwindCoefficient(const MInt srfcId)
Returns the upwind coefficient of surface srfcId.
MBool m_vtuQCriterionOutput
MInt a_noCells() const
Returns the number of cells.
MFloat & a_TInfinity()
Return T infinity.
MBool m_multilevel
Stores whether this solver is part of a multilevel computation.
void computeVorticity2D(MFloat *const vorticity)
MBool m_isInitSamplingVars
Indicator if sampling variables are initialized.
MInt & a_maxLevelHaloCells(MInt domain, MInt id)
Return max level halo cells.
MInt m_samplingStartCycle
std::vector< FvWMSurface< nDim > > m_wmSurfaces
void computeVorticity3D(MFloat *const vorticity)
void createBoundaryCells()
identifies bndry cells (Sets a_isInterface for the solver!)
MFloat * m_wmSrfcProbeRecvBuffer
MFloat m_oldMomentOfVorticity
MFloat ** m_externalSourceDt1
std::vector< MInt > m_wmSurfaceProbeIds
MFloat & a_VVInfinity(MInt dir)
Return mean flow velocity.
MInt * m_noPeriodicCellsDom
void writeCenterLineVel()
MFloat & a_gradUOtherPhase(const MInt cellId, const MInt uDir, const MInt gradDir)
MFloat & a_surfaceFlux(const MInt srfcId, const MInt fVarId)
Returns the flux fVarId for surface srfcId.
MBool bubblePathDispersion
MFloat setAndAllocateSpongeDomainProperties(MFloat)
reads in the sponge properties for the domain boundaries
void getSampleVariables(MInt cellId, const MFloat *&vars)
read only access to primitive variables of a single cell
MInt m_zonalAveragingTimeStep
MFloat * m_bodyAngularVelocity
MInt m_bndryCellSurfacesOffset
virtual void filterConservativeVariablesAtFineToCoarseGridInterfaces()
static constexpr MInt s_computeFlowStatistics_noReClasses
std::vector< MInt > * m_spongeAverageCellId
MInt m_saSrfcProbeInterval
MFloat * m_saSrfcProbeBuffer
MBool m_adaptationSinceLastRestartBackup
std::set< MInt > m_cutOffInterface
MFloat m_weightActiveCell
MBool a_isBndryGhostCell(const MInt cellId) const
Returns isBndryGhostCell of the cell cellId.
MBool m_vtuWriteParticleFile
MFloat m_weightMulitSolverFactor
MPI_Request * m_mpi_sendRequest
void initAzimuthalMaxLevelExchange()
MInt * m_noPerCellsToReceive
void setConservativeVarsOnAzimuthalRecCells()
void sensorInterfaceLs(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen)
MInt ** m_maxLevelWindowCells
MFloat & a_alphaGas(const MInt cellId)
const MInt m_maxNoAzimuthalRecConst
virtual void correctMasterCells()
adds the right hand side of small cells to their corresponding master cells and sets the small cell R...
void addSpeciesReactionRatesAndHeatRelease()
MFloat & a_surfaceDeltaX(const MInt srfcId, const MInt varId)
Returns the delta X of surface srfcId for variable varId.
MInt m_zonalRestartInterpolationSolverId
MFloat m_samplingTimeBegin
MInt getAdjacentLeafCells(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
retrieves the first 'noLayers' layers of direct and(or diagonal neighbors to the given cell
MBool m_static_logData_ic45299_first
void fillExcBufferAzimuthal(MInt cellId, MInt offset, MFloat *dataDest, MFloat *dataSrc, MInt noData, const std::vector< MInt > &rotIndex=std::vector< MInt >())
MFloat & a_dt1Variable(const MInt cellId, const MInt varId)
Returns dt1Variables of the cell CellId variables varId.
std::map< MInt, std::vector< MFloat > > m_vapourData
MBool m_static_writeVtkXmlFiles_firstCall
MBool m_considerRotForces
const MFloat & a_TInfinity() const
Return T infinity.
MFloat ** gradUOtherPhase
MInt m_secondSpongeDirectionsIn[s_maxNoSpongeZones]
std::vector< MInt > m_wallNormalPointDomains
void finalizeLESAverage()
MUint m_reconstructionDataSize
MInt a_noSets() const
Returns the noSets for fv-CellId cellId and set.
MFloat * m_levelSetValuesMb
static constexpr MInt nDim
MBool calcSlopesAfterStep()
Return if slopes should be calculated at after each step (not before)
MBool a_isSplitCell(const MInt cellId) const
std::vector< std::vector< MInt > > m_azimuthalRemappedHaloCells
MBool m_static_logData_ic45301_first
MFloat * m_reconstructionConstantsPeriodic
void computeForceCoefficients(MFloat *)
MBool a_hasProperty(const MInt cellId, const Cell p) const
Returns grid cell property p of the cell cellId.
void cellSurfaceMapping()
void azimuthalNearBoundaryReverseExchange()
MInt a_reconstructionNeighborId(const MInt cellId) const
Returns reconstruction data offset i of the cell cellId.
MString m_surfaceValueReconstruction
MFloat cv_a(MInt cellId) const noexcept
Returns the speed-of-sound computed from the conservative variables of the cell cellId.
virtual MInt getAdjacentLeafCells_d1_c(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
MInt m_noLevelSetFieldData
std::set< MInt > m_splitSurfaces
MInt a_spongeBndryId(const MInt cellId, const MInt dir) const
Returns the spongeBndryId of the cell cellId for direction dir.
void readWallModelProperties()
void computeSlopesByCentralDifferences()
MFloat & a_surfaceFactor(const MInt srfcId, const MInt varId)
Returns the factor of surface srfcId for variable varId.
virtual void Muscl(MInt=-1)
Reconstructs the flux on the surfaces.
void sensorInterface(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
MBool m_static_updateBodyProperties_firstTime
void identPeriodicCells()
virtual void convertPrimitiveRestartVariables()
converts the primitive restart variables to a new Mach Number
MFloat a_reactionRateBackup(const MInt cellId, const MInt reactionId) const
Returns the reactionRateBackup of the cell cellId for variables varId.
MFloat m_deltaYtemperatureProfile
virtual void initMatDat()
virtual void getSolverSamplingProperties(std::vector< MInt > &samplingVars, std::vector< MInt > &noSamplingVars, std::vector< std::vector< MString > > &samplingVarNames, const MString featureName="") override
Read sampling related properties.
void assertValidGridCellId(const MInt NotUsed(cellId)) const
MFloat a_FcellVolume(const MInt cellId) const
Returns the inverse cell volume of the cell from the fvcellcollector cellId.
void bilinearInterpolationAtBnd(MInt, MInt, MInt *)
void loadRestartFile() override
MFloat & a_bndryNormal(MInt bndryId, MInt dir)
Return normal direction of bndry srfc.
MFloat a_alphaGas(const MInt cellId) const
std::vector< MFloat > m_averagePos
MFloat & a_dt2Variable(const MInt cellId, const MInt varId)
Returns dt2Variables of the cell CellId variables varId.
MFloat a_levelSetValuesMb(const MInt cellId, const MInt set) const
Returns the levelSetMb-value for fv-CellId cellId and set.
static constexpr MFloat m_volumeThreshold
void scatter()
Scatter received data of all neighbors to the corresponding halo cells.
MInt m_static_logData_ic45301_noPressurePoints
std::vector< std::vector< MInt > > m_azimuthalMaxLevelWindowMap
MFloat m_static_crankAngle_Strouhal
virtual void initSolverSamplingVariables(const std::vector< MInt > &varIds, const std::vector< MInt > &noSamplingVars) override
Initialize sampling variables/allocate memory.
void sensorCutOff(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen)
void allocateAndInitSolverMemory()
Allocates the resources of the FV solver. Mostly arrays of size maxNoCells used in the main part of t...
MBool m_hasCellsInSpongeLayer
void interpolateVariablesInCell(const MInt cellId, const MFloat *position, std::function< MFloat(MInt, MInt)> variables, MFloat *result)
Interpolate the given variable field inside a cell at a given position (based on interpolateVariables...
maia::fv::cell::BitsetType::reference a_hasProperty(const MInt cellId, const SolverCell p)
Returns solver cell property p of the cell cellId.
MFloat * m_sweptVolumeBal
MFloat m_integralAmplitude
MFloat m_oldPressure_Gradient
MFloat m_tripAirfoilChordLength
constexpr MBool isZonal() const
void swapProxy(const MInt, const MInt) override
MBool c_isToDelete(const MInt cellId) const
Returns the delete of the cell cellId.
std::vector< MFloat > gasSourceBox
MFloat m_targetVelocityFactor
MFloat & a_localTimeStep(const MInt cellId)
Returns the local time-step of the cell cellId.
MFloat a_storedSlope(const MInt cellId, MInt const varId, const MInt dir) const
Returns the stored slope of the cell cellId for the variable varId in direction dir.
std::vector< MInt > m_normalSamplingSide
void setAndAllocateDetailedChemistryProperties()
void azimuthalNearBoundaryExchange()
void interpolateAzimuthalDataReverse(MFloat *data, MInt offset, MInt noVars, const MFloat *vars)
void sensorPatch(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline MBool uDLimiter(const MFloat *const
MBool m_vtuLevelSetOutput
MFloat m_globalUpwindCoefficient
MFloat & a_restrictedVar(const MInt cellId, const MInt varId)
Returns restricted variables of cell cellId for variable varId on level level.
void compute1DFlameSolution()
maia::fv::cell::BitsetType::reference a_isHalo(const MInt cellId)
Returns IsHalo of the cell cellId.
MBool m_timeStepNonBlocking
Reduce the timeStep using non-blocking communication;.
static constexpr const MInt m_noDirs
void prepareMpiExchange()
void setSensors(std::vector< std::vector< MFloat > > &sensors, std::vector< MFloat > &sensorWeight, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MInt > &sensorSolverId) override
set the sensors for the adaptation (i.e. which cell should be refined/removed?)
MFloat m_static_computeFlowStatistics_sdatAverage2[s_computeFlowStatistics_noSamples *s_computeFlowStatistics_noAngles *s_computeFlowStatistics_noAngleDat]
static constexpr MInt s_computeFlowStatistics_noSamples4
void setTestcaseProperties()
Reads and initializes properties associated with the physics of the simulation and allocates small ar...
MFloat * m_bodyAngularAcceleration
MFloat m_static_computeFlowStatistics_pdfAverage2[s_computeFlowStatistics_noSamples2 *s_computeFlowStatistics_noPdfs *s_computeFlowStatistics_noPdfPoints]
MPI_Request * m_mpi_wmSendReq
MFloat m_static_computeFlowStatistics_thetaDensityAverage2[s_computeFlowStatistics_noSamples *s_computeFlowStatistics_thetaSize *s_computeFlowStatistics_noDat]
MInt getIdAtPoint(const MFloat *point, MBool NotUsed(globalUnique=false))
Return the leaf cell id containing the given point.
MFloat m_static_applyBoundaryCondition_EVelLoo
virtual void initializeMaxLevelExchange()
parallel: Store all necessary data in send buffer
MFloat m_radiusVelFlameTube
MFloat m_physicalTimeStep
MFloat cv_T(MInt cellId) const noexcept
Returns the temperature computed from the conservative variables of the cell cellId.
virtual void smallCellCorrection(const MInt timerId=-1)
Flux-redistribution method Apply a stable correction to small-cells and redistribute the defective fl...
MBool m_wmUseInterpolation
MInt determineRestartTimeStep() const override
Determine the restart time step from the restart file (for useNonSpecifiedRestartFile = true)
void computeReconstructionConstantsSVD()
Compute the reconstruction constants using a weighted least squares approached solved via singular va...
MBool m_timeStepVolumeWeighted
Should the time-step in the boundary cells be weighted by their volume?
MFloat a_reactionRate(const MInt cellId, const MInt reactionId) const
Returns the reactionRate of the cell cellId for variables varId.
void calcPeriodicSpongeAverage()
void computeSourceTerms()
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) virtual void computeSurfaceValues(MInt timerId
SysEqn::SurfaceCoefficients * SC
MFloat * m_bodyTemperature
MInt a_surfaceOrientation(const MInt srfcId) const
Returns the orientation of surface srfcId.
void sensorInterfaceLsMb(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen)
void exchangeGapInfo()
exchanges the Gap-Information with the solver-own communicators!
virtual void resetImplicitCoefficients()
virtual void writeVtkXmlFiles(const MString, const MString, MBool, MBool)
void preTimeStep() override
MFloat m_radiusFlameTube2
void interpolateVariables(const MInt cellId, const MFloat *position, MFloat *result)
calculates interpolated variables (in the range a, b) for a given position in a given cell
MFloat m_yOffsetFlameTube2
void limitWeights(MFloat *) override
Limit Weight types to avoid large memory disbalance between ranks for DLB.
void correctMajorSpeciesMassFraction()
Corrects the mass fraction of the predominant species to ensure conservation due to numerical or appr...
MBool m_static_logCell_firstRun
void preSolutionStep(MInt) override
MFloat m_sigmaSpongeInflow
MInt m_integratedHeatReleaseOutputInterval
virtual void resetSurfaces()
static constexpr MInt s_computeFlowStatistics_thetaSize
MFloat m_sutherlandConstant
void determineStructuredCells()
MInt m_bndryGhostCellsOffset
std::vector< MInt > m_wallNormalPointCellIDs
void interpolateAzimuthalData(MFloat *data, MInt offset, MInt noVars, const MFloat *vars)
MFloat m_marksteinLengthTh
MInt & a_noSets()
Returns the noSets for fv-CellId cellId and set.
MFloat m_oldNegativeMomentOfVorticity
MFloat & a_storedSlope(const MInt cellId, MInt const varId, const MInt dir)
Returns the stored slope of the cell cellId for the variable varId in direction dir.
MFloat & a_spongeFactorStart(const MInt cellId)
Returns the spongeFactorStart of the cell cellId.
MBool m_static_writeVtkXmlFiles_firstCall2
void refineCell(const MInt) override
MInt & a_noPart(MInt cellId)
Return no particles.
void computeSamplingTimeStep_()
computes the time step according to the sample variables
void getPrimitiveVariables(MInt, MFloat *, MFloat *, MInt)
MBool m_recordFlameFrontPosition
MFloat ** m_periodicDataToSend
void initSolver() override
Initializes the fv-solver.
MFloat * m_globalBcStgLocationsG
MFloat a_implicitCoefficient(const MInt cellId, const MInt coefId) const
Returns the implicitCoefficient of cell cellId for coefficient coefId.
MInt c_noChildren(const MInt cellId) const
Returns the number of children of the cell cellId.
MFloat a_surfaceVariable(const MInt srfcId, const MInt dir, const MInt varId) const
Returns the variable varId of surface srfcId in direction dir.
void finishMpiExchange()
Finish non-blocking communication by waiting for receive requests.
MBool m_resetInitialCondition
void initCutOffBoundaryCondition()
MFloat * m_bodyAcceleration
MFloat m_neutralFlameStrouhal
MBool m_static_updateSpongeLayer_mbSpongeLayer
void gather()
Gather data of all window cells for all neighbors in the send buffers.
void initAzimuthalCartesianHaloInterpolation()
MFloat m_xOffsetFlameTube
MFloat c_coordinate(const MInt cellId, const MInt dir) const
Returns the coordinate of the cell from the grid().tree() cellId for dimension dir.
std::map< std::string, MInt > speciesMap
Geometry< nDim > * m_geometry
void forceTimeStep(const MFloat dt)
Force time step externally.
std::vector< MFloat > m_spongeLocations
MFloat a_gradUOtherPhase(const MInt cellId, const MInt uDir, const MInt gradDir) const
void lhsBnd()
Apply lhsBnd.
MInt & a_reconstructionData(const MInt cellId)
Returns reconstruction data offset i of the cell cellId.
void sensorDerivative(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
computes the sensor values for a derivative sensor
MFloat & a_cfl()
Returns the cfl number of the solver.
MInt noLoadTypes() const override
MFloat m_shearLayerThickness
void balancePost() override
Reinitialize solver after setting solution data in DLB.
MInt a_surfaceNghbrCellId(const MInt srfcId, const MInt dir) const
Returns the neighbor cell id of surface srfcId in direction dir.
virtual void updateSpongeLayer()
computes the additional rhs of all cells lying inside the sponge layer to dissipate outgoing waves.
std::vector< MInt > m_rotIndVarsPV
void getHeatRelease(MFloat *&heatRelease)
returns
MFloat m_perturbationAmplitude
MFloat m_channelVolumeForce
typename maia::CartesianSolver< nDim, FvCartesianSolverXD > CartesianSolver
MInt m_totalnosplitchilds
MInt & a_storeNghbrId(MInt nghbrId)
Return store nghbr Id.
MFloat m_totalHeatReleaseRate
void getLoadQuantities(MInt *const loadQuantities) const override
Return the cumulative load quantities on this domain.
MFloat & a_reactionRate(const MInt cellId, const MInt reactionId)
Returns the reactionRate of the cell cellId for variables varId.
MFloat interpolationFactor
void removeChilds(const MInt) override
MFloat & a_coordinate(const MInt cellId, const MInt dir)
Returns the coordinate of the cell from the fvcellcollector cellId for dimension dir.
std::vector< MInt > m_interpolationPosition
MFloat m_angularBodyVelocity
MFloat m_momentumThickness
MBool m_vtuSaveHeaderTesting
const MFloat & a_cfl() const
std::vector< MInt > m_noAzimuthalReconstNghbrs
void initViscousFluxComputation()
MFloat m_referenceDensityTF
virtual void nonReflectingBCCutOff()
MFloat getCellLoad(const MInt cellId, const MFloat *const weights) const override
Return the load of a single cell (given computational weights).
MBool m_vtuGlobalIdOutput
const MInt & a_bndryGhostCellId(const MInt bndryId, const MInt srfc) const
void computeInitialPressureLossForChannelFlow()
Computes pressure loss for the initial condition of channel flow testcases as . Requires property ReT...
MFloat & a_nuEffOtherPhase(const MInt cellId)
void applyCoarseLevelCorrection()
Apply coarse-level correction to RHS.
MBool m_static_smallCellCorrection_first
std::vector< MInt > m_wmSurfaceProbeSrfcs
MPI_Request * m_mpi_request
MInt m_sweepStartFirstCell
MInt * m_wmLocalNoSrfcProbeIds
virtual void getVorticity(MFloat *const vorticity)
wrapper for vorticity computation
void implicitTimeStep() override
void identPeriodicCells_()
std::vector< MFloat > * m_flameSpeedG
MFloat m_subfilterVariance
MBool m_timeStepUpdated
time-step has been updated
const MInt & a_storeNghbrId(MInt nghbrId) const
Return store nghbr Id.
std::vector< MInt > m_azimuthalBndrySide
std::vector< MFloat > * m_LESVarAverage
virtual void applyInitialCondition()
Initializes the entire flow field.
void setGlobalSolverVars(std::vector< MFloat > &globalFloatVars, std::vector< MInt > &globalIdVars) override
Set global solver variables (see getGlobalSolverVars())
MFloat m_burntUnburntTemperatureRatioStart
MLong c_globalId(const MInt cellId) const
Returns the global grid id of the grid cell cellId.
void generateBndryCells()
MInt * m_spongeDirections
MInt m_maxLevelBeforeAdaptation
MBool m_restartOldVariables
MInt m_noLimitedSlopesVar
MBool hasSplitBalancing() const override
Return if load balancing for solver is split into multiple methods or implemented in balance()
MFloat m_burntUnburntTemperatureRatioEnd
const MFloat & a_rhoInfinity() const
Return rho infinity.
virtual MInt getAdjacentLeafCells_d1(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
FvSurfaceCollector & m_surfaceCollector()
MInt * m_limitedSlopesVar
MInt & a_surfaceNghbrCellId(const MInt srfcId, const MInt dir)
Returns the neighbor cell id of surface srfcId in direction dir.
MFloat a_psi(const MInt cellId) const
Returns psi of the cell cellId for variables varId.
MFloat computeTimeStepEulerDirectional(MInt cellId) const noexcept
const MInt & a_restartInterval() const
Returns the restart interval of the solver.
maia::fv::cell::BitsetType::reference a_isInterface(const MInt cellId)
Returns isInterface of the cell cellId.
MPI_Comm globalMpiComm() const
Return the global MPI communicator used by the grid.
void cancelMpiRequests() override
Cancel open MPI (receive) requests.
MBool m_zeroLineCorrection
std::vector< MInt > m_spongeCells
MFloat * m_referenceComposition
MFloat m_deltaXtemperatureProfile
virtual void loadOldVariables(const MString &fileName)
This function loads oldVariable data from a restartFile-type file.
virtual void computePrimitiveVariables()
Dispatches the computation of the primitive variables for different number of species.
MFloat a_slope(const MInt cellId, MInt const varId, const MInt dir) const
Returns the slope of the cell cellId for the variable varId in direction dir.
MFloat m_static_advanceSolution_meanDragCoeff
maia::fv::cell::BitsetType::reference a_isWMImgCell(const MInt cellId)
Returns isWMImgCell of the cell cellId.
void initCanteraObjects()
Allocates the Cantera objects that define a thermodynamic phase, reaction kinetics and transport prop...
MFloat * m_vtuCoordinatesThreshold
void lhsBndFinish()
Finish the split MPI communication and perform the left out part from lhsBnd().
MFloat m_heatReleaseReductionFactor
MFloat a_pvariable(const MInt cellId, const MInt varId) const
Returns primitive variable v of the cell cellId for variables varId.
MInt & a_restartInterval()
Returns the restart interval of the solver.
MInt m_static_computeFlowStatistics_currentIndex2
void computeVorticity3DT(MFloat *const vorticity)
Compute vorticity and store in vorticity pointer (transposed version)
MBool m_restartLESAverage
MFloat m_static_getDistanceSplitSphere_h
virtual void calcSamplingVarAtPoint(const MFloat *point, const MInt id, const MInt sampleVarId, MFloat *state, const MBool interpolate=false) override
Calculate the sampling variables at a given point in a cell.
std::vector< MInt > gasSourceCells
std::vector< MFloat > depthCorrectionCoefficients
MInt m_orderOfReconstruction
List< MInt > * m_sortedPeriodicCells
MBool m_static_updateBodyProperties_c455_firstRun
void updateSpongeLayerRhs(MInt, std::array< MFloat, nDim_+2 >)
virtual MInt getAdjacentLeafCells_d0(const MInt, const MInt, MIntScratchSpace &, MIntScratchSpace &)
MFloat m_sutherlandPlusOneThermal
MFloat m_lambdaPerturbation
virtual void distributeFluxToCells()
Distributes the surface fluxes to the cell RHS.
MFloat m_static_computeFlowStatistics_sdatAverage[s_computeFlowStatistics_noSamples *s_computeFlowStatistics_noAngles *s_computeFlowStatistics_noAngleDat]
MFloat & a_spongeFactor(const MInt cellId)
Returns the spongeFactor of the cell cellId.
void writeWMTimersASCII()
MFloat & a_timeRef()
Return time reference value.
std::vector< std::vector< MInt > > m_saSrfcProbeIds
void getCellDataDlb(const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, MFloat *const data) override
Return solver data for DLB.
MInt a_surfaceBndryCndId(const MInt srfcId) const
Returns the boundary condition of surface srfcId.
MFloat a_vortOtherPhase(const MInt cellId, const MInt dir) const
MFloat m_timeStepFixedValue
Forces the time-step to be set to a fixed value:
std::set< MInt > m_activeMeanVars
constexpr MBool isMultilevel() const
Return true if solver is part of a multilevel computation.
std::vector< MInt > m_azimuthalReconstNghbrIds
MInt noVariables() const override
Return the number of primitive variables.
MBool m_static_computeSurfaceValuesLimitedSlopesMan_correctWallBndryFluxes
void initializeFvCartesianSolver(const MBool *propertiesGroups)
FV Constructor: reads and allocate properties/variables:
maia::fv::cell::BitsetType::reference a_wasGapCell(const MInt cellId)
Returns wasGapCell of the cell cellId.
MBool m_static_computeSurfaceValuesLimitedSlopesMan_checkedBndryCndIds
MFloat * m_tripAirfoilNosePos
MInt a_splitCellId(const MInt sc) const
MInt & a_surfaceBndryCndId(const MInt srfcId)
Returns the boundary condition of surface srfcId.
MFloat a_nuTOtherPhase(const MInt cellId) const
virtual void applyBoundaryCondition()
handles the application of boundary conditions to the ghost cells
virtual void computeLimitedSurfaceValues(MInt timerId=-1)
MInt a_noLevelSetFieldData() const
Returns the noSets for fv-CellId cellId and set.
struct FvCartesianSolverXD::@9 m_detChem
SysEqn::AdditionalVariables * AV
void tripFourierCoefficients(MFloat *, MInt, MFloat, MFloat)
void computeMeanMolarWeights_CV()
Dispatches the mean molar weight computation at the cell center from the conservative variables by ca...
MBool m_restartOldVariablesReset
std::vector< MInt > m_maxLvlMpiRecvNeighbor
void sensorParticle(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
void writeWMSurfaceProbes()
void computeVolumeForcesRANS()
virtual void resetZonalLESAverage()
Initializes zonal exchange arrays.
MBool c_isLeafCell(const MInt cellId) const
static constexpr MInt s_logData_ic45299_maxNoEmbeddedBodies
MFloat m_static_computeFlowStatistics_sdatSum[s_computeFlowStatistics_noSamples *s_computeFlowStatistics_noAngles]
void setInfinityState()
Computes/defines the infinity values/state once and for all Ideally the infinity variables should not...
static constexpr MInt s_computeFlowStatistics_noAngleDat
virtual void computeSurfaceValuesLimitedSlopesMan(MInt timerId=-1)
aaplies the slope limiter to the slopes before calling computeSurfaceValues_
MFloat & a_flameSpeed(const MInt cellId, const MInt set)
Returns the flamespeed-value for fv-CellId cellId and set.
void exchangeZonalAverageCells()
MFloat m_spongeReductionFactor
MFloat m_static_logData_ic45299_maxA
std::array< MFloat **, s_maxNoSamplingVariables > m_samplingVariables
Storage for solver specific sampling variables.
MFloat interpolateWallNormalPointVars(MInt var, MFloat coords[], MInt localId, std::vector< MInt > neighborList)
void viscousFlux_(F &viscousFluxFct)
Computes the viscous flux using a central difference scheme to approximate the slopes at the surface ...
MFloat m_restartFileOutputTimeStep
MFloat & a_cellVolume(const MInt cellId)
Returns the cell volume of the cell from the fvcellcollector cellId.
MFloat a_dt1Variable(const MInt cellId, const MInt varId) const
Returns dt1Variables of the cell CellId variables varId.
MFloat m_pressureFlameTube
MBool m_timeStepAvailable
Has the non-blocking reduction of the time-step finished?
MFloat m_static_applyBoundaryCondition_ERhoLoo
void setPrimitiveVariables(MInt cellId)
computes primitive from primitive variables for given cell id. This is the version for all SysEqn.
MInt a_noReconstructionNeighbors(const MInt cellId) const
Returns the noRcnstrctnNghbrIds of the cell cellId.
MFloat m_integralLengthScale
virtual void resetRHSCutOffCells()
MUlong m_randomDeviceSeed
MInt ** m_cellSurfaceMapping
void sensorSpecies(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
MFloat m_dampingDistanceFlameBase
void initializeTimers()
Initializes the communication timers.
void computeSurfaceCoefficients()
Dispatches the transport coefficients computation at each surfaces by calling the relevant function f...
void saveSandpaperTripVars()
MFloat * m_standardHeatFormation
virtual void setCellProperties()
virtual MFloat entropy(MInt cellId)
MBool m_filterFlameTubeEdges
void computeAcousticSourceTermQe(MFloatScratchSpace &, MFloatScratchSpace &, MFloatScratchSpace &, MFloatScratchSpace &)
MInt getNghbrLeafCells(const MInt cellId, MInt refCell, MInt layer, MInt *nghbrs, MInt dir, MInt dir1=-1, MInt dir2=-1) const
returns the neighbor leaf cells in the specified direction 'dir' (dir1 and dir2 are used to identify ...
void setAndAllocateCombustionTFProperties()
Reads and initializes properties associated with combustion simulations.
void writeRestartFile(const MBool, const MBool, const MString, MInt *) override
void postAdaptation() override
virtual void reIntAfterRestart(MBool)
MFloat m_inflowTemperatureRatio
void computeCellVolumes()
static constexpr const MInt m_noEdges
virtual void applyExternalSource()
Add external sources to the RHS.
MInt & a_reconstructionNeighborId(const MInt cellId, const MInt nghbrNo)
Returns reconstruction neighbor n of the cell cellId.
void checkForSrfcsMGC()
Check all existing cells if surfaces have to be created member function with the task to check all ex...
Collector< PointBasedCell< nDim > > * m_extractedCells
void exchangeExternalSources()
Exchange external sources.
void exchangeDataFV(T *data, const MInt blockSize=1, MBool cartesian=true, const std::vector< MInt > &rotIndex=std::vector< MInt >())
std::vector< std::vector< MFloat > > m_wmImgCoords
MFloat * m_spongeStartIteration
virtual void finalizeInitEnthalpySolver()
virtual void getVorticityT(MFloat *const vorticity)
wrapper for vorticity computation (transposed version)
MFloat m_static_logData_ic45299_maxF
virtual void loadRestartMaterial()
void oldPressure(MFloat *const p)
This function computes the pressure from the oldVariables.
MInt m_static_computeFlowStatistics_currentIndex4
void findDirectNghbrs(MInt cellId, std::vector< MInt > &nghbrList)
Obtain list of direct neighbors of given cell.
MFloat * m_secondCoordSpongeIn
MBool a_isWindow(const MInt cellId) const
Returns IsWindow of the cell cellId.
virtual void initComputeSurfaceValuesLimitedSlopesMan1()
initializes the limiter at cells, that are in the vicinity of a given stl-geometry
MFloat laminarFlameSpeedFactor
void sensorInterfaceDelta(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen)
MFloat m_restartTimeBc2800
void setActiveFlag(MIntScratchSpace &, const MInt mode, const MInt offset)
Set the flag for the cells needed for near bndry exchange.
void computeDetailedChemistryVariables()
virtual void copyVarsToSmallCells()
MInt m_spongeTimeVelocity
MBool cellParticipatesInTimeStep(MInt cellId) const noexcept
Does the cell cellId participate in the time-step computation?
MFloat * m_formationEnthalpy
void initDepthCorrection()
const MInt m_azimuthalNearBoundaryBackupMaxCount
void allocateCommunicationMemory()
Allocates and initializes send/receive buffers for multiSolver computations.
MFloat a_surfaceDeltaX(const MInt srfcId, const MInt varId) const
Returns the delta X of surface srfcId for variable varId.
MInt & a_bndryCndId(MInt bndryId)
Return BndryCndId.
MFloat m_static_crankAngle_initialCad
MFloat & a_reactionRateBackup(const MInt cellId, const MInt reactionId)
Returns the reactionRateBackup of the cell cellId for variables varId.
MString m_advectiveFluxScheme
MFloat * m_volumeAcceleration
void checkInfinityVarsConsistency()
Check that all infinity (or other global) variables are equal on all ranks.
MBool m_createSpongeBoundary
MInt & a_level(const MInt cellId)
Returns the level of the cell from the fvcellcollector cellId.
MBool m_allowInterfaceRefinement
MFloat & a_uOtherPhaseOld(const MInt cellId, const MInt dir)
MFloat a_restrictedRHS(const MInt cellId, const MInt varId) const
Returns the restrictedRHS of the cell cellId for variable varId.
std::vector< std::vector< MFloat > > m_cellInterpolationMatrix
void initAzimuthalNearBoundaryExchange(MIntScratchSpace &activeFlag)
MInt * m_globalNoPeriodicExchangeCells
MInt m_structuredFlameOutputLevel
MInt m_pressureRatioStartTimeStep
void exchangeProperties()
exchanges isInactive and isOnCurrentMGLevel
virtual void correctBoundarySurfaces()
MInt a_hasNeighbor(const MInt cellId, const MInt dir, const MBool assertNeighborState=true) const
Returns noNeighborIds of the cell CellId for direction dir.
MString m_bc7909RANSSolverType
void createGridSlice(const MString &direction, const MFloat intercept, const MString &fileName, MInt *const sliceCellIds)
MInt * m_reconstructionDataPeriodic
MFloat & a_bndryCutCoord(MInt bndryId, MInt i, MInt j)
Return cut coordinates of bndry srfc.
MFloat a_surfaceUpwindCoefficient(const MInt srfcId) const
Returns the upwind coefficient of surface srfcId.
void resetCutOffCells()
resets all Cut-Off Information should only be called before the adaptation and balance!
std::vector< MFloat > m_reconstructionConstants
MFloat computeTimeStepMethod(MInt cellId) const noexcept
Computes the time-step of the cell cellId.
void interpolateSurfaceDiffusionFluxOnCellCenter(MFloat *const, MFloat *const)
MBool m_adaptationSinceLastRestart
MBool m_static_constructGFieldPredictor_firstRun
MInt m_static_computeFlowStatistics_currentIndex3
MFloat m_temperatureFlameTube
void findWallNormalCellIds()
virtual void initCellMaterialNo()
MInt m_static_smallCellCorrection_slipDirection
std::vector< MBool > m_averageReconstructNut
void checkCellSurfaces()
checks if the surfaces for a cell are correct and balanced The accumulated cell surfaces in +x direct...
virtual void resetZonalSolverData()
virtual bool rungeKuttaStep()
Dispatches the RungeKutta method for different number of species.
MFloat m_static_logData_ic45301_Strouhal
MString m_viscousFluxScheme
void getDomainDecompositionInformation(std::vector< std::pair< MString, MInt > > &domainInfo) override
Return decomposition information, i.e. number of local elements,...
MBool solutionStep() override
Performs one Runge-Kutta step of the FV solver, returns true if the time step is completed.
static constexpr MInt s_computeFlowStatistics_noPdfPoints
void setAndAllocateSpongeBoundaryProperties()
reads in the sponge properties for specific boundaries
MFloat timeStep(MBool canSolver=false) noexcept
MFloat RKSemiImplicitFactor
std::vector< std::vector< MInt > > m_cellInterpolationIds
MFloat m_turbulenceDegree
MFloat ** m_receiveBuffers
std::vector< MInt > m_azimuthalRemappedNeighborsDomainIndex
void checkForSrfcsMGC_2_()
Check all existing cells if surfaces have to be created member function with the task to check all ex...
MFloat & a_Ma()
Returns the Mach number of the solver.
virtual void updateMultiSolverInformation(MBool fullReset=false)
MBool m_static_computeFlowStatistics_firstBD
MFloat m_weightNearBndryCell
MInt m_constantFlameSpeed
MFloat a_restrictedVar(const MInt cellId, const MInt varId) const
Returns restricted variables of cell cellId for variable varId on level level.
MFloat c_cellVolumeAtLevel(const MInt level) const
Returns the grid Volume of the cell for level.
virtual MBool gridPointIsInside(MInt, MInt)
MInt m_spongeDirectionsIn[s_maxNoSpongeZones]
MInt m_lsCutCellBaseLevel
MBool m_onlyMaxLvlMpiRequests
MBool m_weightCutOffCells
void computeVolumeForces()
void checkAzimuthalRecNghbrConsistency(MInt cellId)
MInt & a_bndryId(const MInt cellId)
Returns the bndryId of the cell cellId.
const MFloat & a_VVInfinity(MInt dir) const
Return mean flow velocity.
MFloat * m_bodyTemperatureDt1
std::vector< MInt > m_splitCells
std::unique_ptr< OneDFlame > m_oneDimFlame
MFloat m_static_applyBoundaryCondition_ERhoL2
std::vector< MInt > m_azimuthalHaloActive
MBool a_isActive(const MInt cellId) const
void rebuildAzimuthalReconstructionConstants(MInt cellId, MInt offset, MFloat *recCoord, MInt mode=0)
constexpr MBool isMultilevelPrimary() const
Return true if solver is primary solver in multilevel computation.
MFloat ** m_stgEddieCoverage
MFloat m_laminarFlameThickness
MInt * m_spongeTimeDependent
void reduceVariables()
Check whether any of the extracted cells lie below the halo cell level and interpolate their variable...
void postTimeStep() override
: Performs the post time step
void receive(const MBool exchangeAll=false)
Receive halo cell data from corresponding neighbors.
MFloat a_uOtherPhase(const MInt cellId, const MInt dir) const
MFloat computeDomainLength(MInt direction)
MFloat m_dampingDistanceFlameBaseExtVel
void computeSamplingTimeStep()
MFloat m_jetCoflowEndOffset
void sensorEntropyGrad(std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) override
void finalizeInitSolver() override
Initializes the solver afer the initialRefinement!
MBool m_preliminarySponge
std::vector< MInt > m_tripCellIds
MFloat a_dt2Variable(const MInt cellId, const MInt varId) const
Returns dt2Variables of the cell CellId variables varId.
MBool m_static_saveSolverSolutionxd_firstRun
MFloat ** m_LESPeriodicAverage
std::array< MInt, Timers::_count > m_timers
MInt m_dragOutputInterval
virtual void initComputeSurfaceValuesLimitedSlopesMan2()
can be used to apply the slope limiter at certain positions such as refinement interfaces,...
virtual void initSTGSponge()
Initializes zonal exchange arrays.
MFloat m_static_logData_ic45301_maxF
std::vector< MFloat > m_wallNormalPointCoords
MInt & a_noReconstructionNeighbors(const MInt cellId)
Returns the noRcnstrctnNghbrIds of the cell cellId.
void dumpCellData(const MString name)
Dump cell data of each rank to a separate file for debugging purposes.
std::vector< MInt > m_azimuthalRemappedNeighborDomains
void tagCellsNeededForSurfaceFlux()
MBool a_isWMImgCell(const MInt cellId) const
Returns isWMImgCell of the cell cellId.
static constexpr MInt s_computeFlowStatistics_noJointPdfs
MFloat ** m_sendBuffersNoBlocking
virtual void computeAzimuthalReconstructionConstants(MInt mode=0)
void setCellWeights(MFloat *) override
MBool m_vtuDomainIdOutput
MFloat * m_tripAirfoilChordPos
void initHeatReleaseDamp()
MFloat & a_pvariable(const MInt cellId, const MInt varId)
Returns primitive variable v of the cell cellId for variables varId.
MFloat computeRecConstSVD(const MInt cellId, const MInt offset, MFloatScratchSpace &tmpA, MFloatScratchSpace &tmpC, MFloatScratchSpace &weights, const MInt recDim, const MInt, const MInt, const std::array< MBool, nDim > dirs={}, const MBool relocateCenter=false)
compute the reconstruction constants of the given cell by a weighted least-squares approach via singu...
MInt m_noCellsInsideSpongeLayer
MInt * m_noMaxLevelHaloCells
MFloat & a_vortOtherPhase(const MInt cellId, const MInt dir)
MFloat c_weight(const MInt cellId) const
Returns the weight of the cell cellId.
void balancePre() override
Reinitialize solver for DLB prior to setting solution data.
MInt a_bndryId(const MInt cellId) const
Returns the bndryId of the cell cellId.
virtual void getSampleVarsDerivatives(const MInt cellId, const MFloat *&vars)
Access derivatives of primitive variables of a given cell.
MFloat a_uOtherPhaseOld(const MInt cellId, const MInt dir) const
MFloat computeTimeStepDiffusionNS(MFloat density, MFloat temperature, MFloat Re, MFloat C, MFloat dx) const noexcept
MBool m_static_applyBoundaryCondition_firstRun
MFloat m_spongeLayerThickness
MBool checkNeighborActive(const MInt cellId, const MInt dir) const
Cecks wether the cell cellId has a valid neighbor in direction dir.
std::vector< MFloat > * m_levelSetValues
void readPreliminarySTGSpongeData()
MFloat & a_FcellVolume(const MInt cellId) override
Returns the inverse cell volume of the cell from the fvcellcollector cellId.
const MInt & getAssociatedInternalCell(const MInt &cellId) const
Returns the Id of the split cell, if cellId is a split child.
void getSampleVariableNames(std::vector< MString > &varNames) override
Return the sample variable names (primitive variables)
virtual void LSReconstructCellCenter_Boundary()
Computes the slopes at the cell centers of only the boundary cells.
MFloat * m_tripAirfoilForceDir
virtual void getBoundaryDistance(MFloatScratchSpace &)
Get distance to boundary, currently bc 3003. Should be replaced by more precise distance using STL in...
This class is a ScratchSpace.
void startLoadTimer(const MString name)
MPI_Comm mpiComm() const
Return the MPI communicator used by this solver.
MInt m_restartInterval
The number of timesteps before writing the next restart file.
void stopLoadTimer(const MString &name)
MFloat m_Ma
the Mach number
MInt maxRefinementLevel() const
MInt neighborList(const MInt cellId, const MInt dir) const
MInt maxNoGridCells() const
constexpr MInt size() const
Return size (i.e., currently used number of nodes)
Class that represents FV cell collector.
Class that represents FV surface collector.
MFloat & area(const MInt id)
Accessor for area.
MFloat & coordinate(const MInt id, const MInt dir)
Accessor for coordinate.
MFloat & upwindCoefficient(const MInt id)
Accessor for upwind coefficient.
MFloat & factor(const MInt id, const MInt varId)
Accessor for factor.
MFloat & flux(const MInt id, const MInt fVarId)
Accessor for flux.
MFloat & deltaX(const MInt id, const MInt varId)
Accessor for deltaX.
MFloat & variable(const MInt id, const MInt dir, const MInt varId)
Accessor for variable.
MInt & nghbrCellId(const MInt id, const MInt dir)
Accessor for nghbrCellId.
MInt & bndryCndId(const MInt id)
Accessor for bndryCndId.
MInt & orientation(const MInt id)
Accessor for orientation.
MFloat & surfaceCoefficient(const MInt id, const MInt dimCoefficient)
Accessor for surfaceCoefficient.
void mTerm(const MInt errorCode, const MString &location, const MString &message)
FvCell
FV cell Property Labels.
constexpr bool isEEGas
Checks if the SysEqn is SysEqnEEGas.
std::basic_string< char > MString
int MPI_Wait(MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Wait
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status, const MString &name)
same as MPI_Test
int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allreduce
std::bitset< p(FvCell::NumProperties)> BitsetType
MUint getBufferSize(const std::vector< std::vector< MInt > > &exchangeCells)
Generic exchange of data.
void exchangeData(const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const, const MInt *const noWindowCells, const MInt **const windowCells, const MPI_Comm comm, const U *const data, U *const haloBuffer, const MInt noDat=1)
Generic exchange of data.
void exchangeBuffer(const MInt noExDomains, const MInt *const exDomainId, const MInt *const recvSize, const MInt *const sendSize, const MPI_Comm comm, U *const receiveBuffer, const U *const sendBuffer, const MInt noDat=1)
Generic exchange of data.
Namespace for auxiliary functions/classes.
static constexpr const MInt RHODIVU
static constexpr const MInt UGRADRHO
static constexpr const MInt LAMB0
static constexpr const MInt DP
static constexpr const MInt DU
static constexpr const MInt GRADU
static constexpr const MInt UGRADU
static constexpr const MInt VORT0
static constexpr const MInt GRADPRHO
static constexpr const MInt DRHO
@ ReconstSrfcUpdateCutOff
@ SurfaceTransportCoefficients