43 {
45
49
52 "Polynomial type not set");
53 PetscErrorCode (*base_polynomials)(
int p,
double s,
double *diff_s,
double *
L,
54 double *diffL,
const int dim) =
56
57 auto ©_base_fun = data.
dataOnEntities[MBVERTEX][0].getN(copy_base);
58 auto ©_diff_base_fun =
60
61 int nb_gauss_pts = pts.size2();
63
65
68 "should be four edges on quad");
69
70 int sense[4],
order[4];
71 double *H1edgeN[4], *diffH1edgeN[4];
72 for (int ee = 0; ee != 4; ++ee) {
74 if (ent_dat.getSense() == 0)
76
77 sense[ee] = ent_dat.getSense();
78 order[ee] = ent_dat.getOrder();
79 int nb_dofs =
NBEDGE_H1(ent_dat.getOrder());
80 ent_dat.getN(base).resize(nb_gauss_pts, nb_dofs, false);
81 ent_dat.getDiffN(base).resize(nb_gauss_pts, 2 * nb_dofs, false);
82 H1edgeN[ee] = &*ent_dat.getN(base).data().begin();
83 diffH1edgeN[ee] = &*ent_dat.getDiffN(base).data().begin();
84 }
86 sense,
order, &*copy_base_fun.data().begin(),
87 &*copy_diff_base_fun.data().begin(), H1edgeN, diffH1edgeN, nb_gauss_pts,
88 base_polynomials);
89 }
90
92
93
96 "should be one quad to store bubble base on quad");
97
100 ent_dat.getN(base).resize(nb_gauss_pts, nb_dofs, false);
101 ent_dat.getDiffN(base).resize(nb_gauss_pts, 2 * nb_dofs, false);
102 int face_nodes[] = {0, 1, 2, 3};
104 face_nodes, ent_dat.getOrder(),
105 &*vert_dat.getN(base).data().begin(),
106 &*vert_dat.getDiffN(base).data().begin(),
107 &*ent_dat.getN(base).data().begin(),
108 &*ent_dat.getDiffN(base).data().begin(), nb_gauss_pts,
109 base_polynomials);
110 }
111
113}
#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)
Numer 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