34 const std::vector<std::string> &
blocks,
35 std::shared_ptr<mfem::Coefficient> coef)
43 const std::vector<std::string> &
blocks,
44 const std::string & existing_or_literal)
47 if (std::dynamic_pointer_cast<mfem::PWCoefficient>(coef))
48 mooseError(
"Properties must not be defined out of other properties or piecewise coefficients.");
52 mfem::VectorCoefficient &
54 std::shared_ptr<mfem::VectorCoefficient> coef)
60 mfem::VectorCoefficient &
66 mfem::VectorCoefficient &
68 const std::vector<std::string> &
blocks,
69 std::shared_ptr<mfem::VectorCoefficient> coef)
75 mfem::VectorCoefficient &
77 const std::vector<std::string> &
blocks,
78 const std::string & existing_or_literal)
80 std::shared_ptr<mfem::VectorCoefficient> coef =
82 if (std::dynamic_pointer_cast<mfem::PWVectorCoefficient>(coef))
83 mooseError(
"Properties must not be defined out of other properties or piecewise coefficients.");
87 mfem::MatrixCoefficient &
89 std::shared_ptr<mfem::MatrixCoefficient> coef)
95 mfem::MatrixCoefficient &
101 mfem::MatrixCoefficient &
103 const std::vector<std::string> &
blocks,
104 std::shared_ptr<mfem::MatrixCoefficient> coef)
110 mfem::MatrixCoefficient &
112 const std::vector<std::string> &
blocks,
113 const std::string & existing_coef)
116 if (std::dynamic_pointer_cast<mfem::PWMatrixCoefficient>(coef))
117 mooseError(
"Properties must not be defined out of other properties or piecewise coefficients.");
121 std::shared_ptr<mfem::Coefficient>
128 mfem::real_t real_value;
129 if (ss >> real_value && ss.eof())
131 this->declareScalar<mfem::ConstantCoefficient>(
name, real_value);
134 mooseError(
"Scalar coefficient with name '" +
name +
"' has not been declared.");
137 std::shared_ptr<mfem::VectorCoefficient>
143 std::vector<mfem::real_t> vec_values;
146 this->declareVector<mfem::VectorConstantCoefficient>(
147 name, mfem::Vector(vec_values.data(), vec_values.size()));
150 mooseError(
"Vector coefficient with name '" +
name +
"' has not been declared.");
153 std::shared_ptr<mfem::MatrixCoefficient>
166 mfem::VectorCoefficient &
172 mfem::MatrixCoefficient &
180 const std::string & block)
const 187 const std::string & block)
const 194 const std::string & block)
const std::string name(const ElemQuality q)
bool propertyDefinedOnBlock(const std::string &name, const std::string &block) const
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.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
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 tokenizeAndConvert(const std::string &str, std::vector< T > &tokenized_vector, const std::string &delimiter=" \\\)
tokenizeAndConvert splits a string using delimiter and then converts to type T.
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, 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.
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)
void addCoefficient(const std::string &name, std::shared_ptr< T > coeff)
Add a named global coefficient.
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::string trim(const std::string &str, const std::string &white_space=" \\\)
Standard scripting language trim function.
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...
void setTime(const double time)
std::shared_ptr< T > getCoefficientPtr(const std::string &name)
void addPiecewiseBlocks(const std::string &name, std::shared_ptr< T > coeff, const std::vector< std::string > &blocks)
Add piecewise material property.
bool hasCoefficient(const std::string &name) const