41 {
43
47
50 "Polynomial type not set");
51 PetscErrorCode (*base_polynomials)(
int p,
double s,
double *diff_s,
double *
L,
52 double *diffL, const int dim) =
54
55 auto ©_base_fun = data.
dataOnEntities[MBVERTEX][0].getN(copy_base);
56 auto ©_diff_base_fun =
58
59 int nb_gauss_pts = pts.size2();
61
63
66 "should be four edges on quad");
67
68 int sense[4],
order[4];
69 double *H1edgeN[4], *diffH1edgeN[4];
70 for (int ee = 0; ee != 4; ++ee) {
72 if (ent_dat.getSense() == 0)
74
75 sense[ee] = ent_dat.getSense();
76 order[ee] = ent_dat.getOrder();
77 int nb_dofs =
NBEDGE_H1(ent_dat.getOrder());
78 ent_dat.getN(base).resize(nb_gauss_pts, nb_dofs, false);
79 ent_dat.getDiffN(base).resize(nb_gauss_pts, 2 * nb_dofs, false);
80 H1edgeN[ee] = &*ent_dat.getN(base).data().begin();
81 diffH1edgeN[ee] = &*ent_dat.getDiffN(base).data().begin();
82 }
84 sense,
order, &*copy_base_fun.data().begin(),
85 &*copy_diff_base_fun.data().begin(), H1edgeN, diffH1edgeN, nb_gauss_pts,
86 base_polynomials);
87 }
88
90
91
94 "should be one quad to store bubble base on quad");
95
98 ent_dat.getN(base).resize(nb_gauss_pts, nb_dofs, false);
99 ent_dat.getDiffN(base).resize(nb_gauss_pts, 2 * nb_dofs, false);
100 int face_nodes[] = {0, 1, 2, 3};
102 face_nodes, ent_dat.getOrder(), &*vert_dat.getN(base).data().begin(),
103 &*vert_dat.getDiffN(base).data().begin(),
104 &*ent_dat.getN(base).data().begin(),
105 &*ent_dat.getDiffN(base).data().begin(), nb_gauss_pts,
106 base_polynomials);
107 }
108
110}
#define NBFACEQUAD_H1(P)
Number of base functions on quad for H1 space.
PetscErrorCode H1_QuadShapeFunctions_MBQUAD(int *faces_nodes, int p, double *N, double *diffN, double *faceN, double *diff_faceN, int GDIM, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
#define NBEDGE_H1(P)
Number of base function on edge for H1 space.
PetscErrorCode H1_EdgeShapeFunctions_MBQUAD(int *sense, int *p, double *N, double *diffN, double *edgeN[4], double *diff_edgeN[4], int GDIM, PetscErrorCode(*base_polynomials)(int p, double s, double *diff_s, double *L, double *diffL, const int dim))
PetscErrorCode(* basePolynomialsType0)(int p, double s, double *diff_s, double *L, double *diffL, const int dim)
std::array< std::bitset< LASTSPACE >, MBMAXTYPE > spacesOnEntities
spaces on entity types