20 #ifndef GEOS_FIELDSPECIFICATION_FIELDSPECIFICATIONMANAGER_HPP_
21 #define GEOS_FIELDSPECIFICATION_FIELDSPECIFICATIONMANAGER_HPP_
32 namespace dataRepository
73 virtual Group *
createChild(
string const & childKey,
string const & childName )
override;
97 template<
typename POLICY=parallelHostPolicy >
100 string const & fieldName )
const
104 applyFieldValue< POLICY >( time, mesh, fieldName,
133 template<
typename POLICY=parallelHostPolicy,
typename LAMBDA=
void >
136 string const & fieldName,
137 LAMBDA && lambda )
const;
168 template<
typename POLICY=parallelHostPolicy,
typename PRELAMBDA=
void,
typename POSTLAMBDA=
void >
171 string const & fieldName,
172 PRELAMBDA && preLambda,
173 POSTLAMBDA && postLambda )
const;
213 string const & fieldName,
214 LAMBDA && lambda )
const
219 string const meshLevelName = mesh.
getName();
222 this->forSubGroups< BCTYPE >( [&] ( BCTYPE
const & fs )
224 FieldSpecificationImpl::apply< OBJECT_TYPE, BCTYPE, LAMBDA >( fs,
226 std::forward< LAMBDA >( lambda ),
238 m_isSurfaceGenerationCase = isSurfaceGenerationCase;
244 bool m_isSurfaceGenerationCase =
false;
248 template<
typename POLICY,
typename LAMBDA >
253 string const & fieldName,
254 LAMBDA && lambda )
const
258 apply( time, mesh, fieldName,
263 string const & targetField )
265 FieldSpecificationImpl::applyFieldValue< FieldSpecificationEqual, POLICY >( fs,
270 lambda( fs, targetSet );
274 template<
typename POLICY,
typename PRELAMBDA,
typename POSTLAMBDA >
279 string const & fieldName,
280 PRELAMBDA && preLambda,
281 POSTLAMBDA && postLambda )
const
285 apply( time, mesh, fieldName,
290 string const & targetField )
292 preLambda( fs, targetSet );
293 FieldSpecificationImpl::applyFieldValue< FieldSpecificationEqual, POLICY >( fs,
298 postLambda( fs, targetSet );
string const boundaryConditionManager("BoundaryConditionManager")
The key for BoundaryConditionManager.
#define GEOS_MARK_FUNCTION
Mark function with both Caliper and NVTX if enabled.
void apply(real64 const time, MeshLevel &mesh, string const &fieldName, LAMBDA &&lambda) const
This function is the main driver for the field applications.
virtual Group * createChild(string const &childKey, string const &childName) override
Create a new FieldSpecification object as a child of this group.
void applyInitialConditions(MeshLevel &mesh) const
function to apply initial conditions
void applyFieldValue(real64 const time, MeshLevel &mesh, string const &fieldName) const
Function to apply a value directly to a field variable.
virtual void expandObjectCatalogs() override
This function is used to expand any catalogs in the data structure.
FieldSpecificationManager(string const &name, dataRepository::Group *const parent)
private constructor for the singleton BoundaryConditionManager.
void setIsSurfaceGenerationCase(bool isSurfaceGenerationCase)
void validateBoundaryConditions(MeshLevel &mesh) const
function to validate the application of boundary conditions
static FieldSpecificationManager & getInstance()
Class facilitating the representation of a multi-level discretization of a MeshBody.
string const & getName() const
Get group name.
Group & getParent()
Access the group's parent.
double real64
64-bit floating point type.
LvArray::SortedArrayView< T, localIndex, LvArray::ChaiBuffer > SortedArrayView
A sorted array view of local indices.