157 {
159
160 dataFieldEval->setEvalPoints(point.data(), point.size() / 3);
162 auto w_l2_at_pts =
eP.
dataAtPts->getSmallWL2AtPts();
163 w_l2_at_pts->resize(0, 0, false);
164
167 ->evalFEAtThePoint<SPACE_DIM>(
168 point.data(), 1e-12, problemPtr->getName(),
"EP",
dataFieldEval,
171 }
172 if (w_l2_at_pts->size1() == 0 || w_l2_at_pts->size2() == 0) {
173 CHKERR VecSetValue(vec, 0, 0.0, ADD_VALUES);
174 } else if (w_l2_at_pts->size1() == 1 || w_l2_at_pts->size2() == 1) {
175 auto add = [&]() {
176 std::ostringstream s;
177 s << str << " elem " << getFEEntityHandle() << " ";
178 return s.str();
179 };
185 << add() << "w " << *w_l2_at_pts;
186 double disp_at_point = (*w_l2_at_pts)(0, 0);
187 CHKERR VecSetValue(vec, 0, disp_at_point, ADD_VALUES);
188 } else {
190 "Unexpected displacement data shape (%ld, %ld).",
191 static_cast<long>(w_l2_at_pts->size1()),
192 static_cast<long>(w_l2_at_pts->size2()));
193 }
194
196 if (ts_t > 0.0) {
197 CHKERR VecAssemblyBegin(vec);
198 CHKERR VecAssemblyEnd(vec);
199 double error;
200 PetscInt idx = 0;
202 CHKERR VecGetValues(vec, 1, &idx, &error);
203 }
204 MPI_Bcast(&error, 1, MPI_DOUBLE, 0, PETSC_COMM_WORLD);
205
206
207
208 if (std::abs(error - 0.25) > 1e-5) {
210 "Atom test %d failed: wrong displacement %.12g.",
atom_test,
211 error);
212 }
213 }
215}
#define MOFEM_LOG_SEVERITY_SYNC(comm, severity)
Synchronise "SYNC" on curtain severity level.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_ATOM_TEST_INVALID
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MOFEM_LOG(channel, severity)
Log.
auto getVectorAdaptor(T1 ptr, const size_t n)
Get Vector adaptor.
auto createVectorMPI(MPI_Comm comm, PetscInt n, PetscInt N)
Create MPI Vector.
MoFEM::Interface & mField
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
virtual MPI_Comm & get_comm() const =0
virtual int get_comm_rank() const =0
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.