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