From 8d997560454900e94b269245fa139a15e405a565 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Tue, 26 Sep 2023 07:24:41 +0200 Subject: [PATCH] mapping of HEX7 --- libsrc/include/nginterface.h | 2 +- libsrc/include/nginterface_v2.hpp | 2 +- libsrc/meshing/meshtype.cpp | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/libsrc/include/nginterface.h b/libsrc/include/nginterface.h index bebb9bce..7c5545a9 100644 --- a/libsrc/include/nginterface.h +++ b/libsrc/include/nginterface.h @@ -38,7 +38,7 @@ enum NG_ELEMENT_TYPE { NG_TRIG = 10, NG_QUAD=11, NG_TRIG6 = 12, NG_QUAD6 = 13, NG_QUAD8 = 14, NG_TET = 20, NG_TET10 = 21, NG_PYRAMID = 22, NG_PRISM = 23, NG_PRISM12 = 24, NG_PRISM15 = 27, NG_PYRAMID13 = 28, - NG_HEX = 25, NG_HEX20 = 26 + NG_HEX = 25, NG_HEX20 = 26, NG_HEX7 = 29 }; typedef double NG_POINT[3]; // coordinates diff --git a/libsrc/include/nginterface_v2.hpp b/libsrc/include/nginterface_v2.hpp index 86009f31..1b624b9d 100644 --- a/libsrc/include/nginterface_v2.hpp +++ b/libsrc/include/nginterface_v2.hpp @@ -22,7 +22,7 @@ enum NG_ELEMENT_TYPE { NG_TRIG = 10, NG_QUAD=11, NG_TRIG6 = 12, NG_QUAD6 = 13, NG_QUAD8 = 14, NG_TET = 20, NG_TET10 = 21, NG_PYRAMID = 22, NG_PRISM = 23, NG_PRISM12 = 24, NG_PRISM15 = 27, NG_PYRAMID13 = 28, - NG_HEX = 25, NG_HEX20 = 26 + NG_HEX = 25, NG_HEX20 = 26, NG_HEX7 = 29 }; enum NG_REFINEMENT_TYPE { NG_REFINE_H = 0, NG_REFINE_P = 1, NG_REFINE_HP = 2 }; diff --git a/libsrc/meshing/meshtype.cpp b/libsrc/meshing/meshtype.cpp index dddfc63e..a5a29867 100644 --- a/libsrc/meshing/meshtype.cpp +++ b/libsrc/meshing/meshtype.cpp @@ -2088,6 +2088,25 @@ namespace netgen shape[14] = 4 * y * lam * (2*z*z-z); break; } + case HEX7: + { + T y = p(1); + T z = p(2); + T den = (1-y)*(1-z); + den += T(1e-12); + + T x = p(0) / den; + + shape(0) = (1-x)*(1-y)*(1-z); + shape(1) = ( x)*(1-y)*(1-z); + shape(2) = ( x)*( y)*(1-z); + shape(3) = (1-x)*( y)*(1-z); + shape(4) = (1-x)*(1-y)*( z); + shape(5) = ( x)*(1-y)*( z); + shape(6) = ( y)*( z); + break; + } + case HEX: { shape(0) = (1-p(0))*(1-p(1))*(1-p(2));