From 3d3c3635e5e5e6c1260e1bf3f2028dc777823f5d Mon Sep 17 00:00:00 2001
From: Sebastien Blaise <sebastien.blaise@uclouvain.be>
Date: Thu, 22 Nov 2012 09:05:43 +0000
Subject: [PATCH] Added order 0 hexahedrons

---
 Geo/MElement.cpp       | 1 +
 Geo/MHexahedron.cpp    | 2 ++
 Numeric/nodalBasis.cpp | 1 +
 Numeric/nodalBasis.h   | 1 +
 4 files changed, 5 insertions(+)

diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index bdc5c5132e..d5a221c8bd 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -1508,6 +1508,7 @@ int MElement::OrderFromTag(int tag)
   case MSH_PRI_198 : return 7;
   case MSH_PRI_258 : return 8;
   case MSH_PRI_326 : return 9;
+  case MSH_HEX_1   : return 0;
   case MSH_HEX_8   : return 1;
   case MSH_HEX_27  : return 2;
   case MSH_HEX_64  : return 3;
diff --git a/Geo/MHexahedron.cpp b/Geo/MHexahedron.cpp
index b6dc0cedc3..37158d41da 100644
--- a/Geo/MHexahedron.cpp
+++ b/Geo/MHexahedron.cpp
@@ -213,6 +213,7 @@ const JacobianBasis* MHexahedron::getJacobianFuncSpace(int o) const
 
   if ((nv == 0) && (o == -1)) {
     switch (order) {
+    case 0: return JacobianBasis::find(MSH_HEX_1);
     case 1: return JacobianBasis::find(MSH_HEX_8);
     case 2: return JacobianBasis::find(MSH_HEX_20);
     case 3: return JacobianBasis::find(MSH_HEX_56);
@@ -227,6 +228,7 @@ const JacobianBasis* MHexahedron::getJacobianFuncSpace(int o) const
   }
   else {
     switch (order) {
+    case 0: return JacobianBasis::find(MSH_HEX_1);
     case 1: return JacobianBasis::find(MSH_HEX_8);
     case 2: return JacobianBasis::find(MSH_HEX_27);
     case 3: return JacobianBasis::find(MSH_HEX_64);
diff --git a/Numeric/nodalBasis.cpp b/Numeric/nodalBasis.cpp
index ada63ee201..1065e813f2 100644
--- a/Numeric/nodalBasis.cpp
+++ b/Numeric/nodalBasis.cpp
@@ -1463,6 +1463,7 @@ nodalBasis::nodalBasis(int tag)
   case MSH_PRI_198 : parentType = TYPE_PRI; order = 7; serendip = true; break;
   case MSH_PRI_258 : parentType = TYPE_PRI; order = 8; serendip = true; break;
   case MSH_PRI_326 : parentType = TYPE_PRI; order = 9; serendip = true; break;
+  case MSH_HEX_1   : parentType = TYPE_HEX; order = 0; serendip = false; break;
   case MSH_HEX_8   : parentType = TYPE_HEX; order = 1; serendip = false; break;
   case MSH_HEX_27  : parentType = TYPE_HEX; order = 2; serendip = false; break;
   case MSH_HEX_64  : parentType = TYPE_HEX; order = 3; serendip = false; break;
diff --git a/Numeric/nodalBasis.h b/Numeric/nodalBasis.h
index 4584bba32e..19b45a7ad8 100644
--- a/Numeric/nodalBasis.h
+++ b/Numeric/nodalBasis.h
@@ -150,6 +150,7 @@ inline int nodalBasis::getTag(int parentTag, int order, bool serendip)
     break;
   case TYPE_HEX :
     switch(order) {
+    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;
-- 
GitLab