20 #ifndef SRC_CORECOMPONENTS_PHYSICSSOLVERS_FLUIDFLOW_SOURCEFLUXSTATISTICS_HPP_
21 #define SRC_CORECOMPONENTS_PHYSICSSOLVERS_FLUIDFLOW_SOURCEFLUXSTATISTICS_HPP_
23 #include "../FieldStatisticsBase.hpp"
131 {
return m_statsPeriodStart; }
137 {
return m_statsPeriodDT; }
143 {
return m_aggregatorName; }
149 {
return m_fluxName; }
154 real64 m_statsPeriodStart;
168 real64 m_timeStepStart = 0.0;
170 real64 m_timeStepDeltaTime = 0.0;
172 real64 m_periodStart = 0.0;
174 real64 m_periodPendingDeltaTime = 0.0;
178 bool m_isGathering =
false;
184 void allocate(
integer phaseCount );
193 {
return m_timeStepMass.size(); }
197 string m_aggregatorName;
209 Group *
const parent );
223 real64 const eventProgress,
236 template<
typename LAMBDA >
247 template<
typename LAMBDA >
260 template<
typename LAMBDA >
272 template<
typename LAMBDA >
287 template<
typename LAMBDA >
330 void registerDataOnMesh(
Group & meshBodies )
override;
335 void postInputInitialization()
override;
349 void gatherStatsForLog(
bool logLevelActive,
352 WrappedStats
const & wrappedStats );
358 void gatherStatsForCSV(
TableData & tableData, WrappedStats
const & stats );
366 void outputStatsToLog(
bool logLevelActive,
string_view elementSetName,
TableData const & tableMeshData );
378 template<
typename LAMBDA >
385 if( statsWrapper.referenceAsView().getFluxName() == fluxName )
387 lambda( statsWrapper.reference() );
392 template<
typename LAMBDA >
397 [&] (
string const &,
401 string const wrapperName = getStatWrapperName( viewKeyStruct::fluxSetWrapperString() );
402 WrappedStats & stats = meshLevel.getWrapper< WrappedStats >( wrapperName ).reference();
404 lambda( meshLevel, stats );
407 template<
typename LAMBDA >
411 for(
string const & fluxName : m_fluxNames )
416 lambda( meshLevel, stats );
419 template<
typename LAMBDA >
429 lambda( region, stats );
432 template<
typename LAMBDA >
442 lambda( subRegion, stats );
447 {
return GEOS_FMT(
"{}_region_stats_for_{}", fluxName,
getName() ); }
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Group const & getMeshBodies() const
Get the mesh bodies, const version.
The ElementRegionBase is the base class to manage the data stored at the element level.
void forElementSubRegions(LAMBDA &&lambda) const
Apply a lambda to all subregions.
void forElementRegions(LAMBDA &&lambda)
This function is used to launch kernel function over all the element regions with region type = Eleme...
FlowSolverBase * m_solver
Pointer to the physics solver.
Class facilitating the representation of a multi-level discretization of a MeshBody.
ElementRegionManager const & getElemManager() const
Get the element region manager.
void forDiscretizationOnMeshTargets(Group const &meshBodies, LAMBDA &&lambda) const
Loop over the target discretization on all mesh targets and apply callback.
Class that aggregate statistics of a flux over multiple time-steps for a given SourceFluxStatsAggrega...
real64 getStatsPeriodStart() const
void gatherTimeStepStats(real64 currentTime, real64 dt, arrayView1d< real64 const > const &producedMass, integer elementCount)
Set the current time step stats. Accumulate the statistics only if the time is strictly after the pre...
string_view getFluxName() const
real64 getStatsPeriodDuration() const
void finalizePeriod()
Finalize the period statistics of each timestep gathering and render data over all mpi ranks....
void setTarget(string_view aggregatorName, string_view fluxName)
Set the subjects targeted by the stats.
string_view getAggregatorName() const
StatData const & stats() const
string getStatWrapperName(string_view fluxName) const
virtual bool execute(real64 const time_n, real64 const dt, integer const cycleNumber, integer const eventCounter, real64 const eventProgress, DomainPartition &domain) override
Main extension point of executable targets.
void forAllSubRegionStatsWrappers(ElementRegionBase ®ion, string_view fluxName, LAMBDA &&lambda)
Apply a functor to all subregion WrappedStats (of the given region) that target a given flux.
void forAllFluxStatsWrappers(MeshLevel &meshLevel, LAMBDA &&lambda)
Apply a functor to each WrappedStats that combines the stats over all region for a flux.
static string catalogName()
static void forAllFluxStatWrappers(Group &container, string_view fluxName, LAMBDA &&lambda)
Apply a functor to all WrappedStats of the given group that target a given flux (and potentially mult...
void forAllRegionStatsWrappers(MeshLevel &meshLevel, string_view fluxName, LAMBDA &&lambda)
Apply a functor to all simulated region WrappedStats (of the given MeshLevel) that target a given flu...
SourceFluxStatsAggregator(const string &name, Group *const parent)
Constructor for the statistics class.
void forMeshLevelStatsWrapper(DomainPartition &domain, LAMBDA &&lambda)
Apply a functor to WrappedStats that combines all stats for each target solver discretization mesh le...
Class for managing table data.
Class for setup the table layout.
string const & getName() const
Get group name.
Wrapper< T > const & getWrapper(LOOKUP_TYPE const &index) const
Retrieve a Wrapper stored in this group.
void forWrappers(LAMBDA &&lambda)
Apply the given functor to wrappers.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
double real64
64-bit floating point type.
std::int32_t integer
Signed integer type.
std::vector< string > string_array
A 1-dimensional array of geos::string types.
Array< T, 1 > array1d
Alias for 1D array.
std::string_view string_view
String type.
Aggregated flux statistics data.
void reset()
reset the stats to 0.0
integer getPhaseCount() const
void allocate(integer phaseCount)
resize the phase data arrays if needed
void mpiReduce()
Aggregate the statistics of the instance with those from all instances from other MPI ranks....
array1d< real64 > m_producedMass
array1d< real64 > m_productionRate
void combine(StatData const &other)
Aggregate the statistics of the instance with those of another one.
integer m_elementCount
Number of elements in which we are producing / injecting.
constexpr static string_view fluxNamesString()
constexpr static string_view fluxSetWrapperString()
constexpr static string_view allRegionWrapperString()