245 {
246
247 PetscFunctionBegin;
248 try {
249 gaussPts.resize(4,0,false);
250 EntityHandle tet = numeredEntFiniteElementPtr->getEnt();
251 int vffgg = 0;
252 for(int ff = 0;ff<4;ff++) {
254 rval = mField.get_moab().side_element(tet,2,ff,face);
CHKERRQ_MOAB(rval);
257 const double coords_tet[12] = { 0,0,0, 1,0,0, 0,1,0, 0,0,1 };
259 gaussPts.resize(4,nb_face_gauss_pts);
261 for(int ffgg = 0;ffgg!=nb_face_gauss_pts;ffgg++,vffgg++) {
266 for(
int dd = 0;
dd<3;
dd++) {
267 gaussPts(dd,vffgg) =
268 N[0]*coords_tet[3*dataH1.facesNodes(ff,0)+
dd]+
269 N[1]*coords_tet[3*dataH1.facesNodes(ff,1)+
dd]+
270 N[2]*coords_tet[3*dataH1.facesNodes(ff,2)+
dd];
271 }
272 gaussPts(3,vffgg) = 0;
273 }
274 } else {
276 }
277 }
278
279 } catch (const std::exception& ex) {
280 ostringstream ss;
281 ss << "throw in method: " << ex.what() << endl;
282 SETERRQ(PETSC_COMM_SELF,1,ss.str().c_str());
283 }
284 PetscFunctionReturn(0);
285 }
static PetscErrorCode ierr
#define CHKERRQ_MOAB(a)
check error code of MoAB function
@ MOFEM_DATA_INCONSISTENCY
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
UBlasVector< double > VectorDouble
map< EntityHandle, vector< VectorDouble > > localCoordsMap
map< EntityHandle, vector< int > > inTetFaceGaussPtsNumber
map< EntityHandle, vector< int > > inTetTetGaussPtsNumber