145 {
147
148 dataFieldEval->setEvalPoints(point.data(), point.size() / 3);
150 auto w_l2_at_pts =
eP.
dataAtPts->getSmallWL2AtPts();
151 w_l2_at_pts->resize(0, 0, false);
152
155 ->evalFEAtThePoint<SPACE_DIM>(
156 point.data(), 1e-12, problemPtr->getName(),
"EP",
dataFieldEval,
159 }
160 if (w_l2_at_pts->size1() == 0 || w_l2_at_pts->size2() == 0) {
161 CHKERR VecSetValue(vec, 0, 0.0, ADD_VALUES);
162 } else if (w_l2_at_pts->size1() == 1 || w_l2_at_pts->size2() == 1) {
163 auto add = [&]() {
164 std::ostringstream s;
165 s << str << " elem " << getFEEntityHandle() << " ";
166 return s.str();
167 };
173 << add() << "w " << *w_l2_at_pts;
174 double disp_at_point = (*w_l2_at_pts)(0, 0);
175 CHKERR VecSetValue(vec, 0, disp_at_point, ADD_VALUES);
176 } else {
178 "Unexpected displacement data shape (%ld, %ld).",
179 static_cast<long>(w_l2_at_pts->size1()),
180 static_cast<long>(w_l2_at_pts->size2()));
181 }
182
184 if (ts_t > 0.0) {
185 CHKERR VecAssemblyBegin(vec);
186 CHKERR VecAssemblyEnd(vec);
187 double error;
188 PetscInt idx = 0;
190 CHKERR VecGetValues(vec, 1, &idx, &error);
191 }
192 MPI_Bcast(&error, 1, MPI_DOUBLE, 0, PETSC_COMM_WORLD);
193
194
195
196 if (std::abs(error - 0.25) > 1e-5) {
198 "Atom test %d failed: wrong displacement %.12g.",
atom_test,
199 error);
200 }
201 }
203}
#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.