17 #include "libmesh/threads.h" 36 prepareVectorTag(_assembly, _var.number());
38 precalculateResidual();
39 const unsigned int n_test = _grad_test.size();
40 std::vector<Real> residuals(n_test);
42 if (_use_displaced_mesh)
43 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
45 const auto value = precomputeQpResidual() * _ad_JxW[_qp] * _ad_coord[_qp];
46 for (_i = 0; _i < n_test; _i++)
50 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
52 const auto value = precomputeQpResidual() * _JxW[_qp] * _coord[_qp];
53 for (_i = 0; _i < n_test; _i++)
57 this->addResiduals(_assembly, residuals, _var.dofIndices(), _var.scalingFactor());
60 for (
unsigned int i = 0; i < _save_in.size(); i++)
61 _save_in[i]->sys().solution().add_vector(residuals.data(), _save_in[i]->dofIndices());
68 if (_residuals.size() != _grad_test.size())
69 _residuals.resize(_grad_test.size(), 0);
70 for (
auto & r : _residuals)
73 precalculateResidual();
74 if (_use_displaced_mesh)
75 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
77 const auto value = precomputeQpResidual() * _ad_JxW[_qp] * _ad_coord[_qp];
78 for (_i = 0; _i < _grad_test.size(); _i++)
82 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
84 const auto value = precomputeQpResidual() * _JxW[_qp] * _coord[_qp];
85 for (_i = 0; _i < _grad_test.size(); _i++)
94 computeResidualsForJacobian();
95 this->addResidualsAndJacobian(_assembly, _residuals, _var.dofIndices(), _var.scalingFactor());
102 mooseError(
"Override precomputeQpResidual() in your ADKernelGrad derived class!");
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
static InputParameters validParams()
void computeResidualAndJacobian() override
Compute this object's contribution to the residual and Jacobian simultaneously.
DualNumber< Real, DNDerivativeType, true > ADReal
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
ADKernelGradTempl(const InputParameters ¶meters)
libMesh::CompareTypes< T, T2 >::supertype dotProduct(const W< T > &a, const W2< T2 > &b)
static InputParameters validParams()
virtual ADReal computeQpResidual() override final
Compute this Kernel's contribution to the residual at the current quadrature point.
void computeResidualsForJacobian() override
compute the _residuals member for filling the Jacobian.
void computeResidual() override
Compute this object's contribution to the residual.