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

#include <postprocessingfvlpt.h>

Inheritance diagram for PostProcessingFvLPT< nDim, SysEqn >:
[legend]
Collaboration diagram for PostProcessingFvLPT< nDim, SysEqn >:
[legend]

Public Types

using lptSolver = LPT< nDim >
 
using fv = FvCartesianSolverXD< nDim, SysEqn >
 
using BaseFv = PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >
 
using BaseLpt = PostProcessing< nDim, PostProcessingLPT< nDim > >
 
using ppFv = PostProcessingFv< nDim, SysEqn >
 
using ppLpt = PostProcessingLPT< nDim >
 
- Public Types inherited from PostProcessingLPT< nDim >
using SolverType = LPT< nDim >
 
using Base = PostProcessing< nDim, PostProcessingLPT< nDim > >
 
- Public Types inherited from PostProcessing< nDim, PostProcessingLPT< nDim > >
using PPGrid = CartesianGrid< nDim >
 
using Cell = typename PPGrid::Cell
 
using GridProxy = typename maia::grid::Proxy< nDim >
 
using Data = PostData< nDim >
 

Public Member Functions

 PostProcessingFvLPT (MInt postprocessingId_, PostData< nDim > *data, fv *ppFvSolver_, lptSolver *ppLptSolver_)
 
virtual ~PostProcessingFvLPT ()
 
SolvermSolver () const override
 
void initPostProcessing () override
 
void postprocessPreSolve () override
 
void postprocessPostSolve () override
 
void postprocessInSolve (const MBool finalTimeStep) override
 
void postprocessSolution () override
 
void initSprayData () override
 
- Public Member Functions inherited from PostProcessingLPT< nDim >
 PostProcessingLPT (MInt postprocessingId_, PostData< nDim > *data, SolverType *ppSolver_)
 
virtual ~PostProcessingLPT ()
 
SolverTypesolver () const
 
void initSprayData () override
 init arrays More...
 
- Public Member Functions inherited from PostProcessing< nDim, PostProcessingLPT< nDim > >
 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
 

Static Public Attributes

static MString s_ppType
 

Protected Member Functions

void computeSprayData () override
 base function which is called every time-Step in postprocessInSolve More...
 
void writeSprayData () override
 
void initLPTSolutionFile () override
 
void writeLPTSolutionFile () override
 
- Protected Member Functions inherited from PostProcessingLPT< nDim >
void initLPTSolutionFile () override
 init function for LPT particle solution file More...
 
void writeLPTSolutionFile () override
 base function which is called every time-Step in postprocessInSolve More...
 
void initParticleStatistics () override
 init function for LPT particle statistics file More...
 
void computeParticleStatistics () override
 compute average quantites of particle phase average particle Reynolds number ReP the root mean square particle velocity vrms the total kinetic energy of the particles More...
 
void initParticleLog ()
 initialize particle.log More...
 
void writeParticleLog ()
 write particle Log file, containing particle position and velocity at timestep t More...
 
void particleMass ()
 computes conervation variables (mass/momentum/energy!) More...
 
void parcelStatistics ()
 computes parcel statistics More...
 
void particlePenetration ()
 calculate vertical and horizontal penetration from given coordinate More...
 
MInt getInjectionData ()
 
void advanceDataStep ()
 
void resetDataStep ()
 
- Protected Member Functions inherited from PostProcessing< nDim, PostProcessingLPT< nDim > >
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 ()
 
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 ()
 

Private Member Functions

lptSolverlpt () const
 
fvfvSolver () const
 
void updateData ()
 updates all post-processing data from postprocessing-fv or postprocessing-lpt More...
 
void advanceDataStep ()
 
void resetDataStep ()
 
- Private Member Functions inherited from PostProcessingFv< nDim, SysEqn >
 PostProcessingFv (MInt postprocessingId_, PostData< nDim > *data, SolverType *ppSolver_)
 
virtual ~PostProcessingFv ()
 
void initPostProcessing () override
 
SolverTypesolver () const
 
void probeLinePeriodicPost () override
 
void probeLinePeriodic () override
 
void initMovingAverage () override
 Initializes properties and allocates memory for moving averaging. More...
 
void initAveragingProperties () override
 Initialize properties relevant for temporal averaging. More...
 
void initPointSamplingData () override
 
void savePointSamplingData () override
 
void initSurfaceSamplingData () override
 
void saveSurfaceSamplingData () override
 
void initVolumeSamplingData () override
 
void saveVolumeSamplingData () override
 
void initSprayData () override
 
void calcVorticity (const MFloatTensor &deriv, MFloat vorticity[nDim *2 - 3]) override
 
void getVorticity (MFloat *const vorticity) override
 
void getVorticityT (MFloat *const vorticity) override
 
void getSampleVarsDerivatives (MInt cellId, const MFloat *&vars)
 
MBool getSampleVarsDerivatives (const MInt cellId, std::vector< MFloat > &vars)
 
MFloatvorticityAtCell (const MInt cellId, const MInt dir) override
 
void getPrimitiveVariables (MInt cellId, MFloat *Xp, MFloat *vars, MInt order) override
 
void computeAcousticSourceTermQe (MFloatScratchSpace &QeI, MFloatScratchSpace &QeIII, MFloatScratchSpace &cSquared, MFloatScratchSpace &drhodt) override
 
void getPrimitiveVarNames (MString *names) const override
 
MFloat getBoundaryHeatFlux (const MInt cellId) const override
 
void vapourPenetration (MFloat spawnCoord[nDim])
 
void vapourMass (const MInt)
 
void advanceDataStep ()
 
void resetDataStep ()
 
- Private Member Functions inherited from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >
 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
 
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 ()
 
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 ()
 
- Private 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
 

Private Attributes

lptSolverm_ppSolverLpt
 
fvm_ppSolverFv
 
MInt m_fvLPTSpeciesId = 0
 
MInt m_sprayDataStep = 0
 
MFloat ** m_cInjData
 
- Private Attributes inherited from PostProcessingFv< nDim, SysEqn >
std::unique_ptr< PointData< nDim, SolverType > > m_pointData
 
std::unique_ptr< SurfaceData< nDim, SolverType > > m_surfaceData
 
std::unique_ptr< VolumeData< nDim, SolverType > > m_volumeData
 
- Private Attributes inherited from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >
MInt m_noLocalVars
 
MInt m_restartTimeStep
 
MBool m_statisticCombustionAnalysis
 
MBool m_acousticAnalysis
 
MInt m_noPostprocessingOps
 
MStringm_postprocessingOps
 
tvecpost m_postprocessingSolution
 
std::vector< tvecpostm_postprocessingMethods
 
std::vector< std::vector< MString > > m_postprocessingMethodsDesc
 
Datam_postData
 
MInt m_noVariables
 
MBool m_square
 
MBool m_skewness
 
MBool m_kurtosis
 
MBool m_computeAndSaveMean
 
MBool m_twoPass
 
MBool m_useKahan
 
MBool m_correlation
 
std::vector< MInt > * m_cell2globalIndex
 
MIntm_noPeriodicSliceCells
 
MFloat ** m_sliceAverage
 
MInt m_globalnoSlicePositions
 
std::multimap< MFloat, MFloatm_sliceGlobalPositions
 
MBool m_averageVorticity
 
MBool m_averageSpeedOfSound
 
MFloat m_gamma
 
MInt m_movingAverageStartTimestep
 
MInt m_movingAverageStopTimestep
 
MInt m_movingAverageInterval
 
MInt m_movingAverageDataPoints
 
MInt m_movingAverageCounter
 
MFloat ** m_movAvgVariables
 
MInt m_movAvgNoVariables
 
MStringm_movAvgVarNames
 
MInt m_spatialDirection1
 
MInt m_spatialDirection2
 
MFloat m_spatialWeightSinglePoint
 
MFloat m_spatialLvlWeight [20]
 
MIntm_spatialDispls
 
MIntm_spatialVarsDispls
 
MIntm_spatialRecvcnts
 
MIntm_spatialVarsRecvcnts
 
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
 
MFloatm_spatialLineAllVars
 
MFloatm_spatialLineAllCoord
 
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
 
MFloatm_spatialPlaneAllVars
 
MFloatm_spatialPlaneAllCoord
 
MInt m_noProbeLines
 
MIntm_probeLineDirection
 
MIntm_probeLinePeriodic
 
MFloat ** m_probeLineCoordinates
 
MInt ** m_probeLineIds
 
MIntm_noProbeLineIds
 
MFloat ** m_probeLinePositions
 
MIntm_globalNoProbeLineIds
 
MIntm_probeLineOffsets
 
MInt ** m_noGlobalProbeLineIds
 
MInt m_probeLineInterval
 
MInt m_probeLineStartTimestep
 
MInt m_probeLineStopTimestep
 
MIntm_correlationDirection
 
MIntm_correlationVariableIndex
 
MFloat ** m_correlationCoordinates
 
MInt m_noCorrelationLines
 
MIntm_noCorrelationIds
 
MInt ** m_correlationIds
 
MInt ** m_globalCorrelationIds
 
MFloat ** m_globalCorrelationPositions
 
MIntm_globalNoCorrelationIds
 
MFloat ** m_correlationPositions
 
MInt ** m_correlationIndexMapping
 
MFloat ** m_correlationExchangeVar
 
MFloat ** m_correlationExchangeVarMean
 
MFloat ** m_correlationExchangeVarRMS
 
MFloat ** m_globalCorrelationExchangeVar
 
MFloat ** m_globalCorrelationExchangeVarMean
 
MFloat ** m_globalCorrelationExchangeVarRMS
 
MIntm_probeLineAverageDirection
 
MFloat ** m_probeLineAverageCoordinates
 
MInt ** m_probeLineAverageCoordinatesSign
 
MInt ** m_noProbeLineAverageIds
 
MFloat *** m_globalProbeLineAverageVars
 
MInt m_noProbeLineAverageSteps
 
MInt ** m_globalNoProbeLineAverageIds
 
MInt *** m_probeLineAverageIds
 
MFloat *** m_probeLineAveragePositions
 
MInt m_noProbeSlices
 
MIntm_probeSliceDir
 
MFloatm_probeSliceCoordinate
 
MInt ** m_probeSliceIds
 
MIntm_noProbeSliceIds
 
MFloat ** m_probeSlicePositions
 
MIntm_globalNoProbeSliceIds
 
MIntm_probeSliceOffsets
 
MInt ** m_noGlobalProbeSliceIds
 
MStringm_probeSliceGridNames
 
MStringm_sliceAxis
 
MFloatm_sliceIntercept
 
MBool m_sliceAiaFileFormat
 
MBool m_optimizedSliceIo
 
MIntm_noProbeSliceNoHilbertIds
 
MIntm_noProbeSliceMaxNoHilbertIds
 
MInt ** m_noProbeSliceHilbertInfo
 
MIntm_noProbeSliceNoContHilbertIds
 
MIntm_noProbeSliceMaxNoContHilbertIds
 
MInt ** m_noProbeSliceContHilbertInfo
 
MInt m_probeSliceInterval
 
MInt m_probeSliceStartTimestep
 
MInt m_probeSliceStopTimestep
 
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
 
MInt m_movePointsToGrid
 
MBool m_spatialAveraging
 
MFloatm_arbLinePoints
 
MInt m_noArbLines
 
MIntm_noArbLineIds
 
MFloatm_arbLinePointsDistribution
 
MIntm_arbLineHasNewDistribution
 
MIntm_arbLineFull
 
MIntm_moveLinePointsToGrid
 
MIntm_globalNoArbLineIds
 
MInt ** m_arbLineIds
 
MIntm_arbLineOffsets
 
MFloat ** m_arbLineCoordinates
 
MFloatm_arbSlicePoints
 
MInt m_noArbSlices
 
MIntm_noArbSlicePoints
 
MFloatm_arbSlicePointsDistribution
 
MIntm_globalNoArbSlicePoints
 
MInt ** m_arbSliceIds
 
MIntm_arbSliceOffsets
 
MFloat ** m_arbSliceCoordinates
 
MString m_postprocessFileName
 
MFloat ** m_localVars
 
MBool m_averageRestart
 
MInt m_averageInterval
 
MInt m_averageStartTimestep
 
MInt m_averageStopTimestep
 
MInt m_noAveragedVorticities
 
MInt m_noSpeedOfSoundVars
 
MInt m_noSourceVars
 
MBool m_needVorticity
 
MString m_ReStressesAverageFileName
 
MFloat ** m_probeCoordinates
 
MString m_probePath
 
MIntm_probeCellIds
 
std::ofstream * m_probeFileStreams
 
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
 
MInt m_sprayWriteInterval
 
MInt m_sprayDataSize
 
MInt m_sprayDataStep
 
MFloat ** m_particleCV
 
MFloat ** m_particlePen
 
MFloat ** m_sprayStat
 
MFloat ** m_sprayTimes
 
MFloat ** m_injectionData
 
MFloat ** m_vapourCV
 
MFloat ** m_vapourPen
 
MInt m_LPTSolutionInterval
 
MBool m_forceOutput
 
std::vector< MIntm_activeSourceTerms
 
std::array< MString, ST::totalNoSourceTermss_sourceTermNames
 
std::set< MIntm_activeMeanVars
 
- Private Attributes inherited from PostProcessingInterface
MBool m_finalTimeStep = false
 
MInt m_postprocessingId
 

Friends

template<MInt nDim_, class ppType >
class PostProcessing
 
template<MInt nDim_>
class LPT
 

Additional Inherited Members

- Public Attributes inherited from PostProcessing< nDim, PostProcessingLPT< nDim > >
MInt m_noLocalVars
 
MInt m_restartTimeStep
 
MBool m_statisticCombustionAnalysis
 
MBool m_acousticAnalysis
 
- Public Attributes inherited from PostProcessingInterface
MBool m_finalTimeStep = false
 
- Protected Types inherited from PostProcessing< nDim, PostProcessingLPT< nDim > >
typedef void(PostProcessing::* tpost) ()
 
typedef std::vector< tposttvecpost
 
- Protected Attributes inherited from PostProcessingLPT< nDim >
SolverTypem_ppSolver
 
MFloat ** m_cInjData = nullptr
 
MFloat m_AvgRe_p = F0
 
MFloat m_VpRMS = F0
 
MFloat m_EkinP = F0
 
MBool m_writeParLog = false
 
MInt m_parLogInterval = 50
 
MBool m_parLogApp = false
 
- Protected Attributes inherited from PostProcessing< nDim, PostProcessingLPT< nDim > >
MInt m_noPostprocessingOps
 
MStringm_postprocessingOps
 
tvecpost m_postprocessingSolution
 
std::vector< tvecpostm_postprocessingMethods
 
std::vector< std::vector< MString > > m_postprocessingMethodsDesc
 
Datam_postData
 
MInt m_noVariables
 
MBool m_square
 
MBool m_skewness
 
MBool m_kurtosis
 
MBool m_computeAndSaveMean
 
MBool m_twoPass
 
MBool m_useKahan
 
MBool m_correlation
 
std::vector< MInt > * m_cell2globalIndex
 
MIntm_noPeriodicSliceCells
 
MFloat ** m_sliceAverage
 
MInt m_globalnoSlicePositions
 
std::multimap< MFloat, MFloatm_sliceGlobalPositions
 
MBool m_averageVorticity
 
MBool m_averageSpeedOfSound
 
MFloat m_gamma
 
MInt m_movingAverageStartTimestep
 
MInt m_movingAverageStopTimestep
 
MInt m_movingAverageInterval
 
MInt m_movingAverageDataPoints
 
MInt m_movingAverageCounter
 
MFloat ** m_movAvgVariables
 
MInt m_movAvgNoVariables
 
MStringm_movAvgVarNames
 
MInt m_spatialDirection1
 
MInt m_spatialDirection2
 
MFloat m_spatialWeightSinglePoint
 
MFloat m_spatialLvlWeight [20]
 
MIntm_spatialDispls
 
MIntm_spatialVarsDispls
 
MIntm_spatialRecvcnts
 
MIntm_spatialVarsRecvcnts
 
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
 
MFloatm_spatialLineAllVars
 
MFloatm_spatialLineAllCoord
 
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
 
MFloatm_spatialPlaneAllVars
 
MFloatm_spatialPlaneAllCoord
 
MInt m_noProbeLines
 
MIntm_probeLineDirection
 
MIntm_probeLinePeriodic
 
MFloat ** m_probeLineCoordinates
 
MInt ** m_probeLineIds
 
MIntm_noProbeLineIds
 
MFloat ** m_probeLinePositions
 
MIntm_globalNoProbeLineIds
 
MIntm_probeLineOffsets
 
MInt ** m_noGlobalProbeLineIds
 
MInt m_probeLineInterval
 
MInt m_probeLineStartTimestep
 
MInt m_probeLineStopTimestep
 
MIntm_correlationDirection
 
MIntm_correlationVariableIndex
 
MFloat ** m_correlationCoordinates
 
MInt m_noCorrelationLines
 
MIntm_noCorrelationIds
 
MInt ** m_correlationIds
 
MInt ** m_globalCorrelationIds
 
MFloat ** m_globalCorrelationPositions
 
MIntm_globalNoCorrelationIds
 
MFloat ** m_correlationPositions
 
MInt ** m_correlationIndexMapping
 
MFloat ** m_correlationExchangeVar
 
MFloat ** m_correlationExchangeVarMean
 
MFloat ** m_correlationExchangeVarRMS
 
MFloat ** m_globalCorrelationExchangeVar
 
MFloat ** m_globalCorrelationExchangeVarMean
 
MFloat ** m_globalCorrelationExchangeVarRMS
 
MIntm_probeLineAverageDirection
 
MFloat ** m_probeLineAverageCoordinates
 
MInt ** m_probeLineAverageCoordinatesSign
 
MInt ** m_noProbeLineAverageIds
 
MFloat *** m_globalProbeLineAverageVars
 
MInt m_noProbeLineAverageSteps
 
MInt ** m_globalNoProbeLineAverageIds
 
MInt *** m_probeLineAverageIds
 
MFloat *** m_probeLineAveragePositions
 
MInt m_noProbeSlices
 
MIntm_probeSliceDir
 
MFloatm_probeSliceCoordinate
 
MInt ** m_probeSliceIds
 
MIntm_noProbeSliceIds
 
MFloat ** m_probeSlicePositions
 
MIntm_globalNoProbeSliceIds
 
MIntm_probeSliceOffsets
 
MInt ** m_noGlobalProbeSliceIds
 
MStringm_probeSliceGridNames
 
MStringm_sliceAxis
 
MFloatm_sliceIntercept
 
MBool m_sliceAiaFileFormat
 
MBool m_optimizedSliceIo
 
MIntm_noProbeSliceNoHilbertIds
 
MIntm_noProbeSliceMaxNoHilbertIds
 
MInt ** m_noProbeSliceHilbertInfo
 
MIntm_noProbeSliceNoContHilbertIds
 
MIntm_noProbeSliceMaxNoContHilbertIds
 
MInt ** m_noProbeSliceContHilbertInfo
 
MInt m_probeSliceInterval
 
MInt m_probeSliceStartTimestep
 
MInt m_probeSliceStopTimestep
 
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
 
MInt m_movePointsToGrid
 
MBool m_spatialAveraging
 
MFloatm_arbLinePoints
 
MInt m_noArbLines
 
MIntm_noArbLineIds
 
MFloatm_arbLinePointsDistribution
 
MIntm_arbLineHasNewDistribution
 
MIntm_arbLineFull
 
MIntm_moveLinePointsToGrid
 
MIntm_globalNoArbLineIds
 
MInt ** m_arbLineIds
 
MIntm_arbLineOffsets
 
MFloat ** m_arbLineCoordinates
 
MFloatm_arbSlicePoints
 
MInt m_noArbSlices
 
MIntm_noArbSlicePoints
 
MFloatm_arbSlicePointsDistribution
 
MIntm_globalNoArbSlicePoints
 
MInt ** m_arbSliceIds
 
MIntm_arbSliceOffsets
 
MFloat ** m_arbSliceCoordinates
 
MString m_postprocessFileName
 
MFloat ** m_localVars
 
MBool m_averageRestart
 
MInt m_averageInterval
 
MInt m_averageStartTimestep
 
MInt m_averageStopTimestep
 
MInt m_noAveragedVorticities
 
MInt m_noSpeedOfSoundVars
 
MInt m_noSourceVars
 
MBool m_needVorticity
 
MString m_ReStressesAverageFileName
 
MFloat ** m_probeCoordinates
 
MString m_probePath
 
MIntm_probeCellIds
 
std::ofstream * m_probeFileStreams
 
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
 
MInt m_sprayWriteInterval
 
MInt m_sprayDataSize
 
MInt m_sprayDataStep
 
MFloat ** m_particleCV
 
MFloat ** m_particlePen
 
MFloat ** m_sprayStat
 
MFloat ** m_sprayTimes
 
MFloat ** m_injectionData
 
MFloat ** m_vapourCV
 
MFloat ** m_vapourPen
 
MInt m_LPTSolutionInterval
 
MBool m_forceOutput
 
std::vector< MIntm_activeSourceTerms
 
std::array< MString, ST::totalNoSourceTermss_sourceTermNames
 
std::set< MIntm_activeMeanVars
 
- Protected Attributes inherited from PostProcessingInterface
MInt m_postprocessingId
 
- Private Types inherited from PostProcessingFv< nDim, SysEqn >
using SolverType = FvCartesianSolverXD< nDim, SysEqn >
 
using Base = PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >
 
- Private Types inherited from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >
using PPGrid = CartesianGrid< nDim >
 
using Cell = typename PPGrid::Cell
 
using GridProxy = typename maia::grid::Proxy< nDim >
 
using Data = PostData< nDim >
 
typedef void(PostProcessing::* tpost) ()
 
typedef std::vector< tposttvecpost
 

Detailed Description

template<MInt nDim, class SysEqn>
class PostProcessingFvLPT< nDim, SysEqn >

Definition at line 26 of file postprocessingfvlpt.h.

Member Typedef Documentation

◆ BaseFv

template<MInt nDim, class SysEqn >
using PostProcessingFvLPT< nDim, SysEqn >::BaseFv = PostProcessing<nDim, PostProcessingFv<nDim, SysEqn> >

Definition at line 36 of file postprocessingfvlpt.h.

◆ BaseLpt

template<MInt nDim, class SysEqn >
using PostProcessingFvLPT< nDim, SysEqn >::BaseLpt = PostProcessing<nDim, PostProcessingLPT<nDim> >

Definition at line 37 of file postprocessingfvlpt.h.

◆ fv

template<MInt nDim, class SysEqn >
using PostProcessingFvLPT< nDim, SysEqn >::fv = FvCartesianSolverXD<nDim, SysEqn>

Definition at line 35 of file postprocessingfvlpt.h.

◆ lptSolver

template<MInt nDim, class SysEqn >
using PostProcessingFvLPT< nDim, SysEqn >::lptSolver = LPT<nDim>

Definition at line 34 of file postprocessingfvlpt.h.

◆ ppFv

template<MInt nDim, class SysEqn >
using PostProcessingFvLPT< nDim, SysEqn >::ppFv = PostProcessingFv<nDim, SysEqn>

Definition at line 38 of file postprocessingfvlpt.h.

◆ ppLpt

template<MInt nDim, class SysEqn >
using PostProcessingFvLPT< nDim, SysEqn >::ppLpt = PostProcessingLPT<nDim>

Definition at line 39 of file postprocessingfvlpt.h.

Constructor & Destructor Documentation

◆ PostProcessingFvLPT()

template<MInt nDim, class SysEqn >
PostProcessingFvLPT< nDim, SysEqn >::PostProcessingFvLPT ( MInt  postprocessingId_,
PostData< nDim > *  data,
fv ppFvSolver_,
lptSolver ppLptSolver_ 
)

Definition at line 16 of file postprocessingfvlpt.cpp.

20 : PostProcessingInterface(postprocessingId_),
21 PostProcessingLPT<nDim>(postprocessingId_, data, ppLptSolver_),
22 PostProcessingFv<nDim, SysEqn>(postprocessingId_, data, ppFvSolver_) {
23 m_ppSolverLpt = ppLptSolver_;
24 m_ppSolverFv = ppFvSolver_;
25
27 m_fvLPTSpeciesId = Context::getSolverProperty<MInt>("fvLptSpeciesId", lpt().solverId(), AT_, &m_fvLPTSpeciesId);
28}
fv * m_ppSolverFv
lptSolver * m_ppSolverLpt
lptSolver & lpt() const
MInt m_fvLPTSpeciesId

◆ ~PostProcessingFvLPT()

template<MInt nDim, class SysEqn >
virtual PostProcessingFvLPT< nDim, SysEqn >::~PostProcessingFvLPT ( )
inlinevirtual

Definition at line 44 of file postprocessingfvlpt.h.

44{};

Member Function Documentation

◆ advanceDataStep()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::advanceDataStep ( )
inlineprivate

Definition at line 98 of file postprocessingfvlpt.h.

◆ computeSprayData()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::computeSprayData
overrideprotectedvirtual
Author
Tim Wegmann
Date
Jan. 2021

Reimplemented from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >.

Definition at line 37 of file postprocessingfvlpt.cpp.

37 {
38 TRACE();
39
40
41 if(globalTimeStep % this->m_sprayComputeInterval == 0) {
42 updateData();
44 }
45
46
47 if(globalTimeStep % this->m_sprayWriteInterval == 0) {
50 }
51}
void writeSprayData() override
void resetDataStep()
void advanceDataStep()
void updateData()
updates all post-processing data from postprocessing-fv or postprocessing-lpt
MInt m_sprayWriteInterval
MInt m_sprayComputeInterval
MInt globalTimeStep

◆ fvSolver()

template<MInt nDim, class SysEqn >
fv & PostProcessingFvLPT< nDim, SysEqn >::fvSolver ( ) const
inlineprivate

Definition at line 74 of file postprocessingfvlpt.h.

74{ return *m_ppSolverFv; }

◆ initLPTSolutionFile()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::initLPTSolutionFile ( )
inlineoverrideprotectedvirtual

Reimplemented from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >.

Definition at line 66 of file postprocessingfvlpt.h.

void initLPTSolutionFile() override
init function for LPT particle solution file

◆ initPostProcessing()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::initPostProcessing ( )
inlineoverridevirtual

Reimplemented from PostProcessingFv< nDim, SysEqn >.

Definition at line 51 of file postprocessingfvlpt.h.

void initPostProcessing() override
Reads all required properties in and prepares for postprocessing.

◆ initSprayData()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::initSprayData ( )
inlineoverridevirtual

Reimplemented from PostProcessingFv< nDim, SysEqn >.

Definition at line 58 of file postprocessingfvlpt.h.

58 {
61 }
void initSprayData() override
void initSprayData() override
init arrays

◆ lpt()

template<MInt nDim, class SysEqn >
lptSolver & PostProcessingFvLPT< nDim, SysEqn >::lpt ( ) const
inlineprivate

Definition at line 73 of file postprocessingfvlpt.h.

73{ return *m_ppSolverLpt; }

◆ mSolver()

template<MInt nDim, class SysEqn >
Solver * PostProcessingFvLPT< nDim, SysEqn >::mSolver ( ) const
inlineoverridevirtual

Implements PostProcessingInterface.

Definition at line 46 of file postprocessingfvlpt.h.

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

◆ postprocessInSolve()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::postprocessInSolve ( const MBool  finalTimeStep)
inlineoverridevirtual

Implements PostProcessingInterface.

Definition at line 54 of file postprocessingfvlpt.h.

54{ BaseFv::postprocessInSolve(finalTimeStep); };
void postprocessInSolve(MBool finalTimeStep) override

◆ postprocessPostSolve()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::postprocessPostSolve ( )
inlineoverridevirtual

◆ postprocessPreSolve()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::postprocessPreSolve ( )
inlineoverridevirtual

◆ postprocessSolution()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::postprocessSolution ( )
inlineoverridevirtual

◆ resetDataStep()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::resetDataStep ( )
inlineprivate

Definition at line 103 of file postprocessingfvlpt.h.

◆ updateData()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::updateData
private
Author
Tim Wegmann
Date
Jan. 2021

Definition at line 60 of file postprocessingfvlpt.cpp.

60 {
61 TRACE();
62
63
66 m_sprayTimes[m_sprayDataStep][2] = fvSolver().crankAngle(fvSolver().physicalTime(), 0);
67
69 if(lpt().isActive()) {
70 lpt().startLoadTimer(AT_);
71 this->particleMass();
72 this->particlePenetration();
73 this->parcelStatistics();
74 lpt().stopLoadTimer(AT_);
75 }
76
78
79 if(fvSolver().isActive()) {
81 this->vapourPenetration(lpt().m_spawnCoord);
82 }
83}
MFloat crankAngle(const MFloat, const MInt)
help-function for engine calculations which returns the crank-angle for a given time mode = 0: return...
void vapourPenetration(MFloat spawnCoord[nDim])
void vapourMass(const MInt)
fv & fvSolver() const
MBool isActive() const
MFloat ** m_sprayTimes
void parcelStatistics()
computes parcel statistics
void particleMass()
computes conervation variables (mass/momentum/energy!)
void particlePenetration()
calculate vertical and horizontal penetration from given coordinate
void startLoadTimer(const MString name)
Definition: solver.h:293
void stopLoadTimer(const MString &name)
Definition: solver.h:295

◆ writeLPTSolutionFile()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::writeLPTSolutionFile ( )
inlineoverrideprotectedvirtual

Reimplemented from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >.

Definition at line 67 of file postprocessingfvlpt.h.

void writeLPTSolutionFile() override
base function which is called every time-Step in postprocessInSolve

◆ writeSprayData()

template<MInt nDim, class SysEqn >
void PostProcessingFvLPT< nDim, SysEqn >::writeSprayData
overrideprotectedvirtual

Reimplemented from PostProcessing< nDim, PostProcessingFv< nDim, SysEqn > >.

Definition at line 86 of file postprocessingfvlpt.cpp.

86 {
87 TRACE();
88
89 static MBool firstTime = true;
90
91 if(this->m_finalTimeStep && fvSolver().domainId() == 0) {
92 cerr << "Writing final postProcessing Data" << endl;
93 }
94
95 if(firstTime && fvSolver().domainId() == 0) {
96 cerr0 << "Writing first postProcessing Data" << endl;
97 }
98
100
101 const MBool timerEnabled = fvSolver().dlbTimersEnabled();
102
103 if(timerEnabled) {
105 }
106
107 const MBool hasInjection = lpt().m_sprayModel != nullptr ? true : false;
108 MInt injDataSize = this->getInjectionData();
109 MPI_Allreduce(MPI_IN_PLACE, &injDataSize, 1, MPI_INT, MPI_MAX, fvSolver().mpiComm(), AT_, "INPLACE", "injDataSize");
110 const MInt dataSize = (this->m_finalTimeStep || firstTime) ? m_sprayDataStep : m_sprayDataSize;
111 const MInt vapourPenSize = nDim == 3 ? 16 : 12;
112
113 // rank with injector writes data
114 const MInt injectorCellId = lpt().isActive() ? lpt().injectorCellId() : -1;
115
116 if(hasInjection && injDataSize != dataSize) {
117 cerr0 << "Spray-PP data differs: " << injDataSize << " inj-Size " << dataSize << " sprayData-Size" << endl;
118 }
119
120 if(dataSize > 0) {
121 // exchange data:
122 MPI_Allreduce(MPI_IN_PLACE, &m_particleCV[0][0], m_sprayDataSize * (2 + nDim), MPI_DOUBLE, MPI_SUM,
123 fvSolver().mpiComm(), AT_, "INPLACE", "m_particleCV");
124
125 MPI_Allreduce(MPI_IN_PLACE, &m_sprayStat[0][0], m_sprayDataSize * 5, MPI_DOUBLE, MPI_SUM, fvSolver().mpiComm(), AT_,
126 "INPLACE", "m_sprayStat");
127
128 MPI_Allreduce(MPI_IN_PLACE, &m_particlePen[0][0], m_sprayDataSize * 19, MPI_DOUBLE, MPI_MAX, fvSolver().mpiComm(),
129 AT_, "INPLACE", "m_particlePen");
130
131 MPI_Allreduce(MPI_IN_PLACE, &m_vapourCV[0][0], m_sprayDataSize * (5 + 2 * nDim), MPI_DOUBLE, MPI_SUM,
132 fvSolver().mpiComm(), AT_, "INPLACE", "m_vapourCV");
133
134 MPI_Allreduce(MPI_IN_PLACE, &m_vapourPen[0][0], m_sprayDataSize * vapourPenSize, MPI_DOUBLE, MPI_MAX,
135 fvSolver().mpiComm(), AT_, "INPLACE", "m_vapourPen");
136 }
137
138 if(injectorCellId >= 0) {
139
140 ofstream ofl;
141
142 // backup a few older files
143 if(firstTime) {
144 // file with conservation variables
145 MString fileNameCheck = lpt().outputDir() + "sprayCons";
146 if(fileExists(fileNameCheck)) {
147 const MString fileName = lpt().outputDir() + "sprayCons_" + to_string(lpt().m_restartTimeStep);
148 if(!fileExists(fileName)) copyFile(fileNameCheck, fileName);
149 }
150 if(!lpt().m_restartFile) {
151 ofl.open(fileNameCheck, ios_base::out | ios_base::trunc);
152 ofl << "#0:ts 1:time 2:CAD 3:pMass 4:pEnergy 5-7:pMomentum 8:vMass 9:aMass 10:gMass 11:gEnergy 12:gMomX "
153 "13:gMomY 14:gMomZ";
154 ofl << endl;
155 ofl.close();
156 }
157
158 // file with liquid penetration lengths
159 fileNameCheck = lpt().outputDir() + "liquidPen";
160 if(fileExists(fileNameCheck)) {
161 const MString fileName = lpt().outputDir() + "liquidPen_" + to_string(lpt().m_restartTimeStep);
162 if(!fileExists(fileName)) copyFile(fileNameCheck, fileName);
163 }
164 if(!lpt().m_restartFile) {
165 ofl.open(fileNameCheck, ios_base::out | ios_base::trunc);
166 ofl << "#0:ts 1:time 2:CAD 3-5:liquidPen"
167 "6-8:liquidWidth";
168 ofl << endl;
169 ofl.close();
170 }
171
172 // file with vapour penetration lengths
173 fileNameCheck = lpt().outputDir() + "vapourPen";
174 if(fileExists(fileNameCheck)) {
175 const MString fileName = lpt().outputDir() + "vapourPen_" + to_string(lpt().m_restartTimeStep);
176 if(!fileExists(fileName)) copyFile(fileNameCheck, fileName);
177 }
178 if(!lpt().m_restartFile) {
179 ofl.open(fileNameCheck, ios_base::out | ios_base::trunc);
180 ofl << "#0:ts 1:time 2:CAD 3-5:v01Pen 6-8:v1Pen 9-11:v5Pen";
181 ofl << endl;
182 ofl.close();
183 }
184
185 // file with spray statistics
186 fileNameCheck = lpt().outputDir() + "sprayStats";
187 if(fileExists(fileNameCheck)) {
188 const MString fileName = lpt().outputDir() + "sprayStats_" + to_string(lpt().m_restartTimeStep);
189 if(!fileExists(fileName)) copyFile(fileNameCheck, fileName);
190 }
191
192 if(!lpt().m_restartFile) {
193 ofl.open(fileNameCheck, ios_base::out | ios_base::trunc);
194 ofl << "#0:ts 1:time 2:CAD 3:noParcles 4:noDroplets 5:SMS 6:avgDiameter";
195 ofl << endl;
196 ofl.close();
197 }
198
199 // file with injection statistics
200 if(hasInjection) {
201 fileNameCheck = lpt().outputDir() + "injStats";
202 if(fileExists(fileNameCheck)) {
203 const MString fileName = lpt().outputDir() + "injStats_" + to_string(lpt().m_restartTimeStep);
204 if(!fileExists(fileName)) copyFile(fileNameCheck, fileName);
205 }
206 if(!lpt().m_restartFile) {
207 ofl.open(fileNameCheck, ios_base::out | ios_base::trunc);
208 ofl << "#0:ts 1:timeSinceSOI 2:injProgress 3:rampFactor 4:noInjPart 5:noInjDrop 6:injDiameter 7:injMass "
209 "8:injXMom 9:injYMom 10:injZMom 11:injEnergy";
210 ofl << endl;
211 ofl.close();
212 }
213
214 // file with sum of conservative variables from injection
215 fileNameCheck = lpt().outputDir() + "injSums";
216 if(fileExists(fileNameCheck)) {
217 const MString fileName = lpt().outputDir() + "injSums_" + to_string(lpt().m_restartTimeStep);
218 if(!fileExists(fileName)) copyFile(fileNameCheck, fileName);
219 }
220 if(!lpt().m_restartFile) {
221 ofl.open(fileNameCheck, ios_base::out | ios_base::trunc);
222 ofl << "#0:ts 1:injMass 2-4:injMomentum 5:injEnergy 6:evapMass";
223 ofl << endl;
224 ofl.close();
225 }
226 }
227 }
228
229
230 MString fileName = lpt().outputDir() + "sprayCons";
231 ofl.open(fileName, ios_base::out | ios_base::app);
232
233 if(ofl.is_open() && ofl.good()) {
234 for(MInt i = 0; i < dataSize; i++) {
235 ofl << m_sprayTimes[i][0] << setprecision(7) << " " << m_sprayTimes[i][1] << " " << m_sprayTimes[i][2] << " "
236 << setprecision(12);
237 for(MInt v = 0; v < 2 + nDim; v++) {
238 ofl << m_particleCV[i][v] << " ";
239 }
240 for(MInt v = 0; v < 5 + 2 * nDim; v++) {
241 ofl << m_vapourCV[i][v] << " ";
242 }
243 ofl << endl;
244 }
245 }
246 ofl.close();
247
248 fileName = lpt().outputDir() + "liquidPen";
249 ofl.open(fileName, ios_base::out | ios_base::app);
250 if(ofl.is_open() && ofl.good()) {
251 for(MInt i = 0; i < dataSize; i++) {
252 ofl << m_sprayTimes[i][0] << setprecision(7) << " " << m_sprayTimes[i][1] << " " << setprecision(7)
253 << m_sprayTimes[i][2] << " " << setprecision(8);
254 for(MInt j = 0; j < 19; j++) {
255 ofl << m_particlePen[i][j] << " ";
256 }
257 ofl << endl;
258 }
259 }
260 ofl.close();
261
262 fileName = lpt().outputDir() + "vapourPen";
263 ofl.open(fileName, ios_base::out | ios_base::app);
264 if(ofl.is_open() && ofl.good()) {
265 for(MInt i = 0; i < dataSize; i++) {
266 ofl << m_sprayTimes[i][0] << setprecision(7) << " " << m_sprayTimes[i][1] << " " << setprecision(7)
267 << m_sprayTimes[i][2] << " " << setprecision(8);
268 for(MInt j = 0; j < vapourPenSize; j++) {
269 ofl << m_vapourPen[i][j] << " ";
270 }
271 ofl << endl;
272 }
273 }
274 ofl.close();
275
276 fileName = lpt().outputDir() + "sprayStats";
277 ofl.open(fileName, ios_base::out | ios_base::app);
278 if(ofl.is_open() && ofl.good()) {
279 for(MInt i = 0; i < dataSize; i++) {
280 ofl << m_sprayTimes[i][0] << setprecision(7) << " " << m_sprayTimes[i][1] << " " << m_sprayTimes[i][2] << " "
281 << setprecision(12);
282 for(MInt j = 0; j < 5; j++) {
283 ofl << m_sprayStat[i][j] << " ";
284 }
285 ofl << endl;
286 }
287 }
288 ofl.close();
289
290 if(hasInjection) {
291 fileName = lpt().outputDir() + "injStats";
292 ofl.open(fileName, ios_base::out | ios_base::app);
293 if(ofl.is_open() && ofl.good()) {
294 for(MInt i = 0; i < injDataSize; i++) {
295 ofl << setprecision(12);
296 for(MInt j = 0; j < 15; j++) {
297 ofl << m_injectionData[i][j] << " ";
298 }
299 ofl << endl;
300 }
301 }
302 ofl.close();
303
304 fileName = lpt().outputDir() + "injSums";
305 ofl.open(fileName, ios_base::out | ios_base::app);
306 if(ofl.is_open() && ofl.good()) {
307 for(MInt i = 0; i < injDataSize; i++) {
308 ofl << m_injectionData[i][0] << " " << setprecision(12);
309 for(MInt j = 0; j < nDim + 5; j++) {
310 ofl << m_cInjData[i][j] << " ";
311 }
312 ofl << endl;
313 }
314 }
315 ofl.close();
316 }
317 }
318 firstTime = false;
319
320 // reset data
321 for(MInt i = 0; i < m_sprayDataSize; i++) {
322 for(MInt j = 0; j < 5; j++) {
323 m_sprayStat[i][j] = 0;
324 }
325 for(MInt j = 0; j < 2 + nDim; j++) {
326 m_particleCV[i][j] = 0;
327 }
328 for(MInt j = 0; j < 19; j++) {
329 m_particlePen[i][j] = 0;
330 }
331 if(hasInjection) {
332 for(MInt j = 0; j < 15; j++) {
333 m_injectionData[i][j] = 0;
334 }
335 }
336 }
337
338 if(timerEnabled) {
340 }
342}
void enableAllDlbTimers(const MBool *const wasEnabled=nullptr)
Enable all DLB timers (or those given by the array wasEnabled)
Definition: dlbtimer.h:265
void disableAllDlbTimers(MBool *const wasEnabled=nullptr)
Disable all (enabled) DLB timers.
Definition: dlbtimer.h:300
MInt injectorCellId() const
Definition: lpt.h:481
std::unique_ptr< SprayModel< nDim > > m_sprayModel
Definition: lpt.h:798
MFloat ** m_cInjData
MFloat ** m_sprayStat
MFloat ** m_particlePen
MFloat ** m_particleCV
MInt m_restartTimeStep
MFloat ** m_injectionData
MInt m_sprayDataSize
MFloat ** m_vapourCV
MFloat ** m_vapourPen
MBool m_finalTimeStep
MInt getInjectionData()
MString outputDir() const
Return the directory for output files.
Definition: solver.h:407
MBool dlbTimersEnabled()
Definition: solver.h:291
MBool isActive() const override
MInt copyFile(const MString &fromName, const MString &toName)
Copies file fromName to file toName.
Definition: functions.cpp:83
MBool fileExists(const MString &fileName)
Returns true if the file fileName exists, false otherwise.
Definition: functions.cpp:73
std::ostream cerr0
int32_t MInt
Definition: maiatypes.h:62
std::basic_string< char > MString
Definition: maiatypes.h:55
bool MBool
Definition: maiatypes.h:58
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
DlbTimerController g_dlbTimerController

Friends And Related Function Documentation

◆ LPT

template<MInt nDim, class SysEqn >
template<MInt nDim_>
friend class LPT
friend

Definition at line 31 of file postprocessingfvlpt.h.

◆ PostProcessing

template<MInt nDim, class SysEqn >
template<MInt nDim_, class ppType >
friend class PostProcessing
friend

Definition at line 29 of file postprocessingfvlpt.h.

Member Data Documentation

◆ m_cInjData

template<MInt nDim, class SysEqn >
MFloat** PostProcessingLPT< nDim >::m_cInjData
private

Definition at line 71 of file postprocessinglpt.h.

◆ m_fvLPTSpeciesId

template<MInt nDim, class SysEqn >
MInt PostProcessingFvLPT< nDim, SysEqn >::m_fvLPTSpeciesId = 0
private

Definition at line 76 of file postprocessingfvlpt.h.

◆ m_ppSolverFv

template<MInt nDim, class SysEqn >
fv* PostProcessingFvLPT< nDim, SysEqn >::m_ppSolverFv
private

Definition at line 71 of file postprocessingfvlpt.h.

◆ m_ppSolverLpt

template<MInt nDim, class SysEqn >
lptSolver* PostProcessingFvLPT< nDim, SysEqn >::m_ppSolverLpt
private

Definition at line 70 of file postprocessingfvlpt.h.

◆ m_sprayDataStep

template<MInt nDim, class SysEqn >
MInt PostProcessingFvLPT< nDim, SysEqn >::m_sprayDataStep = 0
private

Definition at line 96 of file postprocessingfvlpt.h.

◆ s_ppType

template<MInt nDim, class SysEqn >
MString PostProcessingFvLPT< nDim, SysEqn >::s_ppType
static

Definition at line 48 of file postprocessingfvlpt.h.


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