Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions src/CompositionalMultiphaseStatist.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@


class Group #text:00000060
class ExecutableGroup #text:00000060
class TaskBase #text:00000060
class FieldStatisticsBase #text:00000060
class ObjectManagerBase #text:00000060
class ElementSubRegionBase #text:00000060
class ElementSubRegionBase #text:00000060
class WellSolverBase #text:00000060
class PhysicsSolverBase #text:00000060

class FieldStatisticsBase< SOLVER_T > #text:00000060 {
string m_solverName (user input : "solverName")
string m_outputDir (user input : "outputDir")
bool m_writeCSV (user input : "writeCSV")
}

Group <|-- ExecutableGroup
ExecutableGroup <|-- TaskBase
TaskBase <|-- FieldStatisticsBase

Group <|-- ObjectManagerBase
ObjectManagerBase <|-- ElementSubRegionBase
ElementSubRegionBase <|-- CellElementRegion

WellSolverBase <|-- CompositionalMultiphaseWell
PhysicsSolverBase <|-- WellSolverBase
ExecutableGroup <|-- PhysicsSolverBase

class CompositionalMultiphaseStatistics {
m_computeCFLNumbers (user input: "computeCFLNumbers")
m_computeRegionStatistics (user input: "computeRegionStatistics")
m_relpermThreshold (user input: "relpermThreshold")
--
void postInputInitialization() override
void registerDataOnMesh( Group & meshBodies ) override
void execute( time_n, dt, [...], domain )
void computeRegionStatistics( time, meshLevel, regionNames )
void computeCFLNumbers( time, dt, domainPartition )
}
FieldStatisticsBase <|-- CompositionalMultiphaseStatistics : SOLVER_T = CompositionalMultiphaseBase


class RegionStatistics {
real64 averagePressure
real64 minPressure
real64 maxPressure

real64 minDeltaPressure
real64 maxDeltaPressure

real64 averageTemperature
real64 minTemperature
real64 maxTemperature

real64 totalPoreVolume
real64 totalUncompactedPoreVolume
array1d<real64> phasePoreVolume

array1d<real64> phaseMass
array1d<real64> trappedPhaseMass
array1d<real64> immobilePhaseMass
array2d<real64> componentMass
}
note left of RegionStatistics
Also exists in single-phase version with:
real64 averagePressure
real64 minPressure
real64 maxPressure

real64 minDeltaPressure
real64 maxDeltaPressure

real64 averageTemperature
real64 minTemperature
real64 maxTemperature

real64 totalPoreVolume
real64 totalUncompactedPoreVolume

real64 totalMass
end note
CompositionalMultiphaseStatistics ....> RegionStatistics : "instanciate\n&\ncomputes\n&\nreads data from"
CompositionalMultiphaseWell ....> RegionStatistics : "reads data\nfrom"
CellElementRegion *--l--> RegionStatistics : ""regionStatistics"\nWrapper"
83 changes: 83 additions & 0 deletions src/New2CompositionalMultiphaseStatist.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@


class Group #text:00000060
class ExecutableGroup #text:00000060
class TaskBase #text:00000060
class FieldStatisticsBase #text:00000060
class ObjectManagerBase #text:00000060
class ElementSubRegionBase #text:00000060
class ElementSubRegionBase #text:00000060
class WellSolverBase #text:00000060
class PhysicsSolverBase #text:00000060

class FieldStatisticsBase< SOLVER_T > #text:00000060 {
string m_solverName (user input : "solverName")
string m_outputDir (user input : "outputDir")
bool m_writeCSV (user input : "writeCSV")
}

Group <|-- ExecutableGroup
ExecutableGroup <|-- TaskBase
TaskBase <|-- FieldStatisticsBase

Group <|-- ObjectManagerBase
ObjectManagerBase <|-- ElementSubRegionBase
ElementSubRegionBase <|-- CellElementRegion

WellSolverBase <|-- CompositionalMultiphaseWell
PhysicsSolverBase <|-- WellSolverBase
ExecutableGroup <|-- PhysicsSolverBase

class CompositionalMultiphaseStatisticsTask #text:Green {
bool m_computeCFLNumbers (wrapper: "computeCFLNumbers")
bool m_computeRegionStatistics (wrapper: "computeRegionStatistics")
float m_relpermThreshold (wrapper: "relpermThreshold")
--
void postInputInitialization() override
void execute( time_n, dt, [...], domain )
}
note bottom of CompositionalMultiphaseStatisticsTask
User defined executable task for
statistics computation & output
end note
FieldStatisticsBase <|-- CompositionalMultiphaseStatisticsTask : SOLVER_T = CompositionalMultiphaseBase

class CompositionalMultiphaseStatisticsAggregator #text:Green {
void registerDataOnMesh( Group & meshBodies ) override
void computeRegionStatistics( time, meshLevel, regionNames )
void computeCFLNumbers( time, dt, domainPartition, m_relpermThreshold )
void forRegionStatstics( functor )
}
note bottom of CompositionalMultiphaseStatisticsAggregator
Generated sub-group for instanciating
RegionStatistics over the regions &
doing statistics computation.
end note
CompositionalMultiphaseStatisticsTask *---> CompositionalMultiphaseStatisticsAggregator : "<color:Green>contains one"
CompositionalMultiphaseWell *---> CompositionalMultiphaseStatisticsAggregator : "<color:Green>contains one"

class RegionStatistics {
real64 averagePressure
real64 minPressure
real64 maxPressure

real64 minDeltaPressure
real64 maxDeltaPressure

real64 averageTemperature
real64 minTemperature
real64 maxTemperature

real64 totalPoreVolume
real64 totalUncompactedPoreVolume
array1d<real64> phasePoreVolume

array1d<real64> phaseMass
array1d<real64> trappedPhaseMass
array1d<real64> immobilePhaseMass
array2d<real64> componentMass
}
CompositionalMultiphaseStatisticsAggregator ...> RegionStatistics : "instanciate\n&\ncomputes"
CompositionalMultiphaseStatisticsTask ..> RegionStatistics : "reads data\nfrom"
CompositionalMultiphaseWell ...> RegionStatistics : "reads data\nfrom"
CellElementRegion *--l--> RegionStatistics : ""regionStatistics"\nWrapper"
115 changes: 115 additions & 0 deletions src/New3CompositionalMultiphaseStatist.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@


class Group #text:00000060
class ExecutableGroup #text:00000060
class TaskBase #text:00000060
class FieldStatisticsBase #text:00000060
class ObjectManagerBase #text:00000060
class ElementSubRegionBase #text:00000060
class ElementSubRegionBase #text:00000060
class WellSolverBase #text:00000060
class PhysicsSolverBase #text:00000060

class FieldStatisticsBase< SOLVER_T > #text:00000060 {
string m_solverName (user input : "solverName")
string m_outputDir (user input : "outputDir")
bool m_writeCSV (user input : "writeCSV")
}

Group <|-- ExecutableGroup
ExecutableGroup <|-- TaskBase
TaskBase <|-- FieldStatisticsBase

Group <|-- ObjectManagerBase
ObjectManagerBase <|-- ElementSubRegionBase
ElementSubRegionBase <|-- CellElementRegion

WellSolverBase <|-- CompositionalMultiphaseWell
PhysicsSolverBase <|-- WellSolverBase
ExecutableGroup <|-- PhysicsSolverBase

class CompositionalMultiphaseStatisticsTask #text:Green {
bool m_computeCFLNumbers (wrapper: "computeCFLNumbers")
bool m_computeRegionStatistics (wrapper: "computeRegionStatistics")
float m_relpermThreshold (wrapper: "relpermThreshold")
--
void postInputInitialization() override
void execute( time_n, dt, [...], domain )
}
note bottom of CompositionalMultiphaseStatisticsTask
User defined executable task for
statistics computation & output
end note
FieldStatisticsBase <|-- CompositionalMultiphaseStatisticsTask : SOLVER_T = CompositionalMultiphaseBase

class CompositionalMultiphaseStatisticsAggregator #text:Green {
void registerDataOnMesh( Group & meshBodies ) override
void computeRegionStatistics( time, meshLevel, regionNames )
void computeCFLNumbers( time, dt, domainPartition, m_relpermThreshold )
void forRegionStatstics( functor )
}
note bottom of CompositionalMultiphaseStatisticsAggregator
Generated sub-group for instanciating
RegionStatistics over the regions &
doing statistics computation.
end note
CompositionalMultiphaseStatisticsTask *---> CompositionalMultiphaseStatisticsAggregator : "<color:Green>contains one"
CompositionalMultiphaseWell *---> CompositionalMultiphaseStatisticsAggregator : "<color:Green>contains one"

class RegionStatistics #text:Green {
}
note bottom of RegionStatistics
May be removed in favor of direct statistics
end note
CompositionalMultiphaseStatisticsAggregator ...> RegionStatistics : "instanciate\n&\ncomputes"
CompositionalMultiphaseStatisticsTask ..> RegionStatistics : "reads data\nfrom"
CompositionalMultiphaseWell ...> RegionStatistics : "reads data\nfrom"
CellElementRegion *-l--> RegionStatistics : "<color:Green>'regionStatistics' wrapper"

class PressureStatistics #text:Green {
real64 averagePressure
real64 minPressure
real64 maxPressure
real64 minDeltaPressure
real64 maxDeltaPressure
}
RegionStatistics *--> PressureStatistics : "<color:Green>generated wrapper\n<color:Green>"pressure""
PressureStatistics [PressureStatistics] --> RegionStatisticsType : "<color:Green>implements"

class TemperatureStatistics #text:Green {
real64 averageTemperature
real64 minTemperature
real64 maxTemperature
}
RegionStatistics *--> TemperatureStatistics : "<color:Green>generated wrapper\n<color:Green>"temperature""
TemperatureStatistics [TemperatureStatistics] --> RegionStatisticsType : "<color:Green>implements"

class PoreVolumeStatistics #text:Green {
real64 totalPoreVolume
real64 totalUncompactedPoreVolume
array1d<real64> phasePoreVolume
}
RegionStatistics *--> PoreVolumeStatistics : "<color:Green>generated wrapper\n<color:Green>"poreVolume""
PoreVolumeStatistics [PoreVolumeStatistics] --> RegionStatisticsType : "<color:Green>implements"

class MassStatistics #text:Green {
array1d<real64> phaseMass
array1d<real64> trappedPhaseMass
array1d<real64> immobilePhaseMass
array2d<real64> componentMass
}
RegionStatistics *--> MassStatistics : "<color:Green>generated wrapper\n<color:Green>"mass""
MassStatistics [MassStatistics] --> RegionStatisticsType : "<color:Green>implements"

interface RegionStatisticsType < STATS_TYPE > #text:Green {
void init()
void setKernelViews( RegionStatisticsKernelViews< STATS_TYPE > & views )
HOST_DEVICE void collectElementStats( RegionStatisticsKernelViews< STATS_TYPE > const & views )
void kernelReduce()
void mpiReduce()
}

class STATS_TYPE::KernelViews < STATS_TYPE > #text:Green {
( structure of views necessary for collectElementStats() )
}
RegionStatisticsType [STATS_TYPE] ..> STATS_TYPE::KernelViews
Loading
Loading