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