12 const int index, boost::shared_ptr<VectorDouble> diff_data_ptr)
15 dataPtr(data_ptr), dataVec(data_vec), iNdex(index),
16 diffDataPtr(diff_data_ptr) {
32 const auto nb_integration_points =
getGaussPts().size2();
40 double norm_on_element = 0.;
42 for (
int gg = 0; gg != nb_integration_points; gg++) {
44 norm_on_element += t_w * t_data * t_data;
51 norm_on_element *= vol;
61 const int index, boost::shared_ptr<MatrixDouble> diff_data_ptr)
64 dataPtr(data_ptr), dataVec(data_vec), iNdex(index),
65 diffDataPtr(diff_data_ptr) {
79 if (dataPtr != diffDataPtr)
80 *diffDataPtr -= *dataPtr;
85 const auto nb_integration_points = getGaussPts().size2();
87 const double vol = getMeasure();
89 auto t_w = getFTensor0IntegrationWeight();
91 auto t_data = getFTensor1FromMat<DIM>(*diffDataPtr);
93 double norm_on_element = 0.;
95 for (
int gg = 0; gg != nb_integration_points; ++gg) {
97 norm_on_element += t_w * (t_data(
i) * t_data(
i));
104 norm_on_element *= vol;
106 CHKERR VecSetValue(dataVec, iNdex, norm_on_element, ADD_VALUES);
111 template <
int DIM_1,
int DIM_2>
114 const int index, boost::shared_ptr<MatrixDouble> diff_data_ptr)
117 dataPtr(data_ptr), dataVec(data_vec), iNdex(index),
118 diffDataPtr(diff_data_ptr) {
125 template <
int DIM_1,
int DIM_2>
132 if (dataPtr != diffDataPtr)
133 *diffDataPtr -= *dataPtr;
139 const auto nb_integration_points = getGaussPts().size2();
141 const double vol = getMeasure();
143 auto t_w = getFTensor0IntegrationWeight();
145 auto t_data = getFTensor2FromMat<DIM_1, DIM_2>(*dataPtr);
147 double norm_on_element = 0.;
149 for (
int gg = 0; gg != nb_integration_points; gg++) {
151 norm_on_element += t_w * (t_data(
i,
j) * t_data(
i,
j));
158 norm_on_element *= vol;
160 CHKERR VecSetValue(dataVec, iNdex, norm_on_element, ADD_VALUES);