289 {
291
292 auto check_result_fe_ptr = boost::make_shared<DomainEle>(
mField);
296
298 check_result_fe_ptr->getOpPtrVector(), {H1})),
299 "Apply transform");
300
301 check_result_fe_ptr->getRuleHook = [](int, int, int p) { return p; };
302 auto analyticalFunction = [&](double x, double y, double z) {
303 return sin(M_PI * x) * sin(M_PI * y);
304 };
305
306 auto u_ptr = boost::make_shared<VectorDouble>();
307
308 check_result_fe_ptr->getOpPtrVector().push_back(
310 auto mValFuncPtr = boost::make_shared<VectorDouble>();
311 check_result_fe_ptr->getOpPtrVector().push_back(
313 check_result_fe_ptr->getOpPtrVector().push_back(
318 check_result_fe_ptr);
322
324 const double *norms;
327 <<
"NORM: " << std::sqrt(norms[
NORM]);
329 }
330
332 const double *t_ptr;
334 double ref_norm = 2.2e-04;
335 double cal_norm;
337 case 1:
338 cal_norm = sqrt(t_ptr[0]);
339 break;
340 default:
342 "atom test %d does not exist",
atom_test);
343 }
344 if (cal_norm > ref_norm) {
346 "atom test %d failed! Calculated Norm %3.16e is greater than "
347 "reference Norm %3.16e",
349 }
351 }
353}
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
@ MOFEM_ATOM_TEST_INVALID
PetscErrorCode DMoFEMLoopFiniteElements(DM dm, const char fe_name[], MoFEM::FEMethod *method, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr())
Executes FEMethod for finite elements in DM.
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
auto createVectorMPI(MPI_Comm comm, PetscInt n, PetscInt N)
Create MPI Vector.
virtual MPI_Comm & get_comm() const =0
virtual int get_comm_rank() const =0
Get norm of input VectorDouble for Tensor0.
Get value at integration points for scalar field.
Get values from scalar function at integration points and save them to VectorDouble for Tensor0.
MoFEMErrorCode getDM(DM *dm)
Get DM.
const std::string getDomainFEName() const
Get the Domain FE Name.
SmartPetscObj< Vec > petscVec