21 #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_COMPOSITIONALMULTIPHASERESERVOIRANDWELLS_HPP_ 
   22 #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_COMPOSITIONALMULTIPHASERESERVOIRANDWELLS_HPP_ 
   32 template< 
typename RESERVOIR_SOLVER = CompositionalMultiphaseBase >
 
   34                                                                                       CompositionalMultiphaseWell >
 
   63     if constexpr (std::is_same_v< RESERVOIR_SOLVER, CompositionalMultiphaseBase > ) 
 
   65       return "CompositionalMultiphaseReservoir";
 
   69       return RESERVOIR_SOLVER::catalogName() + 
"Reservoir";
 
   88   integer isThermal() { 
return flowSolver()->isThermal(); }
 
   89   integer useSimpleAccumulation()
 const { 
return flowSolver()->useSimpleAccumulation(); }
 
   90   integer useTotalMassEquation()
 const { 
return flowSolver()->useTotalMassEquation(); }
 
   95   assembleHydrofracFluxTerms( 
real64 const time_n,
 
   97                               DomainPartition 
const & domain,
 
   98                               DofManager 
const & dofManager,
 
   99                               CRSMatrixView< real64, globalIndex const > 
const & localMatrix,
 
  100                               arrayView1d< real64 > 
const & localRhs,
 
  101                               CRSMatrixView< real64, localIndex const > 
const & dR_dAper );
 
  103   template< 
typename SUBREGION_TYPE >
 
  104   void accumulationAssemblyLaunch( DofManager 
const & dofManager,
 
  105                                    SUBREGION_TYPE 
const & subRegion,
 
  106                                    CRSMatrixView< real64, globalIndex const > 
const & localMatrix,
 
  107                                    arrayView1d< real64 > 
const & localRhs )
 
  112   void prepareStencilWeights( DomainPartition & domain ) 
const;
 
  113   void updateStencilWeights( DomainPartition & domain ) 
const;
 
  119   virtual void setMGRStrategy() 
override;
 
virtual void assembleCouplingTerms(real64 const time_n, real64 const dt, DomainPartition const &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
Utility function to compute coupling terms.
 
virtual void initializePreSubGroups() override
Called by Initialize() prior to initializing sub-Groups.
 
static string catalogName()
name of the node manager in the object catalog
 
CompositionalMultiphaseReservoirAndWells(const string &name, dataRepository::Group *const parent)
main constructor for ManagedGroup Objects
 
virtual void addCouplingSparsityPattern(DomainPartition const &domain, DofManager const &dofManager, SparsityPatternView< globalIndex > const &pattern) const override
 
virtual ~CompositionalMultiphaseReservoirAndWells() override
default destructor
 
string getCatalogName() const override
 
std::tuple< SOLVERS *... > m_solvers
Pointers of the single-physics solvers.
 
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...
 
LinearSolverParametersInput m_linearSolverParameters
Linear solver parameters.
 
integer getLogLevel() const
 
integer numFluidComponents() const
Getter for the number of fluid components (species)
 
void accumulationAssemblyLaunch(DofManager const &dofManager, SUBREGION_TYPE const &subRegion, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) const
assembles the accumulation terms for all cells of a spcefici subRegion.
 
integer numFluidPhases() const
Getter for the number of fluid phases.
 
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
 
LvArray::SparsityPatternView< COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > SparsityPatternView
Alias for Sparsity pattern View.
 
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.