141 {
143
145
146 PARENT_ELE parent_fe(this->getPtrFE()->mField);
152
154 << "parent_coords in op "
155 <<
static_cast<ELE_OP *
>(op_ptr)->getCoordsAtGaussPts();
156
157 parent_coords =
static_cast<ELE_OP *
>(op_ptr)->getCoordsAtGaussPts();
159 };
160 parent_fe.getOpPtrVector().push_back(op);
161
162 MOFEM_LOG(
"SELF", Sev::noisy) <<
"fe name " << this->getFEName();
163 CHKERR this->loopParent(this->getFEName(), &parent_fe);
164 MOFEM_LOG(
"SELF", Sev::noisy) <<
"parent_coords " << parent_coords;
165
166 MatrixDouble child_coords = this->getCoordsAtGaussPts();
167 MOFEM_LOG(
"SELF", Sev::noisy) <<
"child_coords " << child_coords;
168
169 child_coords -= parent_coords;
170
171 MOFEM_LOG(
"SELF", Sev::noisy) <<
"Corrds diffs" << child_coords;
172
174 for (auto d : child_coords.data())
176
179 "Parent and child global coords at integration points are "
180 "diffrent norm = %3.2e",
182
184 }
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_ATOM_TEST_INVALID
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
FTensor::Index< 'n', SPACE_DIM > n
#define MOFEM_LOG(channel, severity)
Log.
const Tensor1_Expr< const dTensor0< T, Dim, i >, typename promote< T, double >::V, Dim, i > d(const Tensor0< T * > &a, const Index< i, Dim > index, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
base operator to do operations at Gauss Pt. level
Data on single entity (This is passed as argument to DataOperator::doWork)