20 #include "libmesh/system_norm.h"
21 #include "libmesh/enum_norm_type.h"
22 #include "libmesh/int_range.h"
28 _norms(1,
DISCRETE_L2), _weights(1, 1.0), _weights_sq(1, 1.0)
34 _norms(1, t), _weights(1, 1.0), _weights_sq(1, 1.0)
40 _norms(norms), _weights(1, 1.0), _weights_sq(1, 1.0)
48 std::vector<Real> & weights) :
49 _norms(norms), _weights(weights), _weights_sq(_weights.size(), 0.0)
65 std::vector<std::vector<Real>> & weights):
67 _weights(weights.size()),
68 _weights_sq(weights.size()),
69 _off_diagonal_weights(weights)
115 std::size_t i = (var <
_norms.size()) ? var :
_norms.size() - 1;
185 const std::vector<Real> & v2)
189 std::size_t vsize = v1.size();
190 libmesh_assert_equal_to (vsize, v2.size());
194 std::size_t diagsize = this->
_weights.size();
195 libmesh_assert_greater_equal (vsize, diagsize);
202 for (std::size_t i = 0; i != diagsize; i++)
204 val += this->
_weights[i] * v1[i] * v2[i];
208 for (std::size_t i = diagsize; i < vsize; i++)
210 val += v1[i] * v2[i];
215 libmesh_assert_less_equal (vsize, nrows);
217 for (std::size_t i = 0; i != nrows; i++)
220 for (std::size_t j=0; j != ncols; j++)
241 for (std::size_t i = 0; i != nrows; i++)
244 for (std::size_t j = 0; j != ncols; j++)
255 for (std::size_t i = 0; i != nrows; i++)