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

#include <SinglePhaseWell.hpp>

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

Classes

struct  viewKeyStruct
 

Public Types

using DerivOffset = constitutive::singlefluid::DerivativeOffsetC< 1 >
 
- 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.
 

Public Member Functions

 SinglePhaseWell (const string &name, Group *const parent)
 main constructor for Group Objects More...
 
 SinglePhaseWell ()=delete
 deleted default constructor
 
 SinglePhaseWell (SinglePhaseWell const &)=delete
 deleted copy constructor
 
 SinglePhaseWell (SinglePhaseWell &&)=delete
 default move constructor
 
SinglePhaseWelloperator= (SinglePhaseWell const &)=delete
 deleted assignment operator
 
SinglePhaseWelloperator= (SinglePhaseWell &&)=delete
 deleted move operator
 
virtual ~SinglePhaseWell () override
 default destructor
 
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 constraint 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
 
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 GEOS_UNUSED_PARAM(time_n), real64 const GEOS_UNUSED_PARAM(dt), ElementRegionManager &GEOS_UNUSED_PARAM(elemManager), WellElementSubRegion &GEOS_UNUSED_PARAM(subRegion), DofManager const &GEOS_UNUSED_PARAM(dofManager), arrayView1d< real64 > const &GEOS_UNUSED_PARAM(localRhs), CRSMatrixView< real64, globalIndex const > const &GEOS_UNUSED_PARAM(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
 
virtual real64 updateSubRegionState (real64 const 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
 
virtual void updateBHPForConstraint (WellElementSubRegion &subRegion)
 Recompute the BHP pressure that is used in the well constraints. More...
 
virtual void updateFluidModel (WellElementSubRegion &subRegion) const
 Update fluid constitutive model state. More...
 
void updateSeparator (ElementRegionManager const &elemManager, WellElementSubRegion &subRegion)
 Update separator model state. More...
 
void calculateReferenceElementRates (WellElementSubRegion &subRegion)
 Calculate well rates at the reference element. More...
 
virtual real64 updateWellState (MeshBody const &meshBody, ElementRegionManager const &elemManager, WellElementSubRegion &subRegion) override
 Recompute all dependent quantities from primary variables (including constitutive models) More...
 
void shutDownWell (WellElementSubRegion &subRegion, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs)
 
void assembleVolumeBalanceTerms (DomainPartition const &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs)
 
- 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 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)=0
 
virtual void postInputInitialization () override
 
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.
 

Protected Member Functions

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.
 
- 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 initializePostSubGroups ()
 Called by Initialize() after to initializing sub-Groups.
 
virtual void initializePostInitialConditionsPostSubGroups ()
 Called by InitializePostInitialConditions() after to initializing sub-Groups.
 

Protected Attributes

integer m_allowNegativePressure
 flag if negative pressure is allowed
 
- 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

- 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 single-phase well solver

Definition at line 52 of file SinglePhaseWell.hpp.

Constructor & Destructor Documentation

◆ SinglePhaseWell()

geos::SinglePhaseWell::SinglePhaseWell ( 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::SinglePhaseWell::calculateReferenceElementRates ( WellElementSubRegion subRegion)

Calculate well rates at the reference element.

Parameters
subRegionthe well subRegion containing the well elements and their associated fields

◆ updateBHPForConstraint()

virtual void geos::SinglePhaseWell::updateBHPForConstraint ( WellElementSubRegion subRegion)
virtual

Recompute the BHP pressure that is used in the well constraints.

Parameters
subRegionthe well subregion containing all the primary and dependent fields

◆ updateFluidModel()

virtual void geos::SinglePhaseWell::updateFluidModel ( WellElementSubRegion subRegion) const
virtual

Update fluid constitutive model state.

Parameters
subRegionthe well subRegion containing the well elements and their associated fields

◆ updateSeparator()

void geos::SinglePhaseWell::updateSeparator ( ElementRegionManager const &  elemManager,
WellElementSubRegion subRegion 
)

Update separator model state.

Parameters
elemManagerthe element region manager
subRegionthe well subRegion containing the separator

◆ updateWellState()

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

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

Parameters

Implements geos::WellControls.


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