MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
PostProcessing< nDim, ppType > Class Template Reference

#include <postprocessing.h>

Inheritance diagram for PostProcessing< nDim, ppType >:
[legend]
Collaboration diagram for PostProcessing< nDim, ppType >:
[legend]

Classes

struct  MV
 
struct  ST
 

Public Types

using PPGrid = CartesianGrid< nDim >
 
using Cell = typename PPGrid::Cell
 
using GridProxy = typename maia::grid::Proxy< nDim >
 
using Data = PostData< nDim >
 

Public Member Functions

 PostProcessing (MInt postprocessingId_, PostData< nDim > *data)
 
 ~PostProcessing ()
 Destructor for the massive paralle postprocessing solver. More...
 
void initPostProcessing () override
 Reads all required properties in and prepares for postprocessing. More...
 
void postprocessPreSolve () override
 
void postprocessPostSolve () override
 
void postprocessInSolve (MBool finalTimeStep) override
 
void postprocessSolution () override
 
SolvermSolver () const override
 
DatapostData () const
 
- Public Member Functions inherited from PostProcessingInterface
 PostProcessingInterface (const MInt postprocessingId_)
 
virtual ~PostProcessingInterface ()=default
 
 PostProcessingInterface (const PostProcessingInterface &)=delete
 
PostProcessingInterfaceoperator= (const PostProcessingInterface &)=delete
 
virtual void initPostProcessing ()=0
 
virtual void postprocessPreSolve ()=0
 
virtual void postprocessPostSolve ()=0
 
virtual void postprocessInSolve (MBool finalTimeStep)=0
 
virtual void postprocessSolution ()=0
 
virtual SolvermSolver () const =0
 
MInt a_postprocessingId () const
 

Public Attributes

MInt m_noLocalVars {}
 
MInt m_restartTimeStep {}
 
MBool m_statisticCombustionAnalysis {}
 
MBool m_acousticAnalysis {}
 
- Public Attributes inherited from PostProcessingInterface
MBool m_finalTimeStep = false
 

Protected Types

typedef void(PostProcessing::* tpost) ()
 
typedef std::vector< tposttvecpost
 

Protected Member Functions

MBool isActive () const
 
void transferSensorWeights ()
 
void initReduceToLevelAvg ()
 Initializes properties for grid level reduction. More...
 
void initTimeStepProperties ()
 Initializes timestep properties for postprocessing. More...
 
void initTimeStepPropertiesSlice ()
 
void initTimeStepPropertiesLine ()
 
virtual void initAveragingProperties ()
 Initialize properties relevant for temporal averaging. More...
 
void initProbePoint ()
 Initializes properties for point probing. More...
 
void initProbeLine ()
 Initializes properties and memory for line probing. More...
 
void initProbeSlice ()
 Initializes properties and memory for slice probing. More...
 
void initSpatialAveraging ()
 
void initProbeArbitraryLine ()
 initializes properties and data for arbitrary line probing More...
 
void initProbeArbitrarySlice ()
 initializes properties and data for arbitrary slice probing More...
 
void initProbeLinePeriodic ()
 
virtual void probeLinePeriodic ()
 
virtual void probeLinePeriodicPost ()
 
virtual void initSprayData ()
 
virtual void computeSprayData ()
 
virtual void writeSprayData ()
 
virtual void initLPTSolutionFile ()
 
virtual void writeLPTSolutionFile ()
 
virtual void initParticleStatistics ()
 
virtual void computeParticleStatistics ()
 
virtual void initPLIsoTurbulenceStatistics ()
 
virtual void computePLIsoTurbulenceStatistics ()
 
virtual void initAverageVariables ()
 allocates memory for averageSolutions() and averageSolutionsInSolve() More...
 
void pp_saveCoarseSolution ()
 
void averageSolutions ()
 Averages solutions. More...
 
virtual void averageSolutionsInSolve ()
 
template<MBool inSolution = false>
void computeAndSaveDivergence ()
 
void computeAndSaveMean ()
 
void initAverageSolutionsSlice ()
 Initializes properties for slice averaging. More...
 
void averageSolutionsSlice ()
 
void probeLocation ()
 
void findClosestProbePointsGridCells ()
 
virtual void initPointSamplingData ()
 
virtual void savePointSamplingData ()
 
virtual void initSurfaceSamplingData ()
 
virtual void saveSurfaceSamplingData ()
 
virtual void initVolumeSamplingData ()
 
virtual void saveVolumeSamplingData ()
 
virtual void initIsoTurbulenceStatistics ()
 
virtual void computeIsoTurbulenceStatistics ()
 
void initWritePointData ()
 
void writePointData ()
 
void spatialAveraging ()
 
void spatialAveragingPost ()
 
void createCellToMap1D (std::map< MFloat, MInt, coord_comp_1d_ > &coordinates, std::map< MFloat, MFloat, coord_comp_1d_ > &cell_to_map)
 
void createCellToMap2D (std::map< std::pair< MFloat, MFloat >, MInt, coord_comp_2d_ > &coordinates, std::map< std::pair< MFloat, MFloat >, std::pair< MFloat, MFloat >, coord_comp_2d_ > &cell_to_map)
 
void probeLine ()
 
void probeLinePre ()
 
void probeLinePost ()
 
void probeSlice ()
 
void probeSliceIn ()
 
void probeSlicePre ()
 
void probeSlicePost ()
 
void collectMinLvlCells ()
 
void findContainingCell (const MFloat *coord, MInt &cellId)
 
void probeArbitraryLine ()
 
void probeArbitraryLinePost ()
 
void probeArbitrarySlice ()
 
void probeArbitrarySlicePost ()
 
virtual void initMovingAverage ()
 Initializes properties and allocates memory for moving averaging. More...
 
void movingAverage ()
 
void movingAveragePost ()
 
void initCorrelation ()
 
void initPeriodicSliceAverage ()
 Initializes the periodic averaging on a slice. More...
 
void periodicSliceAverage ()
 
MInt findNearestGridCell (const MFloat *coord)
 
void movePointsToGrid (MFloat *in_points, MInt in_noPoints, MInt in_moveType)
 
void getSampleVariables (MInt cellId, const MFloat *&vars, MBool mode)
 
void getSampleVariables (MInt const cellId, std::vector< MFloat > &vars)
 
void calcSamplingVar (const MInt cellId, const MInt sampleVarId, MFloat *const vars)
 
void saveSliceAiaFileFormat (const MInt step, const MInt noVars, MFloatScratchSpace &vars, const MInt sliceId)
 
MFloat calcDivergence (const MInt cellIdSolver)
 
virtual void calcVorticity (const MFloatTensor &deriv, MFloat vorticity[nDim *2 - 3])
 
virtual void getVorticity (MFloat *const vorticity)
 
virtual void getVorticityT (MFloat *const vorticity)
 
virtual void getPrimitiveVariables (MInt, MFloat *, MFloat *, MInt)
 
virtual void computeAcousticSourceTermQe (MFloatScratchSpace &, MFloatScratchSpace &, MFloatScratchSpace &, MFloatScratchSpace &)
 
void getSampleVarsDerivatives (const MInt cellId, const MFloat *&vars)
 
MBool getSampleVarsDerivatives (const MInt, std::vector< MFloat > &)
 
virtual MFloatvorticityAtCell (const MInt cellId, const MInt dir)
 
virtual MFloat getBoundaryHeatFlux (const MInt cellId) const
 
virtual void getPrimitiveVarNames (MString *names) const
 
void neededMeanVarsForSourceTerm (const MInt sourceTerm, std::vector< MInt > &meanVars) const
 
MBool isMeanFile ()
 

Protected Attributes

MInt m_noPostprocessingOps {}
 
MStringm_postprocessingOps = nullptr
 
tvecpost m_postprocessingSolution
 
std::vector< tvecpostm_postprocessingMethods
 
std::vector< std::vector< MString > > m_postprocessingMethodsDesc
 
Datam_postData = nullptr
 
MInt m_noVariables {}
 
MBool m_square = false
 
MBool m_skewness = false
 
MBool m_kurtosis = false
 
MBool m_computeAndSaveMean = false
 
MBool m_twoPass = false
 
MBool m_useKahan {}
 
MBool m_correlation = false
 
std::vector< MInt > * m_cell2globalIndex = nullptr
 
MIntm_noPeriodicSliceCells = nullptr
 
MFloat ** m_sliceAverage = nullptr
 
MInt m_globalnoSlicePositions = 0
 
std::multimap< MFloat, MFloatm_sliceGlobalPositions
 
MBool m_averageVorticity = false
 
MBool m_averageSpeedOfSound = false
 
MFloat m_gamma = -1.0
 
MInt m_movingAverageStartTimestep = 0
 
MInt m_movingAverageStopTimestep = 0
 
MInt m_movingAverageInterval = 1
 
MInt m_movingAverageDataPoints {}
 
MInt m_movingAverageCounter {}
 
MFloat ** m_movAvgVariables = nullptr
 
MInt m_movAvgNoVariables {}
 
MStringm_movAvgVarNames = nullptr
 
MInt m_spatialDirection1 {}
 
MInt m_spatialDirection2 {}
 
MFloat m_spatialWeightSinglePoint {}
 
MFloat m_spatialLvlWeight [20] {}
 
MIntm_spatialDispls = nullptr
 
MIntm_spatialVarsDispls = nullptr
 
MIntm_spatialRecvcnts = nullptr
 
MIntm_spatialVarsRecvcnts = nullptr
 
MInt m_spatialCoordSum {}
 
std::map< MFloat, MInt, coord_comp_1d_m_spatialLineCoordinates
 
std::map< MFloat, MFloat, coord_comp_1d_m_spatialLineCellToMap
 
std::map< MFloat, MInt, coord_comp_1d_m_spatialGlobalLineCoordinates
 
std::map< MFloat, MFloat, coord_comp_1d_m_spatialGlobalLineCellToMap
 
MInt m_spatialLineNoCells = -1
 
MFloatm_spatialLineAllVars = nullptr
 
MFloatm_spatialLineAllCoord = nullptr
 
std::map< std::pair< MFloat, MFloat >, MInt, coord_comp_2d_m_spatialPlaneCoordinates
 
std::map< std::pair< MFloat, MFloat >, std::pair< MFloat, MFloat >, coord_comp_2d_m_spatialPlaneCellToMap
 
std::map< std::pair< MFloat, MFloat >, MInt, coord_comp_2d_m_spatialGlobalPlaneCoordinates
 
std::map< std::pair< MFloat, MFloat >, std::pair< MFloat, MFloat >, coord_comp_2d_m_spatialGlobalPlaneCellToMap
 
MInt m_spatialPlaneNoCells = -1
 
MFloatm_spatialPlaneAllVars = nullptr
 
MFloatm_spatialPlaneAllCoord = nullptr
 
MInt m_noProbeLines = -1
 
MIntm_probeLineDirection = nullptr
 
MIntm_probeLinePeriodic = nullptr
 
MFloat ** m_probeLineCoordinates = nullptr
 
MInt ** m_probeLineIds = nullptr
 
MIntm_noProbeLineIds = nullptr
 
MFloat ** m_probeLinePositions = nullptr
 
MIntm_globalNoProbeLineIds = nullptr
 
MIntm_probeLineOffsets = nullptr
 
MInt ** m_noGlobalProbeLineIds = nullptr
 
MInt m_probeLineInterval = -1
 
MInt m_probeLineStartTimestep = 0
 
MInt m_probeLineStopTimestep = -1
 
MIntm_correlationDirection = nullptr
 
MIntm_correlationVariableIndex = nullptr
 
MFloat ** m_correlationCoordinates = nullptr
 
MInt m_noCorrelationLines = -1
 
MIntm_noCorrelationIds = nullptr
 
MInt ** m_correlationIds = nullptr
 
MInt ** m_globalCorrelationIds = nullptr
 
MFloat ** m_globalCorrelationPositions = nullptr
 
MIntm_globalNoCorrelationIds = nullptr
 
MFloat ** m_correlationPositions = nullptr
 
MInt ** m_correlationIndexMapping = nullptr
 
MFloat ** m_correlationExchangeVar = nullptr
 
MFloat ** m_correlationExchangeVarMean = nullptr
 
MFloat ** m_correlationExchangeVarRMS = nullptr
 
MFloat ** m_globalCorrelationExchangeVar = nullptr
 
MFloat ** m_globalCorrelationExchangeVarMean = nullptr
 
MFloat ** m_globalCorrelationExchangeVarRMS = nullptr
 
MIntm_probeLineAverageDirection = nullptr
 
MFloat ** m_probeLineAverageCoordinates = nullptr
 
MInt ** m_probeLineAverageCoordinatesSign = nullptr
 
MInt ** m_noProbeLineAverageIds = nullptr
 
MFloat *** m_globalProbeLineAverageVars = nullptr
 
MInt m_noProbeLineAverageSteps
 
MInt ** m_globalNoProbeLineAverageIds = nullptr
 
MInt *** m_probeLineAverageIds = nullptr
 
MFloat *** m_probeLineAveragePositions = nullptr
 
MInt m_noProbeSlices = -1
 
MIntm_probeSliceDir = nullptr
 
MFloatm_probeSliceCoordinate = nullptr
 
MInt ** m_probeSliceIds = nullptr
 
MIntm_noProbeSliceIds = nullptr
 
MFloat ** m_probeSlicePositions = nullptr
 
MIntm_globalNoProbeSliceIds = nullptr
 
MIntm_probeSliceOffsets = nullptr
 
MInt ** m_noGlobalProbeSliceIds = nullptr
 
MStringm_probeSliceGridNames = nullptr
 
MStringm_sliceAxis = nullptr
 
MFloatm_sliceIntercept = nullptr
 
MBool m_sliceAiaFileFormat = false
 
MBool m_optimizedSliceIo = true
 
MIntm_noProbeSliceNoHilbertIds = nullptr
 
MIntm_noProbeSliceMaxNoHilbertIds = nullptr
 
MInt ** m_noProbeSliceHilbertInfo = nullptr
 
MIntm_noProbeSliceNoContHilbertIds = nullptr
 
MIntm_noProbeSliceMaxNoContHilbertIds = nullptr
 
MInt ** m_noProbeSliceContHilbertInfo = nullptr
 
MInt m_probeSliceInterval = -1
 
MInt m_probeSliceStartTimestep = 0
 
MInt m_probeSliceStopTimestep = -1
 
std::vector< MIntm_sliceVarIds {}
 List of slice variables. More...
 
std::vector< MIntm_noSliceVars {}
 Number of variables for each slice variable. More...
 
std::vector< std::vector< MString > > m_sliceVarNames {}
 List of variable names for each slice variable. More...
 
MInt m_noMinLvlIds {}
 
MIntm_minLvlIds = nullptr
 
MInt m_movePointsToGrid {}
 
MBool m_spatialAveraging {}
 
MFloatm_arbLinePoints = nullptr
 
MInt m_noArbLines = 0
 
MIntm_noArbLineIds = nullptr
 
MFloatm_arbLinePointsDistribution = nullptr
 
MIntm_arbLineHasNewDistribution = nullptr
 
MIntm_arbLineFull = nullptr
 
MIntm_moveLinePointsToGrid = nullptr
 
MIntm_globalNoArbLineIds = nullptr
 
MInt ** m_arbLineIds = nullptr
 
MIntm_arbLineOffsets = nullptr
 
MFloat ** m_arbLineCoordinates = nullptr
 
MFloatm_arbSlicePoints = nullptr
 
MInt m_noArbSlices {}
 
MIntm_noArbSlicePoints = nullptr
 
MFloatm_arbSlicePointsDistribution = nullptr
 
MIntm_globalNoArbSlicePoints = nullptr
 
MInt ** m_arbSliceIds = nullptr
 
MIntm_arbSliceOffsets = nullptr
 
MFloat ** m_arbSliceCoordinates = nullptr
 
MString m_postprocessFileName = ""
 
MFloat ** m_localVars = nullptr
 
MBool m_averageRestart {}
 
MInt m_averageInterval {}
 
MInt m_averageStartTimestep {}
 
MInt m_averageStopTimestep {}
 
MInt m_noAveragedVorticities {}
 
MInt m_noSpeedOfSoundVars {}
 
MInt m_noSourceVars {}
 
MBool m_needVorticity = false
 
MString m_ReStressesAverageFileName
 
MFloat ** m_probeCoordinates = nullptr
 
MString m_probePath
 
MIntm_probeCellIds = nullptr
 
std::ofstream * m_probeFileStreams = nullptr
 
MInt m_noProbePoints {}
 
MInt m_probeInterval
 
MInt m_probeWriteInterval
 
MString m_pdFileName
 
MInt m_pdStartTimestep {}
 
MInt m_pdStopTimestep {}
 
MInt m_pdRestartInterval {}
 
std::vector< MFloatm_pdPoints
 
std::vector< MIntm_pdCells
 
std::vector< MFloatm_pdVars
 
MInt m_pdNoPoints {}
 
MInt m_sprayComputeInterval = 50
 
MInt m_sprayWriteInterval = 50
 
MInt m_sprayDataSize = 50
 
MInt m_sprayDataStep = 0
 
MFloat ** m_particleCV = nullptr
 
MFloat ** m_particlePen = nullptr
 
MFloat ** m_sprayStat = nullptr
 
MFloat ** m_sprayTimes = nullptr
 
MFloat ** m_injectionData = nullptr
 
MFloat ** m_vapourCV = nullptr
 
MFloat ** m_vapourPen = nullptr
 
MInt m_LPTSolutionInterval = 50
 
MBool m_forceOutput = false
 
std::vector< MIntm_activeSourceTerms {}
 
std::array< MString, ST::totalNoSourceTermss_sourceTermNames
 
std::set< MIntm_activeMeanVars {}
 
- Protected Attributes inherited from PostProcessingInterface
MInt m_postprocessingId
 

Private Attributes

MString m_solverType
 
ppType * pp = static_cast<ppType*>(this)
 CRTP. More...
 
GridProxym_gridProxy
 

Detailed Description

template<MInt nDim, class ppType>
class PostProcessing< nDim, ppType >

Definition at line 85 of file postprocessing.h.

Member Typedef Documentation

◆ Cell

template<MInt nDim, class ppType >
using PostProcessing< nDim, ppType >::Cell = typename PPGrid::Cell

Definition at line 88 of file postprocessing.h.

◆ Data

template<MInt nDim, class ppType >
using PostProcessing< nDim, ppType >::Data = PostData<nDim>

Definition at line 90 of file postprocessing.h.

◆ GridProxy

template<MInt nDim, class ppType >
using PostProcessing< nDim, ppType >::GridProxy = typename maia::grid::Proxy<nDim>

Definition at line 89 of file postprocessing.h.

◆ PPGrid

template<MInt nDim, class ppType >
using PostProcessing< nDim, ppType >::PPGrid = CartesianGrid<nDim>

Definition at line 87 of file postprocessing.h.

◆ tpost

template<MInt nDim, class ppType >
typedef void(PostProcessing::* PostProcessing< nDim, ppType >::tpost) ()
protected

Definition at line 280 of file postprocessing.h.

◆ tvecpost

template<MInt nDim, class ppType >
typedef std::vector<tpost> PostProcessing< nDim, ppType >::tvecpost
protected

Definition at line 281 of file postprocessing.h.

Constructor & Destructor Documentation

◆ PostProcessing()

template<MInt nDim, class ppType >
PostProcessing< nDim, ppType >::PostProcessing ( MInt  postprocessingId_,
PostData< nDim > *  data 
)
inline

Definition at line 93 of file postprocessing.h.

93 : PostProcessingInterface(postprocessingId_) {
94 m_postData = data;
95 }
Data * m_postData

◆ ~PostProcessing()

template<MInt nDim, class ppType >
PostProcessing< nDim, ppType >::~PostProcessing
Author
Andreas Lintermann
Date
26.08.2012
Template Parameters

in] T celltype

Definition at line 64 of file postprocessing.cpp.

64 {
65 TRACE();
66
68 for(MInt op = 0; op < m_noPostprocessingOps; op++) {
69 switch(string2enum(m_postprocessingOps[op])) {
72 case PP_PROBE_POINT_IN: {
73 for(MInt np = 0; np < m_noProbePoints; np++)
74 m_probeFileStreams[np].close();
75
76 delete[] m_probeFileStreams;
77 break;
78 }
79 case PP_AVERAGE_PRE:
80 case PP_AVERAGE_IN:
81 case PP_AVERAGE_POST: {
82 // mDeallocate(m_summedVars);
83 // mDeallocate(m_square);
84 if(m_useKahan) {
85 // mDeallocate(m_cSum);
86 // mDeallocate(m_ySum);
87 // mDeallocate(m_tSum);
88
89 // mDeallocate(m_cSquare);
90 // mDeallocate(m_ySquare);
91 // mDeallocate(m_tSquare);
92
93 if(m_kurtosis) {
94 // mDeallocate(m_cCube);
95 // mDeallocate(m_yCube);
96 // mDeallocate(m_tCube);
97
98 // mDeallocate(m_cFourth);
99 // mDeallocate(m_yFourth);
100 // mDeallocate(m_tFourth);
101 } else if(m_skewness) {
102 // mDeallocate(m_cCube);
103 // mDeallocate(m_yCube);
104 // mDeallocate(m_tCube);
105 }
106 }
107 if(m_kurtosis) {
108 // mDeallocate(m_cube);
109 // mDeallocate(m_fourth);
110 } else if(m_skewness) {
111 // mDeallocate(m_cube);
112 }
113 break;
114 }
118 break;
119 }
123 break;
124 }
127 case PP_PROBE_LINE_IN: {
128 break;
129 }
133 break;
134 }
137 case PP_PROBE_SLICE_IN: {
138 break;
139 }
143 break;
144 }
145 case PP_WRITEPOINTS_IN: {
146 break;
147 }
150 break;
151 }
153 break;
154 }
155 case PP_SPRAY_STATS:
158 break;
159 }
162 break;
163 }
164 default: {
165 mTerm(1, AT_, "Unknown postprocessing operation");
166 }
167 }
168 }
169 delete[] m_postprocessingOps;
170 //}
171}
std::ofstream * m_probeFileStreams
MBool m_skewness
MInt m_noProbePoints
MBool m_kurtosis
MBool m_useKahan
MString * m_postprocessingOps
MInt m_noPostprocessingOps
MInt string2enum(MString theString)
This global function translates strings in their corresponding enum values (integer values)....
Definition: enums.cpp:20
@ PP_PROBE_SLICE_POST
Definition: enums.h:151
@ PP_AVERAGE_IN
Definition: enums.h:129
@ PP_PROBE_ARB_LINE_IN
Definition: enums.h:149
@ PP_PROBE_POINT_PRE
Definition: enums.h:139
@ PP_AVERAGE_POST
Definition: enums.h:128
@ PP_SPATIAL_AVERAGE_POST
Definition: enums.h:134
@ PP_PROBE_ARB_LINE_POST
Definition: enums.h:148
@ PP_PROBE_SLICE_PRE
Definition: enums.h:150
@ PP_PROBE_ARB_LINE_PRE
Definition: enums.h:147
@ PP_PROBE_LINE_IN
Definition: enums.h:144
@ PP_PL_ISO_TURBULENCE_STATISTICS
Definition: enums.h:173
@ PP_PROBE_ARB_SLICE_IN
Definition: enums.h:155
@ PP_MOVING_AVERAGE_PRE
Definition: enums.h:136
@ PP_AVERAGE_SLICE_PRE
Definition: enums.h:157
@ PP_PROBE_LINE_POST
Definition: enums.h:143
@ PP_PROBE_POINT_IN
Definition: enums.h:141
@ PP_AVERAGE_PRE
Definition: enums.h:127
@ PP_ISO_TURBULENCE_STATISTICS
Definition: enums.h:172
@ PP_PARTICLE_STATISTICS
Definition: enums.h:171
@ PP_PROBE_ARB_SLICE_POST
Definition: enums.h:154
@ PP_PROBE_ARB_SLICE_PRE
Definition: enums.h:153
@ PP_MOVING_AVERAGE_POST
Definition: enums.h:137
@ PP_REDUCE_TO_LEVEL_PRE
Definition: enums.h:124
@ PP_PROBE_SLICE_IN
Definition: enums.h:152
@ PP_SPATIAL_AVERAGE_PRE
Definition: enums.h:133
@ PP_WRITEPOINTS_IN
Definition: enums.h:156
@ PP_PROBE_LINE_PRE
Definition: enums.h:142
@ PP_PARTICLE_SOLUTION
Definition: enums.h:167
@ PP_SPRAY_STATS
Definition: enums.h:166
@ PP_SPATIAL_AVERAGE_IN
Definition: enums.h:135
@ PP_PROBE_POINT_POST
Definition: enums.h:140
@ PP_MOVING_AVERAGE_IN
Definition: enums.h:138
@ PP_REDUCE_TO_LEVEL_POST
Definition: enums.h:125
void mTerm(const MInt errorCode, const MString &location, const MString &message)
Definition: functions.cpp:29
int32_t MInt
Definition: maiatypes.h:62

Member Function Documentation

◆ averageSolutions()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::averageSolutions
protected
Author
A. Niemoeller
Date
09.12.2013

loads variables for all averaging timesteps and performs averaging (mean values and reynolds stress components)
additionally computation of skewness and kurtosis of the velocity components is performed if activated (see properties "skewness"/"kurtosis")
summation of variables can be done alternatively using kahan summation or two pass in contrast to normal summation (see properties "useKahan"/"twoPass")
solution output filename will be "Mean_[averageStartTimestep]-[averageStopTimestep]"

Definition at line 3481 of file postprocessing.cpp.

3481 {
3482 TRACE();
3483
3484 if(!pp->solver().grid().isActive()) return;
3485
3486 // Find out how many solutions are required and how the weighting will be
3487 const MFloat weight = 1.0 / (((m_averageStopTimestep - m_averageStartTimestep) / m_averageInterval) + 1);
3488
3489 const MInt noCells = postData().grid().noInternalCells();
3490
3491 const MFloat* cellVars = nullptr;
3492 MFloat* heatRelease = nullptr;
3493
3494 if(m_twoPass) { // two pass activated, compute mean values first
3495 TERMM(1, "FIXME two-pass averaging is untested and probably broken");
3497 m_log << " ^ * Mean computation timestep " << t << " with weight " << weight << "\n";
3498
3499 pp->solver().loadSampleVariables(t); // load variables for timestep t
3500
3501 if(m_statisticCombustionAnalysis) pp->solver().getHeatRelease(heatRelease);
3502
3503 for(MInt dataId = 0; dataId < noCells; dataId++) {
3504 MInt cellId = convertIdParent(postData(), pp->solver(), dataId);
3505 if(cellId != -1) {
3506 getSampleVariables(cellId, cellVars, true);
3507
3508 if(cellVars == nullptr) {
3509 return;
3510 }
3511
3512 for(MInt varId = 0; varId < m_noVariables; varId++) { // sum up all variables
3513 // m_summedVars[cellId][varId] += cellVars[varId];
3514 postData().a_variable(dataId, varId) += cellVars[varId];
3515 }
3516 }
3517 }
3518 }
3519 // weighting of summed primitive variables
3520 for(MInt dataId = 0; dataId < noCells; dataId++) {
3521 MInt cellId = convertIdParent(postData(), pp->solver(), dataId);
3522 if(cellId != -1) {
3523 for(MInt varId = 0; varId < m_noVariables; varId++) {
3524 // m_summedVars[cellId][varId] *= weight;
3525 postData().a_variable(dataId, varId) *= weight;
3526 }
3527 }
3528 }
3529 } // end of mean calculation for twoPass
3530
3531 // Start averaging, timestep loop
3532 // PP_ToDo-Average:is this correct
3533 // MInt restartT = m_restartTimeStep;
3534 // if(m_averageRestart) {
3535 // restartT += m_averageInterval;
3536 // } else {
3537 MInt restartT = m_averageStartTimestep;
3538 // }
3539 // TODO labels:PP move to separate method e.g. addAveragingSample() (see fv-structured PP)
3540 for(MInt t = restartT; t <= m_averageStopTimestep; t += m_averageInterval) {
3541 m_log << " ^ * Averaging timestep " << t << " with weight " << weight << "\n";
3542 pp->solver().loadSampleVariables(t); // load variables for timestep t
3543
3544 if(m_statisticCombustionAnalysis) pp->solver().getHeatRelease(heatRelease);
3545
3546 for(MInt dataId = 0; dataId < noCells; dataId++) { // cell loop
3547 const MInt cellId = convertIdParent(postData(), pp->solver(), dataId);
3548 if(cellId != -1) {
3549 getSampleVariables(cellId, cellVars, true);
3550
3551 if(cellVars == nullptr) {
3552 return;
3553 }
3554
3555 if(m_twoPass) // two pass, second part
3556 {
3557 for(MInt varId = 0; varId < nDim; varId++) {
3558 // m_summedVars[cellId][varId + m_noVariables] +=
3559 // (cellVars[varId] - m_summedVars[cellId][varId]) * (cellVars[varId] - m_summedVars[cellId][varId]);
3560 // postData().a_variable(dataId, varId) +=
3561 // (cellVars[varId] - postData().a_variable(dataId, varId)) * (cellVars[varId] -
3562 // m_summedVars[cellId][varId]);
3563 }
3564 for(MInt varId = 0; varId < 2 * nDim - 3; varId++) {
3565 // m_summedVars[cellId][m_noVariables + nDim + varId] +=
3566 // (cellVars[varId % nDim] - m_summedVars[cellId][varId])
3567 // * (cellVars[(varId + 1) % nDim] - m_summedVars[cellId][(varId + 1) % nDim]);
3568 // postData().a_variable(dataId, m_noVariables + nDim + varId) +=
3569 // (cellVars[varId % nDim] - postData().a_variable(dataId, varId))
3570 // * (cellVars[(varId + 1) % nDim] - m_summedVars[cellId][(varId + 1) % nDim]);
3571 }
3572 if(m_kurtosis) {
3573 for(MInt varId = 0; varId < nDim; varId++) {
3574 // m_summedVars[cellId][m_noVariables + 3 * (nDim - 1) + varId] +=
3575 // pow(cellVars[varId] - m_summedVars[cellId][varId], 3);
3576 // m_summedVars[cellId][m_noVariables + 3 * (nDim - 1) + nDim + varId] +=
3577 // pow(cellVars[varId] - m_summedVars[cellId][varId], 4);
3578 // postData().a_variable(dataId, m_noVariables + 3 * (nDim - 1) + varId) +=
3579 // pow(cellVars[varId] - postData().a_variable(dataId,varId), 3);
3580 // postData().a_variable(dataId, m_noVariables + 3 * (nDim - 1) + nDim + varId) +=
3581 // pow(cellVars[varId] - postData().a_variable(dataId, varId), 4);
3582 }
3583 } else if(m_skewness) {
3584 for(MInt varId = 0; varId < nDim; varId++) {
3585 // m_summedVars[cellId][m_noVariables + 3 * (nDim - 1) + varId] +=
3586 // pow(cellVars[varId] - m_summedVars[cellId][varId], 3);
3587 // postData().a_variable(dataId, m_noVariables + 3 * (nDim - 1) + varId) +=
3588 // pow(cellVars[varId] - postData().a_variable(dataId, varId), 3);
3589 }
3590 }
3591 } // two pass end
3592 else if(m_useKahan) // Kahan summation activated, reduced error in summation of variables
3593 {
3594 if(dataId == 0) m_log << "start kahan summation" << endl;
3595 /* Kahan summation pseudocode
3596
3597 sum=0; c=0;
3598 for i=0 to input.length
3599 y = input[i] -c;
3600 t = sum + y;
3601 c = (t-sum) - y;
3602 sum = t;
3603
3604 */
3605 for(MInt varId = 0; varId < m_noVariables; varId++) { // sum up all variables
3606 // m_ySum[cellId][varId] = cellVars[varId] - m_cSum[cellId][varId];
3607 // m_tSum[cellId][varId] = m_summedVars[cellId][varId] + m_ySum[cellId][varId];
3608 // m_cSum[cellId][varId] = (m_tSum[cellId][varId] - m_summedVars[cellId][varId]) - m_ySum[cellId][varId];
3609 // m_summedVars[cellId][varId] = m_tSum[cellId][varId];
3610 }
3611 for(MInt varId = 0; varId < nDim; varId++) { // squares of velocity components (u*u,v*v(,w*w))
3612 // m_ySquare[cellId][varId] = (cellVars[varId] * cellVars[varId]) - m_cSquare[cellId][varId];
3613 // m_tSquare[cellId][varId] = m_square[cellId][varId] + m_ySquare[cellId][varId];
3614 // m_cSquare[cellId][varId] = (m_tSquare[cellId][varId] - m_square[cellId][varId]) -
3615 // m_ySquare[cellId][varId]; m_square[cellId][varId] = m_tSquare[cellId][varId];
3616 }
3617 for(MInt varId = 0; varId < 2 * nDim - 3;
3618 varId++) { // products of different velocity components (u*v(,v*w,w*u))
3619 // m_ySquare[cellId][nDim + varId] =
3620 //(cellVars[varId]) * (cellVars[(varId + 1) % nDim]) - m_cSquare[cellId][nDim + varId];
3621 // m_tSquare[cellId][nDim + varId] = m_square[cellId][nDim + varId] + m_ySquare[cellId][nDim + varId];
3622 // m_cSquare[cellId][nDim + varId] =
3623 //(m_tSquare[cellId][nDim + varId] - m_square[cellId][nDim + varId]) - m_ySquare[cellId][nDim + varId];
3624 // m_square[cellId][nDim + varId] = m_tSquare[cellId][nDim + varId];
3625 }
3626 if(m_kurtosis) { // compute third and fourth power of velocity components for skewness and kurtosis
3627 for(MInt varId = 0; varId < nDim; varId++) {
3628 // m_yCube[cellId][varId] = pow(cellVars[varId], 3) - m_cCube[cellId][varId];
3629 // m_tCube[cellId][varId] = m_cube[cellId][varId] + m_yCube[cellId][varId];
3630 // m_cCube[cellId][varId] = (m_tCube[cellId][varId] - m_cube[cellId][varId]) - m_yCube[cellId][varId];
3631 // m_cube[cellId][varId] = m_tCube[cellId][varId];
3632
3633 // m_yFourth[cellId][varId] = pow(cellVars[varId], 4) - m_cFourth[cellId][varId];
3634 // m_tFourth[cellId][varId] = m_fourth[cellId][varId] + m_yFourth[cellId][varId];
3635 // m_cFourth[cellId][varId] = (m_tFourth[cellId][varId] - m_fourth[cellId][varId]) -
3636 // m_yFourth[cellId][varId]; m_fourth[cellId][varId] = m_tFourth[cellId][varId];
3637 }
3638 } else if(m_skewness) { // compute only third power of velocity components for skewness
3639 for(MInt varId = 0; varId < nDim; varId++) {
3640 // m_yCube[cellId][varId] = pow(cellVars[varId], 3) - m_cCube[cellId][varId];
3641 // m_tCube[cellId][varId] = m_cube[cellId][varId] + m_yCube[cellId][varId];
3642 // m_cCube[cellId][varId] = (m_tCube[cellId][varId] - m_cube[cellId][varId]) - m_yCube[cellId][varId];
3643 // m_cube[cellId][varId] = m_tCube[cellId][varId];
3644 }
3645 }
3646 } // kahan summation end
3647 else // normal summation
3648 {
3649 // Primitive variables
3650 MInt varIndex = postData().getPropertyVariableOffset("primitive").first;
3651 for(MInt varId = 0; varId < m_noVariables; varId++) {
3652 postData().a_variable(dataId, varIndex + varId) += cellVars[varId];
3653 }
3654
3655 if(m_square) {
3656 MInt varSquare = postData().getPropertyVariableOffset("square").first;
3657 for(MInt varId = 0; varId < nDim; varId++) {
3658 // squares of velocity components (u*u,v*v(,w*w))
3659 postData().a_variable(dataId, varSquare + varId) += cellVars[varId] * cellVars[varId];
3660 }
3661 for(MInt varId = 0; varId < 2 * nDim - 3; varId++) {
3662 // products of different velocity components (u*v(,v*w,w*u))
3663 postData().a_variable(dataId, varSquare + nDim + varId) +=
3664 (cellVars[varId % nDim]) * (cellVars[(varId + 1) % nDim]);
3665 }
3666 // squares of pressure p*p
3667 postData().a_variable(dataId, varSquare + 3 * nDim - 3) += cellVars[nDim + 1] * cellVars[nDim + 1];
3668 }
3669
3670 // third and fourth powers of velocity components (skewness and kurtosis)
3671 if(m_kurtosis) {
3672 ASSERT(m_square, "");
3673 ASSERT(m_skewness, "");
3674 MInt varSkew = postData().getPropertyVariableOffset("skewness").first;
3675 MInt varKurt = postData().getPropertyVariableOffset("kurtosis").first;
3676 for(MInt varId = 0; varId < nDim; varId++) {
3677 postData().a_variable(dataId, varSkew + varId) += pow(cellVars[varId], 3);
3678 postData().a_variable(dataId, varKurt + varId) += pow(cellVars[varId], 4);
3679 }
3680 // third powers of velocity components (skewness)
3681 } else if(m_skewness) {
3682 ASSERT(m_square, "");
3683 MInt varSkew = postData().getPropertyVariableOffset("skewness").first;
3684 for(MInt varId = 0; varId < nDim; varId++) {
3685 postData().a_variable(dataId, varSkew + varId) += pow(cellVars[varId], 3);
3686 }
3687 }
3688
3689 // hm,c',h'
3691 MInt varComb = postData().getPropertyVariableOffset("statisticCombustionAnalysis").first;
3692 postData().a_variable(dataId, varComb) += heatRelease[cellId];
3693 postData().a_variable(dataId, varComb + 1) += cellVars[nDim + 2] * cellVars[nDim + 2];
3694 postData().a_variable(dataId, varComb + 2) += heatRelease[cellId] * heatRelease[cellId];
3695 }
3696
3697 // Vorticities
3698 if(m_averageVorticity) {
3699 MInt varVort = postData().getPropertyVariableOffset("averageVorticity").first;
3700 for(MInt varId = 0; varId < m_noAveragedVorticities; varId++) {
3701 postData().a_variable(dataId, varVort + varId) += pp->vorticityAtCell(cellId, varId);
3702 }
3703 }
3704 }
3705 }
3706 } // normal summation end
3707 } // cell loop end
3708
3709 if(m_twoPass) {
3710 TERMM(1, "FIXME");
3711 // weighting for twoPass
3712 for(MInt dataId = 0; dataId < noCells; dataId++) {
3713 MInt cellId = convertIdParent(postData(), pp->solver(), dataId);
3714 if(cellId != -1) {
3715 for(MInt varId = 0; varId < 3 * nDim - 3 + nDim * (m_skewness + m_kurtosis); varId++) {
3716 // m_summedVars[cellId][m_noVariables + varId] *= weight;
3717 }
3718 }
3719 }
3720 } else {
3721 m_computeAndSaveMean = true;
3723 }
3724
3725 m_log << " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n" << endl;
3726}
MFloat & a_variable(const MInt cellId, const MInt varId)
Returns conservative variable v of the cell cellId for variables varId.
Definition: postdata.h:168
std::pair< MInt, MInt > getPropertyVariableOffset(MString s)
Definition: postdata.h:207
MBool m_computeAndSaveMean
MBool m_square
MInt m_averageStopTimestep
MInt m_noVariables
MBool m_statisticCombustionAnalysis
MBool m_averageVorticity
Data & postData() const
MInt m_averageStartTimestep
void computeAndSaveMean()
MInt m_averageInterval
MBool m_twoPass
MInt m_noAveragedVorticities
void getSampleVariables(MInt cellId, const MFloat *&vars, MBool mode)
ppType * pp
CRTP.
constexpr GridProxy & grid() const
MInt convertIdParent(SolverA &solverA, SolverB &solverB, const MInt solverAId)
Conversion from solverA id to the solverB id If no cell on the same level is found,...
Definition: couplingutils.h:46
InfoOutFile m_log
double MFloat
Definition: maiatypes.h:52
void const MInt cellId
Definition: collector.h:239

◆ averageSolutionsInSolve()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::averageSolutionsInSolve ( )
protectedvirtual

◆ averageSolutionsSlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::averageSolutionsSlice ( )
protected

◆ calcDivergence()

template<MInt nDim, class ppType >
MFloat PostProcessing< nDim, ppType >::calcDivergence ( const MInt  cellIdSolver)
inlineprotected

Definition at line 214 of file postprocessing.h.

214 {
215 const MInt noVariables = pp->solver().noVariables();
216 std::vector<MFloat> cellVarsDeriv(noVariables * nDim);
217 MFloat divergence = 0.0;
218 if(pp->getSampleVarsDerivatives(cellIdSolver, cellVarsDeriv)) {
219 const MFloatTensor deriv(cellVarsDeriv.data(), noVariables, nDim);
220 for(MInt d = 0; d < nDim; d++) {
221 divergence += deriv(d, d);
222 }
223 }
224 return divergence;
225 }

◆ calcSamplingVar()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::calcSamplingVar ( const MInt  cellId,
const MInt  sampleVarId,
MFloat *const  vars 
)
protected

◆ calcVorticity()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::calcVorticity ( const MFloatTensor deriv,
MFloat  vorticity[nDim *2 - 3] 
)
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 227 of file postprocessing.h.

227 {
228 if constexpr(nDim == 2) {
229 vorticity[0] = deriv(1, 0) - deriv(0, 1);
230 } else { //(nDim ==3)
231 vorticity[0] = deriv(2, 1) - deriv(1, 2);
232 vorticity[1] = deriv(0, 2) - deriv(2, 0);
233 vorticity[2] = deriv(1, 0) - deriv(0, 1);
234 }
235 }

◆ collectMinLvlCells()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::collectMinLvlCells ( )
protected

◆ computeAcousticSourceTermQe()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::computeAcousticSourceTermQe ( MFloatScratchSpace ,
MFloatScratchSpace ,
MFloatScratchSpace ,
MFloatScratchSpace  
)
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 248 of file postprocessing.h.

248 {
249 TERMM(1, "Not implemented for this solverType");
250 }

◆ computeAndSaveDivergence()

template<MInt nDim, class ppType >
template<MBool inSolution = false>
void PostProcessing< nDim, ppType >::computeAndSaveDivergence ( )
protected

◆ computeAndSaveMean()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::computeAndSaveMean ( )
protected

◆ computeIsoTurbulenceStatistics()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::computeIsoTurbulenceStatistics ( )
inlineprotectedvirtual

Reimplemented in PostProcessingLb< nDim >.

Definition at line 168 of file postprocessing.h.

168{ TERMM(1, "Not implemented for this solverType"); };

◆ computeParticleStatistics()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::computeParticleStatistics ( )
inlineprotectedvirtual

Reimplemented in PostProcessingLbLPT< nDim >, and PostProcessingLPT< nDim >.

Definition at line 140 of file postprocessing.h.

140{ TERMM(1, "Not implemented for this solverType"); };

◆ computePLIsoTurbulenceStatistics()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::computePLIsoTurbulenceStatistics ( )
inlineprotectedvirtual

Reimplemented in PostProcessingLbLPT< nDim >.

Definition at line 144 of file postprocessing.h.

144{ TERMM(1, "Not implemented for this solverType"); };

◆ computeSprayData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::computeSprayData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFvLPT< nDim, SysEqn >.

Definition at line 133 of file postprocessing.h.

133{ TERMM(1, "Not implemented for this solverType"); };

◆ createCellToMap1D()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::createCellToMap1D ( std::map< MFloat, MInt, coord_comp_1d_ > &  coordinates,
std::map< MFloat, MFloat, coord_comp_1d_ > &  cell_to_map 
)
protected

◆ createCellToMap2D()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::createCellToMap2D ( std::map< std::pair< MFloat, MFloat >, MInt, coord_comp_2d_ > &  coordinates,
std::map< std::pair< MFloat, MFloat >, std::pair< MFloat, MFloat >, coord_comp_2d_ > &  cell_to_map 
)
protected

◆ findClosestProbePointsGridCells()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::findClosestProbePointsGridCells ( )
protected

◆ findContainingCell()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::findContainingCell ( const MFloat coord,
MInt cellId 
)
protected

◆ findNearestGridCell()

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::findNearestGridCell ( const MFloat coord)
protected

◆ getBoundaryHeatFlux()

template<MInt nDim, class ppType >
virtual MFloat PostProcessing< nDim, ppType >::getBoundaryHeatFlux ( const MInt  cellId) const
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 266 of file postprocessing.h.

266 {
267 std::ignore = cellId;
268 TERMM(1, "Not implemented for this solver");
269 };

◆ getPrimitiveVariables()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::getPrimitiveVariables ( MInt  ,
MFloat ,
MFloat ,
MInt   
)
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 245 of file postprocessing.h.

245{ TERMM(1, "Not implemented for this solverType"); };

◆ getPrimitiveVarNames()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::getPrimitiveVarNames ( MString names) const
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 270 of file postprocessing.h.

270 {
271 std::ignore = names;
272 TERMM(1, "Not implemented for this solverType");
273 };

◆ getSampleVariables() [1/2]

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::getSampleVariables ( MInt  cellId,
const MFloat *&  vars,
MBool  mode 
)
protected

◆ getSampleVariables() [2/2]

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::getSampleVariables ( MInt const  cellId,
std::vector< MFloat > &  vars 
)
protected

◆ getSampleVarsDerivatives() [1/2]

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::getSampleVarsDerivatives ( const MInt  cellId,
const MFloat *&  vars 
)
inlineprotected

Definition at line 252 of file postprocessing.h.

252 {
253 std::ignore = cellId;
254 vars = nullptr;
255 // TERMM(1, "Not implemented for this solverType");
256 };

◆ getSampleVarsDerivatives() [2/2]

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::getSampleVarsDerivatives ( const  MInt,
std::vector< MFloat > &   
)
inlineprotected

Definition at line 257 of file postprocessing.h.

257 {
258 return false; // = not implemented for this solver
259 // TERMM(1, "Not implemented for this solverType");
260 };

◆ getVorticity()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::getVorticity ( MFloat *const  vorticity)
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 237 of file postprocessing.h.

237 {
238 std::ignore = vorticity;
239 TERMM(1, "Not implemented for this solverType");
240 };

◆ getVorticityT()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::getVorticityT ( MFloat *const  vorticity)
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 241 of file postprocessing.h.

241 {
242 std::ignore = vorticity;
243 TERMM(1, "Not implemented for this solverType");
244 };

◆ initAverageSolutionsSlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initAverageSolutionsSlice
protected
Author
D. Zilles
Date
07.09.2017

loads sliceAxes and sliceIntercepts.

Definition at line 2462 of file postprocessing.cpp.

2462 {
2463 TRACE();
2464
2466
2467 mAlloc(m_sliceAxis, m_noProbeSlices, "m_sliceAxis", AT_);
2468 mAlloc(m_sliceIntercept, m_noProbeSlices, "m_sliceIntercept", AT_);
2469
2470 for(MInt sliceId = 0; sliceId < m_noProbeSlices; sliceId++) {
2471 m_sliceAxis[sliceId] = Context::getSolverProperty<MString>("sliceAxis", m_postprocessingId, AT_, sliceId);
2472 }
2473 for(MInt sliceId = 0; sliceId < m_noProbeSlices; sliceId++) {
2474 m_sliceIntercept[sliceId] = Context::getSolverProperty<MFloat>("sliceIntercept", m_postprocessingId, AT_, sliceId);
2475 }
2476}
void mAlloc(T *&a, const MLong N, const MString &objectName, MString function)
allocates memory for one-dimensional array 'a' of size N
Definition: alloc.h:173
static MInt propertyLength(const MString &name, MInt solverId=m_noSolvers)
Returns the number of elements of a property.
Definition: context.cpp:538
MString * m_sliceAxis
MFloat * m_sliceIntercept
MInt m_noProbeSlices
MInt m_postprocessingId

◆ initAverageVariables()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initAverageVariables
protectedvirtual
Author
A. Niemoeller
Date
09.12.2013

Definition at line 1013 of file postprocessing.cpp.

1013 {
1014 // TODO:move to postData!
1015
1016#if not defined(MAIA_DISABLE_LB)
1017 constexpr MBool isothermal = (std::is_same<ppType, PostProcessingLb<nDim>>::value);
1019#else
1020 constexpr MBool isothermal = false;
1021#endif
1022
1023 // Allocate memory for summed variables
1024 m_noAveragedVorticities = (m_averageVorticity) * (nDim * 2 - 3);
1027
1028 const MInt noSummedVars =
1029 m_noVariables // primitive variables
1030 + (3 * (nDim - 1) + 1) * m_square // Reynolds stresses + pressure amplitude
1031 + nDim * m_skewness // sknewness
1032 + nDim * m_kurtosis // kurtosis
1033 + static_cast<MInt>(m_statisticCombustionAnalysis) * 3 // combustion variables (hm,c',h': cm in m_noVariables)
1034 + m_noAveragedVorticities // vorticities
1035 + m_noSpeedOfSoundVars // speed of sound and derivatives
1036 + m_noSourceVars // APE source terms
1038
1039 if(noSummedVars > postData().noVariables()) {
1040 std::stringstream ss;
1041 ss << "PostData: noVariables in postprocessing not correct: postData().noVariables(): " << postData().noVariables()
1042 << " m_varNames.size(): " << noSummedVars << std::endl;
1043 TERMM(1, ss.str());
1044 }
1045
1046 MInt count = 0;
1047 postData().setPropertyVariableOffset("primitive", count, m_noVariables);
1048 count += m_noVariables;
1049
1050 if(m_square) {
1051 const MInt offset = 3 * (nDim - 1) + 1;
1052 postData().setPropertyVariableOffset("square", count, offset);
1053 count += offset;
1054 }
1055
1056 if(m_kurtosis) {
1057 postData().setPropertyVariableOffset("skewness", count, nDim);
1058 count += nDim;
1059 postData().setPropertyVariableOffset("kurtosis", count, nDim);
1060 count += nDim;
1061 ASSERT(m_skewness, "required as well");
1062 } else if(m_skewness) {
1063 postData().setPropertyVariableOffset("skewness", count, nDim);
1064 count += nDim;
1065 }
1066
1068 postData().setPropertyVariableOffset("statisticCombustionAnalysis", count, 3);
1069 count += 3;
1070 }
1071
1072 if(m_averageVorticity) {
1073 postData().setPropertyVariableOffset("averageVorticity", count, m_noAveragedVorticities);
1074 count += m_noAveragedVorticities;
1075 }
1076
1078 postData().setPropertyVariableOffset("averageSpeedOfSound", count, m_noSpeedOfSoundVars);
1079 count += m_noSpeedOfSoundVars;
1080 }
1081
1082 if(m_noSourceVars > 0) {
1083 postData().m_sourceVarsIndex = count;
1084 if(m_activeMeanVars.find(MV::LAMB0) != m_activeMeanVars.end()) {
1085 postData().setPropertyVariableOffset("lamb0", count, nDim);
1086 count += nDim;
1087 }
1088
1089 if(m_activeMeanVars.find(MV::GRADU) != m_activeMeanVars.end()) {
1090 postData().setPropertyVariableOffset("gradu", count, nDim * nDim);
1091 count += nDim * nDim;
1092 } else if(m_activeMeanVars.find(MV::DU) != m_activeMeanVars.end()) {
1093 postData().setPropertyVariableOffset("du", count, nDim);
1094 count += nDim;
1095 }
1096
1097 if(m_activeMeanVars.find(MV::UGRADU) != m_activeMeanVars.end()) {
1098 postData().setPropertyVariableOffset("ugradu", count, nDim);
1099 count += nDim;
1100 }
1101
1102 if(m_activeMeanVars.find(MV::DRHO) != m_activeMeanVars.end()) {
1103 postData().setPropertyVariableOffset("drho", count, nDim);
1104 count += nDim;
1105 }
1106
1107 if(m_activeMeanVars.find(MV::DP) != m_activeMeanVars.end()) {
1108 postData().setPropertyVariableOffset("dp", count, nDim);
1109 count += nDim;
1110 }
1111
1112 if(m_activeMeanVars.find(MV::RHODIVU) != m_activeMeanVars.end()) {
1113 postData().setPropertyVariableOffset("rhodivu", count, nDim);
1114 count += nDim;
1115 }
1116
1118 postData().setPropertyVariableOffset("ugradrho", count, nDim);
1119 count += nDim;
1120 }
1121
1123 postData().setPropertyVariableOffset("gradprho", count, nDim);
1124 count += nDim;
1125 }
1126 }
1127
1128 if(m_correlation) {
1130 count += m_noCorrelationLines;
1131 }
1132
1134
1135 if(count > postData().noVariables()) {
1136 cerr << "Missmatching post data " << count << " " << postData().noVariables() << endl;
1137 mTerm(1, AT_, "Variables size not matching!");
1138 }
1139
1140 // Allocate memory for squared variables
1141 // mAlloc(m_square, noInternalCells, 3 * (nDim - 1) + 1 + (MInt)(m_statisticCombustionAnalysis)*2, "m_square", F0,
1142 // FUN_);
1143 // + 1 for pressure ampl + 2 ampl for combustion variables, c',h'
1144
1145 // if(m_kurtosis != 0 /*&& !m_twoPass*/) {
1146 // mAlloc(m_cube, noInternalCells, nDim, "m_cube", F0, FUN_);
1147 // mAlloc(m_fourth, noInternalCells, nDim, "m_fourth", F0, FUN_);
1148 // } else if(m_skewness != 0 /*&& !m_twoPass*/) {
1149 // mAlloc(m_cube, noInternalCells, nDim, "m_cube", F0, FUN_);
1150 // }
1151
1152 if(m_useKahan) // allocate memory for kahan summation
1153 {
1154 m_log << "m_useKahan is activated" << endl;
1155 TERMM(1, "FIXME Kahan summation is untested and probably broken");
1156 // mAlloc(m_cSum, noInternalCells, m_noVariables + 3 * (nDim - 1), "m_cSum", F0, AT_);
1157 // mAlloc(m_tSum, noInternalCells, m_noVariables + 3 * (nDim - 1), "m_tSum", F0, AT_);
1158 // mAlloc(m_ySum, noInternalCells, m_noVariables + 3 * (nDim - 1), "m_ySum", F0, AT_);
1159 // mAlloc(m_cSquare, noInternalCells, 3 * (nDim - 1), "m_cSquare", F0, AT_);
1160 // mAlloc(m_tSquare, noInternalCells, 3 * (nDim - 1), "m_tSquare", F0, AT_);
1161 // mAlloc(m_ySquare, noInternalCells, 3 * (nDim - 1), "m_ySquare", F0, AT_);
1162 if(m_kurtosis) {
1163 // mAlloc(m_cCube, noInternalCells, nDim, "m_cCube", F0, AT_);
1164 // mAlloc(m_tCube, noInternalCells, nDim, "m_tCube", F0, AT_);
1165 // mAlloc(m_yCube, noInternalCells, nDim, "m_yCube", F0, AT_);
1166 // mAlloc(m_cFourth, noInternalCells, nDim, "m_cFourth", F0, AT_);
1167 // mAlloc(m_tFourth, noInternalCells, nDim, "m_tFourth", F0, AT_);
1168 // mAlloc(m_yFourth, noInternalCells, nDim, "m_yFourth", F0, AT_);
1169 } else if(m_skewness) {
1170 // mAlloc(m_cCube, noInternalCells, nDim, "m_cCube", F0, AT_);
1171 // mAlloc(m_tCube, noInternalCells, nDim, "m_tCube", F0, AT_);
1172 // mAlloc(m_yCube, noInternalCells, nDim, "m_yCube", F0, AT_);
1173 }
1174 }
1175}
void setVariableNames()
Definition: postdata.cpp:181
void setPropertyVariableOffset(MString s, MInt start, MInt length)
Definition: postdata.h:213
MInt noVariables() const
Return the number of primitive variables.
Definition: postdata.h:165
MInt m_sourceVarsIndex
Definition: postdata.h:223
MBool m_averageSpeedOfSound
std::set< MInt > m_activeMeanVars
MInt m_noSpeedOfSoundVars
MBool m_needVorticity
MBool m_correlation
MInt m_noCorrelationLines
MInt m_noSourceVars
bool MBool
Definition: maiatypes.h:58
static constexpr const MInt UGRADU
static constexpr const MInt DP
static constexpr const MInt GRADU
static constexpr const MInt UGRADRHO
static constexpr const MInt RHODIVU
static constexpr const MInt GRADPRHO
static constexpr const MInt DRHO
static constexpr const MInt DU
static constexpr const MInt LAMB0

◆ initAveragingProperties()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initAveragingProperties ( )
protectedvirtual
Author
Michael Schlottke-Lakemper (mic) mic@a.nosp@m.ia.r.nosp@m.wth-a.nosp@m.ache.nosp@m.n.de
Date
2015-11-19

Reimplemented in PostProcessingFv< nDim, SysEqn >.

◆ initCorrelation()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initCorrelation
protected

Definition at line 1179 of file postprocessing.cpp.

1179 {
1180 TRACE();
1181
1182 if(!postData().grid().isActive()) return;
1183
1184 GridProxy* gridProxy = &postData().grid();
1185
1186 // Read properties
1188 if(m_noCorrelationLines <= 0) {
1189 TERMM(1, "Error: line probing activated but number of probe line directions is "
1190 + std::to_string(m_noCorrelationLines) + "!");
1191 }
1192
1193 mAlloc(m_correlationDirection, m_noCorrelationLines, "m_correlationDirection", AT_);
1194 mAlloc(m_correlationVariableIndex, m_noCorrelationLines, "m_correlationVariableIndex", AT_);
1195
1196 for(MInt correlationId = 0; correlationId < m_noCorrelationLines; correlationId++) {
1197 m_correlationDirection[correlationId] =
1198 Context::getSolverProperty<MInt>("pp_correlationDirection", m_postprocessingId, AT_, correlationId);
1199 if(m_correlationDirection[correlationId] < 0 || m_correlationDirection[correlationId] >= nDim) {
1200 m_log << "invalid value for property correlationDirection: " << m_correlationDirection << " at position "
1201 << correlationId << endl;
1202 }
1203 m_correlationVariableIndex[correlationId] =
1204 Context::getSolverProperty<MInt>("pp_correlationVariableIndex", m_postprocessingId, AT_, correlationId);
1205 }
1206
1207 ScratchSpace<MInt> correlationDir(m_noCorrelationLines, (nDim - 1), AT_, "correlationDir");
1208 mAlloc(m_correlationCoordinates, m_noCorrelationLines, (nDim - 1), "m_correlationCoordinates", AT_);
1209
1210 for(MInt correlationId = 0; correlationId < m_noCorrelationLines; correlationId++) {
1211 if(m_correlationDirection[correlationId] == 0) {
1212 correlationDir(correlationId, 0) = 1;
1213 } else {
1214 correlationDir(correlationId, 0) = 0;
1215 }
1216 m_correlationCoordinates[correlationId][0] = Context::getSolverProperty<MFloat>(
1217 "pp_correlationCoordinates", m_postprocessingId, AT_, (nDim - 1) * correlationId);
1218 IF_CONSTEXPR(nDim == 3) {
1219 if(m_correlationDirection[correlationId] == 2) {
1220 correlationDir(correlationId, 1) = 1;
1221 } else {
1222 correlationDir(correlationId, 1) = 2;
1223 }
1224 m_correlationCoordinates[correlationId][1] = Context::getSolverProperty<MFloat>(
1225 "pp_correlationCoordinates", m_postprocessingId, AT_, 2 * correlationId + 1);
1226 }
1227 }
1228
1229 for(MInt correlationId = 0; correlationId < m_noCorrelationLines; correlationId++) {
1230 m_log << "correlation in correlation function direction " << m_correlationDirection[correlationId]
1231 << " with correlationCorrelationDirection "
1232 << "m_noCorrelationLines is " << m_noCorrelationLines;
1233 m_log << std::endl;
1234 }
1235 mAlloc(m_noCorrelationIds, m_noCorrelationLines, "m_noCorrelationIds", AT_);
1236 mAlloc(m_correlationIds, m_noCorrelationLines, "m_correlationIds", AT_);
1237 mAlloc(m_correlationExchangeVar, m_noCorrelationLines, "m_correlationExchangeVar", AT_);
1238 mAlloc(m_correlationExchangeVarMean, m_noCorrelationLines, "m_correlationExchangeVarMean", AT_);
1239 mAlloc(m_correlationExchangeVarRMS, m_noCorrelationLines, "m_correlationExchangeVarRMS", AT_);
1240 mAlloc(m_correlationPositions, m_noCorrelationLines, "m_correlationPositions", AT_);
1241 mAlloc(m_globalNoCorrelationIds, m_noCorrelationLines, "m_globalNoCorrelationIds", AT_);
1242
1243 // suppress valgrind error
1244 for(MInt i = 0; i < m_noCorrelationLines; i++) {
1245 m_correlationIds[i] = nullptr;
1246 m_correlationPositions[i] = nullptr;
1247 }
1248
1249 for(MInt correlationId = 0; correlationId < m_noCorrelationLines; correlationId++) {
1250 map<MFloat, MInt, coord_comp_1d_> coordinates;
1251 std::vector<MFloat> coord(nDim, std::numeric_limits<MFloat>::max());
1252 MFloat halfCellLength = NAN;
1253 MBool ok;
1254 MBool ok2;
1255 MBool nghbrFound;
1256 for(MInt cellId = 0; cellId < postData().grid().noInternalCells(); cellId++) {
1257 if(gridProxy->tree().noChildren(cellId) > 0) continue; // skip non leaf cells
1258 for(MInt dim = 0; dim < nDim; dim++) {
1259 coord[dim] = postData().c_coordinate(cellId, dim);
1260 }
1261 ok = true;
1262 ok2 = true;
1263 nghbrFound = false;
1264
1265 halfCellLength = gridProxy->halfCellLength(cellId);
1266 for(MInt i = 0; i < nDim - 1; i++) {
1267 // check if distance is greater than half of the cell length (in direction i)
1268 if(abs(m_correlationCoordinates[correlationId][i] - coord[correlationDir(correlationId, i)])
1269 >= halfCellLength) {
1270 ok = false;
1271 }
1272
1273 // check if distance is a bit more than half of the cell length (line between cells)
1274 if(abs(m_correlationCoordinates[correlationId][i] - coord[correlationDir(correlationId, i)])
1275 < (halfCellLength + MFloatEps)) {
1276 for(MInt dirId = 0; dirId < 2 * nDim; dirId++) {
1277 if(dirId == 2 * m_correlationDirection[correlationId]
1278 || dirId == 2 * m_correlationDirection[correlationId] + 1) {
1279 continue;
1280 }
1281 if(gridProxy->tree().hasNeighbor(cellId, dirId) != 1) {
1282 continue;
1283 }
1284 MInt nId = gridProxy->tree().neighbor(cellId, dirId);
1285 // check if neighbor cell is already in the probe line
1286 if(coordinates.find(postData().c_coordinate(nId, m_correlationDirection[correlationId]))
1287 != coordinates.end()) {
1288 nghbrFound = true;
1289 }
1290 }
1291 } else {
1292 ok2 = false;
1293 }
1294 }
1295 if(ok || (ok2 && !nghbrFound)) {
1296 if(postData().a_isBndryGhostCell(cellId)) continue;
1297 coordinates[coord[m_correlationDirection[correlationId]]] = cellId;
1298 }
1299 }
1300
1301 m_noCorrelationIds[correlationId] = coordinates.size(); // local number of cells
1302
1303 if(m_noCorrelationIds[correlationId] > 0) {
1304 mAlloc(m_correlationIds[correlationId], m_noCorrelationIds[correlationId], "m_correlationIds", AT_);
1305 mAlloc(m_correlationPositions[correlationId], m_noCorrelationIds[correlationId], "m_correlationPositions", AT_);
1306 } else {
1307 // Allocate dummy array to avoid errors when dereferencing during writing
1308 mAlloc(m_correlationIds[correlationId], 1, "m_correlationIds", AT_);
1309 mAlloc(m_correlationPositions[correlationId], 1, "m_correlationPositions", AT_);
1310 }
1311 auto it = coordinates.begin();
1312 for(MInt i = 0; it != coordinates.end(); it++, i++) {
1313 m_correlationIds[correlationId][i] = (*it).second;
1314 m_correlationPositions[correlationId][i] = (*it).first;
1315 }
1316 }
1317
1318 // fill global arrays
1320 postData().mpiComm(), AT_, "m_noCorrelationIds", "m_globalNoCorrelationIds");
1321
1322 MInt maxGlobalNoCorrelationIds = 0;
1323 for(MInt correlationId = 0; correlationId < m_noCorrelationLines; correlationId++) {
1324 if(m_globalNoCorrelationIds[correlationId] >= maxGlobalNoCorrelationIds) {
1325 maxGlobalNoCorrelationIds = m_globalNoCorrelationIds[correlationId];
1326 }
1327 }
1328
1329 mAlloc(m_globalCorrelationIds, m_noCorrelationLines, maxGlobalNoCorrelationIds, "m_globalCorrelationIds", 0, AT_);
1330 mAlloc(m_globalCorrelationPositions, m_noCorrelationLines, maxGlobalNoCorrelationIds, "m_globalCorrelationPositions",
1331 F0, AT_);
1333 "m_globalCorrelationExchangeVar", F0, AT_);
1335 "m_globalCorrelationExchangeVarMean", F0, AT_);
1337 "m_globalCorrelationExchangeVarRMS", F0, AT_);
1338
1339 // create mapping for cells
1340 mAlloc(m_correlationIndexMapping, m_noCorrelationLines, postData().noInternalCells(), "m_correlationIndexMapping", -1,
1341 AT_);
1342
1343
1344 for(MInt correlationId = 0; correlationId < m_noCorrelationLines; correlationId++) {
1345 MInt noDomain = postData().noDomains();
1346 ScratchSpace<MInt> recvbuf(noDomain, "recvbuf", AT_);
1347 recvbuf.fill(0);
1348
1349 MPI_Gather(&m_noCorrelationIds[correlationId], 1, MPI_INT, &recvbuf[0], 1, MPI_INT, 0, postData().mpiComm(), AT_,
1350 "m_noCorrelationIds[correlationId]", "postData().noDomain()");
1351
1352 ScratchSpace<MInt> displs(noDomain, "displs", AT_);
1353 if(postData().domainId() == 0) {
1354 MInt offset = 0;
1355 for(MInt dom = 0; dom < noDomain; dom++) {
1356 displs[dom] = offset;
1357 offset += recvbuf[dom];
1358 }
1359 }
1360
1361 MPI_Gatherv(&m_correlationIds[correlationId][0], m_noCorrelationIds[correlationId], MPI_INT,
1362 &m_globalCorrelationIds[correlationId][0], &recvbuf[postData().domainId()],
1363 &displs[postData().domainId()], MPI_INT, 0, postData().mpiComm(), AT_, "m_correlationIds",
1364 "m_globalCorrelationIds");
1365
1366 MPI_Gatherv(&m_correlationPositions[correlationId][0], m_noCorrelationIds[correlationId], MPI_DOUBLE,
1367 &m_globalCorrelationPositions[correlationId][0], &recvbuf[postData().domainId()],
1368 &displs[postData().domainId()], MPI_DOUBLE, 0, postData().mpiComm(), AT_, "m_correlationPositions",
1369 "m_globalCorrelationPositions");
1370
1371 MPI_Bcast(m_globalCorrelationIds[correlationId], m_globalNoCorrelationIds[correlationId], MPI_INT, 0,
1372 postData().mpiComm(), AT_, "m_probeLineAverageCoordinates");
1373
1374 MPI_Bcast(m_globalCorrelationPositions[correlationId], m_globalNoCorrelationIds[correlationId], MPI_DOUBLE, 0,
1375 postData().mpiComm(), AT_, "m_globalCorrelationPositions");
1376
1377 mAlloc(m_correlationExchangeVar[correlationId], postData().grid().noInternalCells(),
1378 "m_correlationExchangeVar[correlationId]", AT_);
1379 mAlloc(m_correlationExchangeVarMean[correlationId], postData().grid().noInternalCells(),
1380 "m_correlationExchangeVarMean[correlationId]", AT_);
1381 mAlloc(m_correlationExchangeVarRMS[correlationId], postData().grid().noInternalCells(),
1382 "m_correlationExchangeVarRMS[correlationId]", AT_);
1383
1384 for(MInt dataId = 0; dataId < postData().noInternalCells(); dataId++) {
1385 MFloat dataPosition = postData().c_coordinate(dataId, m_correlationDirection[correlationId]);
1386 MFloat smallerDist = std::numeric_limits<MFloat>::max();
1387 MFloat biggerDist = std::numeric_limits<MFloat>::max();
1388 MInt index1 = -1;
1389 MInt index2 = -1;
1390 for(MInt i = 0; i < m_globalNoCorrelationIds[correlationId]; i++) {
1391 MFloat corrPosition = m_globalCorrelationPositions[correlationId][i];
1392 // change this
1393 if(m_correlationIndexMapping[correlationId][dataId] == -1) {
1394 MFloat dist = abs(corrPosition - dataPosition);
1395 if(corrPosition <= dataPosition && dist < smallerDist) {
1396 smallerDist = dist;
1397 index1 = i;
1398 }
1399 if(corrPosition > dataPosition && dist < biggerDist) {
1400 biggerDist = dist;
1401 index2 = i;
1402 }
1403 }
1404 }
1405
1406 if(smallerDist <= biggerDist) {
1407 m_correlationIndexMapping[correlationId][dataId] = index1;
1408 } else {
1409 m_correlationIndexMapping[correlationId][dataId] = index2;
1410 }
1411 }
1412 }
1413}
MInt noInternalCells() const override
Return the number of internal cells within this solver.
Definition: postdata.h:84
const MFloat & c_coordinate(const MInt cellId, const MInt dim)
Returns the coordinate of the cell from the grid().tree() cellId for dimension dir.
Definition: postdata.h:143
MBool isActive() const
MInt * m_noCorrelationIds
MInt * m_correlationVariableIndex
MFloat ** m_globalCorrelationPositions
MFloat ** m_globalCorrelationExchangeVar
MFloat ** m_correlationExchangeVarRMS
MFloat ** m_globalCorrelationExchangeVarMean
typename maia::grid::Proxy< nDim > GridProxy
MFloat ** m_correlationCoordinates
MFloat ** m_correlationPositions
MInt ** m_globalCorrelationIds
MFloat ** m_correlationExchangeVar
MInt ** m_correlationIds
MInt * m_correlationDirection
MInt ** m_correlationIndexMapping
MFloat ** m_globalCorrelationExchangeVarRMS
MFloat ** m_correlationExchangeVarMean
MInt * m_globalNoCorrelationIds
This class is a ScratchSpace.
Definition: scratch.h:758
virtual MInt noDomains() const
Definition: solver.h:387
int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Gatherv
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
int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, const MString &name, const MString &varname)
same as MPI_Bcast
int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Gather
MFloat dist(const Point< DIM > &p, const Point< DIM > &q)
Definition: pointbox.h:54

◆ initIsoTurbulenceStatistics()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initIsoTurbulenceStatistics ( )
inlineprotectedvirtual

Reimplemented in PostProcessingLb< nDim >.

Definition at line 167 of file postprocessing.h.

167{ TERMM(1, "Not implemented for this solverType"); };

◆ initLPTSolutionFile()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initLPTSolutionFile ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFvLPT< nDim, SysEqn >, PostProcessingLbLPT< nDim >, and PostProcessingLPT< nDim >.

Definition at line 137 of file postprocessing.h.

137{ TERMM(1, "Not implemented for this solverType"); };

◆ initMovingAverage()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initMovingAverage ( )
protectedvirtual
Author
Ansgar Niemoeller
Date
09.07.2014

reads properties pp_movingAvgInterval, pp_movingAvgDataPoints (pp_averageVorticity already read in initAveragingVariables)

Parameters
[in]gridpointer to the grid

Reimplemented in PostProcessingFv< nDim, SysEqn >.

◆ initParticleStatistics()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initParticleStatistics ( )
inlineprotectedvirtual

Reimplemented in PostProcessingLbLPT< nDim >, and PostProcessingLPT< nDim >.

Definition at line 139 of file postprocessing.h.

139{ TERMM(1, "Not implemented for this solverType"); };

◆ initPeriodicSliceAverage()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initPeriodicSliceAverage
protected
Author
Jannik Borgelt
Date
10.2023
Template Parameters

in] T celltype

Definition at line 3169 of file postprocessing.cpp.

3169 {
3170 TRACE();
3171
3172 if(!postData().grid().isActive()) return;
3173
3174 MInt noSlicePositions = 0;
3175 std::multimap<MFloat, MFloat> slicePositions;
3176
3177 std::vector<MFloat> coord(2, F0);
3178 for(MInt cellId = 0; cellId < postData().c_noCells(); cellId++) {
3179 if(postData().c_noChildren(cellId) > 0) continue; // skip non leaf cells
3180 if(postData().a_isHalo(cellId)) continue; // skip halo cells
3181 coord[0] = postData().c_coordinate(cellId, 0);
3182 coord[1] = postData().c_coordinate(cellId, 1);
3183
3184 // see if coord is already present
3185 MInt count = slicePositions.count(coord[0]);
3186
3187 if(count > 0) {
3188 MBool alreadyInserted = false;
3189 for(auto it = slicePositions.equal_range(coord[0]).first; it != slicePositions.equal_range(coord[0]).second;
3190 ++it) {
3191 if(approx((*it).second, coord[1], 1e-16)) {
3192 alreadyInserted = true;
3193 }
3194 }
3195 if(!alreadyInserted) {
3196 slicePositions.insert(std::make_pair(coord[0], coord[1]));
3197 noSlicePositions++;
3198 }
3199 } else {
3200 // insert
3201 slicePositions.insert(std::make_pair(coord[0], coord[1]));
3202 noSlicePositions++;
3203 }
3204 }
3205
3206 // debug output slicePositions
3207 //----------------------------------------------------------------------------
3208 // stringstream fn;
3209 // fn.clear();
3210 // fn << "slicePositions_" << postData().domainId() << ".txt";
3211 // MString fname = fn.str();
3212 // ofstream slicePositionsOutput;
3213 // slicePositionsOutput.precision(16);
3214 // slicePositionsOutput.open(fname);
3215 // for(auto it = slicePositions.begin(); it != slicePositions.end(); ++it){
3216 // MString line = "";
3217 // line.append(to_string((*it).first) + " " + to_string((*it).second) + " " + to_string(postData().domainId()));
3218 // slicePositionsOutput << line << endl;
3219 // }
3220 // slicePositionsOutput.close();
3221 //----------------------------------------------------------------------------
3222
3223 // exchange multimap
3224 MFloatScratchSpace posX(noSlicePositions, AT_, "posX");
3225 MFloatScratchSpace posY(noSlicePositions, AT_, "posY");
3226 MInt count_ = 0;
3227 for(auto it = slicePositions.begin(); it != slicePositions.end(); ++it) {
3228 posX[count_] = (*it).first;
3229 posY[count_] = (*it).second;
3230 count_++;
3231 }
3232
3233 MPI_Allreduce(&noSlicePositions, &m_globalnoSlicePositions, 1, MPI_INT, MPI_SUM, postData().mpiComm(), AT_,
3234 "noSlicePositions", "m_globalnoSlicePositions");
3235
3236 MFloatScratchSpace globalPosX(m_globalnoSlicePositions, AT_, "globalPosX");
3237 MFloatScratchSpace globalPosY(m_globalnoSlicePositions, AT_, "globalPosY");
3238
3239 ScratchSpace<MInt> recvbuf(postData().noDomains(), "recvbuf", FUN_);
3240 recvbuf.fill(0);
3241 MPI_Gather(&noSlicePositions, 1, MPI_INT, &recvbuf[0], 1, MPI_INT, 0, postData().mpiComm(), AT_, "noSlicePositions",
3242 "recvbuf");
3243
3244 ScratchSpace<MInt> displs(postData().noDomains(), "displspos", FUN_);
3245 if(postData().domainId() == 0) {
3246 MInt offset = 0;
3247 for(MInt dom = 0; dom < postData().noDomains(); dom++) {
3248 displs[dom] = offset;
3249 offset += recvbuf[dom];
3250 }
3251 }
3252
3253 MPI_Gatherv(&posX[0], noSlicePositions, MPI_DOUBLE, &globalPosX[0], &recvbuf[0], &displs[postData().domainId()],
3254 MPI_DOUBLE, 0, postData().mpiComm(), AT_, "posX", "globalPosX");
3255 MPI_Gatherv(&posY[0], noSlicePositions, MPI_DOUBLE, &globalPosY[0], &recvbuf[0], &displs[postData().domainId()],
3256 MPI_DOUBLE, 0, postData().mpiComm(), AT_, "posY", "globalCountZ");
3257 MPI_Bcast(&globalPosX[0], m_globalnoSlicePositions, MPI_DOUBLE, 0, postData().mpiComm(), AT_, "globalPosX");
3258 MPI_Bcast(&globalPosY[0], m_globalnoSlicePositions, MPI_DOUBLE, 0, postData().mpiComm(), AT_, "globalPosY");
3259
3260 // find double entries
3261 for(MInt i = 0; i < m_globalnoSlicePositions; i++) {
3262 coord[0] = globalPosX[i];
3263 coord[1] = globalPosY[i];
3264
3265 // see if coord is already present
3266 MInt count = m_sliceGlobalPositions.count(coord[0]);
3267 if(count > 0) {
3268 MBool alreadyInserted = false;
3269 for(auto it = m_sliceGlobalPositions.equal_range(coord[0]).first;
3270 it != m_sliceGlobalPositions.equal_range(coord[0]).second;
3271 ++it) {
3272 if(approx((*it).second, coord[1], 1e-16)) {
3273 alreadyInserted = true;
3274 break;
3275 }
3276 }
3277 if(!alreadyInserted) {
3278 m_sliceGlobalPositions.insert(std::make_pair(coord[0], coord[1]));
3279 }
3280 } else {
3281 // insert
3282 m_sliceGlobalPositions.insert(std::make_pair(coord[0], coord[1]));
3283 }
3284 }
3285
3287
3288 mAlloc(m_sliceAverage, postData().noVariables(), m_globalnoSlicePositions, "m_sliceAverage", AT_);
3289 for(MInt i = 0; i < m_globalnoSlicePositions; i++) {
3290 for(MInt varId = 0; varId < postData().noVariables(); varId++) {
3291 m_sliceAverage[varId][i] = F0;
3292 }
3293 }
3294
3295 // determine index of cells in globalPos
3296 mAlloc(m_cell2globalIndex, m_globalnoSlicePositions, "m_cell2globalIndex", AT_);
3297 mAlloc(m_noPeriodicSliceCells, m_globalnoSlicePositions, "m_noPeriodicSliceCells", 0, AT_);
3298 for(MInt cellId = 0; cellId < postData().c_noCells(); cellId++) {
3299 if(postData().c_noChildren(cellId) > 0) continue; // skip non leaf cells
3300 if(postData().a_isHalo(cellId)) continue; // skip halo cells
3301 MFloat x = postData().c_coordinate(cellId, 0);
3302 MFloat y = postData().c_coordinate(cellId, 1);
3303 MInt index = 0;
3304 for(auto it = m_sliceGlobalPositions.begin(); it != m_sliceGlobalPositions.end(); ++it) {
3305 if(approx((*it).first, x, 1e-16) && approx((*it).second, y, 1e-16)) {
3306 m_cell2globalIndex[index].push_back(cellId);
3308 break;
3309 }
3310 index++;
3311 }
3312 }
3313
3314 MPI_Allreduce(MPI_IN_PLACE, &m_noPeriodicSliceCells[0], m_globalnoSlicePositions, MPI_INT, MPI_SUM,
3315 postData().mpiComm(), AT_, "MPI_IN_PLACE,", "m_noPeriodicSliceCells");
3316
3317#ifndef NDEBUG
3318 // debug output slicePositions
3319 //----------------------------------------------------------------------------
3320 if(postData().domainId() == 0) {
3321 stringstream fng;
3322 fng.clear();
3323 fng << "sliceGlobalPositions.txt";
3324 MString fnameg = fng.str();
3325 ofstream sliceGlobalPositionsOutput;
3326 sliceGlobalPositionsOutput.precision(16);
3327 sliceGlobalPositionsOutput.open(fnameg);
3328 MInt index = 0;
3329 for(auto it = m_sliceGlobalPositions.begin(); it != m_sliceGlobalPositions.end(); ++it) {
3330 MString line = "";
3331 line.append(to_string((*it).first) + " " + to_string((*it).second) + " "
3332 + to_string(m_noPeriodicSliceCells[index]));
3333 index++;
3334 sliceGlobalPositionsOutput << line << endl;
3335 }
3336 sliceGlobalPositionsOutput.close();
3337 }
3338 //----------------------------------------------------------------------------
3339#endif
3340}
MInt c_noCells() const
Returns the number of grid-cells.
Definition: postdata.h:132
MInt c_noChildren(const MInt cellId) const
Returns the number of children of the cell cellId.
Definition: postdata.h:154
MBool a_isHalo(const MInt cellId) const
Returns IsHalo of the cell cellId.
Definition: postdata.h:182
MFloat ** m_sliceAverage
std::vector< MInt > * m_cell2globalIndex
MInt m_globalnoSlicePositions
std::multimap< MFloat, MFloat > m_sliceGlobalPositions
MInt * m_noPeriodicSliceCells
MBool approx(const T &, const U &, const T)
Definition: functions.h:272
std::basic_string< char > MString
Definition: maiatypes.h:55
IdType index(const FloatType *const x, const IdType level)
Return Hilbert index for given location and level in 2D or 3D.
Definition: hilbert.h:165
define array structures

◆ initPLIsoTurbulenceStatistics()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initPLIsoTurbulenceStatistics ( )
inlineprotectedvirtual

Reimplemented in PostProcessingLbLPT< nDim >.

Definition at line 143 of file postprocessing.h.

143{ TERMM(1, "Not implemented for this solverType"); };

◆ initPointSamplingData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initPointSamplingData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >, and PostProcessingLb< nDim >.

Definition at line 161 of file postprocessing.h.

161{ TERMM(1, "Not implemented for this solverType"); };

◆ initPostProcessing()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initPostProcessing ( )
overridevirtual
Author
Andreas Lintermann
Date
12.09.2012_" + to_string(m_postprocessingId)

Implements PostProcessingInterface.

◆ initProbeArbitraryLine()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initProbeArbitraryLine ( )
protected
Author
Ansgar Niemoeller
Date
07.06.2014
Parameters
[in]gridpointer to the grid

◆ initProbeArbitrarySlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initProbeArbitrarySlice ( )
protected
Author
Ansgar Niemoeller, Sven Berger
Date
07.06.2014
Parameters
[in]gridpointer to the grid

◆ initProbeLine()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initProbeLine ( )
protected
Author
A. Niemoeller
Date
09.12.2013

reads properties probeLineDirection and probeLineCoordinates which define a line (or multiple lines) in the specified direction with fixed coordinate(s) in the other dimensions
assembles all cell Ids for probing and communicates data for later line probing

Parameters
[in]gridpointer to the grid

◆ initProbeLinePeriodic()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initProbeLinePeriodic
protected

Definition at line 1810 of file postprocessing.cpp.

1810 {
1811 TRACE();
1812
1813 if(!pp->solver().grid().isActive()) return;
1814
1815 mAlloc(m_probeLinePeriodic, m_noProbeLines, "m_probeLinePeriodic", AT_);
1816
1817 for(MInt probeLineId = 0; probeLineId < m_noProbeLines; probeLineId++) { // read all probe line directions
1818 m_probeLinePeriodic[probeLineId] =
1819 Context::getSolverProperty<MInt>("pp_probeLinePeriodic", m_postprocessingId, AT_, probeLineId);
1820 }
1821
1822 for(MInt probeLineId = 0; probeLineId < m_noProbeLines; probeLineId++) { // write all lines to log
1823 m_log << "probeLine in periodic direction " << m_probeLinePeriodic[probeLineId] << " with probeLinePeriodic ";
1824 m_log << endl;
1825 }
1826
1827 const MInt noVars = m_noVariables // primitive variables
1828 + 3 * (nDim - 1) // Reynolds stress components
1829 + 1; // pressure amplitude p'
1830
1831 ScratchSpace<MInt> lineDir(m_noProbeLines, (nDim - 1), AT_, "lineDir");
1832
1834
1835 mAlloc(m_probeLineAverageDirection, m_noProbeLines, "m_probeLineAverageDirection", AT_);
1836
1837 vector<vector<MFloat>> probeLineAverageCoordinates_temp{};
1838
1839 MInt id = -1;
1840 for(MInt probeLineId = 0; probeLineId < m_noProbeLines; probeLineId++) { // loop over all probe lines
1841 m_probeLineAverageDirection[probeLineId] = m_probeLinePeriodic[probeLineId];
1842 vector<MFloat> temp{};
1843 vector<MInt> sign{};
1844 for(MInt i = 0; i < m_noProbeLineIds[probeLineId]; i++) {
1845 MInt probeId = m_probeLineIds[probeLineId][i];
1846 id++;
1847 // periodic direction has to be z-direction
1848 MFloat pos = m_gridProxy->tree().coordinate(probeId, m_probeLineDirection[probeLineId]);
1849 temp.emplace_back(pos);
1850 }
1851
1852 probeLineAverageCoordinates_temp.emplace_back(temp);
1853 }
1854
1855 // Assumes constant mesh in periodic direction
1856 mAlloc(m_probeLineAverageCoordinates, m_noProbeLines, m_globalNoProbeLineIds[0], "m_probeLineAverageCoordinates", F0,
1857 AT_);
1858
1859 for(MInt probeLineId = 0; probeLineId < m_noProbeLines; probeLineId++) {
1860 MInt noDomain = pp->solver().noDomains();
1861 ScratchSpace<MInt> recvbuf(noDomain, "recvbuf", AT_);
1862 recvbuf.fill(0);
1863
1864 MPI_Gather(&m_noProbeLineIds[probeLineId], 1, MPI_INT, &recvbuf[0], 1, MPI_INT, 0, pp->solver().mpiComm(), AT_,
1865 "m_noProbeLineIds[probeLineId]", "ppblock()->noDomain()");
1866
1867 ScratchSpace<MInt> displs(noDomain, "displs", AT_);
1868 if(pp->solver().domainId() == 0) {
1869 MInt offset = 0;
1870 for(MInt dom = 0; dom < noDomain; dom++) {
1871 displs[dom] = offset;
1872 offset += recvbuf[dom];
1873 }
1874 }
1875
1876 MPI_Gatherv(&probeLineAverageCoordinates_temp[probeLineId][0], m_noProbeLineIds[probeLineId], MPI_DOUBLE,
1877 &m_probeLineAverageCoordinates[probeLineId][0], &recvbuf[pp->solver().domainId()],
1878 &displs[pp->solver().domainId()], MPI_DOUBLE, 0, pp->solver().mpiComm(), AT_,
1879 "probeLineAverageCoordinates_temp", "m_probeLineAverageCoordinates");
1880
1881 MPI_Bcast(m_probeLineAverageCoordinates[probeLineId], m_globalNoProbeLineIds[probeLineId], MPI_DOUBLE, 0,
1882 pp->solver().mpiComm(), AT_, "m_probeLineAverageCoordinates");
1883 }
1884
1885 mAlloc(m_noProbeLineAverageIds, m_noProbeLines, m_globalNoProbeLineIds[0], "m_noProbeLineAverageIds", 0, AT_);
1886 mAlloc(m_probeLineAverageIds, m_noProbeLines, m_globalNoProbeLineIds[0], "m_probeLineAverageIds", AT_);
1887 mAlloc(m_probeLineAveragePositions, m_noProbeLines, m_globalNoProbeLineIds[0], "m_probeLineAveragePositions", AT_);
1888 mAlloc(m_globalNoProbeLineAverageIds, m_noProbeLines, m_globalNoProbeLineIds[0], "m_globalNoProbeLineAverageIds", 0,
1889 AT_);
1890 mAlloc(m_globalProbeLineAverageVars, m_noProbeLines, m_globalNoProbeLineIds[0], "m_globalProbeLineAverageVars", AT_);
1891
1892
1893 for(MInt probeLineId = 0; probeLineId < m_noProbeLines; probeLineId++) {
1894 m_probeLineAverageDirection[probeLineId] = m_probeLinePeriodic[probeLineId];
1895
1896 for(MInt p = 0; p < m_globalNoProbeLineIds[probeLineId]; p++) {
1897 TERMM_IF_COND(nDim == 2, "FIXME: the size of periodicCoordiantes was nDim-1, for 2D the below code was writing "
1898 "out of array bounds. Check if the code works as intended.");
1899 vector<MFloat> periodicCoordiantes(nDim);
1900
1901 periodicCoordiantes[0] = m_probeLineCoordinates[probeLineId][0];
1902 periodicCoordiantes[1] = m_probeLineAverageCoordinates[probeLineId][p];
1903
1904 // currently only possible for periodic in z-direction
1905 lineDir(probeLineId, 0) = m_probeLineDirection[probeLineId] == 0 ? 1 : 0;
1906 lineDir(probeLineId, 1) = m_probeLineDirection[probeLineId] == 0 ? 0 : 1;
1907
1908 map<MFloat, MInt, coord_comp_1d_> coordinates;
1909 const MFloat* coord;
1910 MFloat halfCellLength;
1911 MBool ok, ok2, nghbrFound;
1912
1913 for(MInt cellId = 0; cellId < pp->solver().grid().noInternalCells(); cellId++) {
1914 if(m_gridProxy->tree().noChildren(cellId) > 0) continue; // skip non leaf cells
1915 coord = &pp->solver().a_coordinate(cellId, 0);
1916 ok = true;
1917 ok2 = true;
1918 nghbrFound = false;
1919
1920 halfCellLength = m_gridProxy->halfCellLength(cellId);
1921
1922 for(MInt i = 0; i < nDim - 1; i++) {
1923 // check if distance is greater than half of the cell length (in direction i)
1924 if(abs(periodicCoordiantes[i] - coord[lineDir(probeLineId, i)]) >= halfCellLength) ok = 0;
1925
1926 // check if distance is a bit more than half of the cell length (line between cells)
1927 if(abs(periodicCoordiantes[i] - coord[lineDir(probeLineId, i)]) < (halfCellLength + MFloatEps)) {
1928 for(MInt dirId = 0; dirId < 2 * nDim; dirId++) { // check all directions (x-,x+,...)
1929 if(dirId == 2 * m_probeLineAverageDirection[probeLineId]
1930 || dirId == 2 * m_probeLineAverageDirection[probeLineId] + 1) { // skip line directions
1931 continue;
1932 }
1933 if(m_gridProxy->tree().hasNeighbor(cellId, dirId)
1934 != 1) { // skip if cells has no equal level neighbor in direction dirId
1935 continue;
1936 }
1937 MInt nId = m_gridProxy->tree().neighbor(cellId, dirId);
1938 // check if neighbor cell is already in the probe line
1939 if(coordinates.find(pp->solver().a_coordinate(nId, m_probeLineAverageDirection[probeLineId]))
1940 != coordinates.end()) {
1941 nghbrFound = true;
1942 }
1943 }
1944 } else {
1945 ok2 = false;
1946 }
1947 }
1948 if(ok || (ok2 && !nghbrFound)) {
1949 if(pp->solver().a_isBndryGhostCell(cellId)) continue;
1950 coordinates[coord[m_probeLineAverageDirection[probeLineId]]] = cellId;
1951 }
1952 }
1953
1954 m_noProbeLineAverageIds[probeLineId][p] = coordinates.size(); // local number of cells
1955
1956 if(m_noProbeLineAverageIds[probeLineId][p] > 0) {
1957 mAlloc(m_probeLineAverageIds[probeLineId][p], m_noProbeLineAverageIds[probeLineId][p],
1958 "m_probeLineAverageIds[probeLineId][p]", AT_);
1959 mAlloc(m_probeLineAveragePositions[probeLineId][p], m_noProbeLineAverageIds[probeLineId][p],
1960 "m_probeLineAveragePositions[probeLineId][p]", AT_);
1961 } else {
1962 // Allocate dummy array to avoid errors when dereferencing during writing
1963 mAlloc(m_probeLineAveragePositions[probeLineId][p], 1, "m_probeLineAveragePositions", AT_);
1964 }
1965
1966 auto it = coordinates.begin();
1967 for(MInt i = 0; it != coordinates.end(); it++, i++) {
1968 m_probeLineAverageIds[probeLineId][p][i] = (*it).second;
1969 m_probeLineAveragePositions[probeLineId][p][i] = (*it).first;
1970 }
1971
1972 MPI_Allreduce(&m_noProbeLineAverageIds[probeLineId][p], &m_globalNoProbeLineAverageIds[probeLineId][p], 1,
1973 MPI_INT, MPI_SUM, pp->solver().mpiComm(), AT_, "m_noProbeLineAverageIds",
1974 "m_globalNoProbeLineAverageIds");
1975
1976 mAlloc(m_globalProbeLineAverageVars[probeLineId][p], noVars, "m_globalProbeLineAverageVars[probeLineId][p]", F0,
1977 AT_);
1978
1979 for(MInt varId = 0; varId < m_noVariables; varId++) {
1980 m_globalProbeLineAverageVars[probeLineId][p][varId] = F0;
1981 }
1982 }
1983 }
1984}
MInt * m_globalNoProbeLineIds
MInt * m_probeLineDirection
MInt ** m_noProbeLineAverageIds
MInt ** m_globalNoProbeLineAverageIds
MInt ** m_probeLineIds
MFloat *** m_globalProbeLineAverageVars
MFloat *** m_probeLineAveragePositions
MInt * m_probeLineAverageDirection
MInt m_noProbeLines
GridProxy * m_gridProxy
MInt m_noProbeLineAverageSteps
MInt * m_noProbeLineIds
MInt *** m_probeLineAverageIds
MInt * m_probeLinePeriodic
MFloat ** m_probeLineCoordinates
MFloat ** m_probeLineAverageCoordinates
constexpr std::underlying_type< FcCell >::type p(const FcCell property)
Converts property name to underlying integer value.

◆ initProbePoint()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initProbePoint ( )
protected
Author
Andreas Lintermann
Date
14.09.2012
Template Parameters

in] T celltype

Parameters
[in]gridpointer to the grid

◆ initProbeSlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initProbeSlice ( )
protected
Author
A. Niemoeller
Date
09.12.2013

reads properties probeSliceDir1 / probeSliceDir2 and probeSliceCoordinate which define a slice (or multiple slices) in the specified directions with fixed coordinate in the remaining dimension
assembles all cell Ids for probing and communicates data for later slice probing

Parameters
[in]gridpointer to the grid

◆ initReduceToLevelAvg()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initReduceToLevelAvg
protected
Author
Andreas Lintermann
Date
14.09.2012
Template Parameters

in] T celltype

Definition at line 3147 of file postprocessing.cpp.

3147 {
3148 TRACE();
3149
3151 m_ReStressesAverageFileName = Context::getSolverProperty<MString>("pp_ReStressesAverageFileName", m_postprocessingId,
3153 if(m_ReStressesAverageFileName.empty()) {
3154 mTerm(1, AT_, "Please specify the property 'ReStressesAverageFileName' ...");
3155 }
3156}
MString m_ReStressesAverageFileName

◆ initSpatialAveraging()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initSpatialAveraging ( )
protected

◆ initSprayData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initSprayData ( )
protectedvirtual

◆ initSurfaceSamplingData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initSurfaceSamplingData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >, and PostProcessingLb< nDim >.

Definition at line 163 of file postprocessing.h.

163{ TERMM(1, "Not implemented for this solverType"); };

◆ initTimeStepProperties()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initTimeStepProperties ( )
protected
Author
Andreas Lintermann (last modified Ansgar Niemoeller, 07/14)
Date
14.09.2012

reads properties pp_averageStartTimestep, pp_averageStopTimestep and pp_averageInterval

Template Parameters

in] Solver solvertype

◆ initTimeStepPropertiesLine()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initTimeStepPropertiesLine ( )
protected

◆ initTimeStepPropertiesSlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initTimeStepPropertiesSlice ( )
protected

◆ initVolumeSamplingData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::initVolumeSamplingData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >, and PostProcessingLb< nDim >.

Definition at line 165 of file postprocessing.h.

165{ TERMM(1, "Not implemented for this solverType"); };

◆ initWritePointData()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::initWritePointData ( )
protected

◆ isActive()

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::isActive ( ) const
inlineprotected

Definition at line 111 of file postprocessing.h.

111{ return pp->solver().grid().isActive(); };

◆ isMeanFile()

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::isMeanFile ( )
inlineprotected

Definition at line 310 of file postprocessing.h.

310 {
311 if(m_postData == nullptr ||
312 // necessary for postprocessing without postdata
313 postData().m_solverId == pp->solver().m_solverId) {
314 return false;
315 } else {
316 return postData().isMeanFile();
317 }
318 }
MBool isMeanFile() const
Definition: postdata.h:177

◆ movePointsToGrid()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::movePointsToGrid ( MFloat in_points,
MInt  in_noPoints,
MInt  in_moveType 
)
protected

◆ movingAverage()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::movingAverage ( )
protected

◆ movingAveragePost()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::movingAveragePost ( )
protected

◆ mSolver()

template<MInt nDim, class ppType >
Solver * PostProcessing< nDim, ppType >::mSolver ( ) const
inlineoverridevirtual

Implements PostProcessingInterface.

Definition at line 106 of file postprocessing.h.

106{ return static_cast<Solver*>(&pp->solver()); };
Parent class of all solvers This class is the base for all solvers. I.e. all solver class (e....
Definition: solver.h:29

◆ neededMeanVarsForSourceTerm()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::neededMeanVarsForSourceTerm ( const MInt  sourceTerm,
std::vector< MInt > &  meanVars 
) const
protected

Definition at line 3406 of file postprocessing.cpp.

3407 {
3408 TRACE();
3409
3410 meanVars.clear();
3411 switch(sourceTerm) {
3412 case ST::Q_mI:
3413 // Mean Lamb vector
3414 meanVars.push_back(MV::LAMB0);
3415 break;
3416 case ST::Q_mI_linear:
3417 // Mean vorticities
3418 meanVars.push_back(MV::VORT0);
3419 break;
3420 case ST::Q_mII:
3421 // Mean gradient of rho
3422 meanVars.push_back(MV::DRHO);
3423
3424 // Mean gradient of p
3425 meanVars.push_back(MV::DP);
3426
3427 // Mean of (gradient of p divided by rho)
3428 meanVars.push_back(MV::GRADPRHO);
3429 break;
3430 case ST::Q_mIII:
3431 // Mean gradients of velocity components (contains MV::DU)
3432 meanVars.push_back(MV::GRADU);
3433
3434 // Sum of products of velocity and velocity gradients:
3435 // u * grad(u) + v * grad(v) + w * grad(w)
3436 meanVars.push_back(MV::UGRADU);
3437 break;
3438 case ST::Q_e:
3439 // Components of divergence of u
3440 meanVars.push_back(MV::DU);
3441
3442 // Mean gradient of rho
3443 meanVars.push_back(MV::DRHO);
3444
3445 // Mean gradient of p
3446 meanVars.push_back(MV::DP);
3447 break;
3448 case ST::Q_c:
3449 // Components of divergence of u
3450 meanVars.push_back(MV::DU);
3451
3452 // Mean gradient of rho
3453 meanVars.push_back(MV::DRHO);
3454
3455 // Mean gradient of rho*div(u)
3456 meanVars.push_back(MV::RHODIVU);
3457
3458 // Mean gradient of u*grad(rho)
3459 meanVars.push_back(MV::UGRADRHO);
3460 break;
3461 default:
3462 TERMM(1, "Source term '" + s_sourceTermNames[sourceTerm] + "' not implemented yet.");
3463 break;
3464 }
3465}
std::array< MString, ST::totalNoSourceTerms > s_sourceTermNames
static constexpr const MInt VORT0
static constexpr const MInt Q_e
static constexpr const MInt Q_mI
static constexpr const MInt Q_mI_linear
static constexpr const MInt Q_mIII
static constexpr const MInt Q_mII
static constexpr const MInt Q_c

◆ periodicSliceAverage()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::periodicSliceAverage
protected

Definition at line 3344 of file postprocessing.cpp.

3344 {
3345 TRACE();
3346
3347 if(!postData().grid().isActive()) return;
3348
3350
3351 if(postData().domainId() == 0) cerr << "Calculating periodic average" << endl;
3352
3353 for(MInt i = 0; i < m_globalnoSlicePositions; i++) {
3354 for(MInt c = 0; c < (MInt)m_cell2globalIndex[i].size(); c++) {
3356 for(MInt varId = 0; varId < postData().noVariables(); varId++) {
3358 }
3359 }
3360 }
3361
3362 // exchange sliceAverage
3363 for(MInt varId = 0; varId < postData().noVariables(); varId++) {
3364 MPI_Allreduce(MPI_IN_PLACE, &m_sliceAverage[varId][0], m_globalnoSlicePositions, MPI_DOUBLE, MPI_SUM,
3365 postData().mpiComm(), AT_, "MPI_IN_PLACE", "m_sliceAverage");
3366 }
3367
3368 for(MInt i = 0; i < m_globalnoSlicePositions; i++) {
3369 for(MInt c = 0; c < (MInt)m_cell2globalIndex[i].size(); c++) {
3371 for(MInt varId = 0; varId < postData().noVariables(); varId++) {
3372 postData().a_variable(cellId, varId) = m_sliceAverage[varId][i];
3373 }
3374 }
3375 }
3376
3377 postData().saveRestartFile(false);
3378
3379
3380#ifndef NDEBUG
3381 // debug output sliceAverage
3382 //----------------------------------------------------------------------------
3383 if(postData().domainId() == 0) {
3384 stringstream fng;
3385 fng.clear();
3386 fng << "sliceAverage_" << postData().domainId() << ".txt";
3387 MString fnameg = fng.str();
3388 ofstream sliceGlobalPositionsOutput;
3389 sliceGlobalPositionsOutput.precision(16);
3390 sliceGlobalPositionsOutput.open(fnameg);
3391 MInt i = 0;
3392 for(auto it = m_sliceGlobalPositions.begin(); it != m_sliceGlobalPositions.end(); ++it) {
3393 MString line = "";
3394 line.append(to_string((*it).first) + " " + to_string((*it).second) + " " + to_string(m_noPeriodicSliceCells[i])
3395 + " " + to_string(m_sliceAverage[0][i]));
3396 i++;
3397 sliceGlobalPositionsOutput << line << endl;
3398 }
3399 sliceGlobalPositionsOutput.close();
3400 }
3401 //----------------------------------------------------------------------------
3402#endif
3403}
void saveRestartFile(const MBool writeBackup)
Definition: postdata.cpp:356
MFloat ** m_averagedVars
Definition: postdata.h:257
void loadMeanFile(const MString fileName)
load a file for averaging
Definition: postdata.cpp:488
MString m_postprocessFileName
virtual MInt domainId() const
Return the domainId (rank)
Definition: solver.h:383

◆ postData()

template<MInt nDim, class ppType >
Data & PostProcessing< nDim, ppType >::postData ( ) const
inline

Definition at line 108 of file postprocessing.h.

108{ return *m_postData; }

◆ postprocessInSolve()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::postprocessInSolve ( MBool  finalTimeStep)
overridevirtual

Implements PostProcessingInterface.

Definition at line 185 of file postprocessing.cpp.

185 {
186 TRACE();
187
188 m_finalTimeStep = finalTimeStep;
189 for(MInt op = 0; op < (signed)m_postprocessingMethods[1].size(); op++) {
190 (this->*(m_postprocessingMethods[1][op]))();
191 }
192}
std::vector< tvecpost > m_postprocessingMethods
MBool m_finalTimeStep

◆ postprocessPostSolve()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::postprocessPostSolve
overridevirtual

Implements PostProcessingInterface.

Definition at line 206 of file postprocessing.cpp.

206 {
207 TRACE();
208
209 m_finalTimeStep = true;
210 for(MInt op = 0; op < (signed)m_postprocessingMethods[2].size(); op++) {
211 (this->*(m_postprocessingMethods[2][op]))();
212 }
213}

◆ postprocessPreSolve()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::postprocessPreSolve
overridevirtual

Implements PostProcessingInterface.

Definition at line 175 of file postprocessing.cpp.

175 {
176 TRACE();
177
178 for(MInt op = 0; op < (signed)m_postprocessingMethods[0].size(); op++) {
179 (this->*(m_postprocessingMethods[0][op]))();
180 }
181}

◆ postprocessSolution()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::postprocessSolution
overridevirtual

Implements PostProcessingInterface.

Definition at line 196 of file postprocessing.cpp.

196 {
197 TRACE();
198
199 for(MInt op = 0; op < (signed)m_postprocessingSolution.size(); op++) {
200 (this->*(m_postprocessingSolution[op]))();
201 }
202}
tvecpost m_postprocessingSolution

◆ pp_saveCoarseSolution()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::pp_saveCoarseSolution ( )
protected

◆ probeArbitraryLine()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeArbitraryLine ( )
protected

◆ probeArbitraryLinePost()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeArbitraryLinePost ( )
protected

◆ probeArbitrarySlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeArbitrarySlice ( )
protected

◆ probeArbitrarySlicePost()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeArbitrarySlicePost ( )
protected

◆ probeLine()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeLine ( )
protected

◆ probeLinePeriodic()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::probeLinePeriodic ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 129 of file postprocessing.h.

129{ TERMM(1, "Not implemented for this solverType"); };

◆ probeLinePeriodicPost()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::probeLinePeriodicPost ( )
protectedvirtual

◆ probeLinePost()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeLinePost ( )
protected

◆ probeLinePre()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeLinePre ( )
protected

◆ probeLocation()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeLocation ( )
protected

◆ probeSlice()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeSlice ( )
protected

◆ probeSliceIn()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeSliceIn ( )
protected

◆ probeSlicePost()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeSlicePost ( )
protected

◆ probeSlicePre()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::probeSlicePre ( )
protected

◆ savePointSamplingData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::savePointSamplingData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >, and PostProcessingLb< nDim >.

Definition at line 162 of file postprocessing.h.

162{ TERMM(1, "Not implemented for this solverType"); };

◆ saveSliceAiaFileFormat()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::saveSliceAiaFileFormat ( const MInt  step,
const MInt  noVars,
MFloatScratchSpace vars,
const MInt  sliceId 
)
protected

◆ saveSurfaceSamplingData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::saveSurfaceSamplingData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >, and PostProcessingLb< nDim >.

Definition at line 164 of file postprocessing.h.

164{ TERMM(1, "Not implemented for this solverType"); };

◆ saveVolumeSamplingData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::saveVolumeSamplingData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >, and PostProcessingLb< nDim >.

Definition at line 166 of file postprocessing.h.

166{ TERMM(1, "Not implemented for this solverType"); };

◆ spatialAveraging()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::spatialAveraging ( )
protected

◆ spatialAveragingPost()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::spatialAveragingPost ( )
protected

◆ transferSensorWeights()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::transferSensorWeights ( )
protected

◆ vorticityAtCell()

template<MInt nDim, class ppType >
virtual MFloat & PostProcessing< nDim, ppType >::vorticityAtCell ( const MInt  cellId,
const MInt  dir 
)
inlineprotectedvirtual

Reimplemented in PostProcessingFv< nDim, SysEqn >.

Definition at line 261 of file postprocessing.h.

261 {
262 std::ignore = cellId;
263 std::ignore = dir;
264 TERMM(1, "Not implemented for this solverType");
265 };

◆ writeLPTSolutionFile()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::writeLPTSolutionFile ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFvLPT< nDim, SysEqn >, PostProcessingLbLPT< nDim >, and PostProcessingLPT< nDim >.

Definition at line 138 of file postprocessing.h.

138{ TERMM(1, "Not implemented for this solverType"); };

◆ writePointData()

template<MInt nDim, class ppType >
void PostProcessing< nDim, ppType >::writePointData ( )
protected

◆ writeSprayData()

template<MInt nDim, class ppType >
virtual void PostProcessing< nDim, ppType >::writeSprayData ( )
inlineprotectedvirtual

Reimplemented in PostProcessingFvLPT< nDim, SysEqn >.

Definition at line 134 of file postprocessing.h.

134{ TERMM(1, "Not implemented for this solverType"); };

Member Data Documentation

◆ m_acousticAnalysis

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_acousticAnalysis {}

Definition at line 293 of file postprocessing.h.

◆ m_activeMeanVars

template<MInt nDim, class ppType >
std::set<MInt> PostProcessing< nDim, ppType >::m_activeMeanVars {}
protected

Definition at line 600 of file postprocessing.h.

◆ m_activeSourceTerms

template<MInt nDim, class ppType >
std::vector<MInt> PostProcessing< nDim, ppType >::m_activeSourceTerms {}
protected

Definition at line 581 of file postprocessing.h.

◆ m_arbLineCoordinates

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_arbLineCoordinates = nullptr
protected

Definition at line 506 of file postprocessing.h.

◆ m_arbLineFull

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_arbLineFull = nullptr
protected

Definition at line 501 of file postprocessing.h.

◆ m_arbLineHasNewDistribution

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_arbLineHasNewDistribution = nullptr
protected

Definition at line 500 of file postprocessing.h.

◆ m_arbLineIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_arbLineIds = nullptr
protected

Definition at line 504 of file postprocessing.h.

◆ m_arbLineOffsets

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_arbLineOffsets = nullptr
protected

Definition at line 505 of file postprocessing.h.

◆ m_arbLinePoints

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_arbLinePoints = nullptr
protected

Definition at line 496 of file postprocessing.h.

◆ m_arbLinePointsDistribution

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_arbLinePointsDistribution = nullptr
protected

Definition at line 499 of file postprocessing.h.

◆ m_arbSliceCoordinates

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_arbSliceCoordinates = nullptr
protected

Definition at line 516 of file postprocessing.h.

◆ m_arbSliceIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_arbSliceIds = nullptr
protected

Definition at line 514 of file postprocessing.h.

◆ m_arbSliceOffsets

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_arbSliceOffsets = nullptr
protected

Definition at line 515 of file postprocessing.h.

◆ m_arbSlicePoints

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_arbSlicePoints = nullptr
protected

Definition at line 509 of file postprocessing.h.

◆ m_arbSlicePointsDistribution

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_arbSlicePointsDistribution = nullptr
protected

Definition at line 512 of file postprocessing.h.

◆ m_averageInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_averageInterval {}
protected

Definition at line 527 of file postprocessing.h.

◆ m_averageRestart

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_averageRestart {}
protected

Definition at line 526 of file postprocessing.h.

◆ m_averageSpeedOfSound

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_averageSpeedOfSound = false
protected

Definition at line 364 of file postprocessing.h.

◆ m_averageStartTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_averageStartTimestep {}
protected

Definition at line 528 of file postprocessing.h.

◆ m_averageStopTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_averageStopTimestep {}
protected

Definition at line 529 of file postprocessing.h.

◆ m_averageVorticity

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_averageVorticity = false
protected

Definition at line 363 of file postprocessing.h.

◆ m_cell2globalIndex

template<MInt nDim, class ppType >
std::vector<MInt>* PostProcessing< nDim, ppType >::m_cell2globalIndex = nullptr
protected

Definition at line 354 of file postprocessing.h.

◆ m_computeAndSaveMean

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_computeAndSaveMean = false
protected

Definition at line 331 of file postprocessing.h.

◆ m_correlation

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_correlation = false
protected

Definition at line 351 of file postprocessing.h.

◆ m_correlationCoordinates

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_correlationCoordinates = nullptr
protected

Definition at line 427 of file postprocessing.h.

◆ m_correlationDirection

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_correlationDirection = nullptr
protected

Definition at line 425 of file postprocessing.h.

◆ m_correlationExchangeVar

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_correlationExchangeVar = nullptr
protected

Definition at line 436 of file postprocessing.h.

◆ m_correlationExchangeVarMean

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_correlationExchangeVarMean = nullptr
protected

Definition at line 437 of file postprocessing.h.

◆ m_correlationExchangeVarRMS

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_correlationExchangeVarRMS = nullptr
protected

Definition at line 438 of file postprocessing.h.

◆ m_correlationIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_correlationIds = nullptr
protected

Definition at line 430 of file postprocessing.h.

◆ m_correlationIndexMapping

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_correlationIndexMapping = nullptr
protected

Definition at line 435 of file postprocessing.h.

◆ m_correlationPositions

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_correlationPositions = nullptr
protected

Definition at line 434 of file postprocessing.h.

◆ m_correlationVariableIndex

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_correlationVariableIndex = nullptr
protected

Definition at line 426 of file postprocessing.h.

◆ m_forceOutput

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_forceOutput = false
protected

Definition at line 575 of file postprocessing.h.

◆ m_gamma

template<MInt nDim, class ppType >
MFloat PostProcessing< nDim, ppType >::m_gamma = -1.0
protected

Definition at line 365 of file postprocessing.h.

◆ m_globalCorrelationExchangeVar

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_globalCorrelationExchangeVar = nullptr
protected

Definition at line 439 of file postprocessing.h.

◆ m_globalCorrelationExchangeVarMean

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_globalCorrelationExchangeVarMean = nullptr
protected

Definition at line 440 of file postprocessing.h.

◆ m_globalCorrelationExchangeVarRMS

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_globalCorrelationExchangeVarRMS = nullptr
protected

Definition at line 441 of file postprocessing.h.

◆ m_globalCorrelationIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_globalCorrelationIds = nullptr
protected

Definition at line 431 of file postprocessing.h.

◆ m_globalCorrelationPositions

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_globalCorrelationPositions = nullptr
protected

Definition at line 432 of file postprocessing.h.

◆ m_globalNoArbLineIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_globalNoArbLineIds = nullptr
protected

Definition at line 503 of file postprocessing.h.

◆ m_globalNoArbSlicePoints

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_globalNoArbSlicePoints = nullptr
protected

Definition at line 513 of file postprocessing.h.

◆ m_globalNoCorrelationIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_globalNoCorrelationIds = nullptr
protected

Definition at line 433 of file postprocessing.h.

◆ m_globalNoProbeLineAverageIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_globalNoProbeLineAverageIds = nullptr
protected

Definition at line 451 of file postprocessing.h.

◆ m_globalNoProbeLineIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_globalNoProbeLineIds = nullptr
protected

Definition at line 416 of file postprocessing.h.

◆ m_globalNoProbeSliceIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_globalNoProbeSliceIds = nullptr
protected

Definition at line 462 of file postprocessing.h.

◆ m_globalnoSlicePositions

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_globalnoSlicePositions = 0
protected

Definition at line 357 of file postprocessing.h.

◆ m_globalProbeLineAverageVars

template<MInt nDim, class ppType >
MFloat*** PostProcessing< nDim, ppType >::m_globalProbeLineAverageVars = nullptr
protected

Definition at line 448 of file postprocessing.h.

◆ m_gridProxy

template<MInt nDim, class ppType >
GridProxy* PostProcessing< nDim, ppType >::m_gridProxy
private

Definition at line 304 of file postprocessing.h.

◆ m_injectionData

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_injectionData = nullptr
protected

Definition at line 568 of file postprocessing.h.

◆ m_kurtosis

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_kurtosis = false
protected

Definition at line 330 of file postprocessing.h.

◆ m_localVars

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_localVars = nullptr
protected

Definition at line 523 of file postprocessing.h.

◆ m_LPTSolutionInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_LPTSolutionInterval = 50
protected

Definition at line 574 of file postprocessing.h.

◆ m_minLvlIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_minLvlIds = nullptr
protected

Definition at line 489 of file postprocessing.h.

◆ m_movAvgNoVariables

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movAvgNoVariables {}
protected

Definition at line 374 of file postprocessing.h.

◆ m_movAvgVariables

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_movAvgVariables = nullptr
protected

Definition at line 373 of file postprocessing.h.

◆ m_movAvgVarNames

template<MInt nDim, class ppType >
MString* PostProcessing< nDim, ppType >::m_movAvgVarNames = nullptr
protected

Definition at line 375 of file postprocessing.h.

◆ m_moveLinePointsToGrid

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_moveLinePointsToGrid = nullptr
protected

Definition at line 502 of file postprocessing.h.

◆ m_movePointsToGrid

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movePointsToGrid {}
protected

Definition at line 492 of file postprocessing.h.

◆ m_movingAverageCounter

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movingAverageCounter {}
protected

Definition at line 372 of file postprocessing.h.

◆ m_movingAverageDataPoints

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movingAverageDataPoints {}
protected

Definition at line 371 of file postprocessing.h.

◆ m_movingAverageInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movingAverageInterval = 1
protected

Definition at line 370 of file postprocessing.h.

◆ m_movingAverageStartTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movingAverageStartTimestep = 0
protected

Definition at line 368 of file postprocessing.h.

◆ m_movingAverageStopTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_movingAverageStopTimestep = 0
protected

Definition at line 369 of file postprocessing.h.

◆ m_needVorticity

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_needVorticity = false
protected

Definition at line 534 of file postprocessing.h.

◆ m_noArbLineIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noArbLineIds = nullptr
protected

Definition at line 498 of file postprocessing.h.

◆ m_noArbLines

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noArbLines = 0
protected

Definition at line 497 of file postprocessing.h.

◆ m_noArbSlicePoints

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noArbSlicePoints = nullptr
protected

Definition at line 511 of file postprocessing.h.

◆ m_noArbSlices

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noArbSlices {}
protected

Definition at line 510 of file postprocessing.h.

◆ m_noAveragedVorticities

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noAveragedVorticities {}
protected

Definition at line 531 of file postprocessing.h.

◆ m_noCorrelationIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noCorrelationIds = nullptr
protected

Definition at line 429 of file postprocessing.h.

◆ m_noCorrelationLines

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noCorrelationLines = -1
protected

Definition at line 428 of file postprocessing.h.

◆ m_noGlobalProbeLineIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_noGlobalProbeLineIds = nullptr
protected

Definition at line 418 of file postprocessing.h.

◆ m_noGlobalProbeSliceIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_noGlobalProbeSliceIds = nullptr
protected

Definition at line 464 of file postprocessing.h.

◆ m_noLocalVars

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noLocalVars {}

Definition at line 290 of file postprocessing.h.

◆ m_noMinLvlIds

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noMinLvlIds {}
protected

Definition at line 488 of file postprocessing.h.

◆ m_noPeriodicSliceCells

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noPeriodicSliceCells = nullptr
protected

Definition at line 355 of file postprocessing.h.

◆ m_noPostprocessingOps

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noPostprocessingOps {}
protected

Definition at line 275 of file postprocessing.h.

◆ m_noProbeLineAverageIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_noProbeLineAverageIds = nullptr
protected

Definition at line 447 of file postprocessing.h.

◆ m_noProbeLineAverageSteps

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noProbeLineAverageSteps
protected

Definition at line 450 of file postprocessing.h.

◆ m_noProbeLineIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noProbeLineIds = nullptr
protected

Definition at line 414 of file postprocessing.h.

◆ m_noProbeLines

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noProbeLines = -1
protected

Definition at line 409 of file postprocessing.h.

◆ m_noProbePoints

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noProbePoints {}
protected

Definition at line 544 of file postprocessing.h.

◆ m_noProbeSliceContHilbertInfo

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_noProbeSliceContHilbertInfo = nullptr
protected

Definition at line 475 of file postprocessing.h.

◆ m_noProbeSliceHilbertInfo

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_noProbeSliceHilbertInfo = nullptr
protected

Definition at line 472 of file postprocessing.h.

◆ m_noProbeSliceIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noProbeSliceIds = nullptr
protected

Definition at line 460 of file postprocessing.h.

◆ m_noProbeSliceMaxNoContHilbertIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noProbeSliceMaxNoContHilbertIds = nullptr
protected

Definition at line 474 of file postprocessing.h.

◆ m_noProbeSliceMaxNoHilbertIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noProbeSliceMaxNoHilbertIds = nullptr
protected

Definition at line 471 of file postprocessing.h.

◆ m_noProbeSliceNoContHilbertIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noProbeSliceNoContHilbertIds = nullptr
protected

Definition at line 473 of file postprocessing.h.

◆ m_noProbeSliceNoHilbertIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_noProbeSliceNoHilbertIds = nullptr
protected

Definition at line 470 of file postprocessing.h.

◆ m_noProbeSlices

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noProbeSlices = -1
protected

Definition at line 456 of file postprocessing.h.

◆ m_noSliceVars

template<MInt nDim, class ppType >
std::vector<MInt> PostProcessing< nDim, ppType >::m_noSliceVars {}
protected

Definition at line 484 of file postprocessing.h.

◆ m_noSourceVars

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noSourceVars {}
protected

Definition at line 533 of file postprocessing.h.

◆ m_noSpeedOfSoundVars

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noSpeedOfSoundVars {}
protected

Definition at line 532 of file postprocessing.h.

◆ m_noVariables

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_noVariables {}
protected

Definition at line 321 of file postprocessing.h.

◆ m_optimizedSliceIo

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_optimizedSliceIo = true
protected

Definition at line 469 of file postprocessing.h.

◆ m_particleCV

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_particleCV = nullptr
protected

Definition at line 564 of file postprocessing.h.

◆ m_particlePen

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_particlePen = nullptr
protected

Definition at line 565 of file postprocessing.h.

◆ m_pdCells

template<MInt nDim, class ppType >
std::vector<MInt> PostProcessing< nDim, ppType >::m_pdCells
protected

Definition at line 554 of file postprocessing.h.

◆ m_pdFileName

template<MInt nDim, class ppType >
MString PostProcessing< nDim, ppType >::m_pdFileName
protected

Definition at line 549 of file postprocessing.h.

◆ m_pdNoPoints

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_pdNoPoints {}
protected

Definition at line 556 of file postprocessing.h.

◆ m_pdPoints

template<MInt nDim, class ppType >
std::vector<MFloat> PostProcessing< nDim, ppType >::m_pdPoints
protected

Definition at line 553 of file postprocessing.h.

◆ m_pdRestartInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_pdRestartInterval {}
protected

Definition at line 552 of file postprocessing.h.

◆ m_pdStartTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_pdStartTimestep {}
protected

Definition at line 550 of file postprocessing.h.

◆ m_pdStopTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_pdStopTimestep {}
protected

Definition at line 551 of file postprocessing.h.

◆ m_pdVars

template<MInt nDim, class ppType >
std::vector<MFloat> PostProcessing< nDim, ppType >::m_pdVars
protected

Definition at line 555 of file postprocessing.h.

◆ m_postData

template<MInt nDim, class ppType >
Data* PostProcessing< nDim, ppType >::m_postData = nullptr
protected

Definition at line 308 of file postprocessing.h.

◆ m_postprocessFileName

template<MInt nDim, class ppType >
MString PostProcessing< nDim, ppType >::m_postprocessFileName = ""
protected

Definition at line 519 of file postprocessing.h.

◆ m_postprocessingMethods

template<MInt nDim, class ppType >
std::vector<tvecpost> PostProcessing< nDim, ppType >::m_postprocessingMethods
protected

Definition at line 283 of file postprocessing.h.

◆ m_postprocessingMethodsDesc

template<MInt nDim, class ppType >
std::vector<std::vector<MString> > PostProcessing< nDim, ppType >::m_postprocessingMethodsDesc
protected

Definition at line 284 of file postprocessing.h.

◆ m_postprocessingOps

template<MInt nDim, class ppType >
MString* PostProcessing< nDim, ppType >::m_postprocessingOps = nullptr
protected

Definition at line 276 of file postprocessing.h.

◆ m_postprocessingSolution

template<MInt nDim, class ppType >
tvecpost PostProcessing< nDim, ppType >::m_postprocessingSolution
protected

Definition at line 282 of file postprocessing.h.

◆ m_probeCellIds

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeCellIds = nullptr
protected

Definition at line 542 of file postprocessing.h.

◆ m_probeCoordinates

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_probeCoordinates = nullptr
protected

Definition at line 540 of file postprocessing.h.

◆ m_probeFileStreams

template<MInt nDim, class ppType >
std::ofstream* PostProcessing< nDim, ppType >::m_probeFileStreams = nullptr
protected

Definition at line 543 of file postprocessing.h.

◆ m_probeInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeInterval
protected

Definition at line 545 of file postprocessing.h.

◆ m_probeLineAverageCoordinates

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_probeLineAverageCoordinates = nullptr
protected

Definition at line 445 of file postprocessing.h.

◆ m_probeLineAverageCoordinatesSign

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_probeLineAverageCoordinatesSign = nullptr
protected

Definition at line 446 of file postprocessing.h.

◆ m_probeLineAverageDirection

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeLineAverageDirection = nullptr
protected

Definition at line 444 of file postprocessing.h.

◆ m_probeLineAverageIds

template<MInt nDim, class ppType >
MInt*** PostProcessing< nDim, ppType >::m_probeLineAverageIds = nullptr
protected

Definition at line 452 of file postprocessing.h.

◆ m_probeLineAveragePositions

template<MInt nDim, class ppType >
MFloat*** PostProcessing< nDim, ppType >::m_probeLineAveragePositions = nullptr
protected

Definition at line 453 of file postprocessing.h.

◆ m_probeLineCoordinates

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_probeLineCoordinates = nullptr
protected

Definition at line 412 of file postprocessing.h.

◆ m_probeLineDirection

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeLineDirection = nullptr
protected

Definition at line 410 of file postprocessing.h.

◆ m_probeLineIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_probeLineIds = nullptr
protected

Definition at line 413 of file postprocessing.h.

◆ m_probeLineInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeLineInterval = -1
protected

Definition at line 420 of file postprocessing.h.

◆ m_probeLineOffsets

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeLineOffsets = nullptr
protected

Definition at line 417 of file postprocessing.h.

◆ m_probeLinePeriodic

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeLinePeriodic = nullptr
protected

Definition at line 411 of file postprocessing.h.

◆ m_probeLinePositions

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_probeLinePositions = nullptr
protected

Definition at line 415 of file postprocessing.h.

◆ m_probeLineStartTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeLineStartTimestep = 0
protected

Definition at line 421 of file postprocessing.h.

◆ m_probeLineStopTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeLineStopTimestep = -1
protected

Definition at line 422 of file postprocessing.h.

◆ m_probePath

template<MInt nDim, class ppType >
MString PostProcessing< nDim, ppType >::m_probePath
protected

Definition at line 541 of file postprocessing.h.

◆ m_probeSliceCoordinate

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_probeSliceCoordinate = nullptr
protected

Definition at line 458 of file postprocessing.h.

◆ m_probeSliceDir

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeSliceDir = nullptr
protected

Definition at line 457 of file postprocessing.h.

◆ m_probeSliceGridNames

template<MInt nDim, class ppType >
MString* PostProcessing< nDim, ppType >::m_probeSliceGridNames = nullptr
protected

Definition at line 465 of file postprocessing.h.

◆ m_probeSliceIds

template<MInt nDim, class ppType >
MInt** PostProcessing< nDim, ppType >::m_probeSliceIds = nullptr
protected

Definition at line 459 of file postprocessing.h.

◆ m_probeSliceInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeSliceInterval = -1
protected

Definition at line 477 of file postprocessing.h.

◆ m_probeSliceOffsets

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_probeSliceOffsets = nullptr
protected

Definition at line 463 of file postprocessing.h.

◆ m_probeSlicePositions

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_probeSlicePositions = nullptr
protected

Definition at line 461 of file postprocessing.h.

◆ m_probeSliceStartTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeSliceStartTimestep = 0
protected

Definition at line 478 of file postprocessing.h.

◆ m_probeSliceStopTimestep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeSliceStopTimestep = -1
protected

Definition at line 479 of file postprocessing.h.

◆ m_probeWriteInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_probeWriteInterval
protected

Definition at line 546 of file postprocessing.h.

◆ m_restartTimeStep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_restartTimeStep {}

Definition at line 291 of file postprocessing.h.

◆ m_ReStressesAverageFileName

template<MInt nDim, class ppType >
MString PostProcessing< nDim, ppType >::m_ReStressesAverageFileName
protected

Definition at line 537 of file postprocessing.h.

◆ m_skewness

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_skewness = false
protected

Definition at line 329 of file postprocessing.h.

◆ m_sliceAiaFileFormat

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_sliceAiaFileFormat = false
protected

Definition at line 468 of file postprocessing.h.

◆ m_sliceAverage

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_sliceAverage = nullptr
protected

Definition at line 356 of file postprocessing.h.

◆ m_sliceAxis

template<MInt nDim, class ppType >
MString* PostProcessing< nDim, ppType >::m_sliceAxis = nullptr
protected

Definition at line 466 of file postprocessing.h.

◆ m_sliceGlobalPositions

template<MInt nDim, class ppType >
std::multimap<MFloat, MFloat> PostProcessing< nDim, ppType >::m_sliceGlobalPositions
protected

Definition at line 361 of file postprocessing.h.

◆ m_sliceIntercept

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_sliceIntercept = nullptr
protected

Definition at line 467 of file postprocessing.h.

◆ m_sliceVarIds

template<MInt nDim, class ppType >
std::vector<MInt> PostProcessing< nDim, ppType >::m_sliceVarIds {}
protected

Definition at line 482 of file postprocessing.h.

◆ m_sliceVarNames

template<MInt nDim, class ppType >
std::vector<std::vector<MString> > PostProcessing< nDim, ppType >::m_sliceVarNames {}
protected

Definition at line 486 of file postprocessing.h.

◆ m_solverType

template<MInt nDim, class ppType >
MString PostProcessing< nDim, ppType >::m_solverType
private

Definition at line 299 of file postprocessing.h.

◆ m_spatialAveraging

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_spatialAveraging {}
protected

Definition at line 493 of file postprocessing.h.

◆ m_spatialCoordSum

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_spatialCoordSum {}
protected

Definition at line 386 of file postprocessing.h.

◆ m_spatialDirection1

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_spatialDirection1 {}
protected

Definition at line 378 of file postprocessing.h.

◆ m_spatialDirection2

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_spatialDirection2 {}
protected

Definition at line 379 of file postprocessing.h.

◆ m_spatialDispls

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_spatialDispls = nullptr
protected

Definition at line 382 of file postprocessing.h.

◆ m_spatialGlobalLineCellToMap

template<MInt nDim, class ppType >
std::map<MFloat, MFloat, coord_comp_1d_> PostProcessing< nDim, ppType >::m_spatialGlobalLineCellToMap
protected

Definition at line 392 of file postprocessing.h.

◆ m_spatialGlobalLineCoordinates

template<MInt nDim, class ppType >
std::map<MFloat, MInt, coord_comp_1d_> PostProcessing< nDim, ppType >::m_spatialGlobalLineCoordinates
protected

Definition at line 391 of file postprocessing.h.

◆ m_spatialGlobalPlaneCellToMap

template<MInt nDim, class ppType >
std::map<std::pair<MFloat, MFloat>, std::pair<MFloat, MFloat>, coord_comp_2d_> PostProcessing< nDim, ppType >::m_spatialGlobalPlaneCellToMap
protected

Definition at line 402 of file postprocessing.h.

◆ m_spatialGlobalPlaneCoordinates

template<MInt nDim, class ppType >
std::map<std::pair<MFloat, MFloat>, MInt, coord_comp_2d_> PostProcessing< nDim, ppType >::m_spatialGlobalPlaneCoordinates
protected

Definition at line 401 of file postprocessing.h.

◆ m_spatialLineAllCoord

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_spatialLineAllCoord = nullptr
protected

Definition at line 396 of file postprocessing.h.

◆ m_spatialLineAllVars

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_spatialLineAllVars = nullptr
protected

Definition at line 395 of file postprocessing.h.

◆ m_spatialLineCellToMap

template<MInt nDim, class ppType >
std::map<MFloat, MFloat, coord_comp_1d_> PostProcessing< nDim, ppType >::m_spatialLineCellToMap
protected

Definition at line 389 of file postprocessing.h.

◆ m_spatialLineCoordinates

template<MInt nDim, class ppType >
std::map<MFloat, MInt, coord_comp_1d_> PostProcessing< nDim, ppType >::m_spatialLineCoordinates
protected

Definition at line 388 of file postprocessing.h.

◆ m_spatialLineNoCells

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_spatialLineNoCells = -1
protected

Definition at line 394 of file postprocessing.h.

◆ m_spatialLvlWeight

template<MInt nDim, class ppType >
MFloat PostProcessing< nDim, ppType >::m_spatialLvlWeight[20] {}
protected

Definition at line 381 of file postprocessing.h.

◆ m_spatialPlaneAllCoord

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_spatialPlaneAllCoord = nullptr
protected

Definition at line 406 of file postprocessing.h.

◆ m_spatialPlaneAllVars

template<MInt nDim, class ppType >
MFloat* PostProcessing< nDim, ppType >::m_spatialPlaneAllVars = nullptr
protected

Definition at line 405 of file postprocessing.h.

◆ m_spatialPlaneCellToMap

template<MInt nDim, class ppType >
std::map<std::pair<MFloat, MFloat>, std::pair<MFloat, MFloat>, coord_comp_2d_> PostProcessing< nDim, ppType >::m_spatialPlaneCellToMap
protected

Definition at line 399 of file postprocessing.h.

◆ m_spatialPlaneCoordinates

template<MInt nDim, class ppType >
std::map<std::pair<MFloat, MFloat>, MInt, coord_comp_2d_> PostProcessing< nDim, ppType >::m_spatialPlaneCoordinates
protected

Definition at line 398 of file postprocessing.h.

◆ m_spatialPlaneNoCells

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_spatialPlaneNoCells = -1
protected

Definition at line 404 of file postprocessing.h.

◆ m_spatialRecvcnts

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_spatialRecvcnts = nullptr
protected

Definition at line 384 of file postprocessing.h.

◆ m_spatialVarsDispls

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_spatialVarsDispls = nullptr
protected

Definition at line 383 of file postprocessing.h.

◆ m_spatialVarsRecvcnts

template<MInt nDim, class ppType >
MInt* PostProcessing< nDim, ppType >::m_spatialVarsRecvcnts = nullptr
protected

Definition at line 385 of file postprocessing.h.

◆ m_spatialWeightSinglePoint

template<MInt nDim, class ppType >
MFloat PostProcessing< nDim, ppType >::m_spatialWeightSinglePoint {}
protected

Definition at line 380 of file postprocessing.h.

◆ m_sprayComputeInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_sprayComputeInterval = 50
protected

Definition at line 559 of file postprocessing.h.

◆ m_sprayDataSize

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_sprayDataSize = 50
protected

Definition at line 561 of file postprocessing.h.

◆ m_sprayDataStep

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_sprayDataStep = 0
protected

Definition at line 562 of file postprocessing.h.

◆ m_sprayStat

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_sprayStat = nullptr
protected

Definition at line 566 of file postprocessing.h.

◆ m_sprayTimes

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_sprayTimes = nullptr
protected

Definition at line 567 of file postprocessing.h.

◆ m_sprayWriteInterval

template<MInt nDim, class ppType >
MInt PostProcessing< nDim, ppType >::m_sprayWriteInterval = 50
protected

Definition at line 560 of file postprocessing.h.

◆ m_square

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_square = false
protected

Definition at line 328 of file postprocessing.h.

◆ m_statisticCombustionAnalysis

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_statisticCombustionAnalysis {}

Definition at line 292 of file postprocessing.h.

◆ m_twoPass

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_twoPass = false
protected

Definition at line 333 of file postprocessing.h.

◆ m_useKahan

template<MInt nDim, class ppType >
MBool PostProcessing< nDim, ppType >::m_useKahan {}
protected

Definition at line 337 of file postprocessing.h.

◆ m_vapourCV

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_vapourCV = nullptr
protected

Definition at line 570 of file postprocessing.h.

◆ m_vapourPen

template<MInt nDim, class ppType >
MFloat** PostProcessing< nDim, ppType >::m_vapourPen = nullptr
protected

Definition at line 571 of file postprocessing.h.

◆ pp

template<MInt nDim, class ppType >
ppType* PostProcessing< nDim, ppType >::pp = static_cast<ppType*>(this)
private

Definition at line 300 of file postprocessing.h.

◆ s_sourceTermNames

template<MInt nDim, class ppType >
std::array<MString, ST::totalNoSourceTerms> PostProcessing< nDim, ppType >::s_sourceTermNames
protected
Initial value:
= {
{"q_mI", "q_mI_linear", "q_mII", "q_mIII", "q_mIV", "q_c", "q_e"}}

Definition at line 596 of file postprocessing.h.


The documentation for this class was generated from the following files: