23 #include "libmesh/ignore_warnings.h" 25 #include "libmesh/restore_warnings.h" 44 const std::string & existing_or_literal);
46 template <
class P,
class... Args>
62 const std::vector<std::string> &
blocks,
63 const std::string & existing_or_literal);
70 template <
class P,
class... Args>
72 const std::vector<std::string> &
blocks,
81 mfem::VectorCoefficient &
declareVector(
const std::string & name,
82 const std::string & existing_or_literal);
84 template <
class P,
class... Args>
101 const std::vector<std::string> &
blocks,
102 const std::string & existing_or_literal);
109 template <
class P,
class... Args>
111 const std::vector<std::string> &
blocks,
121 mfem::MatrixCoefficient &
declareMatrix(
const std::string & name,
122 const std::string & existing_coef);
124 template <
class P,
class... Args>
141 const std::vector<std::string> &
blocks,
142 const std::string & existing_coef);
149 template <
class P,
class... Args>
151 const std::vector<std::string> &
blocks,
176 void setTime(
const double time);
184 std::shared_ptr<mfem::Coefficient> coef);
186 const std::vector<std::string> &
blocks,
187 std::shared_ptr<mfem::Coefficient> coef);
188 mfem::VectorCoefficient &
declareVector(
const std::string & name,
189 std::shared_ptr<mfem::VectorCoefficient> coef);
191 const std::vector<std::string> &
blocks,
192 std::shared_ptr<mfem::VectorCoefficient> coef);
193 mfem::MatrixCoefficient &
declareMatrix(
const std::string & name,
194 std::shared_ptr<mfem::MatrixCoefficient> coef);
196 const std::vector<std::string> &
blocks,
197 std::shared_ptr<mfem::MatrixCoefficient> coef);
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...
std::string name(const ElemQuality q)
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, const std::string &existing_or_literal)
Use an existing scalar coefficient for a property on some blocks of the mesh.
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...
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.
bool scalarPropertyIsDefined(const std::string &name, const std::string &block) const
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...
Front-end class for creating and storing MFEM coefficients.
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.
std::shared_ptr< mfem::VectorCoefficient > getVectorCoefficientPtr(const std::string &name)
void setTime(const double time)
std::shared_ptr< mfem::MatrixCoefficient > getMatrixCoefficientPtr(const std::string &name)
mfem::MatrixCoefficient & declareMatrix(const std::string &name, const std::string &existing_coef)
Declare an alias to an existing matrix coefficient.
mfem::MatrixCoefficient & getMatrixCoefficient(const std::string &name)
Return scalar coefficient with the given name.
P & declareMatrix(const std::string &name, Args &&... args)
Create a new matrix 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...
std::shared_ptr< mfem::Coefficient > getScalarCoefficientPtr(const std::string &name)
P & declareVector(const std::string &name, Args &&... args)
Create a new vector 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...
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...
bool vectorPropertyIsDefined(const std::string &name, const std::string &block) const
bool matrixPropertyIsDefined(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...
CoefficientManager()=default
std::shared_ptr< P > make(Args &&... args)
Make arbitrary coefficients which will be tracked by this object.