96 {
98
100
103 "Wrong base, should be USER_BASE");
104 }
105
106
107
108
110 int nb_gauss_pts = pts.size2();
111
112
113 shapeFun.resize(nb_gauss_pts, 4,
false);
115 &pts(2, 0), nb_gauss_pts);
116
117 double diff_shape_fun[12];
119
121
122 int p_f[4];
123 double *phi_f[4];
124 double *diff_phi_f[4];
125
126
127 for (int ff = 0; ff != 4; ff++) {
129 int order = volume_order > face_order ? volume_order : face_order;
135 phi_f[ff] = &*data.
dataOnEntities[MBTRI][ff].getN(base).data().begin();
136 diff_phi_f[ff] =
139 continue;
142 diff_shape_fun, phi_f[ff], diff_phi_f[ff], nb_gauss_pts, 4);
143 }
144
145
151 double *phi_v = &*data.
dataOnEntities[MBTET][0].getN(base).data().begin();
152 double *diff_phi_v =
155 volume_order, &*
shapeFun.data().begin(), diff_shape_fun, p_f, phi_f,
156 diff_phi_f, phi_v, diff_phi_v, nb_gauss_pts);
157 }
158
159
160 for (int ff = 0; ff != 4; ff++) {
166 }
167
169 }
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