111 {
113
114 if (row_data.getIndices().size() == 0)
116
118
119 const auto n_in_the_loop = OP::getNinTheLoop();
120 const auto face_sense = OP::getSkeletonSense();
121
122#ifndef NDEBUG
123 if (face_sense != -1 && face_sense != 1)
125#endif
126
127 auto set_data = [&](auto &side_data) {
128 side_data.getSide() = row_side;
129 side_data.getType() = row_type;
130 side_data.getSense() = face_sense;
131 side_data.getData().sEnse = row_data.sEnse;
132 side_data.getData().sPace = row_data.sPace;
133 side_data.getData().bAse = row_data.bAse;
134 side_data.getData().iNdices = row_data.iNdices;
135 side_data.getData().localIndices = row_data.localIndices;
136 side_data.getData().dOfs = row_data.dOfs;
137 side_data.getData().fieldEntities = row_data.fieldEntities;
138 side_data.getData().fieldData = row_data.fieldData;
139 };
140
141 auto set_base = [&](auto &side_data) {
142 auto base = side_data.getData().getBase();
143 for (
auto dd = 0;
dd != BaseDerivatives::LastDerivative; ++
dd) {
144 side_data.getData().baseFunctionsAndBaseDerivatives[
dd][base].reset();
145 if (auto base_ptr = row_data.baseFunctionsAndBaseDerivatives[dd][base]) {
146 side_data.getData().baseFunctionsAndBaseDerivatives[
dd][base] =
147 boost::make_shared<MatrixDouble>(*base_ptr);
148 }
149 }
150 };
151
154
156}
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)