35 : compTest_(tag.comp_test)
36 , compTrial_(tag.comp_trial)
39 template <
class CG,
class RN,
class CN,
class Quad,
class LocalFct,
class Mat>
40 void assemble(CG
const& contextGeo, RN
const& rowNode, CN
const& colNode,
41 Quad
const& quad, LocalFct
const& localFct, Mat& elementMatrix)
const
43 static_assert(static_size_v<typename LocalFct::Range> == 1,
44 "Expression must be of scalar type." );
45 static_assert(Dune::TypeTree::Concept::LeafTreeNode<RN> && Dune::TypeTree::Concept::LeafTreeNode<CN>,
46 "Operator can be applied to Leaf-Nodes only.");
51 for (
auto const& qp : quad) {
53 decltype(
auto) local = contextGeo.coordinateInElement(qp.position());
56 auto factor = contextGeo.integrationElement(qp.position()) * qp.weight();
57 factor *= localFct(local);
59 auto const& rowPartial = rowLocalBasis.
partialsAt(local, compTest_);
60 auto const& colPartial = colLocalBasis.
partialsAt(local, compTrial_);
62 for (std::size_t j = 0; j < colLocalBasis.
size(); ++j) {
63 const auto local_j = colNode.localIndex(j);
64 const auto value = factor * colPartial[j];
65 for (std::size_t i = 0; i < rowLocalBasis.
size(); ++i) {
66 const auto local_i = rowNode.localIndex(i);
67 elementMatrix[local_i][local_j] += value * rowPartial[i];
auto sot_ij(Expr &&expr, std::size_t comp_test, std::size_t comp_trial, int quadOrder=-1)
Create a second-order term of partial derivatives.
Definition SecondOrderPartialTestPartialTrial.hpp:85
auto makeOperator(Tag const &tag, Expr &&expr, int gridFctDeg=-1)
Definition GridFunctionOperator.hpp:235