10#ifdef MOOSE_MFEM_ENABLED
41 const std::string & existing_or_literal);
43 template <
class P,
class... Args>
59 const std::vector<std::string> &
blocks,
60 const std::string & existing_or_literal);
67 template <
class P,
class... Args>
69 const std::vector<std::string> &
blocks,
78 mfem::VectorCoefficient &
declareVector(
const std::string & name,
79 const std::string & existing_or_literal);
81 template <
class P,
class... Args>
98 const std::vector<std::string> &
blocks,
99 const std::string & existing_or_literal);
106 template <
class P,
class... Args>
108 const std::vector<std::string> &
blocks,
118 mfem::MatrixCoefficient &
declareMatrix(
const std::string & name,
119 const std::string & existing_coef);
121 template <
class P,
class... Args>
138 const std::vector<std::string> &
blocks,
139 const std::string & existing_coef);
146 template <
class P,
class... Args>
148 const std::vector<std::string> &
blocks,
173 void setTime(
const mfem::real_t time);
186 std::shared_ptr<mfem::Coefficient> coef);
188 const std::vector<std::string> &
blocks,
189 std::shared_ptr<mfem::Coefficient> coef);
190 mfem::VectorCoefficient &
declareVector(
const std::string & name,
191 std::shared_ptr<mfem::VectorCoefficient> coef);
193 const std::vector<std::string> &
blocks,
194 std::shared_ptr<mfem::VectorCoefficient> coef);
195 mfem::MatrixCoefficient &
declareMatrix(
const std::string & name,
196 std::shared_ptr<mfem::MatrixCoefficient> coef);
198 const std::vector<std::string> &
blocks,
199 std::shared_ptr<mfem::MatrixCoefficient> coef);
Front-end class for creating and storing MFEM coefficients.
std::shared_ptr< mfem::Coefficient > getScalarCoefficientPtr(const std::string &name)
mfem::MatrixCoefficient & declareMatrixProperty(const std::string &name, const std::vector< std::string > &blocks, Args &&... args)
Use a new matrix coefficient, constructed from the argument pack, for a property on some blocks of th...
mfem::VectorCoefficient & declareVectorProperty(const std::string &name, const std::vector< std::string > &blocks, const std::string &existing_or_literal)
Use an existing vector coefficient for a property on some blocks of the mesh.
mfem::VectorCoefficient & declareVectorProperty(const std::string &name, const std::vector< std::string > &blocks, Args &&... args)
Use a new vector coefficient, constructed from the argument pack, for a property on some blocks of th...
bool scalarPropertyIsDefined(const std::string &name, const std::string &block) const
std::shared_ptr< mfem::VectorCoefficient > getVectorCoefficientPtr(const std::string &name)
mfem::Coefficient & declareScalarProperty(const std::string &name, const std::vector< std::string > &blocks, const std::string &existing_or_literal)
Use an existing scalar coefficient for a property on some blocks of the mesh.
CoefficientManager()=default
void setTime(const mfem::real_t time)
P & declareVector(const std::string &name, Args &&... args)
Create a new vector coefficient, constructed from the argument pack.
mfem::Coefficient & declareScalar(const std::string &name, const std::string &existing_or_literal)
Declare an alias to an existing scalar coefficient or, if it does not exist, try interpreting the nam...
mfem::MatrixCoefficient & declareMatrixProperty(const std::string &name, const std::vector< std::string > &blocks, const std::string &existing_coef)
Use an existing matrix coefficient for a property on some blocks of the mesh.
mfem::MatrixCoefficient & declareMatrix(const std::string &name, const std::string &existing_coef)
Declare an alias to an existing matrix coefficient.
P & declareMatrix(const std::string &name, Args &&... args)
Create a new matrix coefficient, constructed from the argument pack.
mfem::MatrixCoefficient & getMatrixCoefficient(const std::string &name)
Return scalar coefficient with the given name.
mfem::VectorCoefficient & getVectorCoefficient(const std::string &name)
Return a vector coefficient with the given name or, if that doesn't exists, try interpreting the name...
bool vectorPropertyIsDefined(const std::string &name, const std::string &block) const
mfem::Coefficient & getScalarCoefficient(const std::string &name)
Return a scalar coefficient with the given name or, if that doesn't exists, try interpreting the name...
void markSolutionChanged()
Notify quadrature function coefficients that solution variables have changed, marking the stored valu...
mfem::VectorCoefficient & declareVector(const std::string &name, const std::string &existing_or_literal)
Declare an alias to an existing vector coefficientor or, if it does not exist, try interpreting the n...
std::shared_ptr< mfem::MatrixCoefficient > getMatrixCoefficientPtr(const std::string &name)
bool matrixPropertyIsDefined(const std::string &name, const std::string &block) const
P & declareScalar(const std::string &name, Args &&... args)
Create a new scalar coefficient, constructed from the argument pack.
mfem::Coefficient & declareScalarProperty(const std::string &name, const std::vector< std::string > &blocks, Args &&... args)
Use a new scalar coefficient, constructed from the argument pack, for a property on some blocks of th...
std::shared_ptr< P > make(Args &&... args)
Make arbitrary coefficients which will be tracked by this object.
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).