92 {
94
96
99 "Wrong base, should be USER_BASE");
100 }
101
102
103
104
106 int nb_gauss_pts = pts.size2();
107
108
109 shapeFun.resize(nb_gauss_pts, 4,
false);
111 &pts(2, 0), nb_gauss_pts);
112
113 double diff_shape_fun[12];
115
117
118 int p_f[4];
119 double *phi_f[4];
120 double *diff_phi_f[4];
121
122
123 for (int ff = 0; ff != 4; ff++) {
125 int order = volume_order > face_order ? volume_order : face_order;
131 phi_f[ff] = &*data.
dataOnEntities[MBTRI][ff].getN(base).data().begin();
132 diff_phi_f[ff] =
135 continue;
138 diff_shape_fun, phi_f[ff], diff_phi_f[ff], nb_gauss_pts, 4);
139 }
140
141
147 double *phi_v = &*data.
dataOnEntities[MBTET][0].getN(base).data().begin();
148 double *diff_phi_v =
151 volume_order, &*
shapeFun.data().begin(), diff_shape_fun, p_f, phi_f,
152 diff_phi_f, phi_v, diff_phi_v, nb_gauss_pts);
153 }
154
155
156 for (int ff = 0; ff != 4; ff++) {
162 }
163
165 }
FieldApproximationBase
approximation base
@ USER_BASE
user implemented approximation base
#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 NBVOLUMETET_DEMKOWICZ_HDIV(P)
#define NBFACETRI_DEMKOWICZ_HDIV(P)
MoFEMErrorCode Hdiv_Demkowicz_Face_MBTET_ON_FACE(int *faces_nodes, int p, double *N, double *diffN, double *phi_f, double *diff_phi_f, int gdim, int nb)
MoFEMErrorCode Hdiv_Demkowicz_Interior_MBTET(int p, double *N, double *diffN, int p_face[], double *phi_f[4], double *diff_phi_f[4], double *phi_v, double *diff_phi_v, int gdim)
const FieldApproximationBase bAse
data structure for finite element entity
MatrixInt facesNodes
nodes on finite element faces
std::array< boost::ptr_vector< EntData >, MBMAXTYPE > dataOnEntities