]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
WIP V3 Emmanuelle
authorAnthony Geay <anthony.geay@edf.fr>
Fri, 10 Feb 2023 09:09:54 +0000 (10:09 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Fri, 10 Feb 2023 09:09:54 +0000 (10:09 +0100)
src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.cxx
src/MEDCoupling_Swig/MEDCouplingBasicsTest7.py

index 3c0b8411d981a4e3207cdf7b957c7bd2657e7633..4fd6a7c558487f9a94c85c4d3d617d331cbb48e6 100644 (file)
@@ -1583,24 +1583,32 @@ void GaussInfo::quad9aInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
+  devFunValue[0] = 0.5*(2*gc[0]-1.0)*0.5*gc[1]*(gc[1]-1.0);
+  devFunValue[1] = 0.5*gc[0]*(gc[0]-1.0)*0.5*(2*gc[1]-1.0);;
+  
+  devFunValue[2] = 0.5*(2.0*gc[0]+1.0)*0.5*gc[1]*(gc[1]-1.0);
+  devFunValue[3] = 0.5*gc[0]*(1.0+gc[0])*0.5*(2.0*gc[1]-1.0);
+  
+  devFunValue[4] = 0.5*(2.0*gc[0]+1.0)*0.5*gc[1]*(1.0+gc[1]);
+  devFunValue[5] = 0.5*gc[0]*(1.0+gc[0])*0.5*(2.0*gc[1]+1.0);
+  
+  devFunValue[6] = 0.5*(2.0*gc[0]-1.0)*0.5*gc[1]*(1.0+gc[1]);
+  devFunValue[7] = 0.5*gc[0]*(gc[0]-1.0)*0.5*(2.0*gc[1]+1.0);
+  
+  devFunValue[8] = -2.0*gc[0]*0.5*gc[1]*(gc[1]-1.0);
+  devFunValue[9] = (1.0+gc[0])*(1.0-gc[0])*0.5*(2.0*gc[1]-1.0);
+  
+  devFunValue[10] = 0.5*(2.0*gc[0]+1.0)*(1.0+gc[1])*(1.0-gc[1]);
+  devFunValue[11] = 0.5*gc[0]*(1+gc[0])*-2.0*gc[1];
+  
+  devFunValue[12] = -2.0*gc[0]*0.5*gc[1]*(1.0+gc[1]);
+  devFunValue[13] = (1.0+gc[0])*(1.0-gc[0])*0.5*(2.0*gc[1]+1.0);
+  
+  devFunValue[14] = 0.5*(2.0*gc[0]-1.0)*(1.0+gc[1])*(1.0-gc[1]);
+  devFunValue[15] = 0.5*gc[0]*(gc[0]-1.0)*-2.0*gc[1];
+  
+  devFunValue[16] = -2.0*gc[0]*(1.0+gc[1])*(1.0-gc[1]);
+  devFunValue[17] = (1.0+gc[0])*(1.0-gc[0])*-2.0*gc[1];
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -1641,18 +1649,21 @@ void GaussInfo::tetra4aInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
+  devFunValue[0] = 0.0;
+  devFunValue[1] = 1.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = 0.0;
+  devFunValue[4] = 0.0;
+  devFunValue[5] = 1.0;
+  
+  devFunValue[6] = -1.0;
+  devFunValue[7] = -1.0;
+  devFunValue[8] = -1.0;
+  
+  devFunValue[9] = 1.0;
+  devFunValue[10] = 0.0;
+  devFunValue[11] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -1693,18 +1704,21 @@ void GaussInfo::tetra4bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
+  devFunValue[0] = 0.0;
+  devFunValue[1] = 1.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = -1.0;
+  devFunValue[4] = -1.0;
+  devFunValue[5] = -1.0;
+  
+  devFunValue[6] = 0.0;
+  devFunValue[7] = 0.0;
+  devFunValue[8] = 1.0;
+  
+  devFunValue[9] = 1.0;
+  devFunValue[10] = 0.0;
+  devFunValue[11] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -1781,36 +1795,45 @@ void GaussInfo::tetra10aInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
+  devFunValue[0] = 0.0;
+  devFunValue[1] = 4.0*gc[1]-1.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = 0.0;
+  devFunValue[4] = 0.0;
+  devFunValue[5] = 4.0*gc[2]-1.0;
+  
+  devFunValue[6] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
+  devFunValue[7] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
+  devFunValue[8] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
+  
+  devFunValue[9] = 4.0*gc[0]-1.0;
+  devFunValue[10] = 0.0;
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 4.0*gc[2];
+  devFunValue[14] = 4.0*gc[1];
+  
+  devFunValue[15] = -4.0*gc[2];
+  devFunValue[16] = -4.0*gc[2];
+  devFunValue[17] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[2]);
+  
+  devFunValue[18] = -4.0*gc[1];
+  devFunValue[19] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[1]);;
+  devFunValue[20] = -4.0*gc[1];
+  
+  devFunValue[21] = 4.0*gc[1];
+  devFunValue[22] = -4.0*gc[0];
+  devFunValue[23] = 0.0;
+  
+  devFunValue[24] = 4.0*gc[2];
+  devFunValue[25] = 0.0;
+  devFunValue[26] = 4.0*gc[0];
+  
+  devFunValue[27] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[0]);
+  devFunValue[28] = -4.0*gc[0];
+  devFunValue[29] = -4.0*gc[0];
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -1886,36 +1909,45 @@ void GaussInfo::tetra10bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
+  devFunValue[0] = 0.0;
+  devFunValue[1] = 4.0*gc[1]-1.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
+  devFunValue[4] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
+  devFunValue[5] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
+  
+  devFunValue[6] = 0.0;
+  devFunValue[7] = 0.0;
+  devFunValue[8] = 4.0*gc[2]-1.0;
+  
+  devFunValue[9] = 4.0*gc[0]-1.0;
+  devFunValue[10] = 0.0;
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = -4.0*gc[1];
+  devFunValue[13] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[1]);;
+  devFunValue[14] = -4.0*gc[1];
+  
+  devFunValue[15] = -4.0*gc[2];
+  devFunValue[16] = -4.0*gc[2];
+  devFunValue[17] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[2]);
+  
+  devFunValue[18] = 0.0;
+  devFunValue[19] = 4.0*gc[2];
+  devFunValue[20] = 4.0*gc[1];
+  
+  devFunValue[21] = 4.0*gc[1];
+  devFunValue[22] = -4.0*gc[0];
+  devFunValue[23] = 0.0;
+  
+  devFunValue[24] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[0]);
+  devFunValue[25] = -4.0*gc[0];
+  devFunValue[26] = -4.0*gc[0];
+  
+  devFunValue[27] = 4.0*gc[2];
+  devFunValue[28] = 0.0;
+  devFunValue[29] = 4.0*gc[0];
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -1954,30 +1986,30 @@ void GaussInfo::pyra5aInit()
   LOCAL_COORD_MACRO_END;
   
   SHAPE_FUN_MACRO_BEGIN;
-  funValue[0] = 0.25*(-gc[0] + gc[1] - 1.0)*(-gc[0] - gc[1] - 1.0)*(1.0 - gc[2]);
-  funValue[1] = 0.25*(-gc[0] - gc[1] - 1.0)*(+gc[0] - gc[1] - 1.0)*(1.0 - gc[2]);
-  funValue[2] = 0.25*(+gc[0] + gc[1] - 1.0)*(+gc[0] - gc[1] - 1.0)*(1.0 - gc[2]);
-  funValue[3] = 0.25*(+gc[0] + gc[1] - 1.0)*(-gc[0] + gc[1] - 1.0)*(1.0 - gc[2]);
+  funValue[0] = 0.25*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[1] = 0.25*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[2] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[3] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
   funValue[4] = gc[2];
   SHAPE_FUN_MACRO_END;
 
   DEV_SHAPE_FUN_MACRO_BEGIN;
 
-  devFunValue[0] = 0.5*(gc[0]+1)*(1.0 - gc[2]);
-  devFunValue[1] = -0.5*gc[1]*(1.0 - gc[2]);
-  devFunValue[2] = -0.25*(-gc[0] + gc[1] - 1.0)*(-gc[0] - gc[1] - 1.0);
+  devFunValue[0] = (-(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[1] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[2] = ((-gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
   
-  devFunValue[3] = -0.5*gc[0]*(1.0 - gc[2]);
-  devFunValue[4] = 0.5*(gc[1]+1)*(1.0 - gc[2]);
-  devFunValue[5] = -0.25*(-gc[0] - gc[1] - 1.0)*(+gc[0] - gc[1] - 1.0);
+  devFunValue[3] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[4] = (-(-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[5] = ((-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
 
-  devFunValue[6] = 0.5*(gc[0]-1)*(1.0 - gc[2]);
-  devFunValue[7] = -0.5*gc[1]*(1.0 - gc[2]);
-  devFunValue[8] = -0.25*(+gc[0] + gc[1] - 1.0)*(+gc[0] - gc[1] - 1.0);
+  devFunValue[6] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[7] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[8] = ((gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
   
-  devFunValue[9] = -0.5*gc[0]*(1.0 - gc[2]);
-  devFunValue[10] = 0.5*(1*gc[1]-1)*(1.0 - gc[2]);
-  devFunValue[11] = -0.25*(+gc[0] + gc[1] - 1.0)*(-gc[0] + gc[1] - 1.0);
+  devFunValue[9] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[10] = ((gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[11] = ((gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
   
   devFunValue[12] = 0.0;
   devFunValue[13] = 0.0;
@@ -1985,6 +2017,7 @@ void GaussInfo::pyra5aInit()
 
   DEV_SHAPE_FUN_MACRO_END;
 }
+
 /*!
  * Init Pyramid Reference coordinates ans Shape function.
  * Case B.
@@ -2020,29 +2053,33 @@ void GaussInfo::pyra5bInit()
   LOCAL_COORD_MACRO_END;
   
   SHAPE_FUN_MACRO_BEGIN;
-  funValue[0] = 0.25*(-gc[0] + gc[1] - 1.0)*(-gc[0] - gc[1] - 1.0)*(1.0 - gc[2]);
-  funValue[3] = 0.25*(-gc[0] - gc[1] - 1.0)*(+gc[0] - gc[1] - 1.0)*(1.0 - gc[2]);
-  funValue[2] = 0.25*(+gc[0] + gc[1] - 1.0)*(+gc[0] - gc[1] - 1.0)*(1.0 - gc[2]);
-  funValue[1] = 0.25*(+gc[0] + gc[1] - 1.0)*(-gc[0] + gc[1] - 1.0)*(1.0 - gc[2]);
+  funValue[0] = 0.25*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[3] = 0.25*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[2] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[1] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
   funValue[4] = gc[2];
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
+  devFunValue[0] = (-(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[1] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[2] = ((-gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
+
+  devFunValue[3] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[4] = ((gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[5] = ((gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
+  
+  devFunValue[6] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[7] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[8] = ((gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
+  
+  devFunValue[9] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[10] = (-(-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
+  devFunValue[11] = ((-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/((1.0-gc[2])*4.0);
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 1.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -2121,76 +2158,78 @@ void GaussInfo::pyra13aInit()
   LOCAL_COORD_MACRO_END;
   
   SHAPE_FUN_MACRO_BEGIN;
-  funValue[0] = 0.5*(-gc[0] + gc[1] + gc[2] - 1.0)*(-gc[0] - gc[1] + gc[2] - 1.0)*
-    (gc[0] - 0.5)/(1.0 - gc[2]);
-  funValue[1] = 0.5*(-gc[0] - gc[1] + gc[2] - 1.0)*(+gc[0] - gc[1] + gc[2] - 1.0)*
-    (gc[1] - 0.5)/(1.0 - gc[2]);
-  funValue[2] = 0.5*(+gc[0] - gc[1] + gc[2] - 1.0)*(+gc[0] + gc[1] + gc[2] - 1.0)*
-    (-gc[0] - 0.5)/(1.0 - gc[2]);
-  funValue[3] = 0.5*(+gc[0] + gc[1] + gc[2] - 1.0)*(-gc[0] + gc[1] + gc[2] - 1.0)*
-    (-gc[1] - 0.5)/(1.0 - gc[2]);
-  
-  funValue[4] = 2.0*gc[2]*(gc[2] - 0.5);
-  
-  funValue[5] = 0.5*(-gc[0] + gc[1] + gc[2] - 1.0)*(-gc[0] - gc[1] + gc[2] - 1.0)*
-    (gc[0] - gc[1] + gc[2] - 1.0)/(1.0 - gc[2]);
-  funValue[6] = 0.5*(-gc[0] - gc[1] + gc[2] - 1.0)*(gc[0] - gc[1] + gc[2] - 1.0)*
-    (gc[0] + gc[1] + gc[2] - 1.0)/(1.0 - gc[2]);
-  funValue[7] = 0.5*(gc[0] - gc[1] + gc[2] - 1.0)*(gc[0] + gc[1] + gc[2] - 1.0)*
-    (-gc[0] + gc[1] + gc[2] - 1.0)/(1.0 - gc[2]);
-  funValue[8] = 0.5*(gc[0] + gc[1] + gc[2] - 1.0)*(-gc[0] + gc[1] + gc[2] - 1.0)*
-    (-gc[0] - gc[1] + gc[2] - 1.0)/(1.0 - gc[2]);
-  
-  funValue[9] = 0.5*gc[2]*(-gc[0] + gc[1] + gc[2] - 1.0)*(-gc[0] - gc[1] + gc[2] - 1.0)/
-    (1.0 - gc[2]);
-  funValue[10] = 0.5*gc[2]*(-gc[0] - gc[1] + gc[2] - 1.0)*(gc[0] - gc[1] + gc[2] - 1.0)/
-    (1.0 - gc[2]);
-  funValue[11] = 0.5*gc[2]*(gc[0] - gc[1] + gc[2] - 1.0)*(gc[0] + gc[1] + gc[2] - 1.0)/
-    (1.0 - gc[2]);
-  funValue[12] = 0.5*gc[2]*(gc[0] + gc[1] + gc[2] - 1.0)*(-gc[0] + gc[1] + gc[2] - 1.0)/
-    (1.0 - gc[2]);
+  funValue[0]=0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-0.5)/(1.0-gc[2]);
+  funValue[1]=0.5*(-gc[0]-gc[1]+gc[2]-1.0)*(+gc[0]-gc[1]+gc[2]-1.0)*(gc[1]-0.5)/(1.0-gc[2]);
+  funValue[2]=0.5*(+gc[0]-gc[1]+gc[2]-1.0)*(+gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-0.5)/(1.0-gc[2]);
+  funValue[3]=0.5*(+gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[1]-0.5)/(1.0-gc[2]);
+  
+  funValue[4]=2.0*gc[2]*(gc[2]-0.5);
+  
+  funValue[5]=0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[6]=0.5*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[7]=0.5*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[8]=0.5*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  
+  funValue[9]=0.5*gc[2]*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[10]=0.5*gc[2]*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[11]=0.5*gc[2]*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
+  funValue[12]=0.5*gc[2]*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
-  devFunValue[30] = std::nan("1");
-  devFunValue[31] = std::nan("1");
-  devFunValue[32] = std::nan("1");
-  devFunValue[33] = std::nan("1");
-  devFunValue[34] = std::nan("1");
-  devFunValue[35] = std::nan("1");
-  devFunValue[36] = std::nan("1");
-  devFunValue[37] = std::nan("1");
-  devFunValue[38] = std::nan("1");
+  devFunValue[0] = ((-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)-((-gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0))*(gc[0]-0.5))/(2.0*(1.0-gc[2]));
+  devFunValue[1] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*(gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[2] = ((-gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  
+  devFunValue[3] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))*(gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[4] = ((-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)-((-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*(gc[1]-0.5))/(2.0*(1.0-gc[2]));
+  devFunValue[5] = ((-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  
+  devFunValue[6] = (((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*(-gc[0]-0.5)-(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[7] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*(-gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[8] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(-gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  
+  devFunValue[9] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*(-gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[10] = (((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0))*(-gc[1]-0.5)-(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[11] = ((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(-gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 4.0*gc[2]-1.0;
+  
+  devFunValue[15] = -((-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[16] = -((-gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[17] = ((-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  devFunValue[18] = -((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[19] = -((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[20] = ((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  devFunValue[21] = -((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[22] = -((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[23] = ((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  devFunValue[24] = -((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[25] = -((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[26] = ((-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  
+  devFunValue[27] = 0.5*(-(-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[28] = 0.5*((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[29] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  
+  devFunValue[30] = 0.5*((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[31] = 0.5*(-(gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[32] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  
+  devFunValue[33] = 0.5*((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[34] = 0.5*((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[35] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  
+  devFunValue[36] = 0.5*((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[37] = 0.5*((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[38] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -2274,7 +2313,7 @@ void GaussInfo::pyra13bInit()
   funValue[2] =0.5*(+gc[0]-gc[1]+gc[2]-1.0)*(+gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-0.5)/(1.0-gc[2]);
   funValue[3] =0.5*(-gc[0]-gc[1]+gc[2]-1.0)*(+gc[0]-gc[1]+gc[2]-1.0)*(gc[1]-0.5)/(1.0-gc[2]);
   
-  funValue[4] =2.*gc[2]*(gc[2]-0.5);
+  funValue[4] =2.0*gc[2]*(gc[2]-0.5);
   
   funValue[5] =-0.5*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
   funValue[6] =-0.5*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
@@ -2289,45 +2328,59 @@ void GaussInfo::pyra13bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
-  devFunValue[30] = std::nan("1");
-  devFunValue[31] = std::nan("1");
-  devFunValue[32] = std::nan("1");
-  devFunValue[33] = std::nan("1");
-  devFunValue[34] = std::nan("1");
-  devFunValue[35] = std::nan("1");
-  devFunValue[36] = std::nan("1");
-  devFunValue[37] = std::nan("1");
-  devFunValue[38] = std::nan("1");
+  devFunValue[0] = ((-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)-((-gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0))*(gc[0]-0.5))/(2.0*(1.0-gc[2]));
+  devFunValue[1] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*(gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[2] = ((-gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  
+  devFunValue[9] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))*(gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[10] = ((-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)-((-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*(gc[1]-0.5))/(2.0*(1.0-gc[2]));
+  devFunValue[11] = ((-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  
+  devFunValue[6] = (((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*(-gc[0]-0.5)-(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[7] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*(-gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[8] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(-gc[0]-0.5)/(2.0*(1.0-gc[2]));
+  
+  devFunValue[3] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*(-gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  devFunValue[4] = (((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0))*(-gc[1]-0.5)-(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[5] = ((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))*(-gc[1]-0.5)/(2.0*(1.0-gc[2]));
+  
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 4.0*gc[2]-1.0;
+  
+  devFunValue[24] = ((-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[25] = ((-gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[26] = -((-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  devFunValue[21] = ((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[22] = ((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[23] = -((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  devFunValue[18] = ((gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[19] = ((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[20] = -((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  devFunValue[15] = ((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[16] = ((gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0))/(2.0*(1.0-gc[2]));
+  devFunValue[17] = -((-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]))/(2.0*(1.0-gc[2]));
+  
+  
+  devFunValue[27] = 0.5*(-(-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[28] = 0.5*((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[29] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  
+  devFunValue[36] = 0.5*((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[37] = 0.5*(-(gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[38] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  
+  devFunValue[33] = 0.5*((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[34] = 0.5*((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[35] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  
+  devFunValue[30] = 0.5*((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[31] = 0.5*((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
+  devFunValue[32] = 0.5*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2])/(1.0-gc[2])+((-gc[0]-gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -2459,24 +2512,29 @@ void GaussInfo::penta6bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
+  devFunValue[0] = 0.5*gc[1]*(-1.0);
+  devFunValue[1] = 0.5*(1.0 - gc[0]);
+  devFunValue[2] = 0.0;
+
+  devFunValue[6] = 0.5*gc[2]*(-1.0);
+  devFunValue[7] = 0.0;
+  devFunValue[8] = 0.5*(1.0 - gc[0]);
+
+  devFunValue[3] = 0.5*(1.0 - gc[1] - gc[2])*(-1.0);
+  devFunValue[4] = 0.5*(-1.0)*(1.0 - gc[0]);
+  devFunValue[5] = 0.5*(-1.0)*(1.0 - gc[0]);
+
+  devFunValue[9] = 0.5*gc[1];
+  devFunValue[10] = 0.5*(gc[0] + 1.0);
+  devFunValue[11] = 0.0;
+
+  devFunValue[15] = 0.5*gc[2];
+  devFunValue[16] = 0.0;
+  devFunValue[17] = 0.5*(gc[0] + 1.0);
+
+  devFunValue[12] = 0.5*(1.0 - gc[1] - gc[2]);
+  devFunValue[13] = 0.5*(-1.0)*(1.0 + gc[0]);
+  devFunValue[14] = 0.5*(-1.0)*(1.0 + gc[0]);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -2528,24 +2586,29 @@ void GaussInfo::penta6DegTria3aInit()
    SHAPE_FUN_MACRO_END;
    
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
+  devFunValue[0] = 0.0;
+  devFunValue[1] = 0.5;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = -0.5;
+  devFunValue[4] = -0.5;
+  devFunValue[5] = 0.0;
+  
+  devFunValue[6] = 0.5;
+  devFunValue[7] = 0.0;
+  devFunValue[8] = 0.0;
+  
+  devFunValue[9] = 0.0;
+  devFunValue[10] = 0.0;
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 0.0;
+  
+  devFunValue[15] = 0.0;
+  devFunValue[16] = 0.0;
+  devFunValue[17] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -2597,24 +2660,29 @@ void GaussInfo::penta6DegTria3bInit()
    SHAPE_FUN_MACRO_END;
    
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
+  devFunValue[0] = -1.0;
+  devFunValue[1] = -1.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = 1.0;
+  devFunValue[4] = 0.0;
+  devFunValue[5] = 0.0;
+  
+  devFunValue[6] = 0.0;
+  devFunValue[7] = 1.0;
+  devFunValue[8] = 0.0;
+  
+  devFunValue[9] = 0.0;
+  devFunValue[10] = 0.0;
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 0.0;
+  
+  devFunValue[15] = 0.0;
+  devFunValue[16] = 0.0;
+  devFunValue[17] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -2896,51 +2964,65 @@ void GaussInfo::penta15bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
-  devFunValue[30] = std::nan("1");
-  devFunValue[31] = std::nan("1");
-  devFunValue[32] = std::nan("1");
-  devFunValue[33] = std::nan("1");
-  devFunValue[34] = std::nan("1");
-  devFunValue[35] = std::nan("1");
-  devFunValue[36] = std::nan("1");
-  devFunValue[37] = std::nan("1");
-  devFunValue[38] = std::nan("1");
-  devFunValue[39] = std::nan("1");
-  devFunValue[40] = std::nan("1");
-  devFunValue[41] = std::nan("1");
-  devFunValue[42] = std::nan("1");
-  devFunValue[43] = std::nan("1");
-  devFunValue[44] = std::nan("1");
+  devFunValue[0] = 0.5*gc[1]*(2 * gc[0] - 2 * gc[1] + 1.0 );
+  devFunValue[1] = (1.0 - gc[0])*(2.0*gc[1] -1 - 0.5*gc[0]);
+  devFunValue[2] = 0.0;
+
+  devFunValue[6] = 0.5*gc[2]*(2 * gc[0] - 2 * gc[2] + 1.0 );
+  devFunValue[7] = 0.0;
+  devFunValue[8] = (1.0 - gc[0])*(2.0*gc[2] -1 - 0.5*gc[0]);
+
+  devFunValue[3] = 0.5*(1.0 - gc[1] - gc[2])*(2*gc[0] -1.0 + 2*gc[1] + 2*gc[2]);
+  devFunValue[4] = 0.5*(gc[0] - 1.0)* ( -4*gc[1] -gc[0] -4*gc[2] + 2.0);
+  devFunValue[5] = 0.5*(gc[0] - 1.0)* ( -4*gc[2] -4*gc[1] -gc[0] + 2.0);
+
+  devFunValue[9] = 0.5*gc[1]*( 2*gc[0] + 2*gc[1] -1.0 );
+  devFunValue[10] = (1.0 + gc[0])*(2.0*gc[1] - 1.0 + 0.5*gc[0]);
+  devFunValue[11] = 0.0;
+
+  devFunValue[15] = 0.5*gc[2]*( 2*gc[0] + 2*gc[2] -1.0 );
+  devFunValue[16] = 0.0;
+  devFunValue[17] = (1.0 + gc[0])*(2.0*gc[2] - 1.0 + 0.5*gc[0]);
+
+  devFunValue[12] = 0.5*(1.0 - gc[1] - gc[2])*(2 * gc[0] - 2.0 * gc[1] - 2.0 * gc[2] + 1.0 );
+  devFunValue[13] = 0.5*(-gc[0] - 1.0) * (-4.0*gc[1] + gc[0] - 4.0 * gc[2] + 2.0) ;
+  devFunValue[14] = 0.5*(-gc[0] - 1.0) * (-4.0*gc[2] - 4*gc[1] + gc[0] + 2.0 );
+
+  devFunValue[24] = - 2.0*gc[1]*gc[2];
+  devFunValue[25] = 2.0*gc[2]*(1.0 - gc[0]);
+  devFunValue[26] = 2.0*gc[1]*(1.0 - gc[0]);
+
+  devFunValue[21] = -2.0*gc[2]*(1.0 - gc[1] - gc[2]);
+  devFunValue[22] = -2.0*gc[2]*(1.0 - gc[0]);
+  devFunValue[23] = (-4*gc[2]-2*gc[1]+2.0)*(1.0 - gc[0]);
+
+  devFunValue[18] = -2.0*gc[1]*(1.0 - gc[1] - gc[2]);
+  devFunValue[19] = (-4*gc[1]-2*gc[2]+2)*(1.0 - gc[0]);
+  devFunValue[20] = -2.0*gc[1]*(1.0 - gc[0]);
+
+  devFunValue[27] = gc[1]*(- 2.0 * gc[0]);
+  devFunValue[28] = (1.0 - gc[0]*gc[0]);
+  devFunValue[29] = 0.0;
+
+  devFunValue[33] = -2.0 * gc[2] *gc[0];
+  devFunValue[34] = 0.0;
+  devFunValue[35] = (1.0 - gc[0]*gc[0]);
+
+  devFunValue[30] = -2.0 * (1.0 - gc[1] - gc[2]) * gc[0];
+  devFunValue[31] = -1.0*(1.0 - gc[0]*gc[0]);
+  devFunValue[32] = -1.0*(1.0 - gc[0]*gc[0]);
+
+  devFunValue[42] = 2.0*gc[1]*gc[2];
+  devFunValue[43] = 2.0*gc[2]*(1.0 + gc[0]);
+  devFunValue[44] = 2.0*gc[1]*(1.0 + gc[0]);
+
+  devFunValue[39] = 2.0*gc[2]*(1.0 - gc[1] - gc[2]);
+  devFunValue[40] = -2.0*gc[2]*(1.0 + gc[0]);
+  devFunValue[41] = (2.0 - 2.0 * gc[1] - 4.0 * gc[2])*(1.0 + gc[0]);
+
+  devFunValue[36] = 2.0*gc[1]*(1.0 - gc[1] - gc[2]);
+  devFunValue[37] = (2.0 - 4*gc[1] - 2*gc[2])*(1.0 + gc[0]);
+  devFunValue[38] = -2.0*gc[1]*(1.0 + gc[0]);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -3040,86 +3122,103 @@ void GaussInfo::penta18aInit()
   LOCAL_COORD_MACRO_END;
   
   SHAPE_FUN_MACRO_BEGIN;
-  funValue[0] = 0.5*gc[1]*(1.0 - gc[0])*(2.0*gc[1] - 2.0 - gc[0]);
-  funValue[1] = 0.5*gc[2]*(1.0 - gc[0])*(2.0*gc[2] - 2.0 - gc[0]);
-  funValue[2] = 0.5*(gc[0] - 1.0)*(1.0 - gc[1] - gc[2])*(gc[0] + 2.0*gc[1] + 2.0*gc[2]);
+  funValue[0] = gc[0]*gc[1]*(gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
+  funValue[1] = gc[0]*gc[2]*(gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
+  funValue[2] = gc[0]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
   
-  funValue[3] = 0.5*gc[1]*(1.0 + gc[0])*(2.0*gc[1] - 2.0 + gc[0]);
-  funValue[4] = 0.5*gc[2]*(1.0 + gc[0])*(2.0*gc[2] - 2.0 + gc[0]);
-  funValue[5] = 0.5*(-gc[0] - 1.0)*(1.0 - gc[1] - gc[2])*(-gc[0] + 2.0*gc[1] + 2.0*gc[2]);
+  funValue[3] = gc[0]*gc[1]*(gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
+  funValue[4] = gc[0]*gc[2]*(gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
+  funValue[5] = gc[0]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
   
-  funValue[6] = 2.0*gc[1]*gc[2]*(1.0 - gc[0]);
-  funValue[7] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
-  funValue[8] = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
+  funValue[6] = 2.0*gc[0]*gc[1]*gc[2]*(gc[0]-1.0);
+  funValue[7] = -2.0*gc[0]*gc[2]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0);
+  funValue[8] = -2.0*gc[0]*gc[1]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0);
   
-  funValue[9] = gc[1]*(1.0 - gc[0]*gc[0]);
-  funValue[10] = gc[2]*(1.0 - gc[0]*gc[0]);
-  funValue[11] = (1.0 - gc[1] - gc[2])*(1.0 - gc[0]*gc[0]);
+  funValue[9] = -gc[1]*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]-1.0);
+  funValue[10] = -gc[2]*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]-1.0);
+  funValue[11] = -(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0);
   
-  funValue[12] = 2.0*gc[1]*gc[2]*(1.0 + gc[0]);
-  funValue[13] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
-  funValue[14] = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
+  funValue[12] = 2.0*gc[0]*gc[1]*gc[2]*(gc[0]+1.0);
+  funValue[13] = -2.0*gc[0]*gc[2]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
+  funValue[14] = -2.0*gc[0]*gc[1]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
   
-  funValue[15] = 4.0*gc[1]*gc[2]*(1.0 - gc[0] * gc[0]);
-  funValue[16] = 4.0*gc[2]*(gc[0] * gc[0] - 1) * ( gc[2] + gc[1] - 1);
-  funValue[17] = 4.0*gc[1]*(gc[0] * gc[0] - 1) * ( gc[2] + gc[1] - 1);
+  funValue[15] = -4.0*gc[1]*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
+  funValue[16] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
+  funValue[17] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
-  devFunValue[30] = std::nan("1");
-  devFunValue[31] = std::nan("1");
-  devFunValue[32] = std::nan("1");
-  devFunValue[33] = std::nan("1");
-  devFunValue[34] = std::nan("1");
-  devFunValue[35] = std::nan("1");
-  devFunValue[36] = std::nan("1");
-  devFunValue[37] = std::nan("1");
-  devFunValue[38] = std::nan("1");
-  devFunValue[39] = std::nan("1");
-  devFunValue[40] = std::nan("1");
-  devFunValue[41] = std::nan("1");
-  devFunValue[42] = std::nan("1");
-  devFunValue[43] = std::nan("1");
-  devFunValue[44] = std::nan("1");
-  devFunValue[45] = std::nan("1");
-  devFunValue[46] = std::nan("1");
-  devFunValue[47] = std::nan("1");
-  devFunValue[48] = std::nan("1");
-  devFunValue[49] = std::nan("1");
-  devFunValue[50] = std::nan("1");
-  devFunValue[51] = std::nan("1");
-  devFunValue[52] = std::nan("1");
-  devFunValue[53] = std::nan("1");
+  devFunValue[0] = gc[1]*(2.0*gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
+  devFunValue[1] = gc[0]*(gc[0]-1.0)*(4.0*gc[1]-1.0)/2.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = gc[2]*(2.0*gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
+  devFunValue[4] = 0.0;
+  devFunValue[5] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]-1.0)/2.0;
+  
+  devFunValue[6] = (2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
+  devFunValue[7] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  devFunValue[8] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  
+  devFunValue[9] = gc[1]*(2.0*gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
+  devFunValue[10] = gc[0]*(gc[0]+1.0)*(4.0*gc[1]-1.0)/2.0;
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = gc[2]*(2.0*gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]-1.0)/2.0;
+  
+  devFunValue[15] = (2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
+  devFunValue[16] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  devFunValue[17] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  
+  devFunValue[18] = 2.0*gc[1]*gc[2]*(2.0*gc[0]-1.0);
+  devFunValue[19] = 2.0*gc[0]*gc[2]*(gc[0]-1.0);
+  devFunValue[20] = 2.0*gc[0]*gc[1]*(gc[0]-1.0);
+  
+  devFunValue[21] = -2.0*gc[2]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[22] = -2.0*gc[0]*gc[2]*(gc[0]-1.0);
+  devFunValue[23] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[2]+gc[1]-1.0);
+  
+  devFunValue[24] = -2.0*gc[1]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[25] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[1]+gc[2]-1.0);
+  devFunValue[26] = -2.0*gc[0]*gc[1]*(gc[0]-1.0);
+  
+  devFunValue[27] = -2.0*gc[0]*gc[1]*(2.0*gc[1]-1.0);
+  devFunValue[28] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[1]-1.0);
+  devFunValue[29] = 0.0;
+  
+  devFunValue[30] = -2.0*gc[0]*gc[2]*(2.0*gc[2]-1.0);
+  devFunValue[31] = 0.0;
+  devFunValue[32] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]-1.0);
+  
+  devFunValue[33] = -2.0*gc[0]*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0);
+  devFunValue[34] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
+  devFunValue[35] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
+  
+  devFunValue[36] = 2.0*gc[1]*gc[2]*(2.0*gc[0]+1.0);
+  devFunValue[37] = 2.0*gc[0]*gc[2]*(gc[0]+1.0);
+  devFunValue[38] = 2.0*gc[0]*gc[1]*(gc[0]+1.0);
+  
+  devFunValue[39] = -2.0*gc[2]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[40] = -2.0*gc[0]*gc[2]*(gc[0]+1.0);
+  devFunValue[41] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
+  
+  devFunValue[42] = -2.0*gc[1]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[43] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
+  devFunValue[44] = -2.0*gc[0]*gc[1]*(gc[0]+1.0);
+  
+  devFunValue[45] = -8.0*gc[0]*gc[1]*gc[2];
+  devFunValue[46] = -4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
+  devFunValue[47] = -4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
+  
+  devFunValue[48] = 8.0*gc[0]*gc[2]*(gc[2]+gc[1]-1.0);
+  devFunValue[49] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
+  devFunValue[50] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
+  
+  devFunValue[51] = 8.0*gc[0]*gc[1]*(gc[2]+gc[1]-1.0);
+  devFunValue[52] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
+  devFunValue[53] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -3245,60 +3344,77 @@ void GaussInfo::penta18bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
-  devFunValue[30] = std::nan("1");
-  devFunValue[31] = std::nan("1");
-  devFunValue[32] = std::nan("1");
-  devFunValue[33] = std::nan("1");
-  devFunValue[34] = std::nan("1");
-  devFunValue[35] = std::nan("1");
-  devFunValue[36] = std::nan("1");
-  devFunValue[37] = std::nan("1");
-  devFunValue[38] = std::nan("1");
-  devFunValue[39] = std::nan("1");
-  devFunValue[40] = std::nan("1");
-  devFunValue[41] = std::nan("1");
-  devFunValue[42] = std::nan("1");
-  devFunValue[43] = std::nan("1");
-  devFunValue[44] = std::nan("1");
-  devFunValue[45] = std::nan("1");
-  devFunValue[46] = std::nan("1");
-  devFunValue[47] = std::nan("1");
-  devFunValue[48] = std::nan("1");
-  devFunValue[49] = std::nan("1");
-  devFunValue[50] = std::nan("1");
-  devFunValue[51] = std::nan("1");
-  devFunValue[52] = std::nan("1");
-  devFunValue[53] = std::nan("1");
+  devFunValue[0] = gc[1]*(2.0*gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
+  devFunValue[1] = gc[0]*(gc[0]-1.0)*(4.0*gc[1]-1.0)/2.0;
+  devFunValue[2] = 0.0;
+  
+  devFunValue[6] = gc[2]*(2.0*gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
+  devFunValue[7] = 0.0;
+  devFunValue[8] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]-1.0)/2.0;
+  
+  devFunValue[3] = (2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
+  devFunValue[4] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  devFunValue[5] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  
+  devFunValue[9] = gc[1]*(2.0*gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
+  devFunValue[10] = gc[0]*(gc[0]+1.0)*(4.0*gc[1]-1.0)/2.0;
+  devFunValue[11] = 0.0;
+  
+  devFunValue[15] = gc[2]*(2.0*gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
+  devFunValue[16] = 0.0;
+  devFunValue[17] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]-1.0)/2.0;
+  
+  devFunValue[12] = (2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
+  devFunValue[13] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  devFunValue[14] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
+  
+  devFunValue[24] = 2.0*gc[1]*gc[2]*(2.0*gc[0]-1.0);
+  devFunValue[25] = 2.0*gc[0]*gc[2]*(gc[0]-1.0);
+  devFunValue[26] = 2.0*gc[0]*gc[1]*(gc[0]-1.0);
+  
+  devFunValue[21] = -2.0*gc[2]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[22] = -2.0*gc[0]*gc[2]*(gc[0]-1.0);
+  devFunValue[23] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[2]+gc[1]-1.0);
+  
+  devFunValue[18] = -2.0*gc[1]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[19] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[1]+gc[2]-1.0);
+  devFunValue[20] = -2.0*gc[0]*gc[1]*(gc[0]-1.0);
+  
+  devFunValue[27] = -2.0*gc[0]*gc[1]*(2.0*gc[1]-1.0);
+  devFunValue[28] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[1]-1.0);
+  devFunValue[29] = 0.0;
+  
+  devFunValue[33] = -2.0*gc[0]*gc[2]*(2.0*gc[2]-1.0);
+  devFunValue[34] = 0.0;
+  devFunValue[35] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]-1.0);
+  
+  devFunValue[30] = -2.0*gc[0]*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0);
+  devFunValue[31] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
+  devFunValue[32] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
+  
+  devFunValue[42] = 2.0*gc[1]*gc[2]*(2.0*gc[0]+1.0);
+  devFunValue[43] = 2.0*gc[0]*gc[2]*(gc[0]+1.0);
+  devFunValue[44] = 2.0*gc[0]*gc[1]*(gc[0]+1.0);
+  
+  devFunValue[39] = -2.0*gc[2]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[40] = -2.0*gc[0]*gc[2]*(gc[0]+1.0);
+  devFunValue[41] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
+  
+  devFunValue[36] = -2.0*gc[1]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
+  devFunValue[37] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
+  devFunValue[38] = -2.0*gc[0]*gc[1]*(gc[0]+1.0);
+  
+  devFunValue[51] = -8.0*gc[0]*gc[1]*gc[2];
+  devFunValue[52] = -4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
+  devFunValue[53] = -4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
+  
+  devFunValue[48] = 8.0*gc[0]*gc[2]*(gc[2]+gc[1]-1.0);
+  devFunValue[49] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
+  devFunValue[50] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
+  
+  devFunValue[45] = 8.0*gc[0]*gc[1]*(gc[2]+gc[1]-1.0);
+  devFunValue[46] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
+  devFunValue[47] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -3462,30 +3578,37 @@ void GaussInfo::hexa8bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
+  devFunValue[0] = 0.125 * (-1.0) * (1.0 - gc[1])*(1.0 - gc[2]);
+  devFunValue[1] = 0.125 * (1.0 - gc[0]) * (-1.0) * (1.0 - gc[2]);
+  devFunValue[2] = 0.125 * (1.0 - gc[0]) * (1.0 - gc[1]) *(-1.0);
+
+  devFunValue[9] = 0.125*(1.0 - gc[1])*(1.0 - gc[2]);
+  devFunValue[10] = 0.125*(1.0 + gc[0])*(-1.0)*(1.0 - gc[2]);
+  devFunValue[11] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0);
+
+  devFunValue[6] = 0.125*(1.0 + gc[1])*(1.0 - gc[2]);
+  devFunValue[7] = 0.125*(1.0 + gc[0])*(1.0 - gc[2]);
+  devFunValue[8] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0);
+
+  devFunValue[3] = 0.125*(-1.0)*(1.0 + gc[1])*(1.0 - gc[2]);
+  devFunValue[4] = 0.125*(1.0 - gc[0])*(1.0 - gc[2]);
+  devFunValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0);
+
+  devFunValue[12] = 0.125*(-1.0)*(1.0 - gc[1])*(1.0 + gc[2]);
+  devFunValue[13] = 0.125*(1.0 - gc[0])*(-1.0)*(1.0 + gc[2]);
+  devFunValue[14] = 0.125*(1.0 - gc[0])*(1.0 - gc[1]);
+
+  devFunValue[21] = 0.125*(1.0 - gc[1])*(1.0 + gc[2]);
+  devFunValue[22] = 0.125*(1.0 + gc[0])*(-1.0)*(1.0 + gc[2]);
+  devFunValue[23] = 0.125*(1.0 + gc[0])*(1.0 - gc[1]);
+
+  devFunValue[18] = 0.125*(1.0 + gc[1])*(1.0 + gc[2]);
+  devFunValue[19] = 0.125*(1.0 + gc[0])*(1.0 + gc[2]);
+  devFunValue[20] = 0.125*(1.0 + gc[0])*(1.0 + gc[1]);
+
+  devFunValue[15] = 0.125*(-1.0)*(1.0 + gc[1])*(1.0 + gc[2]);
+  devFunValue[16] = 0.125*(1.0 - gc[0])*(1.0 + gc[2]);
+  devFunValue[17] = 0.125*(1.0 - gc[0])*(1.0 + gc[1]);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -3549,30 +3672,37 @@ void GaussInfo::hexa8DegQuad4aInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
+  devFunValue[0] = -0.25*(1.0+gc[1]);
+  devFunValue[1] = 0.25*(1.0+gc[0]);
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = -0.25*(1-gc[1]);
+  devFunValue[4] = -0.25*(1.0-gc[0]);
+  devFunValue[5] = 0.0;
+  
+  devFunValue[6] = 0.25*(1.0-gc[1]);
+  devFunValue[7] = -0.25*(1.0+gc[0]);
+  devFunValue[8] = 0.0;
+  
+  devFunValue[9] = 0.25*(1.0+gc[1]);
+  devFunValue[10] = 0.25*(1.0+gc[0]);
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 0.0;
+  
+  devFunValue[15] = 0.0;
+  devFunValue[16] = 0.0;
+  devFunValue[17] = 0.0;
+  
+  devFunValue[18] = 0.0;
+  devFunValue[19] = 0.0;
+  devFunValue[20] = 0.0;
+  
+  devFunValue[21] = 0.0;
+  devFunValue[22] = 0.0;
+  devFunValue[23] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -3636,30 +3766,37 @@ void GaussInfo::hexa8DegQuad4bInit()
   SHAPE_FUN_MACRO_END;
      
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
+  devFunValue[0] = -0.25*(1.0-gc[1]);
+  devFunValue[1] = -0.25*(1.0-gc[0]);
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = 0.25*(1-gc[1]);
+  devFunValue[4] = -0.25*(1.0+gc[0]);
+  devFunValue[5] = 0.0;
+  
+  devFunValue[6] = 0.25*(1.0+gc[1]);
+  devFunValue[7] = 0.25*(1.0+gc[0]);
+  devFunValue[8] = 0.0;
+  
+  devFunValue[9] = -0.25*(1.0+gc[1]);
+  devFunValue[10] = 0.25*(1.0-gc[0]);
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 0.0;
+  
+  devFunValue[15] = 0.0;
+  devFunValue[16] = 0.0;
+  devFunValue[17] = 0.0;
+  
+  devFunValue[18] = 0.0;
+  devFunValue[19] = 0.0;
+  devFunValue[20] = 0.0;
+  
+  devFunValue[21] = 0.0;
+  devFunValue[22] = 0.0;
+  devFunValue[23] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -3724,30 +3861,37 @@ void GaussInfo::hexa8DegQuad4cInit()
   SHAPE_FUN_MACRO_END;
    
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
+  devFunValue[0] = -0.25*(1.0-gc[1]);
+  devFunValue[1] = -0.25*(1.0-gc[0]);
+  devFunValue[2] = 0.0;
+  
+  devFunValue[3] = -0.25*(1.0+gc[1]);
+  devFunValue[4] = 0.25*(1.0-gc[0]);
+  devFunValue[5] = 0.0;
+  
+  devFunValue[6] = 0.25*(1.0+gc[1]);
+  devFunValue[7] = 0.25*(1.0+gc[0]);
+  devFunValue[8] = 0.0;
+  
+  devFunValue[9] = 0.25*(1.0-gc[1]);
+  devFunValue[10] = -0.25*(1.0+gc[0]);
+  devFunValue[11] = 0.0;
+  
+  devFunValue[12] = 0.0;
+  devFunValue[13] = 0.0;
+  devFunValue[14] = 0.0;
+  
+  devFunValue[15] = 0.0;
+  devFunValue[16] = 0.0;
+  devFunValue[17] = 0.0;
+  
+  devFunValue[18] = 0.0;
+  devFunValue[19] = 0.0;
+  devFunValue[20] = 0.0;
+  
+  devFunValue[21] = 0.0;
+  devFunValue[22] = 0.0;
+  devFunValue[23] = 0.0;
   DEV_SHAPE_FUN_MACRO_END;
 }
 
@@ -4120,67 +4264,85 @@ void GaussInfo::hexa20bInit()
   SHAPE_FUN_MACRO_END;
   
   DEV_SHAPE_FUN_MACRO_BEGIN;
-  devFunValue[0] = std::nan("1");
-  devFunValue[1] = std::nan("1");
-  devFunValue[2] = std::nan("1");
-  devFunValue[3] = std::nan("1");
-  devFunValue[4] = std::nan("1");
-  devFunValue[5] = std::nan("1");
-  devFunValue[6] = std::nan("1");
-  devFunValue[7] = std::nan("1");
-  devFunValue[8] = std::nan("1");
-  devFunValue[9] = std::nan("1");
-  devFunValue[10] = std::nan("1");
-  devFunValue[11] = std::nan("1");
-  devFunValue[12] = std::nan("1");
-  devFunValue[13] = std::nan("1");
-  devFunValue[14] = std::nan("1");
-  devFunValue[15] = std::nan("1");
-  devFunValue[16] = std::nan("1");
-  devFunValue[17] = std::nan("1");
-  devFunValue[18] = std::nan("1");
-  devFunValue[19] = std::nan("1");
-  devFunValue[20] = std::nan("1");
-  devFunValue[21] = std::nan("1");
-  devFunValue[22] = std::nan("1");
-  devFunValue[23] = std::nan("1");
-  devFunValue[24] = std::nan("1");
-  devFunValue[25] = std::nan("1");
-  devFunValue[26] = std::nan("1");
-  devFunValue[27] = std::nan("1");
-  devFunValue[28] = std::nan("1");
-  devFunValue[29] = std::nan("1");
-  devFunValue[30] = std::nan("1");
-  devFunValue[31] = std::nan("1");
-  devFunValue[32] = std::nan("1");
-  devFunValue[33] = std::nan("1");
-  devFunValue[34] = std::nan("1");
-  devFunValue[35] = std::nan("1");
-  devFunValue[36] = std::nan("1");
-  devFunValue[37] = std::nan("1");
-  devFunValue[38] = std::nan("1");
-  devFunValue[39] = std::nan("1");
-  devFunValue[40] = std::nan("1");
-  devFunValue[41] = std::nan("1");
-  devFunValue[42] = std::nan("1");
-  devFunValue[43] = std::nan("1");
-  devFunValue[44] = std::nan("1");
-  devFunValue[45] = std::nan("1");
-  devFunValue[46] = std::nan("1");
-  devFunValue[47] = std::nan("1");
-  devFunValue[48] = std::nan("1");
-  devFunValue[49] = std::nan("1");
-  devFunValue[50] = std::nan("1");
-  devFunValue[51] = std::nan("1");
-  devFunValue[52] = std::nan("1");
-  devFunValue[53] = std::nan("1");
-  devFunValue[54] = std::nan("1");
-  devFunValue[55] = std::nan("1");
-  devFunValue[56] = std::nan("1");
-  devFunValue[57] = std::nan("1");
-  devFunValue[50] = std::nan("1");
-  devFunValue[58] = std::nan("1");
-  devFunValue[59] = std::nan("1");
+  devFunValue[0] = 0.125*(1. + gc[1] + gc[2] + 2* gc[0]) * (1.0 - gc[1])*(1.0 - gc[2]);
+  devFunValue[1] = 0.125*(1.0 - gc[0])*(1. + gc[0] + gc[2] + 2 * gc[1])*(1.0 - gc[2]);
+  devFunValue[2] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[0] + gc[1] + 2 *gc[2]);
+
+  devFunValue[9] = 0.125*(-1.0 - gc[1] - gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
+  devFunValue[10] = 0.125*(1.0 + gc[0])*  (1 - gc[0] + gc[2] + 2*gc[1])  *(1.0 - gc[2]);
+  devFunValue[11] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])* (1 - gc[0] + gc[1] + 2*gc[2]);
+  
+  devFunValue[6] = 0.125*(-1.0 + gc[1] - gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
+  devFunValue[7] = 0.125*(1.0 + gc[0])* (-1 + gc[0] - gc[2] + 2*gc[1]) *(1.0 - gc[2]);
+  devFunValue[8] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[0] - gc[1] + 2*gc[2]);
+
+  devFunValue[3] = 0.125*(1.0 - gc[1] + gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
+  devFunValue[4] = 0.125*(1.0 - gc[0])*(-1 - gc[0] - gc[2] + 2*gc[1])*(1.0 - gc[2]);
+  devFunValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[0] - gc[1] + 2*gc[2]);
+  
+  devFunValue[12] = 0.125*(1.0 + gc[1] - gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
+  devFunValue[13] = 0.125*(1.0 - gc[0])*(1 + gc[0] - gc[2] + 2*gc[1])*(1.0 + gc[2]);
+  devFunValue[14] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(-1.0 - gc[0] - gc[1] + 2*gc[2]);
+  
+  devFunValue[21] = 0.125*(-1.0 - gc[1] + gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
+  devFunValue[22] = 0.125*(1.0 + gc[0])*(1 - gc[0] - gc[2] + 2*gc[1])*(1.0 + gc[2]);
+  devFunValue[23] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0 + gc[0] - gc[1] + 2*gc[2]);
+  
+  devFunValue[18] = 0.125*(-1.0 + gc[1] + gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
+  devFunValue[19] = 0.125*(1.0 + gc[0])*(-1 + gc[0] + gc[2] + 2*gc[1])*(1.0 + gc[2]);
+  devFunValue[20] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0 + gc[0] + gc[1] + 2*gc[2]);
+
+  devFunValue[15] = 0.125*(1.0 - gc[1] - gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
+  devFunValue[16] = 0.125*(1.0 - gc[0])*(-1 - gc[0] + gc[2] + 2*gc[1])*(1.0 + gc[2]);
+  devFunValue[17] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0 - gc[0] + gc[1] + 2*gc[2]);
+
+  devFunValue[33] = 0.25*(-2.0*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
+  devFunValue[34] = 0.25*(1.0 - gc[0]*gc[0])*(-1)*(1.0 - gc[2]);
+  devFunValue[35] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(-1.0);
+
+  devFunValue[30] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[2]);
+  devFunValue[31] = 0.25*(-2.0*gc[1])*(1.0 + gc[0])*(1.0 - gc[2]);
+  devFunValue[32] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(-1.0);
+
+  devFunValue[27] = 0.25*(-2.0*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
+  devFunValue[28] = 0.25*(1.0 - gc[0]*gc[0])*(1.0)*(1.0 - gc[2]);
+  devFunValue[29] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(-1.0);
+
+  devFunValue[24] = 0.25*(1.0 - gc[1]*gc[1])*(-1.0)*(1.0 - gc[2]);
+  devFunValue[25] = 0.25*(-2.0*gc[1])*(1.0 - gc[0])*(1.0 - gc[2]);
+  devFunValue[26] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(-1.0);
+
+  devFunValue[48] = 0.25*(1.0 - gc[2]*gc[2])*(-1.0)*(1.0 - gc[1]);
+  devFunValue[49] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(-1.0);
+  devFunValue[50] = 0.25*(-2.0*gc[2])*(1.0 - gc[0])*(1.0 - gc[1]);
+
+  devFunValue[57] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[1]);
+  devFunValue[58] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(-1.0);
+  devFunValue[59] = 0.25*(-2.0*gc[2])*(1.0 + gc[0])*(1.0 - gc[1]);
+
+  devFunValue[54] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[1]);
+  devFunValue[55] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0]);
+  devFunValue[56] = 0.25*(-2.0*gc[2])*(1.0 + gc[0])*(1.0 + gc[1]);
+
+  devFunValue[51] = 0.25*(1.0 - gc[2]*gc[2])*(-1.0)*(1.0 + gc[1]);
+  devFunValue[52] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0]);
+  devFunValue[53] = 0.25*(-2.0*gc[2])*(1.0 - gc[0])*(1.0 + gc[1]);
+
+  devFunValue[45] = 0.25*(-2.0*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
+  devFunValue[46] = 0.25*(1.0 - gc[0]*gc[0])*(-1.0)*(1.0 + gc[2]);
+  devFunValue[47] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1]);
+
+  devFunValue[42] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[2]);
+  devFunValue[43] = 0.25*(-2.0*gc[1])*(1.0 + gc[0])*(1.0 + gc[2]);
+  devFunValue[44] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0]);
+
+  devFunValue[39] = 0.25*(-2.0*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
+  devFunValue[40] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[2]);
+  devFunValue[41] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1]);
+
+  devFunValue[36] = 0.25*(1.0 - gc[1]*gc[1])*(-1.0)*(1.0 + gc[2]);
+  devFunValue[37] = 0.25*(-2.0*gc[1])*(1.0 - gc[0])*(1.0 + gc[2]);
+  devFunValue[38] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0]);
   DEV_SHAPE_FUN_MACRO_END;
 }
 
index b888600b6915e50f639fbe2b141bd1dd0eb3a9ac..ba0273b8fb814241da57a88d856ec36474a27253 100644 (file)
@@ -1080,7 +1080,7 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
         mvDevOfShapeFunc.rearrange(1)
         ref2_mc = DataArrayDouble(ref2) ; ref2_mc.rearrange(1)
         self.assertTrue( mvDevOfShapeFunc.isEqual( ref2_mc, 1e-12) )
-
+class MEDCouplingBasicsTest7(unittest.TestCase):
     def testShapeFuncAndDerivative1(self):
         """
         This test focus
@@ -1097,32 +1097,60 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
             return funVal
         vec = [-0.85685375,-0.90643355,-0.90796825]
         eps = 1e-6
+        # pb derivée en Y sur le point 8/10 sur TETRA10A en dérivée Z pts [10/13,11/13,12/13,13/13] de NORM_PYRA13A
         # 3D cells
-        for gt in [NORM_HEXA8,NORM_PENTA6,NORM_PYRA5,NORM_PENTA15,NORM_HEXA20,NORM_HEXA27]: # type of cell for which derivatives are implemented
+        for gt in [NORM_TETRA4,NORM_TETRA10,NORM_HEXA8,NORM_PENTA6,NORM_PYRA5,NORM_PYRA13,NORM_PENTA15,NORM_PENTA6,NORM_PENTA18,NORM_HEXA20,NORM_HEXA27]: # type of 
+        # cell for which derivatives are implemented
             ref_coord = [list(elt) for elt in MEDCouplingGaussLocalization.GetDefaultReferenceCoordinatesOf(gt).getValuesAsTuple()]
+            der_computed = GetDerivative(ref_coord,vec)
+            der_computed.rearrange(3)
+
+            der_deduced = ( GetShapeFunc(ref_coord,[vec[0]+eps,vec[1],vec[2]])-GetShapeFunc(ref_coord,vec) ) / eps
+            delta_X = der_computed[:,0]-der_deduced
+            delta_X.abs()
+            #self.assertTrue(delta_X.findIdsNotInRange(-1e-4,+1e-4).empty())
 
+            der_deduced = ( GetShapeFunc(ref_coord,[vec[0],vec[1]+eps,vec[2]])-GetShapeFunc(ref_coord,vec) ) / eps
+            delta_Y = der_computed[:,1]-der_deduced
+            delta_Y.abs()
+            #self.assertTrue(delta_Y.findIdsNotInRange(-1e-5,+1e-5).empty())
+
+            der_deduced = ( GetShapeFunc(ref_coord,[vec[0],vec[1],vec[2]+eps])-GetShapeFunc(ref_coord,vec) ) / eps
+            delta_Z = der_computed[:,2]-der_deduced
+            delta_Z.abs()
+            #self.assertTrue(delta_Z.findIdsNotInRange(-1e-5,+1e-5).empty())
+        
+        # en Y TETRA10A (NORM_TETRA10,[[0.0, 1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0], [0.0, 0.5, 0.0], [0.0, 0.0, 0.5], [0.0, 0.5, 0.5], [0.5, 0.5, 0.0], [0.5, 0.0, 0.0], [0.5, 0.0, 0.5]])
+        # en Y (NORM_HEXA8,[[-1.0, 1.0, 0.0], [-1.0, -1.0, 0.0], [1.0, -1.0, 0.0], [1.0, 1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]),
+        # en X (NORM_PYRA13, [[1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [0.5, -0.5, 0.0], [-0.5, -0.5, 0.0], [-0.5, 0.5, 0.0], [0.5, 0.5, 0.0], [0.5, 0.0, 0.5], [0.0, -0.5, 0.5], [-0.5, 0.0, 0.5], [0.0, 0.5, 0.5]])
+        # en X (NORM_PENTA15,[[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [-1.0, -0.0, 1.0], [1.0, 1.0, 0.0], [1.0, 0.0, 0.0], [1.0, 0.0, 1.0], [-1.0, 0.5, 0.0], [-1.0, 0.0, 0.5], [-1.0, 0.5, 0.5], [1.0, 0.5, 0.0], [1.0, 0.0, 0.5], [1.0, 0.5, 0.5], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0]]),
+        # en X (NORM_PENTA18,[[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [-1.0, -0.0, 1.0], [1.0, 1.0, 0.0], [1.0, 0.0, 0.0], [1.0, 0.0, 1.0], [-1.0, 0.5, 0.0], [-1.0, 0.0, 0.5], [-1.0, 0.5, 0.5], [1.0, 0.5, 0.0], [1.0, 0.0, 0.5], [1.0, 0.5, 0.5], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0], [0.0, 0.5, 0.0], [0.0, 0.0, 0.5], [0.0, 0.5, 0.5]]),
+        for gt,ref_coord  in [(NORM_TETRA4,[[0.0, 1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]]),(NORM_HEXA8,[[-1.0, -1.0, -1.0], [-1.0, 1.0, -1.0], [1.0, 1.0, -1.0], [1.0, -1.0, -1.0], [-1.0, -1.0, 1.0], [-1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, -1.0, 1.0]]),(NORM_PENTA6,[[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [-1.0, -0.0, 1.0], [1.0, 1.0, 0.0], [1.0, 0.0, 0.0], [1.0, 0.0, 1.0]]),(NORM_PENTA6,[[-1.0, 1.0, 0.0], [-1.0, -1.0, 0.0], [1.0, -1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]),(NORM_PENTA6,[[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]),(NORM_PYRA5,[[1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]),(NORM_HEXA20,[[-1.0, -1.0, -1.0], [-1.0, 1.0, -1.0], [1.0, 1.0, -1.0], [1.0, -1.0, -1.0], [-1.0, -1.0, 1.0], [-1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, -1.0, 1.0], [-1.0, 0.0, -1.0], [0.0, 1.0, -1.0], [1.0, 0.0, -1.0], [0.0, -1.0, -1.0], [-1.0, 0.0, 1.0], [0.0, 1.0, 1.0], [1.0, 0.0, 1.0], [0.0, -1.0, 1.0], [-1.0, -1.0, 0.0], [-1.0, 1.0, 0.0], [1.0, 1.0, 0.0], [1.0, -1.0, 0.0]])]: # type of cell for which derivatives are implemented
             der_computed = GetDerivative(ref_coord,vec)
             der_computed.rearrange(3)
 
             der_deduced = ( GetShapeFunc(ref_coord,[vec[0]+eps,vec[1],vec[2]])-GetShapeFunc(ref_coord,vec) ) / eps
             delta_X = der_computed[:,0]-der_deduced
             delta_X.abs()
+            print(delta_X.getValues())
             self.assertTrue(delta_X.findIdsNotInRange(-1e-5,+1e-5).empty())
 
             der_deduced = ( GetShapeFunc(ref_coord,[vec[0],vec[1]+eps,vec[2]])-GetShapeFunc(ref_coord,vec) ) / eps
             delta_Y = der_computed[:,1]-der_deduced
             delta_Y.abs()
+            print(delta_Y.getValues())
             self.assertTrue(delta_Y.findIdsNotInRange(-1e-5,+1e-5).empty())
 
             der_deduced = ( GetShapeFunc(ref_coord,[vec[0],vec[1],vec[2]+eps])-GetShapeFunc(ref_coord,vec) ) / eps
             delta_Z = der_computed[:,2]-der_deduced
             delta_Z.abs()
+            print(delta_Z.getValues())
             self.assertTrue(delta_Z.findIdsNotInRange(-1e-5,+1e-5).empty())
 
         # 2D cells
         vec = [0.64,0.2]
 
-        for gt in [NORM_QUAD8,NORM_QUAD4,NORM_TRI3,NORM_TRI6,NORM_TRI7]:
+        for gt in [NORM_QUAD4,NORM_QUAD8,NORM_QUAD9,NORM_TRI3,NORM_TRI6,NORM_TRI7]:
             ref_coord = [list(elt) for elt in MEDCouplingGaussLocalization.GetDefaultReferenceCoordinatesOf(gt).getValuesAsTuple()]
 
             der_computed = GetDerivative(ref_coord,vec)
@@ -1139,20 +1167,24 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
             self.assertTrue(delta_Y.findIdsNotInRange(-1e-4,+1e-4).empty())
 
         # B version of TRI6, QUAD4 and QUAD8
-        for gt,ref_coord in [(NORM_TRI6,[[0., 0.], [1., 0.], [0., 1.], [0.5, 0.], [0.5, 0.5], [0., 0.5]]),
+        # en X (NORM_QUAD4,[[-1., 0.], [1., 0.], [0., 0.], [0., 0.]]) sur pt 3/4
+        for gt,ref_coord in [(NORM_TRI3,[[0.0, 0.0], [1.0, 0.0], [0.0, 1.0]]),(NORM_TRI6,[[0., 0.], [1., 0.], [0., 1.], [0.5, 0.], [0.5, 0.5], [0., 0.5]]),
             (NORM_QUAD4,[[-1., -1.], [1., -1.], [1., 1.], [-1., 1.]]),(NORM_QUAD8,[[-1., -1.], [1., -1.], [1., 1.], [-1., 1.], [0., -1.], [1., 0.], [0., 1.], [-1., 0.]])]:
+            print("**** {}".format(MEDCouplingUMesh.GetReprOfGeometricType(gt)))
             der_computed = GetDerivative(ref_coord,vec)
             der_computed.rearrange(2)
 
             der_deduced = ( GetShapeFunc(ref_coord,[vec[0]+eps,vec[1]])-GetShapeFunc(ref_coord,vec) ) / eps
             delta_X = der_computed[:,0]-der_deduced
             delta_X.abs()
-            self.assertTrue(delta_X.findIdsNotInRange(-1e-5,+1e-5).empty())
+            print(delta_X.getValues())
+            self.assertTrue(delta_X.findIdsNotInRange(-1e-4,+1e-4).empty())
 
             der_deduced = ( GetShapeFunc(ref_coord,[vec[0],vec[1]+eps])-GetShapeFunc(ref_coord,vec) ) / eps
             delta_Y = der_computed[:,1]-der_deduced
             delta_Y.abs()
-            self.assertTrue(delta_Y.findIdsNotInRange(-1e-5,+1e-5).empty())
+            print(delta_Y.getValues())
+            self.assertTrue(delta_Y.findIdsNotInRange(-1e-4,+1e-4).empty())
             
         # 1D cells
         vec = [0.64]