diff --git a/Mesh/QuadTriExtruded2D.cpp b/Mesh/QuadTriExtruded2D.cpp index c154e95537f0424de17e142c43f022e2e8436955..d74fce116bd60fbd97edd2a0e7a7518ccd86568e 100644 --- a/Mesh/QuadTriExtruded2D.cpp +++ b/Mesh/QuadTriExtruded2D.cpp @@ -172,18 +172,18 @@ int IsValidQuadToTriLateral(GFace *face, int *tri_quad_flag, bool *detectQuadToT } // if both neighbors are structured but none of the previous apply: else if( adj_ep && adj_ep->mesh.ExtrudeMesh ){ - if( adj_ep && !adj_ep->mesh.QuadToTri && adj_ep->mesh.Recombine || - ep && !ep->mesh.QuadToTri && ep->mesh.Recombine ) + if( (adj_ep && !adj_ep->mesh.QuadToTri && adj_ep->mesh.Recombine) || + (ep && !ep->mesh.QuadToTri && ep->mesh.Recombine) ) (*tri_quad_flag) = 1; - else if( adj_ep && !adj_ep->mesh.QuadToTri && !adj_ep->mesh.Recombine || - ep && !ep->mesh.QuadToTri && !ep->mesh.Recombine ) + else if( (adj_ep && !adj_ep->mesh.QuadToTri && !adj_ep->mesh.Recombine) || + (ep && !ep->mesh.QuadToTri && !ep->mesh.Recombine) ) (*tri_quad_flag) = 2; // if both are quadToTri and either are quadToTri recomblaterals, recombine else if( ep->mesh.QuadToTri == QUADTRI_SNGL_1_RECOMB || - adj_ep && adj_ep->mesh.QuadToTri == QUADTRI_SNGL_1_RECOMB ) + (adj_ep && adj_ep->mesh.QuadToTri == QUADTRI_SNGL_1_RECOMB) ) (*tri_quad_flag) = 1; else if( ep->mesh.QuadToTri == QUADTRI_DBL_1_RECOMB || - adj_ep && adj_ep->mesh.QuadToTri == QUADTRI_DBL_1_RECOMB ) + (adj_ep && adj_ep->mesh.QuadToTri == QUADTRI_DBL_1_RECOMB) ) (*tri_quad_flag) = 1; else (*tri_quad_flag) = 2; diff --git a/Mesh/QuadTriExtruded3D.cpp b/Mesh/QuadTriExtruded3D.cpp index 3b33a52950c279020177003abef52121f7e6311d..bb563361e2acf58d20bcfae2104166442472b67c 100644 --- a/Mesh/QuadTriExtruded3D.cpp +++ b/Mesh/QuadTriExtruded3D.cpp @@ -311,9 +311,9 @@ bool IsValidQuadToTriRegion(GRegion *region, bool *allNonGlobalSharedLaterals) GetNeighborRegionsOfFace(*it, neighbors) > 1 ){ GRegion *other_region = neighbors[0] != region ? neighbors[0] : neighbors[1]; ExtrudeParams *oth_ep = other_region->meshAttributes.extrude; - if( ep && ep->mesh.ExtrudeMesh && !ep->mesh.Recombine || - oth_ep && oth_ep->mesh.ExtrudeMesh && !oth_ep->mesh.Recombine && - IsSurfaceALateralForRegion(other_region, *it) ) + if( (ep && ep->mesh.ExtrudeMesh && !ep->mesh.Recombine) || + (oth_ep && oth_ep->mesh.ExtrudeMesh && !oth_ep->mesh.Recombine && + IsSurfaceALateralForRegion(other_region, *it)) ) (*allNonGlobalSharedLaterals) = false; } } @@ -432,10 +432,10 @@ static std::map<std::string, std::vector<int> > getFaceTypes(GRegion *gr, MEleme face_types["degen"].push_back(p); } // is face a single triangle? - else if( verts[p] == verts[n_lat+p] && - verts[p2] != verts[n_lat+p2] || - verts[p] != verts[n_lat+p] && - verts[p2] == verts[n_lat+p2] ){ + else if( (verts[p] == verts[n_lat+p] && + verts[p2] != verts[n_lat+p2]) || + (verts[p] != verts[n_lat+p] && + verts[p2] == verts[n_lat+p2]) ){ face_types["single_tri"].push_back(p); } // is face a recombined quad? @@ -470,7 +470,7 @@ static std::map<std::string, std::vector<int> > getFaceTypes(GRegion *gr, MEleme // not in the top quadToTri layer: // then the face is a recombined quad (QuadToTri only used in recombined extrusions). else if( !touch_bnd[p] && - ( j < j_top_start || j == j_top_start && k < k_top_start ) ) + ( j < j_top_start || (j == j_top_start && k < k_top_start) ) ) face_types["recomb"].push_back(p); // Face is possibly free...will need to do tests after this loop is complete to @@ -492,7 +492,7 @@ static std::map<std::string, std::vector<int> > getFaceTypes(GRegion *gr, MEleme v_bot[0] = verts[0]; v_bot[1] = verts[1]; v_bot[2] = verts[2]; v_bot[3] = verts[3]; // is forbidden? - if ( j == 0 && k == 0 || forbiddenExists( v_bot, forbidden_edges ) ) + if ( (j == 0 && k == 0) || forbiddenExists( v_bot, forbidden_edges ) ) face_types["recomb"].push_back(4); else if( edgeExists( verts[0], verts[2], quadToTri_edges ) ){ nfix1[4] = 0; nfix2[4] = 2; @@ -767,8 +767,8 @@ static void bruteForceEdgeQuadToTriPrism( GRegion *gr, MElement *elem, n1[p] = nadj1[p]; n2[p] = nadj2[p]; } // choose lowest vertex for t < 3, any vertex for t == 3 - else if( t >= 1 && t < 3 && nadj1[p] >= 0 || - t == 2 && free_flag[p] ){ + else if( (t >= 1 && t < 3 && nadj1[p] >= 0) || + (t == 2 && free_flag[p]) ){ if( verts[p] < verts[(p+1)%3] && verts[p] < verts[p+3] || verts[(p+1)%3+3] < verts[(p+1)%3] && @@ -779,7 +779,7 @@ static void bruteForceEdgeQuadToTriPrism( GRegion *gr, MElement *elem, n1[p] = p+3; n2[p] = (p+1)%3; } } - else if( t==3 && (nadj1[p] >= 0 || free_flag[p]) ) + else if( (t==3 && (nadj1[p] >= 0) || free_flag[p]) ) face_is_free[p] = true; } @@ -845,7 +845,7 @@ static void bruteForceEdgeQuadToTriPrism( GRegion *gr, MElement *elem, // At this point, can break out if valid_division... OR if there is NO valid division AND // if num_fixed_diag == 3, or 2 and a recomb // break out of loop. This will need an internal vertex. - if( valid_division || !valid_division && num_fixed_diag + num_recomb == 3 ) + if( valid_division || (!valid_division && num_fixed_diag + num_recomb == 3) ) break; } // end of outer t-loop @@ -985,13 +985,13 @@ static void addEdgesForQuadToTriTwoPtDegenHexa( GRegion *gr, MElement *elem, Ext *n1_tmp = nadj1[p_tmp]; *n2_tmp = nadj2[p_tmp]; } // choose lowest vertex for t < 3, non-lowest vertex for t == 3 - else if( t >= 1 && t < 3 && nadj1[p_tmp] >= 0 || - t == 2 && free_flag[p_tmp] ){ + else if( (t >= 1 && t < 3 && nadj1[p_tmp] >= 0) || + (t == 2 && free_flag[p_tmp]) ){ if( p_tmp < 4 ){ - if( verts[p_tmp] < verts[(p_tmp+1)%4] && - verts[p_tmp] < verts[p_tmp+4] || - verts[(p_tmp+1)%4+4] < verts[(p_tmp+1)%4] && - verts[(p_tmp+1)%4+4] < verts[p_tmp+4] ){ + if( (verts[p_tmp] < verts[(p_tmp+1)%4] && + verts[p_tmp] < verts[p_tmp+4]) || + (verts[(p_tmp+1)%4+4] < verts[(p_tmp+1)%4] && + verts[(p_tmp+1)%4+4] < verts[p_tmp+4]) ){ *n1_tmp = p_tmp; *n2_tmp = (p_tmp+1)%4+4; } else{ @@ -1000,8 +1000,8 @@ static void addEdgesForQuadToTriTwoPtDegenHexa( GRegion *gr, MElement *elem, Ext } else{ int add = p_tmp==4 ? 0 : 4; - if( verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add] || - verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add] ){ + if( (verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add]) || + (verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add]) ){ *n1_tmp = 0+add; *n2_tmp = 2+add; } else{ @@ -1020,8 +1020,8 @@ static void addEdgesForQuadToTriTwoPtDegenHexa( GRegion *gr, MElement *elem, Ext if( ( n1_top >= 0 || p_top_is_free ) && ( n1_bot >= 0 || p_bot_is_free ) ){ if( p_top_is_free && p_bot_is_free ){ - if( verts[4] < verts[5] && verts[4] < verts[7] || - verts[6] < verts[5] && verts[6] < verts[7] ){ + if( (verts[4] < verts[5] && verts[4] < verts[7]) || + (verts[6] < verts[5] && verts[6] < verts[7]) ){ n1_top = 4; n2_top = 6; } else{ @@ -1058,8 +1058,8 @@ static void addEdgesForQuadToTriTwoPtDegenHexa( GRegion *gr, MElement *elem, Ext ( n1_lat >= 0 || p_lat_is_free ) ){ if( p_top_is_free && p_lat_is_free ){ - if( verts[4] < verts[5] && verts[4] < verts[7] || - verts[6] < verts[5] && verts[6] < verts[7] ){ + if( (verts[4] < verts[5] && verts[4] < verts[7]) || + (verts[6] < verts[5] && verts[6] < verts[7]) ){ n1_top = 4; n2_top = 6; } else{ @@ -1117,8 +1117,8 @@ static void addEdgesForQuadToTriTwoPtDegenHexa( GRegion *gr, MElement *elem, Ext ( n1_lat >= 0 || p_lat_is_free ) ){ if( p_bot_is_free && p_lat_is_free ){ - if( verts[0] < verts[1] && verts[0] < verts[3] || - verts[2] < verts[1] && verts[2] < verts[3] ){ + if( (verts[0] < verts[1] && verts[0] < verts[3]) || + (verts[2] < verts[1] && verts[2] < verts[3]) ){ n1_bot = 0; n2_bot = 2; } else{ @@ -1300,13 +1300,13 @@ static void addEdgesForQuadToTriOnePtDegenHexa( GRegion *gr, MElement *elem, Ext *n1_tmp = nadj1[p_tmp]; *n2_tmp = nadj2[p_tmp]; } // choose lowest vertex for t < 3, any vertex for t == 3 - else if( t >= 1 && t < 3 && nadj1[p_tmp] >= 0 || - t == 2 && free_flag[p_tmp] ){ + else if( (t >= 1 && t < 3 && nadj1[p_tmp] >= 0) || + (t == 2 && free_flag[p_tmp]) ){ if( p_tmp < 4 ){ - if( verts[p_tmp] < verts[(p_tmp+1)%4] && - verts[p_tmp] < verts[p_tmp+4] || - verts[(p_tmp+1)%4+4] < verts[(p_tmp+1)%4] && - verts[(p_tmp+1)%4+4] < verts[p_tmp+4] ){ + if( (verts[p_tmp] < verts[(p_tmp+1)%4] && + verts[p_tmp] < verts[p_tmp+4]) || + (verts[(p_tmp+1)%4+4] < verts[(p_tmp+1)%4] && + verts[(p_tmp+1)%4+4] < verts[p_tmp+4]) ){ *n1_tmp = p_tmp; *n2_tmp = (p_tmp+1)%4+4; } else{ @@ -1315,8 +1315,8 @@ static void addEdgesForQuadToTriOnePtDegenHexa( GRegion *gr, MElement *elem, Ext } else{ int add = p_tmp==4 ? 0 : 4; - if( verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add] || - verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add] ){ + if( (verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add]) || + (verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add]) ){ *n1_tmp = 0+add; *n2_tmp = 2+add; } else{ @@ -1334,8 +1334,8 @@ static void addEdgesForQuadToTriOnePtDegenHexa( GRegion *gr, MElement *elem, Ext if( !valid_division ){ // assign diagonals to the 'free' faces from above if( p_top_is_free && p_bot_is_free ){ - if( verts[0] < verts[1] && verts[0] < verts[3] || - verts[2] < verts[1] && verts[2] < verts[3] ){ + if( (verts[0] < verts[1] && verts[0] < verts[3]) || + (verts[2] < verts[1] && verts[2] < verts[3]) ){ n1_bot = 0; n2_bot = 2; } else{ @@ -1417,7 +1417,7 @@ static void addEdgesForQuadToTriOnePtDegenHexa( GRegion *gr, MElement *elem, Ext // Pyramid top on corner NOT opposite to degenerate corner if( !valid_division ){ // pyramid top on top face - if( n1_top >= 0 && n1_top != (degen_ind+2)%4+4 && n2_top != (degen_ind+2)%4+4 || + if( (n1_top >= 0 && n1_top != (degen_ind+2)%4+4 && n2_top != (degen_ind+2)%4+4) || p_top_is_free ){ if( n1_lat1 == (degen_ind+1)%4+4 || p_lat1_is_free ){ valid_division = true; @@ -1447,8 +1447,8 @@ static void addEdgesForQuadToTriOnePtDegenHexa( GRegion *gr, MElement *elem, Ext } } // pyramid top on bottom face - if( !valid_division && n1_bot >= 0 && - n1_bot != (degen_ind+2)%4 && n2_bot != (degen_ind+2)%4 || + if( (!valid_division && n1_bot >= 0 && + n1_bot != (degen_ind+2)%4 && n2_bot != (degen_ind+2)%4) || p_bot_is_free ){ if( n1_lat1 == (degen_ind+1)%4 || p_lat1_is_free ){ valid_division = true; @@ -1629,13 +1629,13 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa n1[p] = nadj1[p]; n2[p] = nadj2[p]; } // choose lowest vertex for t < 3, any vertex for t == 3 - else if( t >= 1 && t < 3 && nadj1[p] >= 0 || - t == 2 && free_flag[p] ){ + else if( (t >= 1 && t < 3 && nadj1[p] >= 0) || + (t == 2 && free_flag[p]) ){ if( p < 4 ){ - if( verts[p] < verts[(p+1)%4] && - verts[p] < verts[p+4] || - verts[(p+1)%4+4] < verts[(p+1)%4] && - verts[(p+1)%4+4] < verts[p+4] ){ + if( (verts[p] < verts[(p+1)%4] && + verts[p] < verts[p+4]) || + (verts[(p+1)%4+4] < verts[(p+1)%4] && + verts[(p+1)%4+4] < verts[p+4]) ){ n1[p] = p; n2[p] = (p+1)%4+4; } else{ @@ -1644,8 +1644,8 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa } else{ int add = p==4 ? 0 : 4; - if( verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add] || - verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add] ){ + if( (verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add]) || + (verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add]) ){ n1[p] = 0+add; n2[p] = 2+add; } else{ @@ -1695,9 +1695,9 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa if( face_is_free[p1] && face_is_free[p2] ){ face_is_free[p1] = false; if( p1 < 4 ){ - if( verts[p1] < verts[p1+4] && verts[p1] < verts[(p1+1)%4] || - verts[(p1+1)%4+4] < verts[p1+4] && - verts[(p1+1)%4+4] < verts[(p1+1)%4] ){ + if( (verts[p1] < verts[p1+4] && verts[p1] < verts[(p1+1)%4]) || + (verts[(p1+1)%4+4] < verts[p1+4] && + verts[(p1+1)%4+4] < verts[(p1+1)%4]) ){ n1[p1] = p1; n2[p1] = (p1+1)%4+4; } @@ -1708,8 +1708,8 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa } else{ int add = p1==4 ? 0 : 4; - if( verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add] || - verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add] ){ + if( (verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add]) || + (verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add]) ){ n1[p1] = 0+add; n2[p1] = 2+add; } @@ -1788,7 +1788,7 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa // Test 1: Another set of opposite, aligned diagonals. for( int s = 0; s < 3; s++ ){ - if( s == p1 || s>1 && (p1==4 || p1==5) ) + if( s == p1 || (s>1 && (p1==4 || p1==5)) ) continue; int s1, s2; if( s > 1){ @@ -1798,15 +1798,15 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa s1 = s; s2 = (s+2)%4; } // if these two faces do not work for opposite aligned diagonals, continue - if( n1[s1] < 0 && !face_is_free[s1] || - n1[s2] < 0 && !face_is_free[s2] ) + if( (n1[s1] < 0 && !face_is_free[s1]) || + (n1[s2] < 0 && !face_is_free[s2]) ) continue; if( n1[s1] >= 0 && n1[s2] >= 0 ){ if( s1 < 4 ){ - if( ( n1[s1] == s1 || n2[s1] == s1 ) && - n1[s2] != s2+4 && n2[s2] != s2+4 || - ( n1[s1] == s1+4 || n2[s1] == s1+4 ) && - n1[s2] != s2 && n2[s2] != s2 ) + if( ( ( n1[s1] == s1 || n2[s1] == s1 ) && + n1[s2] != s2+4 && n2[s2] != s2+4 ) || + ( ( n1[s1] == s1+4 || n2[s1] == s1+4 ) && + n1[s2] != s2 && n2[s2] != s2 ) ) continue; } else{ @@ -1826,9 +1826,9 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa if( face_is_free[s1] && face_is_free[s2] ){ face_is_free[s1] = false; if( s1 < 4 ){ - if( verts[s1] < verts[s1+4] && verts[s1] < verts[(s1+1)%4] || - verts[(s1+1)%4+4] < verts[s1+4] && - verts[(s1+1)%4+4] < verts[(s1+1)%4] ){ + if( (verts[s1] < verts[s1+4] && verts[s1] < verts[(s1+1)%4]) || + (verts[(s1+1)%4+4] < verts[s1+4] && + verts[(s1+1)%4+4] < verts[(s1+1)%4]) ){ n1[s1] = s1; n2[s1] = (s1+1)%4+4; } @@ -1839,8 +1839,8 @@ static void addEdgesForQuadToTriFullHexa( GRegion *gr, MElement *elem, ExtrudePa } else{ int add = s1==4 ? 0 : 4; - if( verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add] || - verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add] ){ + if( (verts[0+add] < verts[1+add] && verts[0+add] < verts[3+add]) || + (verts[2+add] < verts[1+add] && verts[2+add] < verts[3+add]) ){ n1[s1] = 0+add; n2[s1] = 2+add; } @@ -2150,8 +2150,8 @@ static void bruteForceEdgeQuadToTriHexa( GRegion *gr, MElement *elem, } // test for right number of triangles with degenerate edges - if( face_types["single_tri"].size() != 0 && face_types["single_tri"].size() != 2 || - face_types["degen"].size() && face_types["single_tri"].size() != 2 ){ + if( (face_types["single_tri"].size() != 0 && face_types["single_tri"].size() != 2) || + (face_types["degen"].size() && face_types["single_tri"].size() != 2) ){ Msg::Error("In bruteForceEdgeQuadToTriHexa(), bad degenerated extrusion encountered."); std::pair<unsigned int, unsigned int> jkpair(j,k); problems[elem].insert(jkpair); @@ -2273,8 +2273,8 @@ static int ExtrudeDiags( GRegion *gr, std::vector<MVertex*> v, unsigned int j_st } int elem_size = elem->getNumVertices(); - if( !( v.size() == 6 && elem_size == 3 || - v.size() == 8 && elem_size == 4 ) ){ + if( !( (v.size() == 6 && elem_size == 3) || + (v.size() == 8 && elem_size == 4) ) ){ Msg::Error("In ExtrudeDiags(), vertex number mismatch " "between 2D source element and extruded volume."); return 0; @@ -2465,9 +2465,9 @@ static bool QuadToTriGetRegionDiags(GRegion *gr, // see if the diagonals are fixed for other reasons if( !( face_ep_tmp && face_ep_tmp->mesh.ExtrudeMesh && face_ep_tmp->geo.Mode == EXTRUDED_ENTITY ) || - other_region && oth_ep && oth_ep->mesh.ExtrudeMesh && - (*it) == model->getFaceByTag( std::abs( oth_ep->geo.Source ) ) || - other_region && other_region->meshAttributes.Method == MESH_TRANSFINITE ){ + (other_region && oth_ep && oth_ep->mesh.ExtrudeMesh && + (*it) == model->getFaceByTag( std::abs( oth_ep->geo.Source ) ) ) || + (other_region && other_region->meshAttributes.Method == MESH_TRANSFINITE) ){ is_fixed = true; } @@ -3369,9 +3369,11 @@ static int makeEdgesForOtherBndHexa( GRegion *gr, bool is_dbl, CategorizedSource return 0; } - // no need to do this if there are no lateral surface diagonals and if not a rotation with quadrangles. - if( !lat_tri_diags.size() && ( !reg_source->quadrangles.size() || - ep->geo.Type != ROTATE && ep->geo.Type != TRANSLATE_ROTATE ) ) + // no need to do this if there are no lateral surface diagonals and if not a + // rotation with quadrangles. + if( !lat_tri_diags.size() && + ( !reg_source->quadrangles.size() || + (ep->geo.Type != ROTATE && ep->geo.Type != TRANSLATE_ROTATE) ) ) return 1; int j_top_start, k_top_start; @@ -4019,12 +4021,13 @@ static bool addFaceOrBodyCenteredVertices( GRegion *to, CategorizedSourceElement else if( edgeExists( verts3D[p+elem_size], verts3D[(p+1)%elem_size], quadToTri_edges ) ) found_diags = true; } - // triangle extrusions don't need face centered verts if NO diags found or if not on lateral boundary + // triangle extrusions don't need face centered verts if NO diags found + // or if not on lateral boundary if( !t && ( !found_diags || s==2 ) ) continue; int j_start, k_start; - if( s < 2 && found_diags || degen_hex ){ + if( (s < 2 && found_diags) || degen_hex ){ j_start = 0; k_start = 0; } @@ -4076,7 +4079,7 @@ static void MeshWithInternalVertex( GRegion *to, MElement *source, std::vector<M const int n_lat = n_lat_tmp; - if( n_lat == 3 && n1.size() != 3 || n_lat == 4 && n2.size() != 6 ){ + if( (n_lat == 3 && n1.size() != 3) || (n_lat == 4 && n2.size() != 6) ){ Msg::Error("In MeshWithInternalVertex(), size of diagonal node vectors is not does not equal 3 or 6."); return; } @@ -4175,7 +4178,7 @@ static void MeshWithFaceCenteredVertex( GRegion *to, MElement *source, std::vect return; } - if( n_lat == 3 && n1.size() != 3 || n_lat == 4 && n2.size() != 6 ){ + if( (n_lat == 3 && n1.size() != 3) || (n_lat == 4 && n2.size() != 6) ){ Msg::Error("In MeshWithFaceCenteredVertex(), size of diagonal node vectors is not does not equal 3 or 6."); return; } @@ -4183,7 +4186,7 @@ static void MeshWithFaceCenteredVertex( GRegion *to, MElement *source, std::vect std::vector<MVertex *> face_vertices; // create the face-centered vertices for( int s = 0; s < 2; s++ ){ - if( !s && !bottom_flag || s && !top_flag ) + if( (!s && !bottom_flag) || (s && !top_flag) ) continue; std::vector<MVertex *> v_face; v_face.assign(n_lat, (MVertex*)(NULL) ); @@ -4985,7 +4988,7 @@ static inline bool createFullHexElems( std::vector<MVertex*> &v, GRegion *to, Ex // to keep sanity. // p0 always refereces a vertex position on a slicing diagonal (see ascii diagram above again. int p0; - if( n_div1 > 3 && n_div2 < 4 || n_div1 < 4 && n_div2 > 3 ){ + if( (n_div1 > 3 && n_div2 < 4) || (n_div1 < 4 && n_div2 > 3) ){ p0 = n_div1 < 4 ? p : (p+2)%4; prism_v[0][0] = p0; prism_v[0][1] = (p0+1)%4; prism_v[0][2] = (p0+1)%4+4; prism_v[0][3] = (p0+3)%4; prism_v[0][4] = (p0+2)%4; prism_v[0][5] = (p0+2)%4+4; @@ -5051,8 +5054,8 @@ static inline bool createFullHexElems( std::vector<MVertex*> &v, GRegion *to, Ex // if 2nd prism needs the internal diagonal to work, check to see if the internal // diagonal exists and, if so, if it is consistent. If it doesn't exist, make it - if( ( ext_diag[1][0][0] != ext_diag[1][1][0] || ext_diag[1][0][0] < 0 && - ext_diag[1][1][0] < 0 ) && + if( ( ext_diag[1][0][0] != ext_diag[1][1][0] || (ext_diag[1][0][0] < 0 && + ext_diag[1][1][0] < 0) ) && intern_diag[0] >= 0 && intern_diag[0] != ext_diag[1][0][1] && intern_diag[0] != ext_diag[1][1][1] && intern_diag[1] != ext_diag[1][0][1] && intern_diag[1] != ext_diag[1][1][1] ) { @@ -5076,10 +5079,11 @@ static inline bool createFullHexElems( std::vector<MVertex*> &v, GRegion *to, Ex intern_diag[1] = 0; } - // this check sees if the internal shared prism face is diagonalized, but one prism has no other diags + // this check sees if the internal shared prism face is diagonalized, but + // one prism has no other diags if( intern_diag[0] >= 0 && - ( ext_diag[0][0][0] < 0 && ext_diag[0][1][0] < 0 || - ext_diag[1][0][0] < 0 && ext_diag[1][1][0] < 0 ) ){ + ( (ext_diag[0][0][0] < 0 && ext_diag[0][1][0] < 0) || + (ext_diag[1][0][0] < 0 && ext_diag[1][1][0] < 0) ) ){ continue; } diff --git a/Mesh/QuadTriUtils.cpp b/Mesh/QuadTriUtils.cpp index 84cc192a82f7e65fce0a660c3c7a573214051a73..cb3b19226b4530b46b019003b56bb0a7bcf0b16b 100644 --- a/Mesh/QuadTriUtils.cpp +++ b/Mesh/QuadTriUtils.cpp @@ -200,7 +200,7 @@ CategorizedSourceElements::CategorizedSourceElements( GRegion *gr ) else if( bnd_count == 1 || bnd_count == 2 || (bnd_count == 3 && t) ) (!t) ? other_bnd_tri.insert(i) : other_bnd_quad.insert(i); - else if( bnd_count == 3 && !t || bnd_count == 4 ){ + else if( (bnd_count == 3 && !t) || bnd_count == 4 ){ (!t) ? three_bnd_pt_tri.insert(i) : four_bnd_pt_quad.insert(i); } diff --git a/Mesh/meshGFaceExtruded.cpp b/Mesh/meshGFaceExtruded.cpp index 62085422e3b45448332b49447615b48617849403..2b2b2de0e529da8de2211f4d3a149a90aeef8b3c 100644 --- a/Mesh/meshGFaceExtruded.cpp +++ b/Mesh/meshGFaceExtruded.cpp @@ -14,13 +14,13 @@ #include "QuadTriExtruded2D.h" static void addTriangle(MVertex* v1, MVertex* v2, MVertex* v3, - GFace *to) + GFace *to) { to->triangles.push_back(new MTriangle(v1, v2, v3)); } static void addQuadrangle(MVertex* v1, MVertex* v2, MVertex* v3, MVertex* v4, - GFace *to) + GFace *to) { to->quadrangles.push_back(new MQuadrangle(v1, v2, v3, v4)); } @@ -38,7 +38,7 @@ static void createQuaTri(std::vector<MVertex*> &v, GFace *to, Msg::Error("Uncoherent extruded quadrangle in surface %d", to->tag()); else{ // Trevor Strickler added the tri_quad_flag stuff here. - if(ep->mesh.Recombine && tri_quad_flag != 2 || tri_quad_flag == 1){ + if((ep->mesh.Recombine && tri_quad_flag != 2) || tri_quad_flag == 1){ addQuadrangle(v[0], v[1], v[3], v[2], to); } else if(!constrainedEdges){ @@ -146,7 +146,7 @@ static void copyMesh(GFace *from, GFace *to, for(unsigned int i = 0; i < from->mesh_vertices.size(); i++){ MVertex *v = from->mesh_vertices[i]; double x = v->x(), y = v->y(), z = v->z(); - ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1], + ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1], x, y, z); MVertex *newv = new MVertex(x, y, z, to); to->mesh_vertices.push_back(newv); @@ -192,7 +192,7 @@ static void copyMesh(GFace *from, GFace *to, Msg::Error("In MeshExtrudedSurface()::copyMesh(), mesh of QuadToTri top " "surface %d failed.", to->tag() ); return; - } + } for(unsigned int i = 0; i < from->quadrangles.size(); i++){ std::vector<MVertex*> verts; @@ -207,7 +207,7 @@ static void copyMesh(GFace *from, GFace *to, itp = tmp.linearSearch(pos); } if(itp == pos.end()) { - Msg::Error("Could not find extruded vertex (%.16g, %.16g, %.16g) in surface %d", + Msg::Error("Could not find extruded vertex (%.16g, %.16g, %.16g) in surface %d", tmp.x(), tmp.y(), tmp.z(), to->tag()); return; } @@ -217,7 +217,7 @@ static void copyMesh(GFace *from, GFace *to, } } -int MeshExtrudedSurface(GFace *gf, +int MeshExtrudedSurface(GFace *gf, std::set<std::pair<MVertex*, MVertex*> > *constrainedEdges) { ExtrudeParams *ep = gf->meshAttributes.extrude; @@ -228,7 +228,7 @@ int MeshExtrudedSurface(GFace *gf, Msg::Info("Meshing surface %d (extruded)", gf->tag()); // build a set with all the vertices on the boundary of the face gf - double old_tol = MVertexLessThanLexicographic::tolerance; + double old_tol = MVertexLessThanLexicographic::tolerance; MVertexLessThanLexicographic::tolerance = 1.e-12 * CTX::instance()->lc; std::set<MVertex*, MVertexLessThanLexicographic> pos; @@ -247,7 +247,7 @@ int MeshExtrudedSurface(GFace *gf, // exist on the face--so we add them to the set if(constrainedEdges) pos.insert(gf->mesh_vertices.begin(), gf->mesh_vertices.end()); - + if(ep->geo.Mode == EXTRUDED_ENTITY) { // surface is extruded from a curve GEdge *from = gf->model()->getEdgeByTag(std::abs(ep->geo.Source)); @@ -260,7 +260,7 @@ int MeshExtrudedSurface(GFace *gf, else { // surface is a copy of another surface (the "top" of the extrusion) GFace *from = gf->model()->getFaceByTag(std::abs(ep->geo.Source)); - if(!from){ + if(!from){ Msg::Error("Unknown source surface %d for extrusion", ep->geo.Source); exit(1); return 0; @@ -274,7 +274,7 @@ int MeshExtrudedSurface(GFace *gf, copyMesh(from, gf, pos); } - MVertexLessThanLexicographic::tolerance = old_tol; + MVertexLessThanLexicographic::tolerance = old_tol; gf->meshStatistics.status = GFace::DONE; return 1; diff --git a/Mesh/meshGRegionTransfinite.cpp b/Mesh/meshGRegionTransfinite.cpp index 9249fe21b16d97a1028d8e3c93f8976e362ac03e..0cab3cf5290c9f9f8f58f2a26bdc46587347300d 100644 --- a/Mesh/meshGRegionTransfinite.cpp +++ b/Mesh/meshGRegionTransfinite.cpp @@ -19,22 +19,22 @@ #include "GmshMessage.h" #include "QuadTriTransfinite3D.h" -/* +/* Transfinite volume meshes - a0 s0 s1 f0 s0 s1 s5 s4 s6 - s7 s6 a1 s1 s2 f1 s1 s2 s6 s5 * - *-------* a2 s3 s2 f2 s3 s2 s6 s7 /|\ - |\s4 |\ a3 s0 s3 f3 s0 s3 s7 s4 / | \ - | *-------* s5 a4 s4 s5 f4 s0 s1 s2 s3 s7/s4/ |s2\ + a0 s0 s1 f0 s0 s1 s5 s4 s6 + s7 s6 a1 s1 s2 f1 s1 s2 s6 s5 * + *-------* a2 s3 s2 f2 s3 s2 s6 s7 /|\ + |\s4 |\ a3 s0 s3 f3 s0 s3 s7 s4 / | \ + | *-------* s5 a4 s4 s5 f4 s0 s1 s2 s3 s7/s4/ |s2\ | | s2| | a5 s5 s6 f5 s4 s5 s6 s7 *---*---* s5 - s3 *-|-----* | a6 s7 s6 | / \ | - \| \| a7 s4 s7 | / \ | - *-------* a8 s0 s4 |/ \| - v w s0 s1 a9 s1 s5 *-------* - \| a10 s2 s6 v w s3/s0 s1 - *--u a11 s3 s7 \| - *--u + s3 *-|-----* | a6 s7 s6 | / \ | + \| \| a7 s4 s7 | / \ | + *-------* a8 s0 s4 |/ \| + v w s0 s1 a9 s1 s5 *-------* + \| a10 s2 s6 v w s3/s0 s1 + *--u a11 s3 s7 \| + *--u Important limitations: - only works with 5- or 6-face volumes @@ -43,7 +43,7 @@ - the definition of a 5-face volume has to follow the ordering given in the figure above (degenerescence has to be along s0,s4) - + - meshing a volume with prisms or tetrahedra assumes that the triangular mesh is consistent with the volume mesh: there is no coherence check in the volume algorithm to ensure that edges will @@ -103,12 +103,12 @@ tab[i + 1][j + 1][k + 1], \ tab[i + 1][j + 1][k ]) -static double transfiniteHex(double f1, double f2, double f3, double f4, +static double transfiniteHex(double f1, double f2, double f3, double f4, double f5, double f6, - double c1, double c2, double c3, double c4, - double c5, double c6, double c7, double c8, + double c1, double c2, double c3, double c4, + double c5, double c6, double c7, double c8, double c9, double c10, double c11, double c12, - double s1, double s2, double s3, double s4, + double s1, double s2, double s3, double s4, double s5, double s6, double s7, double s8, double u, double v, double w) { @@ -116,36 +116,36 @@ static double transfiniteHex(double f1, double f2, double f3, double f4, ((1-u)*(1-v)*c9 + (1-u)*v*c12 + u*(1-v)*c10 + u*v*c11) - ((1-v)*(1-w)*c1 + (1-v)*w*c5 + v*(1-w)*c3 + v*w*c7) - ((1-u)*(1-w)*c4 + (1-w)*u*c2 + w*(1-u)*c8 + u*w*c6) + - (1-u)*(1-v)*(1-w)*s1 + u*(1-v)*(1-w)*s2 + u*v*(1-w)*s3 + (1-u)*v*(1-w)*s4 + + (1-u)*(1-v)*(1-w)*s1 + u*(1-v)*(1-w)*s2 + u*v*(1-w)*s3 + (1-u)*v*(1-w)*s4 + (1-u)*(1-v)*w*s5 + u*(1-v)*w*s6 + u*v*w*s7 + (1-u)*v*w*s8; } -static MVertex *transfiniteHex(GRegion *gr, - MVertex *f1, MVertex *f2, MVertex *f3, MVertex *f4, +static MVertex *transfiniteHex(GRegion *gr, + MVertex *f1, MVertex *f2, MVertex *f3, MVertex *f4, MVertex *f5, MVertex *f6, - MVertex *c1, MVertex *c2, MVertex *c3, MVertex *c4, - MVertex *c5, MVertex *c6, MVertex *c7, MVertex *c8, + MVertex *c1, MVertex *c2, MVertex *c3, MVertex *c4, + MVertex *c5, MVertex *c6, MVertex *c7, MVertex *c8, MVertex *c9, MVertex *c10, MVertex *c11, MVertex *c12, - MVertex *s1, MVertex *s2, MVertex *s3, MVertex *s4, + MVertex *s1, MVertex *s2, MVertex *s3, MVertex *s4, MVertex *s5, MVertex *s6, MVertex *s7, MVertex *s8, double u, double v, double w) { double x = transfiniteHex(f1->x(), f2->x(), f3->x(), f4->x(), f5->x(), f6->x(), c1->x(), c2->x(), c3->x(), c4->x(), c5->x(), c6->x(), c7->x(), c8->x(), c9->x(), c10->x(), c11->x(), c12->x(), - s1->x(), s2->x(), s3->x(), s4->x(), + s1->x(), s2->x(), s3->x(), s4->x(), s5->x(), s6->x(), s7->x(), s8->x(), u, v, w); double y = transfiniteHex(f1->y(), f2->y(), f3->y(), f4->y(), f5->y(), f6->y(), c1->y(), c2->y(), c3->y(), c4->y(), c5->y(), c6->y(), c7->y(), c8->y(), c9->y(), c10->y(), c11->y(), c12->y(), - s1->y(), s2->y(), s3->y(), s4->y(), + s1->y(), s2->y(), s3->y(), s4->y(), s5->y(), s6->y(), s7->y(), s8->y(), u, v, w); double z = transfiniteHex(f1->z(), f2->z(), f3->z(), f4->z(), f5->z(), f6->z(), c1->z(), c2->z(), c3->z(), c4->z(), c5->z(), c6->z(), c7->z(), c8->z(), c9->z(), c10->z(), c11->z(), c12->z(), - s1->z(), s2->z(), s3->z(), s4->z(), + s1->z(), s2->z(), s3->z(), s4->z(), s5->z(), s6->z(), s7->z(), s8->z(), u, v, w); return new MVertex(x, y, z, gr); @@ -162,7 +162,7 @@ class GOrientedTransfiniteFace { : _gf(0), _LL(0), _HH(0), _permutation(-1), _index(-1) {} GOrientedTransfiniteFace(GFace *gf, std::vector<MVertex*> &corners) : _gf(gf), _LL(0), _HH(0), _permutation(-1), _index(-1) - { + { _LL = gf->transfinite_vertices.size() - 1; if(_LL <= 0) return; _HH = gf->transfinite_vertices[0].size() - 1; @@ -181,10 +181,10 @@ class GOrientedTransfiniteFace { } else return; - + // get the corners of the transfinite surface mesh std::vector<MVertex*> c(4); - if(_gf->meshAttributes.corners.empty() || + if(_gf->meshAttributes.corners.empty() || _gf->meshAttributes.corners.size() == 4){ c[0] = _gf->transfinite_vertices[0][0]; c[1] = _gf->transfinite_vertices[_LL][0]; @@ -201,7 +201,7 @@ class GOrientedTransfiniteFace { return; // map the surface mesh onto the canonical transfinite hexahedron - int faces[] = {0, 1, 5, 4, 1, 2, 6, 5, 3, 2, 6, 7, + int faces[] = {0, 1, 5, 4, 1, 2, 6, 5, 3, 2, 6, 7, 0, 3, 7, 4, 0, 1, 2, 3, 4, 5, 6, 7}; int permutations[] = {0, 1, 2, 3, 1, 2, 3, 0, 2, 3, 0, 1, 3, 0, 1, 2, 3, 2, 1, 0, 2, 1, 0, 3, 1, 0, 3, 2, 0, 3, 2, 1}; @@ -225,9 +225,9 @@ class GOrientedTransfiniteFace { // returns the index of the face in the reference hexahedron int index() const { return _index; } // returns true if the face is recombined - int recombined() const - { - return CTX::instance()->mesh.recombineAll || _gf->meshAttributes.recombine; + int recombined() const + { + return CTX::instance()->mesh.recombineAll || _gf->meshAttributes.recombine; } // returns the number or points in the transfinite mesh in both // parameter directions @@ -325,12 +325,12 @@ int MeshTransfiniteVolume(GRegion *gr) gr->tag(), corners.size()); return 0; } - + std::vector<GOrientedTransfiniteFace> orientedFaces(6); for(std::list<GFace*>::iterator it = faces.begin(); it != faces.end(); ++it){ GOrientedTransfiniteFace f(*it, corners); if(f.index() < 0){ - Msg::Error("Incompatible surface %d in transfinite volume %d", + Msg::Error("Incompatible surface %d in transfinite volume %d", (*it)->tag(), gr->tag()); return 0; } @@ -371,7 +371,7 @@ int MeshTransfiniteVolume(GRegion *gr) MVertex *s1 = orientedFaces[4].getVertex(N_i - 1, 0); MVertex *s2 = orientedFaces[4].getVertex(N_i - 1, N_j - 1); MVertex *s3 = orientedFaces[4].getVertex(0, N_j - 1); - + MVertex *s4 = orientedFaces[5].getVertex(0, 0); MVertex *s5 = orientedFaces[5].getVertex(N_i - 1, 0); MVertex *s6 = orientedFaces[5].getVertex(N_i - 1, N_j - 1); @@ -396,12 +396,12 @@ int MeshTransfiniteVolume(GRegion *gr) MVertex *c1 = orientedFaces[4].getVertex(N_i - 1, j); MVertex *c2 = orientedFaces[4].getVertex(i, N_j - 1); MVertex *c3 = orientedFaces[4].getVertex(0, j); - + MVertex *c4 = orientedFaces[5].getVertex(i, 0); MVertex *c5 = orientedFaces[5].getVertex(N_i - 1, j); MVertex *c6 = orientedFaces[5].getVertex(i, N_j - 1); MVertex *c7 = orientedFaces[5].getVertex(0, j); - + MVertex *f4 = orientedFaces[4].getVertex(i, j); MVertex *f5 = orientedFaces[5].getVertex(i, j); @@ -478,12 +478,12 @@ int MeshTransfiniteVolume(GRegion *gr) verts[2] = tab[i+1][j+1][k]; verts[3] = tab[i][j+1][k]; verts[4] = tab[i][j][k+1]; verts[5] = tab[i+1][j][k+1]; verts[6] = tab[i+1][j+1][k+1]; verts[7] = tab[i][j+1][k+1]; - if(!orientedFaces[3].recombined() && i == 0 || - !orientedFaces[1].recombined() && i == N_i-2 || - !orientedFaces[0].recombined() && j == 0 || - !orientedFaces[2].recombined() && j == N_j-2 || - !orientedFaces[4].recombined() && k == 0 || - !orientedFaces[5].recombined() && k == N_k-2 ){ + if((!orientedFaces[3].recombined() && i == 0) || + (!orientedFaces[1].recombined() && i == N_i-2) || + (!orientedFaces[0].recombined() && j == 0) || + (!orientedFaces[2].recombined() && j == N_j-2) || + (!orientedFaces[4].recombined() && k == 0) || + (!orientedFaces[5].recombined() && k == N_k-2)){ // make subdivided element meshTransfElemWithInternalVertex(gr, verts, &boundary_diags); } @@ -494,13 +494,13 @@ int MeshTransfiniteVolume(GRegion *gr) // continue, skipping the rest which is for non-divided elements continue; } - if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && - orientedFaces[2].recombined() && orientedFaces[3].recombined() && + if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && + orientedFaces[2].recombined() && orientedFaces[3].recombined() && orientedFaces[4].recombined() && orientedFaces[5].recombined()) { gr->hexahedra.push_back(CREATE_HEX); } - else if(!orientedFaces[0].recombined() && orientedFaces[1].recombined() && - !orientedFaces[2].recombined() && orientedFaces[3].recombined() && + else if(!orientedFaces[0].recombined() && orientedFaces[1].recombined() && + !orientedFaces[2].recombined() && orientedFaces[3].recombined() && orientedFaces[4].recombined() && orientedFaces[5].recombined()) { gr->prisms.push_back(new MPrism(tab[i ][j ][k ], tab[i + 1][j ][k ], @@ -515,8 +515,8 @@ int MeshTransfiniteVolume(GRegion *gr) tab[i ][j + 1][k + 1], tab[i + 1][j + 1][k ])); } - else if(orientedFaces[0].recombined() && !orientedFaces[1].recombined() && - orientedFaces[2].recombined() && !orientedFaces[3].recombined() && + else if(orientedFaces[0].recombined() && !orientedFaces[1].recombined() && + orientedFaces[2].recombined() && !orientedFaces[3].recombined() && orientedFaces[4].recombined() && orientedFaces[5].recombined()) { gr->prisms.push_back(new MPrism(tab[i + 1][j ][k ], tab[i + 1][j + 1][k ], @@ -531,14 +531,14 @@ int MeshTransfiniteVolume(GRegion *gr) tab[i ][j ][k + 1], tab[i ][j + 1][k ])); } - else if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && - orientedFaces[2].recombined() && orientedFaces[3].recombined() && + else if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && + orientedFaces[2].recombined() && orientedFaces[3].recombined() && !orientedFaces[4].recombined() && !orientedFaces[5].recombined()) { gr->prisms.push_back(CREATE_PRISM_1); gr->prisms.push_back(CREATE_PRISM_2); } else if(!orientedFaces[0].recombined() && !orientedFaces[1].recombined() && - !orientedFaces[2].recombined() && !orientedFaces[3].recombined() && + !orientedFaces[2].recombined() && !orientedFaces[3].recombined() && !orientedFaces[4].recombined() && !orientedFaces[5].recombined()) { gr->tetrahedra.push_back(CREATE_SIM_1); gr->tetrahedra.push_back(CREATE_SIM_2); @@ -563,25 +563,26 @@ int MeshTransfiniteVolume(GRegion *gr) std::vector<MVertex*> verts; verts.resize(6); verts[0] = tab[0][j][k]; verts[1] = tab[1][j][k]; - verts[2] = tab[1][j+1][k]; verts[3] = tab[0][j][k+1]; - verts[4] = tab[1][j][k+1]; verts[5] = tab[1][j+1][k+1]; - if(!orientedFaces[0].recombined() && j == 0 || - !orientedFaces[2].recombined() && j == N_j-2 || - !orientedFaces[4].recombined() && k == 0 || - !orientedFaces[5].recombined() && k == N_k-2 ){ + verts[2] = tab[1][j+1][k]; verts[3] = tab[0][j][k+1]; + verts[4] = tab[1][j][k+1]; verts[5] = tab[1][j+1][k+1]; + if((!orientedFaces[0].recombined() && j == 0) || + (!orientedFaces[2].recombined() && j == N_j-2) || + (!orientedFaces[4].recombined() && k == 0) || + (!orientedFaces[5].recombined() && k == N_k-2) ){ // make subdivided element meshTransfElemWithInternalVertex(gr, verts, &boundary_diags); } else - gr->prisms.push_back(new MPrism( verts[0], verts[1], verts[2], verts[3], verts[4], verts[5])); + gr->prisms.push_back(new MPrism(verts[0], verts[1], verts[2], + verts[3], verts[4], verts[5])); // continue, skipping the rest which is for non-divided elements continue; } - if((orientedFaces[0].recombined() && orientedFaces[1].recombined() && - orientedFaces[2].recombined() && orientedFaces[4].recombined() && + if((orientedFaces[0].recombined() && orientedFaces[1].recombined() && + orientedFaces[2].recombined() && orientedFaces[4].recombined() && orientedFaces[5].recombined()) || - (orientedFaces[0].recombined() && orientedFaces[1].recombined() && - orientedFaces[2].recombined() && !orientedFaces[4].recombined() && + (orientedFaces[0].recombined() && orientedFaces[1].recombined() && + orientedFaces[2].recombined() && !orientedFaces[4].recombined() && !orientedFaces[5].recombined())) { gr->prisms.push_back(new MPrism(tab[0 ][j ][k ], tab[1 ][j ][k ], @@ -590,8 +591,8 @@ int MeshTransfiniteVolume(GRegion *gr) tab[1 ][j ][k + 1], tab[1 ][j + 1][k + 1])); } - else if(!orientedFaces[0].recombined() && !orientedFaces[1].recombined() && - !orientedFaces[2].recombined() && !orientedFaces[4].recombined() && + else if(!orientedFaces[0].recombined() && !orientedFaces[1].recombined() && + !orientedFaces[2].recombined() && !orientedFaces[4].recombined() && !orientedFaces[5].recombined()) { gr->tetrahedra.push_back(new MTetrahedron(tab[0 ][j ][k ], tab[1 ][j ][k ], @@ -623,11 +624,11 @@ int MeshTransfiniteVolume(GRegion *gr) verts[2] = tab[i+1][j+1][k]; verts[3] = tab[i][j+1][k]; verts[4] = tab[i][j][k+1]; verts[5] = tab[i+1][j][k+1]; verts[6] = tab[i+1][j+1][k+1]; verts[7] = tab[i][j+1][k+1]; - if(!orientedFaces[1].recombined() && i == N_i-2 || - !orientedFaces[0].recombined() && j == 0 || - !orientedFaces[2].recombined() && j == N_j-2 || - !orientedFaces[4].recombined() && k == 0 || - !orientedFaces[5].recombined() && k == N_k-2 ){ + if((!orientedFaces[1].recombined() && i == N_i-2) || + (!orientedFaces[0].recombined() && j == 0) || + (!orientedFaces[2].recombined() && j == N_j-2) || + (!orientedFaces[4].recombined() && k == 0) || + (!orientedFaces[5].recombined() && k == N_k-2)){ // make subdivided element meshTransfElemWithInternalVertex(gr, verts, &boundary_diags); } @@ -637,19 +638,19 @@ int MeshTransfiniteVolume(GRegion *gr) // continue, skipping the rest which is for non-divided elements continue; } - if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && + if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && orientedFaces[2].recombined() && orientedFaces[4].recombined() && orientedFaces[5].recombined()) { gr->hexahedra.push_back(CREATE_HEX); } - else if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && - orientedFaces[2].recombined() && !orientedFaces[4].recombined() && + else if(orientedFaces[0].recombined() && orientedFaces[1].recombined() && + orientedFaces[2].recombined() && !orientedFaces[4].recombined() && !orientedFaces[5].recombined()) { gr->prisms.push_back(CREATE_PRISM_1); gr->prisms.push_back(CREATE_PRISM_2); } - else if(!orientedFaces[0].recombined() && !orientedFaces[1].recombined() && - !orientedFaces[2].recombined() && !orientedFaces[4].recombined() && + else if(!orientedFaces[0].recombined() && !orientedFaces[1].recombined() && + !orientedFaces[2].recombined() && !orientedFaces[4].recombined() && !orientedFaces[5].recombined()) { gr->tetrahedra.push_back(CREATE_SIM_1); gr->tetrahedra.push_back(CREATE_SIM_2); diff --git a/Mesh/multiscalePartition.cpp b/Mesh/multiscalePartition.cpp index 1c87b1d30821460c9f721d4e5a1ea6bfca0f31ce..5bf57431a80b885d4c6114d2502eff72f6a3e551 100644 --- a/Mesh/multiscalePartition.cpp +++ b/Mesh/multiscalePartition.cpp @@ -374,20 +374,23 @@ void multiscalePartition::partition(partitionLevel & level, int nbParts, if (genus != 0 ){ int nbParts = std::max(genus+2,2); - Msg::Info("Mesh partition: level (%d-%d) is %d-GENUS (AR=%d) ---> MULTILEVEL partition %d parts", + Msg::Info("Mesh partition: level (%d-%d) is %d-GENUS (AR=%d) " + "---> MULTILEVEL partition %d parts", nextLevel->recur,nextLevel->region, genus, AR, nbParts); partition(*nextLevel, nbParts, MULTILEVEL); } - else if (genus == 0 && AR > AR_MAX || genus == 0 && NB > 1){ + else if ((genus == 0 && AR > AR_MAX) || (genus == 0 && NB > 1)){ int nbParts = 2; if(!onlyMultilevel){ - Msg::Info("Mesh partition: level (%d-%d) is ZERO-GENUS (AR=%d NB=%d) ---> LAPLACIAN partition %d parts", + Msg::Info("Mesh partition: level (%d-%d) is ZERO-GENUS (AR=%d NB=%d) " + "---> LAPLACIAN partition %d parts", nextLevel->recur,nextLevel->region, AR, NB, nbParts); partition(*nextLevel, nbParts, LAPLACIAN); } else { - Msg::Info("Mesh partition: level (%d-%d) is ZERO-GENUS (AR=%d NB=%d) ---> MULTILEVEL partition %d parts", - nextLevel->recur,nextLevel->region, AR, NB, nbParts); + Msg::Info("Mesh partition: level (%d-%d) is ZERO-GENUS (AR=%d NB=%d) " + "---> MULTILEVEL partition %d parts", + nextLevel->recur,nextLevel->region, AR, NB, nbParts); partition(*nextLevel, nbParts, MULTILEVEL); } } diff --git a/Plugin/AnalyseCurvedMesh.cpp b/Plugin/AnalyseCurvedMesh.cpp index 8aa71999f40ca091db8ea06a9766ca55f610c080..d577c875011df05742a858089cf3365cd1ea3efd 100644 --- a/Plugin/AnalyseCurvedMesh.cpp +++ b/Plugin/AnalyseCurvedMesh.cpp @@ -677,14 +677,14 @@ void GMSH_AnalyseCurvedMeshPlugin::computeMinMax(MElement *const*el, int numEl, } fwrite << minB/avgJ << " " << minB/maxB << "\r"; - if (data) - if (1-minB <= _tol * minJ && maxB-1 <= _tol * maxB) - (*data)[el[k]->getNum()].push_back(1.); - else if (1-minB/avgJ <= 1e-8) - (*data)[el[k]->getNum()].push_back(1.); - else - (*data)[el[k]->getNum()].push_back(minB/avgJ); - + if (data){ + if (1-minB <= _tol * minJ && maxB-1 <= _tol * maxB) + (*data)[el[k]->getNum()].push_back(1.); + else if (1-minB/avgJ <= 1e-8) + (*data)[el[k]->getNum()].push_back(1.); + else + (*data)[el[k]->getNum()].push_back(minB/avgJ); + } _min_pJmin = std::min(_min_pJmin, minB/avgJ); _avg_pJmin += minB/avgJ; _min_ratioJ = std::min(_min_ratioJ, minB/maxB);