GEOS
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
geos::CompositionalMultiphaseWell Class Reference

#include <CompositionalMultiphaseWell.hpp>

Inheritance diagram for geos::CompositionalMultiphaseWell:
Inheritance graph
[legend]

Classes

struct  viewKeyStruct
 

Public Member Functions

 CompositionalMultiphaseWell (const string &name, Group *const parent)
 main constructor for Group Objects More...
 
 CompositionalMultiphaseWell ()=delete
 deleted default constructor
 
 CompositionalMultiphaseWell (CompositionalMultiphaseWell const &)=delete
 deleted copy constructor
 
 CompositionalMultiphaseWell (CompositionalMultiphaseWell &&)=delete
 deleted move constructor
 
CompositionalMultiphaseWelloperator= (CompositionalMultiphaseWell const &)=delete
 deleted assignment operator
 
CompositionalMultiphaseWelloperator= (CompositionalMultiphaseWell &&)=delete
 deleted move operator
 
virtual ~CompositionalMultiphaseWell () override
 default destructor
 
compositionalMultiphaseStatistics::StatsAggregatorgetStatsAggregator ()
 
void setReservoirStatsAggregator (std::unique_ptr< compositionalMultiphaseStatistics::StatsAggregator > aggregator)
 
virtual void registerWellDataOnMesh (WellElementSubRegion &subRegion) override
 
virtual void initializeWell (DomainPartition &domain, Group &meshBodies, string const &meshBodyName, MeshLevel &mesh, WellElementSubRegion &subRegion, real64 const &time_n) override
 Initialize well for the beginning of a simulation or restart. More...
 
virtual void initializeWellPostInitialConditionsPreSubGroups (WellElementSubRegion &subRegion) override
 
virtual bool isCompositional () const override
 
virtual void assembleWellAccumulationTerms (real64 const &time, real64 const &dt, WellElementSubRegion &subRegion, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
 assembles the accumulation term for an individual well More...
 
virtual void assembleWellPressureRelations (real64 const &time_n, real64 const &dt, WellElementSubRegion const &subRegion, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
 assembles the well momentum terms for an individual well More...
 
virtual void assembleWellConstraintTerms (real64 const &time_n, real64 const &dt, WellElementSubRegion const &subRegion, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
 assembles the well constraint terms for an individual well More...
 
virtual void computeWellPerforationRates (real64 const &time_n, real64 const &GEOS_UNUSED_PARAM(dt), ElementRegionManager &elemManager, WellElementSubRegion &subRegion) override
 Recompute the perforation rates for all the wells. More...
 
virtual void assembleWellFluxTerms (real64 const &time, real64 const &dt, WellElementSubRegion const &subRegion, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
 
virtual array1d< real64calculateLocalWellResidualNorm (real64 const &time_n, real64 const &dt, NonlinearSolverParameters const &nonlinearSolverParameters, WellElementSubRegion const &subRegion, DofManager const &dofManager, arrayView1d< real64 const > const &localRhs) override
 
virtual real64 calculateWellResidualNorm (real64 const &time_n, real64 const &dt, NonlinearSolverParameters const &nonlinearSolverParameters, WellElementSubRegion const &subRegion, DofManager const &dofManager, arrayView1d< real64 const > const &localRhs) override
 
real64 scalingForLocalSystemSolution (WellElementSubRegion &subRegion, DofManager const &dofManager, real64 &maxDeltaPres, real64 &maxDeltaCompDens, real64 &maxDeltaTemp, real64 &minPresScalingFactor, real64 &minCompDensScalingFactor, real64 &minTempScalingFactor, arrayView1d< real64 const > const &localSolution)
 
virtual real64 scalingForWellSystemSolution (WellElementSubRegion &subRegion, DofManager const &dofManager, arrayView1d< real64 const > const &localSolution) override
 
virtual bool checkWellSystemSolution (WellElementSubRegion &subRegion, DofManager const &dofManager, arrayView1d< real64 const > const &localSolution, real64 const scalingFactor, real64 &minPressure, real64 &minDensity, real64 &minTotalDensity, ElementsReporterBuffer &negPressureIds, ElementsReporterBuffer &negDensityIds, ElementsReporterBuffer &negTotalDensityIds) override
 
virtual void applyWellSystemSolution (DofManager const &dofManager, arrayView1d< real64 const > const &localSolution, real64 const scalingFactor, real64 const dt, DomainPartition &domain, MeshLevel &mesh, WellElementSubRegion &subRegion) override
 
virtual void applyWellBoundaryConditions (real64 const time_n, real64 const dt, ElementRegionManager &elemManager, WellElementSubRegion &subRegion, DofManager const &dofManager, arrayView1d< real64 > const &localRhs, CRSMatrixView< real64, globalIndex const > const &localMatrix) override
 
virtual void resetStateToBeginningOfStep (DomainPartition &domain, string const &meshBodyName, ElementRegionManager const &elemManager, WellElementSubRegion &subRegion) override
 Reset the well state to the beginning of the time step. More...
 
virtual void implicitStepSetup (real64 const &time_n, real64 const &GEOS_UNUSED_PARAM(dt), DomainPartition &domain, string const &meshBodyName, ElementRegionManager &elemManager, WellElementSubRegion &subRegion) override
 
virtual void implicitStepComplete (real64 const &time, real64 const &dt, WellElementSubRegion const &subRegion) override
 
virtual void printRates (real64 const &time_n, real64 const &dt, WellElementSubRegion const &subRegion) override
 
void updateGlobalComponentFraction (WellElementSubRegion &subRegion) const
 Recompute global component fractions from primary variables (component densities) More...
 
void updateVolRatesForConstraint (WellElementSubRegion const &subRegion)
 Recompute the volumetric rates that are used in the well constraints. More...
 
void updateBHPForConstraint (WellElementSubRegion &subRegion)
 Recompute the current BHP pressure. More...
 
void updateFluidModel (WellElementSubRegion &subRegion)
 Update all relevant fluid models using current values of pressure and composition. More...
 
void updateSeparator (real64 time_n, MeshBody const &meshBody, ElementRegionManager const &elemManager, WellElementSubRegion &subRegion)
 Update well separator using current values of pressure and composition at the reference element. More...
 
void calculateReferenceElementRates (WellElementSubRegion &subRegion)
 Calculate well rates at reference element. More...
 
real64 updatePhaseVolumeFraction (WellElementSubRegion &subRegion) const
 Recompute phase volume fractions (saturations) from constitutive and primary variables. More...
 
void updateTotalMassDensity (WellElementSubRegion &subRegion) const
 Recompute total mass densities from mass density and phase volume fractions. More...
 
virtual real64 updateWellState (MeshBody const &meshBody, ElementRegionManager const &elemManager, WellElementSubRegion &subRegion) override
 Recompute all dependent quantities from primary variables (including constitutive models) More...
 
virtual real64 updateSubRegionState (real64 time_n, MeshBody const &meshBody, ElementRegionManager const &elemManager, WellElementSubRegion &subRegion) override
 
virtual string wellElementDofName () const override
 
virtual string resElementDofName () const override
 
virtual localIndex numFluidComponents () const override
 
virtual localIndex numFluidPhases () const override
 
integer useTotalMassEquation () const
 
void chopNegativeDensities (WellElementSubRegion &subRegion)
 Sets all the negative component densities (if any) to zero. More...
 
void validateFluidModel (constitutive::MultiFluidBase const &fluid, constitutive::MultiFluidBase const &referenceFluid) const
 Checks fluild model compatibility and validity. More...
 
- Public Member Functions inherited from geos::WellControls
virtual GroupcreateChild (string const &childKey, string const &childName) override
 Create a new constraint object as a child of this group. More...
 
virtual void expandObjectCatalogs () override
 Expand catalog for schema generation.
 
real64 setNextDt (real64 const &currentTime, real64 const &currentDt, WellElementSubRegion &subRegion)
 function to set the next time step size More...
 
bool evaluateConstraints (real64 const &time_n, WellElementSubRegion &subRegion)
 Function to evaluate well constraints after applying the solution update. More...
 
bool evaluateConstraints (real64 const &time_n, real64 const &dt, integer const cycleNumber, integer const coupledIterationNumber, DomainPartition &domain, MeshLevel &mesh, ElementRegionManager &elemManager, WellElementSubRegion &subRegion, DofManager const &dofManager)
 Function to evaluate well constraints after applying the solution update. More...
 
void solveConstraint (WellConstraintBase *constraint, real64 const &time_n, real64 const &dt, integer const cycleNumber, integer const coupledIterationNumber, DomainPartition &domain, MeshLevel &mesh, ElementRegionManager &elemManager, WellElementSubRegion &subRegion, DofManager const &dofManager)
 
void assembleSystem (real64 const &time_n, real64 const &dt, integer const cycleNumber, ElementRegionManager &elemManager, WellElementSubRegion &subRegion, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs)
 
virtual void initializePreSubGroups () override
 Called by Initialize() prior to initializing sub-Groups.
 
localIndex numDofPerWellElement () const
 getter for the number of degrees of freedom per well element More...
 
localIndex numDofPerResElement () const
 getter for the number of degrees of freedom per mesh element More...
 
void setPerforationStatus (real64 const &time_n, WellElementSubRegion &subRegion)
 
void setGravCoef (WellElementSubRegion &subRegion, R1Tensor const &gravVector)
 
template<typename ConstraintType >
void createConstraint (string const &constraintName)
 Create a constraint. More...
 
WellConstraintBase const * getBHPConstraint (const ConstraintSourceId source=ConstraintSourceId::USER) const
 Gets the defined BHP constraint. More...
 
WellConstraintBasegetBHPConstraint (const ConstraintSourceId source=ConstraintSourceId::USER)
 
stdVector< WellConstraintBase const * > getRateConstraints () const
 Gets a list of rate constraints. More...
 
stdVector< WellConstraintBase * > getRateConstraints ()
 
stdVector< WellConstraintBase const * > getAllConstraints () const
 Gets a list of all constraints constraints. More...
 
stdVector< WellConstraintBase * > getAllConstraints ()
 
void enableThermalEffects (bool enable)
 Set thermal effects enable. More...
 
bool thermalEffectsEnabled () const
 Are thermal effects enabled. More...
 
bool isoThermalEstimatorEnabled () const
 Is isoThermalEstimator enabled. More...
 
void setupWellDofs (DomainPartition &domain, WellElementRegion &wellElementRegion, string const &meshBodyName, MeshLevel const &meshLevel)
 
WellNewtonSolvergetWellNewtonSolver ()
 
void selectWellConstraint (real64 const &time_n, real64 const &dt, integer const cycleNumber, integer const coupledIterationNumber, DomainPartition &domain, string const &meshBodyName, MeshLevel &mesh, ElementRegionManager &elemManager, WellElementSubRegion &subRegion, DofManager const &dofManager)
 
 WellControls (string const &name, dataRepository::Group *const parent)
 Constructor for WellControls Objects. More...
 
 ~WellControls () override
 Default destructor.
 
 WellControls ()=delete
 Deleted default constructor.
 
 WellControls (WellControls const &)=delete
 Deleted copy constructor.
 
 WellControls (WellControls &&)=delete
 Deleted move constructor.
 
WellControlsoperator= (WellControls const &)=delete
 Deleted assignment operator. More...
 
WellControlsoperator= (WellControls &&)=delete
 Deleted move operator. More...
 
template<typename CONSTITUTIVE >
void setConstitutiveName (ElementSubRegionBase &subRegion, string const &wrapperName, string const &constitutiveType) const
 Register wrapper with given name and store constitutive model name on the subregion. More...
 
string_array const & getTargetRegionNames () const
 return the list of target regions More...
 
std::string getFlowSolverName () const
 Get the control type for the well. More...
 
void setFlowSolverName (const std::string &flowSolverName)
 Set the control type for the well. More...
 
std::string getDiscretizationName () const
 return the name of the discretization object More...
 
void setDiscretizationName (const std::string &discretizationName)
 set the name of the discretization object More...
 
ConstraintTypeId getControl () const
 Get the control type for the well. More...
 
void setControl (ConstraintTypeId const &newControl)
 Set the control type for the well. More...
 
ConstraintTypeId getInputControl () const
 Get the input control type for the well. More...
 
integer estimateSolution () const
 getter for esitmator switch More...
 
real64 getTargetBHP (real64 const &targetTime, const ConstraintSourceId source=ConstraintSourceId::USER) const
 Returns the target bottom hole pressure value. More...
 
real64 getInjectionTemperature () const
 Const accessor for the temperature of the injection stream. More...
 
arrayView1d< real64 const > getInjectionStream () const
 Const accessor for the injection stream. More...
 
integer getConstraintPhaseIndex () const
 Const accessor for the phase constraint index. More...
 
real64 getReferenceElevation () const
 Return the reference elvation where pressure constraint is measured. More...
 
integer useSurfaceConditions () const
 Getter for the flag specifying whether we check rates at surface or reservoir conditions. More...
 
string const & referenceReservoirRegion () const
 Getter for the reservoir region associated with reservoir volume constraint. More...
 
const real64getSurfacePressure () const
 Getter for the surface pressure when m_useSurfaceConditions == 1. More...
 
const real64getSurfaceTemperature () const
 Getter for the surface temperature when m_useSurfaceConditions == 1. More...
 
bool isInjector () const
 Is the well an injector? More...
 
bool isProducer () const
 Is the well a producer? More...
 
integer isThermal () const
 getter for iso/thermal switch More...
 
void setThermal (bool isThermal)
 setter for iso/thermal switch More...
 
void setUseMass (integer useMass)
 setter to activate mass formulation More...
 
integer useMass ()
 is useMass option active More...
 
bool isWellOpen () const
 Is the well open (or shut) at currentTime, status initalized in WellSolverBase::implicitStepSetup. More...
 
void setWellState (bool open)
 Set the well state. More...
 
bool getWellState () const
 Get the well state. More...
 
void setCurrentConstraint (WellConstraintBase *currentConstraint)
 Set the current consrtaint. More...
 
WellConstraintBasegetCurrentConstraint ()
 Get the current consrtaint. More...
 
WellConstraintBase const * getCurrentConstraint () const
 
bool isCrossflowEnabled () const
 Getter for the flag to enable crossflow. More...
 
real64 getInitialPressureCoefficient () const
 Getter for the initial pressure coefficient. More...
 
void setNextDtFromTables (real64 const &currentTime, real64 &nextDt)
 set next time step based on tables intervals More...
 
void setKeepVariablesConstantDuringInitStep (bool const keepVariablesConstantDuringInitStep)
 Utility function to keep the well variables during a time step (used in poromechanics simulations) More...
 
void setFluidSeparator (std::unique_ptr< constitutive::ConstitutiveBase > fluidSeparatorPtr)
 setter for multi fluid separator More...
 
constitutive::MultiFluidBase & getMultiFluidSeparator ()
 Getter for multi fluid separator. More...
 
constitutive::SingleFluidBase & getSingleFluidSeparator ()
 Getter for single fluid separator. More...
 
real64 getRegionAveragePressure () const
 Getter for the reservoir average pressure when m_useSurfaceConditions == 0. More...
 
void setRegionAveragePressure (real64 regionAveragePressure)
 Set the reservoir average pressure when m_useSurfaceConditions == 0. More...
 
real64 getRegionAverageTemperature () const
 Getter for the reservoir average temperature when m_useSurfaceConditions == 0. More...
 
void setRegionAverageTemperature (real64 regionAverageTemperature)
 Set the reservoir average temperature when m_useSurfaceConditions == 0. More...
 
void setWellStatus (real64 const &currentTime, WellControls::Status status)
 Set well status from time and internal action, eg. all perfs closed. More...
 
WellControls::Status getWellStatus () const
 Is the well open (or shut) based on internal action. More...
 
- Public Member Functions inherited from geos::dataRepository::Group
template<typename LOG_LEVEL_INFO >
std::enable_if_t< geos::is_log_level_info< LOG_LEVEL_INFO >, void > addLogLevel ()
 Append a levelCondition and a log description to the description of the wrapped object given a log info struct. Must be called in constructor. More...
 
virtual bool registerCallback (void *func, const std::type_info &funcType)
 Register a callback function on the group. More...
 
virtual void reinit ()
 Performs re-initialization of certain variable depending on the solver being used.
 
 Group (string const &name, Group *const parent)
 Constructor. More...
 
 Group (string const &name, conduit::Node &rootNode)
 Constructor. More...
 
 Group (Group &&source)=default
 Move constructor. More...
 
virtual ~Group ()
 Destructor, deletes all Groups and Wrappers owned by this Group.
 
 Group ()=delete
 Deleted default constructor.
 
 Group (Group const &)=delete
 Deleted copy constructor.
 
Groupoperator= (Group const &)=delete
 Deleted copy assignment operator. More...
 
Groupoperator= (Group &&)=delete
 Deleted move assignment operator. More...
 
void printDataHierarchy (integer indent=0) const
 Prints the data hierarchy recursively. More...
 
string dumpInputOptions () const
 
string dumpSubGroupsNames () const
 
string dumpWrappersNames () const
 
template<typename T = Group>
T & registerGroup (string const &name, std::unique_ptr< T > newObject)
 Register a new Group as a sub-group of current Group. More...
 
template<typename T = Group>
T & registerGroup (string const &name, T *newObject)
 Register a new Group as a sub-group of current Group. More...
 
template<typename T = Group>
T & registerGroup (string const &name)
 Register a new Group as a sub-group of current Group. More...
 
template<typename T = Group>
T & registerGroup (subGroupMap::KeyIndex const &keyIndex)
 Register a new Group as a sub-group of current Group. More...
 
void deregisterGroup (string const &name)
 Removes a child group from this group. More...
 
virtual GroupcreateChild (string const &childKey, string const &childName)
 Creates a new sub-Group using the ObjectCatalog functionality. More...
 
template<typename T = Group, typename KEY = void>
T * getGroupPointer (KEY const &key)
 Return a pointer to a sub-group of the current Group. More...
 
template<typename T = Group, typename KEY = void>
T const * getGroupPointer (KEY const &key) const
 Return a pointer to a sub-group of the current Group. More...
 
template<typename T = Group, typename KEY = void>
T & getGroup (KEY const &key)
 Return a reference to a sub-group of the current Group. More...
 
template<typename T = Group, typename KEY = void>
T const & getGroup (KEY const &key) const
 Return a reference to a sub-group of the current Group. More...
 
template<typename T = Group>
T & getGroupByPath (string const &path)
 Retrieve a group from the hierarchy using a path. More...
 
template<typename T = Group>
T const & getGroupByPath (string const &path) const
 Retrieve a group from the hierarchy using a path. More...
 
subGroupMapgetSubGroups ()
 Get the subgroups object. More...
 
subGroupMap const & getSubGroups () const
 Get the subgroups object. More...
 
localIndex numSubGroups () const
 return the number of sub groups in this Group More...
 
stdVector< stringgetSubGroupsNames () const
 
template<typename T = Group>
bool hasGroup (string const &name) const
 Check whether a sub-group exists. More...
 
template<typename T >
bool hasSubGroupOfType () const
 Check whether a sub-group exists by type. More...
 
template<typename GROUPTYPE = Group, typename ... GROUPTYPES, typename LAMBDA >
void forSubGroups (LAMBDA &&lambda)
 Apply the given functor to subgroups that can be casted to one of specified types. More...
 
template<typename GROUPTYPE = Group, typename ... GROUPTYPES, typename LAMBDA >
void forSubGroups (LAMBDA &&lambda) const
 Apply the given functor to subgroups that can be casted to one of specified types. More...
 
template<typename GROUPTYPE = Group, typename ... GROUPTYPES, typename LAMBDA >
void forSubGroupsIndex (LAMBDA &&lambda)
 Apply the given functor to subgroups that can be casted to one of specified types. More...
 
template<typename GROUPTYPE = Group, typename ... GROUPTYPES, typename LAMBDA >
void forSubGroupsIndex (LAMBDA &&lambda) const
 Apply the given functor to subgroups that can be casted to one of specified types. More...
 
template<typename GROUPTYPE = Group, typename ... GROUPTYPES, typename LOOKUP_CONTAINER , typename LAMBDA >
void forSubGroups (LOOKUP_CONTAINER const &subGroupKeys, LAMBDA &&lambda)
 Apply the given functor to subgroups that can be casted to one of specified types. More...
 
template<typename GROUPTYPE = Group, typename ... GROUPTYPES, typename LOOKUP_CONTAINER , typename LAMBDA >
void forSubGroups (LOOKUP_CONTAINER const &subGroupKeys, LAMBDA &&lambda) const
 Apply the given functor to subgroups that can be casted to one of specified types. More...
 
template<typename LAMBDA >
void forWrappers (LAMBDA &&lambda)
 Apply the given functor to wrappers. More...
 
template<typename LAMBDA >
void forWrappers (LAMBDA &&lambda) const
 Apply the given functor to wrappers. More...
 
template<typename TYPE , typename ... TYPES, typename LAMBDA >
void forWrappers (LAMBDA &&lambda)
 Apply the given functor to wrappers that can be cast to one of specified types. More...
 
template<typename TYPE , typename ... TYPES, typename LAMBDA >
void forWrappers (LAMBDA &&lambda) const
 Apply the given functor to wrappers that can be cast to one of specified types. More...
 
template<typename T , typename TBASE = T>
Wrapper< TBASE > & registerWrapper (string const &name, wrapperMap::KeyIndex::index_type *const rkey=nullptr)
 Create and register a Wrapper around a new object. More...
 
template<typename T , typename TBASE = T>
Wrapper< TBASE > & registerWrapper (Group::wrapperMap::KeyIndex const &viewKey)
 Create and register a Wrapper around a new object. More...
 
template<typename T >
Wrapper< T > & registerWrapper (string const &name, std::unique_ptr< T > newObject)
 Register a Wrapper around a given object and take ownership. More...
 
template<typename T >
Wrapper< T > & registerWrapper (string const &name, T *newObject)
 Register a Wrapper around an existing object, does not take ownership of the object. More...
 
WrapperBaseregisterWrapper (std::unique_ptr< WrapperBase > wrapper)
 Register and take ownership of an existing Wrapper. More...
 
void deregisterWrapper (string const &name)
 Removes a Wrapper from this group. More...
 
void generateDataStructureSkeleton (integer const level)
 Build a complete datastructure for schema generation. More...
 
virtual void setSchemaDeviations (xmlWrapper::xmlNode schemaRoot, xmlWrapper::xmlNode schemaParent, integer documentationType)
 Inform the schema generator of any deviations between the xml and GEOS data structures. More...
 
virtual void registerDataOnMeshRecursive (Group &meshBodies)
 Calls RegisterDataOnMesh() recursively. More...
 
virtual void registerDataOnMesh (Group &meshBodies)
 Register data on mesh entities. More...
 
virtual localIndex packSize (string_array const &wrapperNames, integer const recursive, bool onDevice, parallelDeviceEvents &events) const
 Get the size required to pack a list of wrappers. More...
 
virtual localIndex packSize (string_array const &wrapperNames, arrayView1d< localIndex const > const &packList, integer const recursive, bool onDevice, parallelDeviceEvents &events) const
 Get the size required to pack a list of indices within a list of wrappers. More...
 
localIndex packSize (arrayView1d< localIndex const > const &packList, integer const recursive, bool onDevice, parallelDeviceEvents &events) const
 Get the size required to pack a list of indices for all registered wrappers. More...
 
virtual localIndex pack (buffer_unit_type *&buffer, string_array const &wrapperNames, integer const recursive, bool onDevice, parallelDeviceEvents &events) const
 Pack a list of wrappers to a buffer. More...
 
virtual localIndex pack (buffer_unit_type *&buffer, string_array const &wrapperNames, arrayView1d< localIndex const > const &packList, integer const recursive, bool onDevice, parallelDeviceEvents &events) const
 Pack a list of indices within a list of wrappers. More...
 
localIndex pack (buffer_unit_type *&buffer, arrayView1d< localIndex const > const &packList, integer const recursive, bool onDevice, parallelDeviceEvents &events) const
 Pack a list of indices for all registered wrappers. More...
 
virtual localIndex unpack (buffer_unit_type const *&buffer, arrayView1d< localIndex > &packList, integer const recursive, bool onDevice, parallelDeviceEvents &events, MPI_Op op=MPI_REPLACE)
 Unpack a buffer. More...
 
template<typename KEY >
WrapperBase const & getWrapperBase (KEY const &key) const
 Return a reference to a WrapperBase stored in this group. More...
 
template<typename KEY >
WrapperBasegetWrapperBase (KEY const &key)
 Return a reference to a WrapperBase stored in this group. More...
 
indexType getWrapperIndex (string const &name) const
 
wrapperMap const & wrappers () const
 Get access to the internal wrapper storage. More...
 
wrapperMapwrappers ()
 Get access to the internal wrapper storage. More...
 
indexType numWrappers () const
 Return the number of wrappers. More...
 
stdVector< stringgetWrappersNames () const
 
template<typename LOOKUP_TYPE >
bool hasWrapper (LOOKUP_TYPE const &lookup) const
 Check if a wrapper exists. More...
 
template<typename T , typename LOOKUP_TYPE >
Wrapper< T > const & getWrapper (LOOKUP_TYPE const &index) const
 Retrieve a Wrapper stored in this group. More...
 
template<typename T , typename LOOKUP_TYPE >
Wrapper< T > & getWrapper (LOOKUP_TYPE const &index)
 Retrieve a Wrapper stored in this group. More...
 
template<typename T , typename LOOKUP_TYPE >
Wrapper< T > const * getWrapperPointer (LOOKUP_TYPE const &index) const
 Retrieve a Wrapper stored in this group. More...
 
template<typename T , typename LOOKUP_TYPE >
Wrapper< T > * getWrapperPointer (LOOKUP_TYPE const &index)
 Retrieve a Wrapper stored in this group. More...
 
template<typename T , typename LOOKUP_TYPE >
GEOS_DECLTYPE_AUTO_RETURN getReference (LOOKUP_TYPE const &lookup) const
 Look up a wrapper and get reference to wrapped object. More...
 
template<typename T , typename LOOKUP_TYPE >
T & getReference (LOOKUP_TYPE const &lookup)
 Look up a wrapper and get reference to wrapped object. More...
 
virtual void resize (localIndex const newSize)
 Resize the group and all contained wrappers that resize with parent. More...
 
virtual void reserve (indexType const newsize)
 Set the new capacity and reserve it in all wrappers that resize with parent. More...
 
localIndex capacity () const
 Get the "capacity" of the group, which determines the capacity of resizable wrappers. More...
 
localIndex size () const
 Get the "size" of the group, which determines the number of elements in resizable wrappers. More...
 
string const & getName () const
 Get group name. More...
 
string getPath () const
 Return the path of this Group in the data repository. Starts with '/' followed by the hierarchy of the children of the "Problem" in which the Group is. More...
 
DataContext const & getDataContext () const
 
template<typename KEY >
DataContext const & getWrapperDataContext (KEY key) const
 
GroupgetParent ()
 Access the group's parent. More...
 
Group const & getParent () const
 Access the group's parent. More...
 
bool hasParent () const
 
localIndex getIndexInParent () const
 Get the group's index within its parent group. More...
 
localIndex getSubGroupIndex (keyType const &key) const
 Get the index of a sub-Group within this group. More...
 
int sizedFromParent () const
 Check whether this Group is resized when its parent is resized. More...
 
GroupsetSizedFromParent (int val)
 Set whether this wrapper is resized when its parent is resized. More...
 
RestartFlags getRestartFlags () const
 Get flags that control restart output of this group. More...
 
void setRestartFlags (RestartFlags flags)
 Set flags that control restart output of this group. More...
 
InputFlags getInputFlags () const
 Get input flags for schema generation. More...
 
void setInputFlags (InputFlags flags)
 Set input flags for schema generation. More...
 
conduit::Node & getConduitNode ()
 Return the Conduit node object associated with this group. More...
 
conduit::Node const & getConduitNode () const
 Return the Conduit node object associated with this group. More...
 
void prepareToWrite ()
 Register the group and its wrappers with Conduit.
 
void finishWriting ()
 Write the group and its wrappers into Conduit.
 
void loadFromConduit ()
 Read the group and its wrappers from Conduit.
 
void setLogLevel (integer const logLevel)
 Set verbosity level. More...
 
integer getLogLevel () const
 
virtual void initialize_postMeshGeneration ()
 initialization post generation of the mesh.
 
void initialize ()
 Run initialization functions on this and all subgroups. More...
 
virtual void initializationOrder (string_array &order)
 Sets the initialization order for sub-Groups. More...
 
void initializePostInitialConditions ()
 Initialization routine to be called after calling ApplyInitialConditions(). More...
 
void postRestartInitializationRecursive ()
 Initialization routine to be called after calling reading a restart file. More...
 
void processInputFileRecursive (xmlWrapper::xmlDocument &xmlDocument, xmlWrapper::xmlNode &targetNode)
 Recursively read values using ProcessInputFile() from the input file and put them into the wrapped values for this group. Also add the includes content to the xmlDocument when Include nodes are encountered. More...
 
void processInputFileRecursive (xmlWrapper::xmlDocument &xmlDocument, xmlWrapper::xmlNode &targetNode, xmlWrapper::xmlNodePos const &targetNodePos)
 Same as processInputFileRecursive(xmlWrapper::xmlDocument &, xmlWrapper::xmlNode &) but allow to reuse an existing xmlNodePos. More...
 
void postInputInitializationRecursive ()
 Recursively call postInputInitialization() to apply post processing after reading input values.
 

Public Attributes

geos::CompositionalMultiphaseWell::viewKeyStruct viewKeysCompMultiphaseWell
 

Protected Member Functions

virtual void postInputInitialization () override
 
virtual void initializePostSubGroups () override
 Called by Initialize() after to initializing sub-Groups.
 
virtual void initializePostInitialConditionsPreSubGroups () override
 Called by InitializePostInitialConditions() prior to initializing sub-Groups.
 
void saveState (WellElementSubRegion &subRegion)
 
virtual void postRestartInitialization () override
 Performs initialization required after reading from a restart file.
 
virtual void validateWellConstraints (real64 const &time_n, real64 const &dt, WellElementSubRegion const &subRegion) override
 Make sure that the well constraints are compatible. More...
 
virtual void createSeparator (WellElementSubRegion &subRegion) override
 Create well separator.
 
- Protected Member Functions inherited from geos::WellControls
void logConstraint (WellConstraintBase const *constraint, WellElementSubRegion const &region, real64 time, bool isLimiting=false) const
 Logs the state and values of a specific well constraint. More...
 
bool validateReferenceRegion () const
 Validates the reference region. More...
 
- Protected Member Functions inherited from geos::dataRepository::Group
virtual void initializePostInitialConditionsPostSubGroups ()
 Called by InitializePostInitialConditions() after to initializing sub-Groups.
 

Protected Attributes

std::unique_ptr< compositionalMultiphaseStatistics::StatsAggregatorm_reservoirStatsAggregator
 optional statistics aggregator to get the average pressure of simulated region
 
- Protected Attributes inherited from geos::WellControls
Type m_type
 Well type (as Type enum)
 
std::string m_flowSolverName
 Name of the flow solver managing this well.
 
std::string m_discretizationName
 Name of the discretization for the region.
 
integer m_useMass
 flag indicating whether mass or molar formulation should be used
 
integer m_numPhases
 the max number of fluid phases
 
integer m_numComponents
 the number of fluid components
 
integer m_numDofPerWellElement
 the number of Degrees of Freedom per well element
 
integer m_numDofPerResElement
 the number of Degrees of Freedom per reservoir element
 
integer m_isThermal
 flag indicating whether thermal formulation is used
 
bool m_keepVariablesConstantDuringInitStep
 flag to freeze the initial state during initialization in coupled problems
 
integer m_writeCSV
 rates output
 
string const m_ratesOutputDir
 
integer m_timeStepFromTables
 
real64 m_refElevation
 Reference elevation.
 
real64 m_refGravCoef
 Gravity coefficient of the reference elevation.
 
ConstraintTypeId m_inputControl
 Input well controls as a Control enum.
 
ConstraintTypeId m_currentControl
 Well controls as a Control enum.
 
integer m_useSurfaceConditions
 Flag to decide whether rates are controlled at rates or surface conditions.
 
std::unique_ptr< constitutive::ConstitutiveBase > m_fluidSeparatorPtr
 
string m_referenceFluidModelName
 name of the fluid constitutive model used as a reference for component/phase description on subregion
 
string m_referenceReservoirRegion
 Reservoir region associated with reservoir volume constraint.
 
real64 m_surfacePres
 Surface pressure.
 
real64 m_surfaceTemp
 Surface temperature.
 
string m_perfStatusTableName
 Perforation status table name.
 
integer m_isCrossflowEnabled
 Flag to enable crossflow.
 
real64 m_initialPressureCoefficient
 Tuning coefficient for the initial well pressure.
 
WellConstraintBasem_currentConstraint {}
 
WellControls::Status m_wellStatus
 Well status.
 
bool m_wellOpen
 Well open flag.
 
string m_statusTableName
 Well status table name.
 
TableFunction const * m_statusTable
 Status table.
 
real64 m_regionAveragePressure
 Region average pressure used in volume rate constraint calculations.
 
real64 m_regionAverageTemperature
 Region average temperature used in volume rate constraint calculations.
 
integer m_estimateSolution
 
integer m_enableIsoThermalEstimator
 
bool m_thermalEffectsEnabled
 
WellNewtonSolver m_wellNewtonSolver
 
DofManager m_estimatorDoFManager
 Well DofManager. More...
 
bool m_dofManagerInitialized
 

Additional Inherited Members

- Public Types inherited from geos::WellControls
enum class  Type : integer { PRODUCER , INJECTOR }
 
enum class  Status : integer { OPEN , CLOSED }
 
- Public Types inherited from geos::dataRepository::Group
using subGroupMap = MappedVector< Group, Group *, keyType, indexType >
 The template specialization of MappedVector to use for the collection of sub-Group objects.
 
using wrapperMap = MappedVector< WrapperBase, WrapperBase *, keyType, indexType >
 The template specialization of MappedVector to use for the collection wrappers objects.
 
using CatalogInterface = dataRepository::CatalogInterface< Group, string const &, Group *const >
 Type alias for catalog interface used by this class. See CatalogInterface.
 
- Static Public Member Functions inherited from geos::WellControls
static string coupledSolverAttributePrefix ()
 String used to form the solverName used to register single-physics solvers in CoupledSolver.
 
static void setNextDtFromTable (TableFunction const *table, real64 const currentTime, real64 &nextDt)
 Set next time step based on a table function. More...
 
template<typename CONSTITUTIVE_BASE_TYPE >
static string getConstitutiveName (ElementSubRegionBase const &subRegion)
 Get the Constitutive Name object. More...
 
- Static Public Member Functions inherited from geos::dataRepository::Group
template<typename T0 , typename T1 , typename ... CASTTYPES, typename CONTAINERTYPE , typename LAMBDA >
static bool applyLambdaToContainer (CONTAINERTYPE &container, LAMBDA &&lambda)
 Apply a given functor to a container if the container can be cast to one of the specified types. More...
 
static CatalogInterface::CatalogTypegetCatalog ()
 Get the singleton catalog for this Group. More...
 
static string processInputName (xmlWrapper::xmlNode const &targetNode, xmlWrapper::xmlNodePos const &targetNodePos, string_view parentNodeName, xmlWrapper::xmlNodePos const &parentNodePos, std::set< string > &siblingNames)
 

Detailed Description

A compositional multiphase well solver

Definition at line 51 of file CompositionalMultiphaseWell.hpp.

Constructor & Destructor Documentation

◆ CompositionalMultiphaseWell()

geos::CompositionalMultiphaseWell::CompositionalMultiphaseWell ( const string name,
Group *const  parent 
)

main constructor for Group Objects

Parameters
namethe name of this instantiation of Group in the repository
parentthe parent group of this instantiation of Group

Member Function Documentation

◆ calculateReferenceElementRates()

void geos::CompositionalMultiphaseWell::calculateReferenceElementRates ( WellElementSubRegion subRegion)

Calculate well rates at reference element.

Parameters
subRegionthe well subregion containing all the primary and dependent fields
targetIndexthe targetIndex of the subRegion

◆ chopNegativeDensities()

void geos::CompositionalMultiphaseWell::chopNegativeDensities ( WellElementSubRegion subRegion)

Sets all the negative component densities (if any) to zero.

Parameters
subRegionthe well subregion containing all the primary and dependent fields

◆ postInputInitialization()

virtual void geos::CompositionalMultiphaseWell::postInputInitialization ( )
overrideprotectedvirtual

This function provides capability to post process input values prior to any other initialization operations.

Reimplemented from geos::WellControls.

◆ updateBHPForConstraint()

void geos::CompositionalMultiphaseWell::updateBHPForConstraint ( WellElementSubRegion subRegion)

Recompute the current BHP pressure.

Parameters
subRegionthe well subregion containing all the primary and dependent fields
targetIndexthe targetIndex of the subRegion

◆ updateFluidModel()

void geos::CompositionalMultiphaseWell::updateFluidModel ( WellElementSubRegion subRegion)

Update all relevant fluid models using current values of pressure and composition.

Parameters
subRegionthe well subregion containing all the primary and dependent fields
targetIndexthe targetIndex of the subRegion

◆ updateGlobalComponentFraction()

void geos::CompositionalMultiphaseWell::updateGlobalComponentFraction ( WellElementSubRegion subRegion) const

Recompute global component fractions from primary variables (component densities)

Parameters
subRegionthe well subregion containing all the primary and dependent fields

◆ updatePhaseVolumeFraction()

real64 geos::CompositionalMultiphaseWell::updatePhaseVolumeFraction ( WellElementSubRegion subRegion) const

Recompute phase volume fractions (saturations) from constitutive and primary variables.

Parameters
subRegionthe well subregion containing all the primary and dependent fields
targetIndexthe targetIndex of the subRegion

◆ updateSeparator()

void geos::CompositionalMultiphaseWell::updateSeparator ( real64  time_n,
MeshBody const &  meshBody,
ElementRegionManager const &  elemManager,
WellElementSubRegion subRegion 
)

Update well separator using current values of pressure and composition at the reference element.

Parameters
elemManagerthe element region manager

◆ updateTotalMassDensity()

void geos::CompositionalMultiphaseWell::updateTotalMassDensity ( WellElementSubRegion subRegion) const

Recompute total mass densities from mass density and phase volume fractions.

Parameters
subRegionthe well subregion containing all the primary and dependent fields

◆ updateVolRatesForConstraint()

void geos::CompositionalMultiphaseWell::updateVolRatesForConstraint ( WellElementSubRegion const &  subRegion)

Recompute the volumetric rates that are used in the well constraints.

Parameters
subRegionthe well subregion containing all the primary and dependent fields

◆ updateWellState()

virtual real64 geos::CompositionalMultiphaseWell::updateWellState ( MeshBody const &  meshBody,
ElementRegionManager const &  elemManager,
WellElementSubRegion subRegion 
)
overridevirtual

Recompute all dependent quantities from primary variables (including constitutive models)

Parameters
subRegionthe well subregion containing all the primary and dependent fields

Implements geos::WellControls.

◆ validateFluidModel()

void geos::CompositionalMultiphaseWell::validateFluidModel ( constitutive::MultiFluidBase const &  fluid,
constitutive::MultiFluidBase const &  referenceFluid 
) const

Checks fluild model compatibility and validity.

Parameters
[in]fluidthe fluid to check
[in]referenceFluidthe reference fluid model @detail This function will produce an error if one of the well constitutive models is incompatible with the corresponding models in reservoir regions connected to that particular well.

◆ validateWellConstraints()

virtual void geos::CompositionalMultiphaseWell::validateWellConstraints ( real64 const &  time_n,
real64 const &  dt,
WellElementSubRegion const &  subRegion 
)
overrideprotectedvirtual

Make sure that the well constraints are compatible.

Parameters
time_nthe time at the beginning of the time step
dtthe time step dt
subRegionthe well subRegion
elemManagerthe element manager

Implements geos::WellControls.


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