528 {
530
531#ifndef NDEBUG
534 << "Refinement for edges is not implemented";
535#endif
536
537 auto set_gauss_pts = [&](std::map<EntityHandle, int> &little_map) {
539
540 int nb_nodes = 2;
542 nb_nodes = 3;
543
545 gauss_pts.resize(2, nb_nodes, false);
546 gauss_pts.clear();
547
548 int nn = 0;
549 for (; nn != 2; ++nn) {
550 gauss_pts(0, nn) = static_cast<double>(nn);
551 little_map[nn] = nn;
552 }
553
554 if (nn < nb_nodes) {
555 gauss_pts(0, nn) = 0.5;
556 little_map[nn] = 2;
557 }
558
560 };
561
562 auto set_ref_edges = [&](std::map<EntityHandle, int> &little_map) {
564
565 int level = 0;
566 int nb_edges = level + 1;
567
568 int nb_nodes = 2;
570 nb_nodes = 3;
571
573 ref_edges.resize(nb_edges, nb_nodes, false);
574
575 for (int ee = 0; ee != nb_edges; ++ee) {
576 int nn = 0;
577 for (; nn != 2; ++nn) {
578 ref_edges(ee, nn) = nb_nodes * ee + nn;
579 }
580 if (nn < nb_nodes) {
581 ref_edges(ee, nn) = nb_nodes * ee + 2;
582 }
583 }
584
586 };
587
588 auto set_shape_functions = [&]() {
592 const auto nb_gauss_pts = gauss_pts.size2();
593 shape_functions.resize(nb_gauss_pts, 2);
594 for (int gg = 0; gg != nb_gauss_pts; ++gg) {
595 const double ksi = gauss_pts(0, gg);
598 }
600 };
601
605
606 std::map<EntityHandle, int> little_map;
607 CHKERR set_gauss_pts(little_map);
608 CHKERR set_ref_edges(little_map);
609 CHKERR set_shape_functions();
610
612}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
#define MOFEM_LOG(channel, severity)
Log.
std::vector< ublas::matrix< int > > levelRef
std::vector< MatrixDouble > levelShapeFunctions
std::vector< MatrixDouble > levelGaussPtsOnRefMesh