From a1cc83d3229ee65f21536ea4f133947ea193e27a Mon Sep 17 00:00:00 2001 From: Amaury Johnan <amjohnen@gmail.com> Date: Mon, 17 Jun 2013 14:25:57 +0000 Subject: [PATCH] up serendiptity element tag --- Common/GmshDefines.h | 42 ++++---- Geo/MElement.cpp | 202 ++++++++++++++++++------------------- Geo/MHexahedron.cpp | 24 ++--- Geo/MHexahedron.h | 12 +-- Geo/MPyramid.cpp | 14 +-- Geo/MPyramid.h | 14 +-- Numeric/pyramidalBasis.cpp | 4 + Post/PViewData.h | 1 + 8 files changed, 159 insertions(+), 154 deletions(-) diff --git a/Common/GmshDefines.h b/Common/GmshDefines.h index a63733cce8..fd80245b71 100644 --- a/Common/GmshDefines.h +++ b/Common/GmshDefines.h @@ -159,13 +159,13 @@ #define MSH_HEX_729 97 #define MSH_HEX_1000 98 // HEXES INCOMPLETE (3->9) -#define MSH_HEX_56 99 -#define MSH_HEX_98 100 -#define MSH_HEX_152 101 -#define MSH_HEX_218 102 -#define MSH_HEX_296 103 -#define MSH_HEX_386 104 -#define MSH_HEX_488 105 +#define MSH_HEX_32 99 +#define MSH_HEX_44 100 +#define MSH_HEX_56 101 +#define MSH_HEX_68 102 +#define MSH_HEX_80 103 +#define MSH_HEX_92 104 +#define MSH_HEX_104 105 // PRISMS COMPLETE (5->9) #define MSH_PRI_126 106 #define MSH_PRI_196 107 @@ -173,13 +173,13 @@ #define MSH_PRI_405 109 #define MSH_PRI_550 110 // PRISMS INCOMPLETE (3->9) -#define MSH_PRI_38 111 -#define MSH_PRI_66 112 -#define MSH_PRI_102 113 -#define MSH_PRI_146 114 -#define MSH_PRI_198 115 -#define MSH_PRI_258 116 -#define MSH_PRI_326 117 +#define MSH_PRI_24 111 +#define MSH_PRI_33 112 +#define MSH_PRI_42 113 +#define MSH_PRI_51 114 +#define MSH_PRI_60 115 +#define MSH_PRI_69 116 +#define MSH_PRI_78 117 // PYRAMIDS COMPLETE (3->9) #define MSH_PYR_30 118 #define MSH_PYR_55 119 @@ -189,13 +189,13 @@ #define MSH_PYR_285 123 #define MSH_PYR_385 124 // PYRAMIDS INCOMPLETE (3->9) -#define MSH_PYR_29 125 -#define MSH_PYR_50 126 -#define MSH_PYR_77 127 -#define MSH_PYR_110 128 -#define MSH_PYR_149 129 -#define MSH_PYR_194 130 -#define MSH_PYR_245 131 +#define MSH_PYR_21 125 +#define MSH_PYR_29 126 +#define MSH_PYR_37 127 +#define MSH_PYR_45 128 +#define MSH_PYR_53 129 +#define MSH_PYR_61 130 +#define MSH_PYR_69 131 // Additional types #define MSH_PYR_1 132 #define MSH_PNT_SUB 133 diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp index 3eda847963..abee8693e7 100644 --- a/Geo/MElement.cpp +++ b/Geo/MElement.cpp @@ -1251,13 +1251,13 @@ int MElement::getInfoMSH(const int typeMSH, const char **const name) case MSH_HEX_512 : if(name) *name = "Hexahedron 512"; return 512; case MSH_HEX_729 : if(name) *name = "Hexahedron 729"; return 729; case MSH_HEX_1000: if(name) *name = "Hexahedron 1000"; return 1000; - case MSH_HEX_56 : if(name) *name = "Hexahedron 56"; return 56; - case MSH_HEX_98 : if(name) *name = "Hexahedron 98"; return 98; - case MSH_HEX_152 : if(name) *name = "Hexahedron 152"; return 152; - case MSH_HEX_218 : if(name) *name = "Hexahedron 218"; return 218; - case MSH_HEX_296 : if(name) *name = "Hexahedron 296"; return 296; - case MSH_HEX_386 : if(name) *name = "Hexahedron 386"; return 386; - case MSH_HEX_488 : if(name) *name = "Hexahedron 488"; return 488; + case MSH_HEX_32 : if(name) *name = "Hexahedron 32"; return 8 + 12*2; + case MSH_HEX_44 : if(name) *name = "Hexahedron 44"; return 8 + 12*3; + case MSH_HEX_56 : if(name) *name = "Hexahedron 56"; return 8 + 12*4; + case MSH_HEX_68 : if(name) *name = "Hexahedron 68"; return 8 + 12*5; + case MSH_HEX_80 : if(name) *name = "Hexahedron 80"; return 8 + 12*6; + case MSH_HEX_92 : if(name) *name = "Hexahedron 92"; return 8 + 12*7; + case MSH_HEX_104 : if(name) *name = "Hexahedron 104"; return 8 + 12*8; case MSH_PRI_1 : if(name) *name = "Prism 1"; return 1; case MSH_PRI_6 : if(name) *name = "Prism 6"; return 6; case MSH_PRI_15 : if(name) *name = "Prism 15"; return 6 + 9; @@ -1268,14 +1268,14 @@ int MElement::getInfoMSH(const int typeMSH, const char **const name) case MSH_PRI_196 : if(name) *name = "Prism 196"; return 6 + 45 + 75+20 + 5*10; case MSH_PRI_288 : if(name) *name = "Prism 288"; return 6 + 54 + 108+30 + 6*15; case MSH_PRI_405 : if(name) *name = "Prism 405"; return 6 + 63 + 147+42 + 7*21; - case MSH_PRI_550 : if(name) *name = "Prism 550"; return 6 + 72 + 196+56 + 8*28; - case MSH_PRI_38 : if(name) *name = "Prism 38"; return 6 + 18 + 12+2; - case MSH_PRI_66 : if(name) *name = "Prism 66"; return 6 + 27 + 27+6; - case MSH_PRI_102 : if(name) *name = "Prism 102"; return 6 + 36 + 48+12; - case MSH_PRI_146 : if(name) *name = "Prism 146"; return 6 + 45 + 75+20; - case MSH_PRI_198 : if(name) *name = "Prism 198"; return 6 + 54 + 108+30; - case MSH_PRI_258 : if(name) *name = "Prism 258"; return 6 + 63 + 147+42; - case MSH_PRI_326 : if(name) *name = "Prism 326"; return 6 + 72 + 196+56; + case MSH_PRI_550 : if(name) *name = "Prism 550"; return 6 + 72 + 192+56 + 8*28; + case MSH_PRI_24 : if(name) *name = "Prism 24"; return 6 + 9*2; + case MSH_PRI_33 : if(name) *name = "Prism 33"; return 6 + 9*3; + case MSH_PRI_42 : if(name) *name = "Prism 42"; return 6 + 9*4; + case MSH_PRI_51 : if(name) *name = "Prism 51"; return 6 + 9*5; + case MSH_PRI_60 : if(name) *name = "Prism 60"; return 6 + 9*6; + case MSH_PRI_69 : if(name) *name = "Prism 69"; return 6 + 9*7; + case MSH_PRI_78 : if(name) *name = "Prism 78"; return 6 + 9*8; case MSH_PYR_1 : if(name) *name = "Pyramid 1"; return 1; case MSH_PYR_5 : if(name) *name = "Pyramid 5"; return 5; case MSH_PYR_13 : if(name) *name = "Pyramid 13"; return 5 + 8; @@ -1287,13 +1287,13 @@ int MElement::getInfoMSH(const int typeMSH, const char **const name) case MSH_PYR_204 : if(name) *name = "Pyramid 204"; return 5 + 8*6 + 4*15 + 1*36 + 55; case MSH_PYR_285 : if(name) *name = "Pyramid 285"; return 5 + 8*7 + 4*21 + 1*49 + 91; case MSH_PYR_385 : if(name) *name = "Pyramid 385"; return 5 + 8*8 + 4*28 + 1*64 + 140; - case MSH_PYR_29 : if(name) *name = "Pyramid 29"; return 5 + 8*2 + 4*1 + 1*4; - case MSH_PYR_50 : if(name) *name = "Pyramid 50"; return 5 + 8*3 + 4*3 + 1*9; - case MSH_PYR_77 : if(name) *name = "Pyramid 77"; return 5 + 8*4 + 4*6 + 1*16; - case MSH_PYR_110 : if(name) *name = "Pyramid 110"; return 5 + 8*5 + 4*10 + 1*25; - case MSH_PYR_149 : if(name) *name = "Pyramid 149"; return 5 + 8*6 + 4*15 + 1*36; - case MSH_PYR_194 : if(name) *name = "Pyramid 194"; return 5 + 8*7 + 4*21 + 1*49; - case MSH_PYR_245 : if(name) *name = "Pyramid 245"; return 5 + 8*8 + 4*28 + 1*64; + case MSH_PYR_21 : if(name) *name = "Pyramid 21"; return 5 + 8*2; + case MSH_PYR_29 : if(name) *name = "Pyramid 29"; return 5 + 8*3; + case MSH_PYR_37 : if(name) *name = "Pyramid 37"; return 5 + 8*4; + case MSH_PYR_45 : if(name) *name = "Pyramid 45"; return 5 + 8*5; + case MSH_PYR_53 : if(name) *name = "Pyramid 53"; return 5 + 8*6; + case MSH_PYR_61 : if(name) *name = "Pyramid 61"; return 5 + 8*7; + case MSH_PYR_69 : if(name) *name = "Pyramid 69"; return 5 + 8*8; case MSH_POLYH_ : if(name) *name = "Polyhedron"; return 0; case MSH_PNT_SUB : if(name) *name = "Point Xfem"; return 1; case MSH_LIN_SUB : if(name) *name = "Line Xfem"; return 2; @@ -1437,30 +1437,30 @@ int MElement::ParentTypeFromTag(int tag) case(MSH_PYR_55): case(MSH_PYR_91): case(MSH_PYR_140): case(MSH_PYR_204): case(MSH_PYR_285): case(MSH_PYR_385): - case(MSH_PYR_29): case(MSH_PYR_50): - case(MSH_PYR_77): case(MSH_PYR_110): - case(MSH_PYR_149): case(MSH_PYR_194): - case(MSH_PYR_245): case(MSH_PYR_1): + case(MSH_PYR_21): case(MSH_PYR_29): + case(MSH_PYR_37): case(MSH_PYR_45): + case(MSH_PYR_53): case(MSH_PYR_61): + case(MSH_PYR_69): case(MSH_PYR_1): return TYPE_PYR; case(MSH_PRI_6): case(MSH_PRI_18): case(MSH_PRI_15): case(MSH_PRI_1): case(MSH_PRI_40): case(MSH_PRI_75): case(MSH_PRI_126): case(MSH_PRI_196): case(MSH_PRI_288): case(MSH_PRI_405): - case(MSH_PRI_550): case(MSH_PRI_38): - case(MSH_PRI_66): case(MSH_PRI_102): - case(MSH_PRI_146): case(MSH_PRI_198): - case(MSH_PRI_258): case(MSH_PRI_326): + case(MSH_PRI_550): case(MSH_PRI_24): + case(MSH_PRI_33): case(MSH_PRI_42): + case(MSH_PRI_51): case(MSH_PRI_60): + case(MSH_PRI_69): case(MSH_PRI_78): return TYPE_PRI; case(MSH_HEX_8): case(MSH_HEX_27): case(MSH_HEX_20): case(MSH_HEX_1): case(MSH_HEX_64): case(MSH_HEX_125): case(MSH_HEX_216): case(MSH_HEX_343): case(MSH_HEX_512): case(MSH_HEX_729): - case(MSH_HEX_1000): case(MSH_HEX_56): - case(MSH_HEX_98): case(MSH_HEX_152): - case(MSH_HEX_218): case(MSH_HEX_296): - case(MSH_HEX_386): case(MSH_HEX_488): + case(MSH_HEX_1000): case(MSH_HEX_32): + case(MSH_HEX_44): case(MSH_HEX_56): + case(MSH_HEX_68): case(MSH_HEX_80): + case(MSH_HEX_92): case(MSH_HEX_104): return TYPE_HEX; case(MSH_POLYG_): case(MSH_POLYG_B): return TYPE_POLYG; @@ -1560,13 +1560,13 @@ int MElement::OrderFromTag(int tag) case MSH_PRI_405 : return 8; case MSH_PRI_550 : return 9; case MSH_PRI_15 : return 2; - case MSH_PRI_38 : return 3; - case MSH_PRI_66 : return 4; - case MSH_PRI_102 : return 5; - case MSH_PRI_146 : return 6; - case MSH_PRI_198 : return 7; - case MSH_PRI_258 : return 8; - case MSH_PRI_326 : return 9; + case MSH_PRI_24 : return 3; + case MSH_PRI_33 : return 4; + case MSH_PRI_42 : return 5; + case MSH_PRI_51 : return 6; + case MSH_PRI_60 : return 7; + case MSH_PRI_69 : return 8; + case MSH_PRI_78 : return 9; case MSH_HEX_1 : return 0; case MSH_HEX_8 : return 1; case MSH_HEX_27 : return 2; @@ -1578,13 +1578,13 @@ int MElement::OrderFromTag(int tag) case MSH_HEX_729 : return 8; case MSH_HEX_1000: return 9; case MSH_HEX_20 : return 2; - case MSH_HEX_56 : return 3; - case MSH_HEX_98 : return 4; - case MSH_HEX_152 : return 5; - case MSH_HEX_218 : return 6; - case MSH_HEX_296 : return 7; - case MSH_HEX_386 : return 8; - case MSH_HEX_488 : return 9; + case MSH_HEX_32 : return 3; + case MSH_HEX_44 : return 4; + case MSH_HEX_56 : return 5; + case MSH_HEX_68 : return 6; + case MSH_HEX_80 : return 7; + case MSH_HEX_92 : return 8; + case MSH_HEX_104 : return 9; case MSH_PYR_1 : return 0; case MSH_PYR_5 : return 1; case MSH_PYR_14 : return 2; @@ -1596,13 +1596,13 @@ int MElement::OrderFromTag(int tag) case MSH_PYR_285 : return 8; case MSH_PYR_385 : return 9; case MSH_PYR_13 : return 2; - case MSH_PYR_29 : return 3; - case MSH_PYR_50 : return 4; - case MSH_PYR_77 : return 5; - case MSH_PYR_110 : return 6; - case MSH_PYR_149 : return 7; - case MSH_PYR_194 : return 8; - case MSH_PYR_245 : return 9; + case MSH_PYR_21 : return 3; + case MSH_PYR_29 : return 4; + case MSH_PYR_37 : return 5; + case MSH_PYR_45 : return 6; + case MSH_PYR_53 : return 7; + case MSH_PYR_61 : return 8; + case MSH_PYR_69 : return 9; default : Msg::Error("Unknown element type %d: reverting to order 1",tag); return 1; @@ -1689,20 +1689,20 @@ int MElement::SerendipityFromTag(int tag) case MSH_TET_130 : case MSH_TET_164 : case MSH_TET_202 : - case MSH_PRI_15 : case MSH_PRI_38 : - case MSH_PRI_66 : case MSH_PRI_102 : - case MSH_PRI_146 : case MSH_PRI_198 : - case MSH_PRI_258 : case MSH_PRI_326 : + case MSH_PRI_15 : case MSH_PRI_24 : + case MSH_PRI_33 : case MSH_PRI_42 : + case MSH_PRI_51 : case MSH_PRI_60 : + case MSH_PRI_69 : case MSH_PRI_78 : - case MSH_HEX_20 : case MSH_HEX_56 : - case MSH_HEX_98 : case MSH_HEX_152 : - case MSH_HEX_218 : case MSH_HEX_296 : - case MSH_HEX_386 : case MSH_HEX_488 : + case MSH_HEX_20 : case MSH_HEX_32 : + case MSH_HEX_44 : case MSH_HEX_56 : + case MSH_HEX_68 : case MSH_HEX_80 : + case MSH_HEX_92 : case MSH_HEX_104 : - case MSH_PYR_13 : case MSH_PYR_29 : - case MSH_PYR_50 : case MSH_PYR_77 : - case MSH_PYR_110 : case MSH_PYR_149 : - case MSH_PYR_194 : case MSH_PYR_245 : + case MSH_PYR_13 : case MSH_PYR_21 : + case MSH_PYR_29 : case MSH_PYR_37 : + case MSH_PYR_45 : case MSH_PYR_53 : + case MSH_PYR_61 : case MSH_PYR_69 : return 2; // Only Serendipity @@ -1770,30 +1770,30 @@ int MElement::DimensionFromTag(int tag) case(MSH_PYR_55): case(MSH_PYR_91): case(MSH_PYR_140): case(MSH_PYR_204): case(MSH_PYR_285): case(MSH_PYR_385): - case(MSH_PYR_29): case(MSH_PYR_50): - case(MSH_PYR_77): case(MSH_PYR_110): - case(MSH_PYR_149): case(MSH_PYR_194): - case(MSH_PYR_245): case(MSH_PYR_1): + case(MSH_PYR_21): case(MSH_PYR_29): + case(MSH_PYR_37): case(MSH_PYR_45): + case(MSH_PYR_53): case(MSH_PYR_61): + case(MSH_PYR_69): case(MSH_PYR_1): case(MSH_PRI_6): case(MSH_PRI_18): case(MSH_PRI_15): case(MSH_PRI_1): case(MSH_PRI_40): case(MSH_PRI_75): case(MSH_PRI_126): case(MSH_PRI_196): case(MSH_PRI_288): case(MSH_PRI_405): - case(MSH_PRI_550): case(MSH_PRI_38): - case(MSH_PRI_66): case(MSH_PRI_102): - case(MSH_PRI_146): case(MSH_PRI_198): - case(MSH_PRI_258): case(MSH_PRI_326): + case(MSH_PRI_550): case(MSH_PRI_24): + case(MSH_PRI_33): case(MSH_PRI_42): + case(MSH_PRI_51): case(MSH_PRI_60): + case(MSH_PRI_69): case(MSH_PRI_78): case(MSH_HEX_8): case(MSH_HEX_27): case(MSH_HEX_20): case(MSH_HEX_1): case(MSH_HEX_64): case(MSH_HEX_125): case(MSH_HEX_216): case(MSH_HEX_343): case(MSH_HEX_512): case(MSH_HEX_729): - case(MSH_HEX_1000): case(MSH_HEX_56): - case(MSH_HEX_98): case(MSH_HEX_152): - case(MSH_HEX_218): case(MSH_HEX_296): - case(MSH_HEX_386): case(MSH_HEX_488): + case(MSH_HEX_1000): case(MSH_HEX_32): + case(MSH_HEX_44): case(MSH_HEX_56): + case(MSH_HEX_68): case(MSH_HEX_80): + case(MSH_HEX_92): case(MSH_HEX_104): case(MSH_POLYH_): return 3; @@ -1878,13 +1878,13 @@ int MElement::getTag(int parentTag, int order, bool serendip) case 0 : return MSH_HEX_1; case 1 : return MSH_HEX_8; case 2 : return serendip ? MSH_HEX_20 : MSH_HEX_27; - case 3 : return serendip ? MSH_HEX_56 : MSH_HEX_64; - case 4 : return serendip ? MSH_HEX_98 : MSH_HEX_125; - case 5 : return serendip ? MSH_HEX_152: MSH_HEX_216; - case 6 : return serendip ? MSH_HEX_218: MSH_HEX_343; - case 7 : return serendip ? MSH_HEX_296: MSH_HEX_512; - case 8 : return serendip ? MSH_HEX_386: MSH_HEX_729; - case 9 : return serendip ? MSH_HEX_488: MSH_HEX_1000; + case 3 : return serendip ? MSH_HEX_32 : MSH_HEX_64; + case 4 : return serendip ? MSH_HEX_44 : MSH_HEX_125; + case 5 : return serendip ? MSH_HEX_56: MSH_HEX_216; + case 6 : return serendip ? MSH_HEX_68: MSH_HEX_343; + case 7 : return serendip ? MSH_HEX_80: MSH_HEX_512; + case 8 : return serendip ? MSH_HEX_92: MSH_HEX_729; + case 9 : return serendip ? MSH_HEX_104: MSH_HEX_1000; default : Msg::Error("hexahedron order %i unknown", order); return 0; } break; @@ -1893,13 +1893,13 @@ int MElement::getTag(int parentTag, int order, bool serendip) case 0 : return MSH_PRI_1; case 1 : return MSH_PRI_6; case 2 : return serendip ? MSH_PRI_15 : MSH_PRI_18; - case 3 : return serendip ? MSH_PRI_38 : MSH_PRI_40; - case 4 : return serendip ? MSH_PRI_66 : MSH_PRI_75; - case 5 : return serendip ? MSH_PRI_102 : MSH_PRI_126; - case 6 : return serendip ? MSH_PRI_146 : MSH_PRI_196; - case 7 : return serendip ? MSH_PRI_198 : MSH_PRI_288; - case 8 : return serendip ? MSH_PRI_258 : MSH_PRI_405; - case 9 : return serendip ? MSH_PRI_326 : MSH_PRI_550; + case 3 : return serendip ? MSH_PRI_24 : MSH_PRI_40; + case 4 : return serendip ? MSH_PRI_33 : MSH_PRI_75; + case 5 : return serendip ? MSH_PRI_42 : MSH_PRI_126; + case 6 : return serendip ? MSH_PRI_51 : MSH_PRI_196; + case 7 : return serendip ? MSH_PRI_60 : MSH_PRI_288; + case 8 : return serendip ? MSH_PRI_69 : MSH_PRI_405; + case 9 : return serendip ? MSH_PRI_78 : MSH_PRI_550; default : Msg::Error("prism order %i unknown", order); return 0; } break; @@ -1908,13 +1908,13 @@ int MElement::getTag(int parentTag, int order, bool serendip) case 0 : return MSH_PYR_1; case 1 : return MSH_PYR_5; case 2 : return serendip ? MSH_PYR_13 : MSH_PYR_14; - case 3: return serendip ? MSH_PYR_29 : MSH_PYR_30; - case 4: return serendip ? MSH_PYR_50 : MSH_PYR_55; - case 5: return serendip ? MSH_PYR_77 : MSH_PYR_91; - case 6: return serendip ? MSH_PYR_110 : MSH_PYR_140; - case 7: return serendip ? MSH_PYR_149 : MSH_PYR_204; - case 8: return serendip ? MSH_PYR_194 : MSH_PYR_285; - case 9: return serendip ? MSH_PYR_245 : MSH_PYR_385; + case 3: return serendip ? MSH_PYR_21 : MSH_PYR_30; + case 4: return serendip ? MSH_PYR_29 : MSH_PYR_55; + case 5: return serendip ? MSH_PYR_37 : MSH_PYR_91; + case 6: return serendip ? MSH_PYR_45 : MSH_PYR_140; + case 7: return serendip ? MSH_PYR_53 : MSH_PYR_204; + case 8: return serendip ? MSH_PYR_61 : MSH_PYR_285; + case 9: return serendip ? MSH_PYR_69 : MSH_PYR_385; default : Msg::Error("pyramid order %i unknown", order); return 0; } break; @@ -1987,7 +1987,7 @@ MElement *MElementFactory::create(int type, std::vector<MVertex*> &v, case MSH_TET_220: return new MTetrahedronN(v, 9, num, part); case MSH_TET_286: return new MTetrahedronN(v, 10, num, part); case MSH_POLYH_: return new MPolyhedron(v, num, part, owner, parent); - case MSH_HEX_56: return new MHexahedronN(v, 3, num, part); + case MSH_HEX_32: return new MHexahedronN(v, 3, num, part); case MSH_HEX_64: return new MHexahedronN(v, 3, num, part); case MSH_HEX_125: return new MHexahedronN(v, 4, num, part); case MSH_HEX_216: return new MHexahedronN(v, 5, num, part); diff --git a/Geo/MHexahedron.cpp b/Geo/MHexahedron.cpp index 29cfc61496..93909ec0df 100644 --- a/Geo/MHexahedron.cpp +++ b/Geo/MHexahedron.cpp @@ -202,12 +202,12 @@ const nodalBasis* MHexahedron::getFunctionSpace(int o) const case 1: return BasisFactory::getNodalBasis(MSH_HEX_8); case 2: return BasisFactory::getNodalBasis(MSH_HEX_20); case 3: return BasisFactory::getNodalBasis(MSH_HEX_56); - case 4: return BasisFactory::getNodalBasis(MSH_HEX_98); - case 5: return BasisFactory::getNodalBasis(MSH_HEX_152); - case 6: return BasisFactory::getNodalBasis(MSH_HEX_218); - case 7: return BasisFactory::getNodalBasis(MSH_HEX_296); - case 8: return BasisFactory::getNodalBasis(MSH_HEX_386); - case 9: return BasisFactory::getNodalBasis(MSH_HEX_488); + case 4: return BasisFactory::getNodalBasis(MSH_HEX_44); + case 5: return BasisFactory::getNodalBasis(MSH_HEX_56); + case 6: return BasisFactory::getNodalBasis(MSH_HEX_68); + case 7: return BasisFactory::getNodalBasis(MSH_HEX_80); + case 8: return BasisFactory::getNodalBasis(MSH_HEX_92); + case 9: return BasisFactory::getNodalBasis(MSH_HEX_104); default: Msg::Error("Order %d hex function space not implemented", order); break; } } @@ -241,12 +241,12 @@ const JacobianBasis* MHexahedron::getJacobianFuncSpace(int o) const case 1: return BasisFactory::getJacobianBasis(MSH_HEX_8); case 2: return BasisFactory::getJacobianBasis(MSH_HEX_20); case 3: return BasisFactory::getJacobianBasis(MSH_HEX_56); - case 4: return BasisFactory::getJacobianBasis(MSH_HEX_98); - case 5: return BasisFactory::getJacobianBasis(MSH_HEX_152); - case 6: return BasisFactory::getJacobianBasis(MSH_HEX_218); - case 7: return BasisFactory::getJacobianBasis(MSH_HEX_296); - case 8: return BasisFactory::getJacobianBasis(MSH_HEX_386); - case 9: return BasisFactory::getJacobianBasis(MSH_HEX_488); + case 4: return BasisFactory::getJacobianBasis(MSH_HEX_44); + case 5: return BasisFactory::getJacobianBasis(MSH_HEX_56); + case 6: return BasisFactory::getJacobianBasis(MSH_HEX_68); + case 7: return BasisFactory::getJacobianBasis(MSH_HEX_80); + case 8: return BasisFactory::getJacobianBasis(MSH_HEX_92); + case 9: return BasisFactory::getJacobianBasis(MSH_HEX_104); default: Msg::Error("Order %d hex incomplete Jacobian function space not implemented", order); break; } } diff --git a/Geo/MHexahedron.h b/Geo/MHexahedron.h index ccadb418bd..e4596d809e 100644 --- a/Geo/MHexahedron.h +++ b/Geo/MHexahedron.h @@ -526,12 +526,12 @@ class MHexahedronN : public MHexahedron { if(_order == 8 && _vs.size() + 8 == 729) return MSH_HEX_729; if(_order == 9 && _vs.size() + 8 == 1000) return MSH_HEX_1000; if(_order == 3 && _vs.size() + 8 == 56 ) return MSH_HEX_56; - if(_order == 4 && _vs.size() + 8 == 98) return MSH_HEX_98; - if(_order == 5 && _vs.size() + 8 == 152) return MSH_HEX_152; - if(_order == 6 && _vs.size() + 8 == 222) return MSH_HEX_218; - if(_order == 7 && _vs.size() + 8 == 296) return MSH_HEX_296; - if(_order == 8 && _vs.size() + 8 == 386) return MSH_HEX_386; - if(_order == 9 && _vs.size() + 8 == 488) return MSH_HEX_488; + if(_order == 4 && _vs.size() + 8 == 98) return MSH_HEX_44; + if(_order == 5 && _vs.size() + 8 == 152) return MSH_HEX_56; + if(_order == 6 && _vs.size() + 8 == 222) return MSH_HEX_68; + if(_order == 7 && _vs.size() + 8 == 296) return MSH_HEX_80; + if(_order == 8 && _vs.size() + 8 == 386) return MSH_HEX_92; + if(_order == 9 && _vs.size() + 8 == 488) return MSH_HEX_104; return 0; } virtual int getNumFacesRep(); diff --git a/Geo/MPyramid.cpp b/Geo/MPyramid.cpp index 1a44f7c4b6..650cb5115b 100644 --- a/Geo/MPyramid.cpp +++ b/Geo/MPyramid.cpp @@ -38,13 +38,13 @@ const nodalBasis* MPyramid::getFunctionSpace(int o) const case 1: return BasisFactory::getNodalBasis(MSH_PYR_5); case 2: return BasisFactory::getNodalBasis(MSH_PYR_14); case 0: return BasisFactory::getNodalBasis(MSH_PYR_1); - case 3: return BasisFactory::getNodalBasis(MSH_PYR_29); - case 4: return BasisFactory::getNodalBasis(MSH_PYR_50); - case 5: return BasisFactory::getNodalBasis(MSH_PYR_77); - case 6: return BasisFactory::getNodalBasis(MSH_PYR_110); - case 7: return BasisFactory::getNodalBasis(MSH_PYR_149); - case 8: return BasisFactory::getNodalBasis(MSH_PYR_194); - case 9: return BasisFactory::getNodalBasis(MSH_PYR_245); + case 3: return BasisFactory::getNodalBasis(MSH_PYR_21); + case 4: return BasisFactory::getNodalBasis(MSH_PYR_29); + case 5: return BasisFactory::getNodalBasis(MSH_PYR_37); + case 6: return BasisFactory::getNodalBasis(MSH_PYR_45); + case 7: return BasisFactory::getNodalBasis(MSH_PYR_53); + case 8: return BasisFactory::getNodalBasis(MSH_PYR_61); + case 9: return BasisFactory::getNodalBasis(MSH_PYR_69); default: Msg::Error("Order %d pyramid function space not implemented", order); } } diff --git a/Geo/MPyramid.h b/Geo/MPyramid.h index 19fdbc628d..ce640721f5 100644 --- a/Geo/MPyramid.h +++ b/Geo/MPyramid.h @@ -293,19 +293,19 @@ class MPyramidN : public MPyramid { { if(_order == 2 && _vs.size() + 5 == 13) return MSH_PYR_13; if(_order == 2 && _vs.size() + 5 == 14) return MSH_PYR_14; - if(_order == 3 && _vs.size() + 5 == 29) return MSH_PYR_29; + if(_order == 3 && _vs.size() + 5 == 29) return MSH_PYR_21; if(_order == 3 && _vs.size() + 5 == 30) return MSH_PYR_30; - if(_order == 4 && _vs.size() + 5 == 50) return MSH_PYR_50; + if(_order == 4 && _vs.size() + 5 == 50) return MSH_PYR_29; if(_order == 4 && _vs.size() + 5 == 55) return MSH_PYR_55; - if(_order == 5 && _vs.size() + 5 == 77) return MSH_PYR_77; + if(_order == 5 && _vs.size() + 5 == 77) return MSH_PYR_37; if(_order == 5 && _vs.size() + 5 == 91) return MSH_PYR_91; - if(_order == 6 && _vs.size() + 5 == 110) return MSH_PYR_110; + if(_order == 6 && _vs.size() + 5 == 110) return MSH_PYR_45; if(_order == 6 && _vs.size() + 5 == 140) return MSH_PYR_140; - if(_order == 7 && _vs.size() + 5 == 149) return MSH_PYR_149; + if(_order == 7 && _vs.size() + 5 == 149) return MSH_PYR_53; if(_order == 7 && _vs.size() + 5 == 204) return MSH_PYR_204; - if(_order == 8 && _vs.size() + 5 == 194) return MSH_PYR_194; + if(_order == 8 && _vs.size() + 5 == 194) return MSH_PYR_61; if(_order == 8 && _vs.size() + 5 == 285) return MSH_PYR_285; - if(_order == 9 && _vs.size() + 5 == 245) return MSH_PYR_245; + if(_order == 9 && _vs.size() + 5 == 245) return MSH_PYR_69; if(_order == 9 && _vs.size() + 5 == 385) return MSH_PYR_385; return 0; } diff --git a/Numeric/pyramidalBasis.cpp b/Numeric/pyramidalBasis.cpp index 069d027599..a16e1ffd30 100644 --- a/Numeric/pyramidalBasis.cpp +++ b/Numeric/pyramidalBasis.cpp @@ -9,6 +9,10 @@ pyramidalBasis::pyramidalBasis(int tag) : nodalBasis(tag) { + if (serendip) { + Msg::Error("Serendipity Pyramid not implemented"); + return; + } bergot = new BergotBasis(order); diff --git a/Post/PViewData.h b/Post/PViewData.h index 998863cd89..73c3ae5a55 100644 --- a/Post/PViewData.h +++ b/Post/PViewData.h @@ -201,6 +201,7 @@ class PViewData { adaptiveData *getAdaptiveData(){ return _adaptive; } // set/get the interpolation matrices for elements with type "type" + // FIXME : too much overload :( void setInterpolationMatrices(int type, const fullMatrix<double> &coefVal, const fullMatrix<double> &expVal); -- GitLab