36 prepareVectorTag(_assembly, _var.number());
38 precalculateResidual();
39 const unsigned int n_test = _grad_test.size();
41 if (_use_displaced_mesh)
42 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
44 const auto value = precomputeQpStrongResidual() * _ad_JxW[_qp] * _ad_coord[_qp];
45 for (_i = 0; _i < n_test; _i++)
46 _local_re(_i) += raw_value(_grad_test[_i][_qp] * computeQpStabilization() * value);
49 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
51 const auto value = precomputeQpStrongResidual() * _JxW[_qp] * _coord[_qp];
52 for (_i = 0; _i < n_test; _i++)
53 _local_re(_i) += raw_value(_regular_grad_test[_i][_qp] * computeQpStabilization() * value);
56 accumulateTaggedLocalResidual();
59 for (
unsigned int i = 0; i < _save_in.size(); i++)
60 _save_in[i]->sys().solution().add_vector(_local_re, _save_in[i]->dofIndices());
67 if (_residuals.size() != _grad_test.size())
68 _residuals.resize(_grad_test.size(), 0);
69 for (
auto & r : _residuals)
72 precalculateResidual();
74 if (_use_displaced_mesh)
75 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
77 const auto value = precomputeQpStrongResidual() * _ad_JxW[_qp] * _ad_coord[_qp];
78 for (_i = 0; _i < _grad_test.size(); _i++)
79 _residuals[_i] += _grad_test[_i][_qp] * computeQpStabilization() * value;
82 for (_qp = 0; _qp < _qrule->n_points(); _qp++)
84 const auto value = precomputeQpStrongResidual() * _JxW[_qp] * _coord[_qp];
85 for (_i = 0; _i < _grad_test.size(); _i++)
86 _residuals[_i] += _regular_grad_test[_i][_qp] * computeQpStabilization() * value;