20 #ifndef GEOS_PHYSICSSOLVERS_FLUIDFLOW_IMMISCIBLEMULTIPHASEFLOW_HPP_
21 #define GEOS_PHYSICSSOLVERS_FLUIDFLOW_IMMISCIBLEMULTIPHASEFLOW_HPP_
45 Group *
const parent );
70 static string catalogName() {
return "ImmiscibleMultiphaseFlow"; }
101 real64 const scalingFactor,
185 void applySourceFluxBC(
real64 const time,
219 static constexpr
char const * gravityDensitySchemeString() {
return "gravityDensityScheme"; }
222 static constexpr
char const * solutionChangeScalingFactorString() {
return "solutionChangeScalingFactor"; }
223 static constexpr
char const * targetRelativePresChangeString() {
return "targetRelativePressureChangeInTimeStep"; }
224 static constexpr
char const * targetPhaseVolFracChangeString() {
return "targetPhaseVolFractionChangeInTimeStep"; }
227 static constexpr
char const * maxRelativePresChangeString() {
return "maxRelativePressureChange"; }
228 static constexpr
char const * useTotalMassEquationString() {
return "useTotalMassEquation"; }
230 static constexpr
char const * capPressureNamesString() {
return "capillary_pressure"; }
231 static constexpr
char const * relPermNamesString() {
return "relative_permeability"; }
232 static constexpr
char const * elemDofFieldString() {
return "elemDofField"; }
238 virtual void postInputInitialization()
override;
268 bool m_hasCapPressure;
271 integer m_useTotalMassEquation;
277 real64 m_targetRelativePresChange;
280 real64 m_targetPhaseVolFracChange;
283 real64 m_solutionChangeScalingFactor;
294 real64 const time )
const;
#define GEOS_UNUSED_PARAM(X)
Mark an unused argument and silence compiler warnings.
The DoFManager is responsible for allocating global dofs, constructing sparsity patterns,...
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
ImmiscibleMultiphaseFlow & operator=(ImmiscibleMultiphaseFlow &&)=delete
deleted move operator
virtual ~ImmiscibleMultiphaseFlow() override=default
default destructor
virtual void implicitStepComplete(real64 const &time, real64 const &dt, DomainPartition &domain) override
perform cleanup for implicit timestep
virtual void updateState(DomainPartition &domain) override final
Recompute all dependent quantities from primary variables (including constitutive models)
virtual void saveConvergedState(ElementSubRegionBase &subRegion) const override final
Utility function to save the converged state.
ImmiscibleMultiphaseFlow(ImmiscibleMultiphaseFlow const &)=delete
deleted copy constructor
virtual void initializePostInitialConditionsPreSubGroups() override
Called by InitializePostInitialConditions() prior to initializing sub-Groups.
virtual void initializePreSubGroups() override
Called by Initialize() prior to initializing sub-Groups.
void updatePhaseMass(ElementSubRegionBase &subRegion) const
Function to update fluid mass.
virtual real64 setNextDtBasedOnStateChange(real64 const ¤tDt, DomainPartition &domain) override
function to set the next time step size
virtual void implicitStepSetup(real64 const &time_n, real64 const &dt, DomainPartition &domain) override
function to perform setup for implicit timestep
ImmiscibleMultiphaseFlow(ImmiscibleMultiphaseFlow &&)=default
default move constructor
ImmiscibleMultiphaseFlow(const string &name, Group *const parent)
main constructor for Group Objects
void assembleAccumulationTerm(DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) const
assembles the accumulation and volume balance terms for all cells
virtual void applySystemSolution(DofManager const &dofManager, arrayView1d< real64 const > const &localSolution, real64 const scalingFactor, real64 const dt, DomainPartition &domain) override
Function to apply the solution vector to the state.
integer numFluidPhases() const
Getter for the number of fluid phases.
virtual void assembleFluxTerms(real64 const dt, DomainPartition const &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) const
assembles the flux terms for all cells
static string catalogName()
name of the solver in the object catalog
void applyDirichletBC(real64 const time, real64 const dt, DofManager const &dofManager, DomainPartition &domain, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) const
Function to perform the Application of Dirichlet type BC's.
virtual void resetStateToBeginningOfStep(DomainPartition &domain) override
reset state of physics back to the beginning of the step.
virtual void assembleSystem(real64 const time_n, real64 const dt, DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
function to assemble the linear system matrix and rhs
string getCatalogName() const override
virtual void setupDofs(DomainPartition const &domain, DofManager &dofManager) const override
Populate degree-of-freedom manager with fields relevant to this solver.
ImmiscibleMultiphaseFlow()=delete
deleted default constructor
virtual void registerDataOnMesh(Group &meshBodies) override final
Register wrappers that contain data on the mesh objects.
virtual void applyBoundaryConditions(real64 const time_n, real64 const dt, DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
apply boundary condition to system
ImmiscibleMultiphaseFlow & operator=(ImmiscibleMultiphaseFlow const &)=delete
deleted assignment operator
Class facilitating the representation of a multi-level discretization of a MeshBody.
The ObjectManagerBase is the base object of all object managers in the mesh data hierachy.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
stdVector< string > string_array
A 1-dimensional array of geos::string types.
double real64
64-bit floating point type.
LvArray::CRSMatrixView< T, COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
int integer
Signed integer type.
GravityDensityScheme
Options for density treatment in gravity.