21 #ifndef GEOS_FINITEVOLUME_FLUXAPPROXIMATIONBASE_HPP_
22 #define GEOS_FINITEVOLUME_FLUXAPPROXIMATIONBASE_HPP_
103 template<
typename TYPE >
109 template<
typename TYPE >
118 template<
typename LAMBDA >
129 template<
typename TYPE,
typename ... TYPES,
typename LAMBDA >
138 string const & faceElementRegionName )
const = 0;
146 string const & embeddedSurfaceRegionName )
const = 0;
258 string const & setName )
const = 0;
267 string const & setName,
276 string const & setName )
const = 0;
307 template<
typename TYPE >
314 template<
typename TYPE >
321 template<
typename LAMBDA >
331 template<
typename TYPE,
typename ... TYPES,
typename LAMBDA >
335 stencilGroup.
forWrappers< TYPE, TYPES... >( [&] (
auto const & wrapper )
337 lambda( wrapper.reference() );
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
Provides management of the interior stencil points for a face elements when using Two-Point flux appr...
virtual void initializePreSubGroups() override
Called by Initialize() prior to initializing sub-Groups.
real64 m_areaRelTol
relative tolerance
virtual void addEmbeddedFracturesToStencils(MeshLevel &mesh, string const &embeddedSurfaceRegionName) const =0
Add a new embedded fracture stencil.
void setCoeffName(string const &name)
set the name of the coefficient.
array1d< string > & targetRegions(string const &meshBodyName)
get the list of the target regions on a given mesh body.
virtual void initializePostInitialConditionsPreSubGroups() override
Called by InitializePostInitialConditions() prior to initializing sub-Groups.
map< string, array1d< string > > m_targetRegions
names of target regions to build the stencil for
static CatalogInterface::CatalogType & getCatalog()
Return the data type in the data repository.
string m_coeffName
name of the coefficient field
void addFieldName(string const &name)
set the name of the field.
UpwindingParameters const & upwindingParams() const
get the upwinding parameters.
virtual void computeFractureStencil(MeshLevel &mesh) const =0
Actual Computation of the fracture related stencils.
real64 m_lengthScale
length scale of the mesh body
virtual void registerAquiferStencil(Group &stencilGroup, string const &setName) const =0
Register the wrapper for aquifer stencil on a mesh.
FluxApproximationBase(string const &name, dataRepository::Group *const parent)
Constructor.
virtual void registerCellStencil(Group &stencilGroup) const =0
Register the wrapper for cell stencil on a mesh.
array1d< string > m_fieldNames
name of the primary solution field
UpwindingParameters m_upwindingParams
upwinding parameters
virtual void computeBoundaryStencil(MeshLevel &mesh, string const &setName, SortedArrayView< localIndex const > const &faceSet) const =0
Allocate and populate a stencil to be used in dirichlet boundary condition application.
virtual void computeCellStencil(MeshLevel &mesh) const =0
Actual computation of the cell-to-cell stencil.
virtual void registerFractureStencil(Group &stencilGroup) const =0
Register the wrapper for fracture stencil on a mesh.
void forStencils(MeshLevel const &mesh, LAMBDA &&lambda) const
Call a user-provided function for the each stencil according to the provided TYPE.
virtual void registerBoundaryStencil(Group &stencilGroup, string const &setName) const =0
Register the wrapper for boundary face stencil on a mesh.
void forAllStencils(MeshLevel const &mesh, LAMBDA &&lambda) const
Call a user-provided function for each stencil.
TYPE const & getStencil(MeshLevel const &mesh, string const &name) const
Extract stencil stored under the mesh group.
virtual void addToFractureStencil(MeshLevel &mesh, string const &faceElementRegionName) const =0
Add a new fracture stencil.
virtual void computeAquiferStencil(DomainPartition &domain, MeshLevel &mesh) const =0
Allocate and populate a stencil to be used in aquifer boundary condition application.
Class facilitating the representation of a multi-level discretization of a MeshBody.
Provides management of the interior stencil points for a face elements when using Two-Point flux appr...
This class provides the base class/interface for the catalog value objects.
std::unordered_map< std::string, std::unique_ptr< CatalogInterface< BASETYPE, ARGS... > > > CatalogType
This is the type that will be used for the catalog. The catalog is actually instantiated in the BASET...
string const & getName() const
Get group name.
GEOS_DECLTYPE_AUTO_RETURN getReference(LOOKUP_TYPE const &lookup) const
Look up a wrapper and get reference to wrapped object.
T & getGroup(KEY const &key)
Return a reference to a sub-group of the current Group.
void forWrappers(LAMBDA &&lambda)
Apply the given functor to wrappers.
Base template for ordered and unordered maps.
ENUM_STRINGS(LinearSolverParameters::SolverType, "direct", "cg", "gmres", "fgmres", "bicgstab", "preconditioner")
Declare strings associated with enumeration values.
UpwindingScheme
Upwinding scheme.
@ C1PPU
C1-PPU upwinding from https://doi.org/10.1016/j.advwatres.2017.07.028.
@ IHU
IHU as in https://link.springer.com/content/pdf/10.1007/s10596-019-09835-6.pdf.
double real64
64-bit floating point type.
std::int32_t integer
Signed integer type.
LvArray::SortedArrayView< T, localIndex, LvArray::ChaiBuffer > SortedArrayView
A sorted array view of local indices.
Array< T, 1 > array1d
Alias for 1D array.
static constexpr auto stencilMeshGroupString()
static constexpr char const * fractureStencilString()
static constexpr char const * targetRegionsString()
static constexpr char const * upwindingSchemeString()
static constexpr char const * cellStencilString()
static constexpr char const * areaRelativeToleranceString()
static constexpr char const * transMultiplierString()
static constexpr char const * fieldNameString()
static constexpr char const * coeffNameString()
UpwindingScheme upwindingScheme
PPU or C1-PPU or IHU.