64 const std::vector<dof_id_type> & dof_indices);
79 virtual unsigned int coupled(
const std::string & var_name,
unsigned int comp = 0)
const override;
101 _phi(type ==
ShapeType::Element ? this->_assembly.phi() : this->_assembly.phiFace()),
102 _grad_phi(type ==
ShapeType::Element ? this->_assembly.gradPhi()
103 : this->_assembly.gradPhiFace()),
104 _compute_jacobians(
MooseObject::getParam<bool>(
"compute_jacobians"))
106 mooseWarning(
"Jacobian calculation in UserObjects is an experimental capability with a " 107 "potentially unstable interface.");
110 template <
typename T>
115 params.
addParam<
bool>(
"compute_jacobians",
true,
"Compute Jacobians for coupled variables");
120 template <
typename T>
124 const auto * var = this->
template getVarHelper<MooseVariable>(var_name, comp);
128 _jacobian_moose_variables.insert(var);
131 return T::coupled(var_name, comp);
134 template <
typename T>
137 const std::vector<dof_id_type> & dof_indices)
139 for (_j = 0; _j < _phi.size(); ++_j)
141 _j_global = dof_indices[_j];
142 executeJacobian(jvar);
const bool _compute_jacobians
static InputParameters validParams()
dof_id_type _j_global
global DOF ID corresponding to _j
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
virtual unsigned int coupled(const std::string &var_name, unsigned int comp=0) const override
Returns the index for a coupled variable by name and requests the computation of a Jacobian w...
OutputTools< Real >::VariablePhiValue VariablePhiValue
unsigned int _j
j-th index for enumerating the shape functions
std::set< const MooseVariableFEBase * > _jacobian_moose_variables
Every object that can be built by the factory should be derived from this class.
ShapeType
Users of this template class must specify the type of shape functions that will be used in the Jacobi...
UserObject template class in which the _phi and _grad_phi shape function data is available and correc...
virtual void executeJacobian(unsigned int)=0
Implement this function to compute Jacobian terms for this UserObject.
virtual void executeJacobianWrapper(unsigned int jvar, const std::vector< dof_id_type > &dof_indices)
This function will be called with the shape functions for jvar initialized.
OutputTools< Real >::VariablePhiGradient VariablePhiGradient
const std::set< const MooseVariableFEBase * > & jacobianMooseVariables() const
Returns the set of variables a Jacobian has been requested for.
const VariablePhiGradient & _grad_phi
shape function gradients
const VariablePhiValue & _phi
shape function values
const bool & computeJacobianFlag() const
check if jacobian is to be computed in user objects
ShapeUserObject(const InputParameters ¶meters, ShapeType type)