16 #include "libmesh/threads.h" 35 prepareVectorTag(_assembly, _var.number());
37 precalculateResidual();
38 const unsigned int n_test = _test.size();
40 if (_use_displaced_mesh)
41 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
43 const auto value = precomputeQpResidual() * _ad_JxW[_qp] * _ad_coord[_qp];
44 for (_i = 0; _i < n_test; _i++)
48 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
50 const auto value = precomputeQpResidual() * _JxW[_qp] * _coord[_qp];
51 for (_i = 0; _i < n_test; _i++)
55 accumulateTaggedLocalResidual();
59 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
60 for (
unsigned int i = 0; i < _save_in.size(); i++)
61 _save_in[i]->sys().solution().add_vector(_local_re, _save_in[i]->dofIndices());
69 if (_residuals.size() != _test.size())
70 _residuals.resize(_test.size(), 0);
71 for (
auto & r : _residuals)
74 precalculateResidual();
76 if (_use_displaced_mesh)
77 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
79 const auto value = precomputeQpResidual() * _ad_JxW[_qp] * _ad_coord[_qp];
80 for (_i = 0; _i < _test.size(); _i++)
81 _residuals[_i] +=
value * _test[_i][_qp];
84 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
86 const auto value = precomputeQpResidual() * _JxW[_qp] * _coord[_qp];
87 for (_i = 0; _i < _test.size(); _i++)
88 _residuals[_i] +=
value * _test[_i][_qp];
96 mooseError(
"Override precomputeQpResidual() in your ADKernelValueTempl derived class!");
static InputParameters validParams()
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
DualNumber< Real, DNDerivativeType, true > ADReal
ADKernelValueTempl(const InputParameters ¶meters)
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
virtual ADReal computeQpResidual() override final
Compute this Kernel's contribution to the residual at the current quadrature point.
virtual void computeResidual() override
Compute this object's contribution to the residual.
void computeResidualsForJacobian() override
compute the _residuals member for filling the Jacobian.
static InputParameters validParams()