20 params.
addClassDescription(
"Array time derivative operator with the weak form of $(\\psi_i, "
21 "\\frac{\\partial u_h}{\\partial t})$.");
22 params.
addParam<MaterialPropertyName>(
"time_derivative_coefficient",
23 "The name of the time derivative coefficient. "
24 "Can be scalar, vector, or matrix material property.");
30 _has_coefficient(isParamValid(
"time_derivative_coefficient")),
31 _coeff(_has_coefficient && hasMaterialProperty<Real>(
"time_derivative_coefficient")
32 ? &getMaterialProperty<Real>(
"time_derivative_coefficient")
34 _coeff_array(_has_coefficient &&
35 hasMaterialProperty<RealEigenVector>(
"time_derivative_coefficient")
36 ? &getMaterialProperty<RealEigenVector>(
"time_derivative_coefficient")
38 _coeff_2d_array(_has_coefficient &&
39 hasMaterialProperty<RealEigenMatrix>(
"time_derivative_coefficient")
40 ? &getMaterialProperty<RealEigenMatrix>(
"time_derivative_coefficient")
45 MaterialPropertyName mat = getParam<MaterialPropertyName>(
"time_derivative_coefficient");
46 mooseError(
"Property " + mat +
" is of unsupported type for ArrayTimeDerivative");
57 "time_derivative_coefficient",
72 "time_derivative_coefficient size is inconsistent with the number of components "
80 "time_derivative_coefficient size is inconsistent with the number of components "
83 "time_derivative_coefficient size is inconsistent with the number of components "
95 return RealEigenVector::Constant(
_var.
count(), tmp);
99 return tmp * (*_coeff_array)[
_qp];
101 return tmp * (*_coeff_2d_array)[
_qp].diagonal();
registerMooseObject("MooseApp", ArrayTimeDerivative)
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
const ArrayVariableTestValue & _test
the current test function
ArrayMooseVariable & _var
This is an array kernel so we cast to a ArrayMooseVariable.
virtual RealEigenMatrix computeQpOffDiagJacobian(const MooseVariableFEBase &jvar)
This is the virtual that derived classes should override for computing a full Jacobian component.
const ArrayVariablePhiValue & _phi
the current shape functions
virtual RealEigenVector computeQpJacobian() override
Compute this Kernel's contribution to the diagonal Jacobian at the current quadrature point.
virtual RealEigenMatrix computeQpOffDiagJacobian(const MooseVariableFEBase &jvar) override
This is the virtual that derived classes should override for computing a full Jacobian component.
const MaterialProperty< RealEigenVector > *const _coeff_array
array time derivative coefficient
virtual void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job.
const MaterialProperty< RealEigenMatrix > *const _coeff_2d_array
matrix time derivative coefficient
virtual void computeQpResidual(RealEigenVector &residual) override
Compute this Kernel's contribution to the residual at the current quadrature point,...
const MaterialProperty< Real > *const _coeff
scalar time derivative coefficient
static InputParameters validParams()
const bool _has_coefficient
whether or not the coefficient property is provided
ArrayTimeDerivative(const InputParameters ¶meters)
All array time kernels should inherit from this class.
const VariableValue & _du_dot_du
Derivative of u_dot with respect to u.
const ArrayVariableValue & _u_dot
Time derivative of \vec{u}.
static InputParameters validParams()
virtual const std::set< SubdomainID > & blockIDs() const
Return the block subdomain ids for this object Note, if this is not block restricted,...
const std::set< SubdomainID > & meshBlockIDs() const
Return all of the SubdomainIDs for the mesh.
virtual bool blockRestricted() const
Returns true if this object has been restricted to a block.
const MaterialWarehouse & getMaterialWarehouse() const
unsigned int _qp
The current quadrature point index.
unsigned int _j
current index for the shape function
unsigned int _i
current index for the test function
unsigned int number() const
Get variable number coming from libMesh.
unsigned int count() const
Get the number of components Note: For standard and vector variables, the number is one.
This class provides an interface for common operations on field variables of both FE and FV types wit...
FEProblemBase & _fe_problem
Reference to this kernel's FEProblemBase.
void checkArrayMaterialPropertySize(const MooseObject &object, const MaterialWarehouse &warehouse, const std::set< SubdomainID > &blocks, const std::string ¶m_name, std::size_t count, bool is_matrix)
Check during setup that an array material property used as a coefficient has one entry per component ...