From 0834815fc957d02c3ba8e116e2b2b2bdfc75e2a3 Mon Sep 17 00:00:00 2001
From: Amaury Johnan <amjohnen@gmail.com>
Date: Mon, 9 Sep 2013 13:36:36 +0000
Subject: [PATCH] add higher order in 'getTypeForMSH()'

---
 Geo/MHexahedron.h  |  2 ++
 Geo/MLine.h        |  1 +
 Geo/MPyramid.h     | 25 ++++++++++++++-----------
 Geo/MQuadrangle.h  | 33 ++++++++++++++++++++-------------
 Geo/MTetrahedron.h |  2 ++
 Geo/MTriangle.h    | 13 ++++++++++---
 6 files changed, 49 insertions(+), 27 deletions(-)

diff --git a/Geo/MHexahedron.h b/Geo/MHexahedron.h
index 42d4255956..b128eb2680 100644
--- a/Geo/MHexahedron.h
+++ b/Geo/MHexahedron.h
@@ -538,6 +538,8 @@ class MHexahedronN : public MHexahedron {
     if(_order == 7 && _vs.size() + 8 == 80)  return MSH_HEX_80;
     if(_order == 8 && _vs.size() + 8 == 92)  return MSH_HEX_92;
     if(_order == 9 && _vs.size() + 8 == 104) return MSH_HEX_104;
+
+    Msg::Error("no tag matches a p%d hexahedron with %d vertices", _order, 8+_vs.size());
     return 0;
   }
   virtual int getNumFacesRep();
diff --git a/Geo/MLine.h b/Geo/MLine.h
index 1cb90314eb..a4b9883bce 100644
--- a/Geo/MLine.h
+++ b/Geo/MLine.h
@@ -202,6 +202,7 @@ class MLineN : public MLine {
     if(_vs.size() == 7) return MSH_LIN_9;
     if(_vs.size() == 8) return MSH_LIN_10;
     if(_vs.size() == 9) return MSH_LIN_11;
+    Msg::Error("no tag matches a line with %d vertices", 8+_vs.size());
     return 0;
   }
   virtual void getNode(int num, double &u, double &v, double &w) const
diff --git a/Geo/MPyramid.h b/Geo/MPyramid.h
index 2403d674ea..82cd1f1400 100644
--- a/Geo/MPyramid.h
+++ b/Geo/MPyramid.h
@@ -292,22 +292,25 @@ class MPyramidN : public MPyramid {
   }
   virtual int getTypeForMSH() const
   {
+    if(_order == 1 && _vs.size() + 5 == 5)   return MSH_PYR_5;
+    if(_order == 2 && _vs.size() + 5 == 14)  return MSH_PYR_14;
+    if(_order == 3 && _vs.size() + 5 == 30)  return MSH_PYR_30;
+    if(_order == 4 && _vs.size() + 5 == 55)  return MSH_PYR_55;
+    if(_order == 5 && _vs.size() + 5 == 91)  return MSH_PYR_91;
+    if(_order == 6 && _vs.size() + 5 == 140) return MSH_PYR_140;
+    if(_order == 7 && _vs.size() + 5 == 204) return MSH_PYR_204;
+    if(_order == 8 && _vs.size() + 5 == 285) return MSH_PYR_285;
+    if(_order == 9 && _vs.size() + 5 == 385) return MSH_PYR_385;
+
     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 == 21) return MSH_PYR_21;
-    if(_order == 3 && _vs.size() + 5 == 30) return MSH_PYR_30;
     if(_order == 4 && _vs.size() + 5 == 29) return MSH_PYR_29;
-    if(_order == 4 && _vs.size() + 5 == 55) return MSH_PYR_55;
     if(_order == 5 && _vs.size() + 5 == 37) return MSH_PYR_37;
-    if(_order == 5 && _vs.size() + 5 == 91) return MSH_PYR_91;
     if(_order == 6 && _vs.size() + 5 == 45) return MSH_PYR_45;
-    if(_order == 6 && _vs.size() + 5 == 140) return MSH_PYR_140;
-    if(_order == 7 && _vs.size() + 5 == 53)  return MSH_PYR_53;
-    if(_order == 7 && _vs.size() + 5 == 204) return MSH_PYR_204;
-    if(_order == 8 && _vs.size() + 5 == 61)  return MSH_PYR_61;
-    if(_order == 8 && _vs.size() + 5 == 285) return MSH_PYR_285;
-    if(_order == 9 && _vs.size() + 5 == 69)  return MSH_PYR_69;
-    if(_order == 9 && _vs.size() + 5 == 385) return MSH_PYR_385;
+    if(_order == 7 && _vs.size() + 5 == 53) return MSH_PYR_53;
+    if(_order == 8 && _vs.size() + 5 == 61) return MSH_PYR_61;
+    if(_order == 9 && _vs.size() + 5 == 69) return MSH_PYR_69;
+    Msg::Error("no tag matches a p%d pyramid with %d vertices", _order, 5+_vs.size());
     return 0;
   }
   virtual void reverse()
diff --git a/Geo/MQuadrangle.h b/Geo/MQuadrangle.h
index 14e3bf691e..18e1b65886 100644
--- a/Geo/MQuadrangle.h
+++ b/Geo/MQuadrangle.h
@@ -402,20 +402,27 @@ class MQuadrangleN : public MQuadrangle {
   }
   virtual int getTypeForMSH() const
   {
-    if(_order==1 && _vs.size() + 4 == 4) return MSH_QUA_4;
-    if(_order==2 && _vs.size() + 4 == 8) return MSH_QUA_8;
-    if(_order==2 && _vs.size() + 4 == 9) return MSH_QUA_9;
-    if(_order==3 && _vs.size() + 4 == 12) return MSH_QUA_12;
-    if(_order==3 && _vs.size() + 4 == 16) return MSH_QUA_16;
-    if(_order==4 && _vs.size() + 4 == 16) return MSH_QUA_16I;
-    if(_order==4 && _vs.size() + 4 == 25) return MSH_QUA_25;
-    if(_order==5 && _vs.size() + 4 == 20) return MSH_QUA_20;
-    if(_order==5 && _vs.size() + 4 == 36) return MSH_QUA_36;
-    if(_order==6 && _vs.size() + 4 == 49) return MSH_QUA_49;
-    if(_order==7 && _vs.size() + 4 == 64) return MSH_QUA_64;
-    if(_order==8 && _vs.size() + 4 == 81) return MSH_QUA_81;
-    if(_order==9 && _vs.size() + 4 == 100) return MSH_QUA_100;
+    if(_order== 1 && _vs.size() + 4 == 4)   return MSH_QUA_4;
+    if(_order== 2 && _vs.size() + 4 == 9)   return MSH_QUA_9;
+    if(_order== 3 && _vs.size() + 4 == 16)  return MSH_QUA_16;
+    if(_order== 4 && _vs.size() + 4 == 25)  return MSH_QUA_25;
+    if(_order== 5 && _vs.size() + 4 == 36)  return MSH_QUA_36;
+    if(_order== 6 && _vs.size() + 4 == 49)  return MSH_QUA_49;
+    if(_order== 7 && _vs.size() + 4 == 64)  return MSH_QUA_64;
+    if(_order== 8 && _vs.size() + 4 == 81)  return MSH_QUA_81;
+    if(_order== 9 && _vs.size() + 4 == 100) return MSH_QUA_100;
     if(_order==10 && _vs.size() + 4 == 121) return MSH_QUA_121;
+
+    if(_order== 2 && _vs.size() + 4 == 8)  return MSH_QUA_8;
+    if(_order== 3 && _vs.size() + 4 == 12) return MSH_QUA_12;
+    if(_order== 4 && _vs.size() + 4 == 16) return MSH_QUA_16I;
+    if(_order== 5 && _vs.size() + 4 == 20) return MSH_QUA_20;
+    if(_order== 6 && _vs.size() + 4 == 24) return MSH_QUA_24;
+    if(_order== 7 && _vs.size() + 4 == 28) return MSH_QUA_28;
+    if(_order== 8 && _vs.size() + 4 == 32) return MSH_QUA_32;
+    if(_order== 9 && _vs.size() + 4 == 36) return MSH_QUA_36I;
+    if(_order==10 && _vs.size() + 4 == 40) return MSH_QUA_40;
+    Msg::Error("no tag matches a p%d quadrangle with %d vertices", _order, 4+_vs.size());
     return 0;
   }
   virtual void reverse()
diff --git a/Geo/MTetrahedron.h b/Geo/MTetrahedron.h
index 1d85eb99ca..30dedd4316 100644
--- a/Geo/MTetrahedron.h
+++ b/Geo/MTetrahedron.h
@@ -363,6 +363,7 @@ class MTetrahedronN : public MTetrahedron {
     if(_order == 8 && _vs.size() + 4 == 165) return MSH_TET_165;
     if(_order == 9 && _vs.size() + 4 == 220) return MSH_TET_220;
     if(_order == 10 && _vs.size() + 4 == 286) return MSH_TET_286;
+
     if(_order == 3 && _vs.size() + 4 == 16) return MSH_TET_16;
     if(_order == 4 && _vs.size() + 4 == 22) return MSH_TET_22;
     if(_order == 5 && _vs.size() + 4 == 28) return MSH_TET_28;
@@ -371,6 +372,7 @@ class MTetrahedronN : public MTetrahedron {
     if(_order == 8 && _vs.size() + 4 == 46) return MSH_TET_46;
     if(_order == 9 && _vs.size() + 4 == 52) return MSH_TET_52;
     if(_order == 10 && _vs.size() + 4 == 58) return MSH_TET_58;
+    Msg::Error("no tag matches a p%d tetrahedron with %d vertices", _order, 4+_vs.size());
     return 0;
   }
   virtual void reverse()
diff --git a/Geo/MTriangle.h b/Geo/MTriangle.h
index eaab6370c4..7670de8dbb 100644
--- a/Geo/MTriangle.h
+++ b/Geo/MTriangle.h
@@ -321,17 +321,24 @@ class MTriangleN : public MTriangle {
   {
     if(_order == 1 && _vs.size() == 0) return MSH_TRI_3;
     if(_order == 2 && _vs.size() == 3) return MSH_TRI_6;
-    if(_order == 3 && _vs.size() == 6) return MSH_TRI_9;
     if(_order == 3 && _vs.size() == 7) return MSH_TRI_10;
-    if(_order == 4 && _vs.size() == 9) return MSH_TRI_12;
     if(_order == 4 && _vs.size() == 12) return MSH_TRI_15;
-    if(_order == 5 && _vs.size() == 12) return MSH_TRI_15I;
     if(_order == 5 && _vs.size() == 18) return MSH_TRI_21;
     if(_order == 6 && _vs.size() == 25) return MSH_TRI_28;
     if(_order == 7 && _vs.size() == 33) return MSH_TRI_36;
     if(_order == 8 && _vs.size() == 42) return MSH_TRI_45;
     if(_order == 9 && _vs.size() == 52) return MSH_TRI_55;
     if(_order ==10 && _vs.size() == 63) return MSH_TRI_66;
+
+    if(_order == 3 && _vs.size() == 6) return MSH_TRI_9;
+    if(_order == 4 && _vs.size() == 9) return MSH_TRI_12;
+    if(_order == 5 && _vs.size() == 12) return MSH_TRI_15I;
+    if(_order == 6 && _vs.size() == 15) return MSH_TRI_18;
+    if(_order == 7 && _vs.size() == 18) return MSH_TRI_21I;
+    if(_order == 8 && _vs.size() == 21) return MSH_TRI_24;
+    if(_order == 9 && _vs.size() == 24) return MSH_TRI_27;
+    if(_order ==10 && _vs.size() == 27) return MSH_TRI_30;
+    Msg::Error("no tag matches a p%d triangle with %d vertices", _order, 3+_vs.size());
     return 0;
   }
   virtual void reverse()
-- 
GitLab