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

index 72c49b896bf6bd79fcf8edfaddbc893ee7c58d7b..3c0b8411d981a4e3207cdf7b957c7bd2657e7633 100644 (file)
@@ -904,6 +904,12 @@ void GaussInfo::seg3Init()
   funValue[1] = 0.5*(1.0 + gc[0])*gc[0];
   funValue[2] = (1.0 + gc[0])*(1.0 - gc[0]);
   SHAPE_FUN_MACRO_END;
+
+  DEV_SHAPE_FUN_MACRO_BEGIN;
+  devFunValue[0] = -0.5*(1-2*gc[0]);
+  devFunValue[1] = 0.5*(2*gc[0]+1);
+  devFunValue[2] = -2*gc[0];
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1160,6 +1166,29 @@ void GaussInfo::tria7aInit()
   funValue[5]=4*gc[1]*(1-4*gc[0]-gc[1]+3*gc[0]*(gc[0]+gc[1]));
   funValue[6]=27*gc[0]*gc[1]*(1-gc[0]-gc[1]);
   SHAPE_FUN_MACRO_END;
+  
+  DEV_SHAPE_FUN_MACRO_BEGIN;
+  devFunValue[0] = 7*gc[1]-3*gc[1]*(2*gc[0]+gc[1])+4*gc[0]-3;
+  devFunValue[1] = -3+4.0*gc[1]+7.0*gc[0]-6.0*gc[0]*gc[1]-3.0*gc[0]*gc[0];
+  
+  devFunValue[2] = -6*gc[0]*gc[1]+4*gc[0]-3*gc[1]*gc[1]+3*gc[1]-1;
+  devFunValue[3] = 3.0*gc[0]*(1-2.0*gc[1]-gc[0]);
+  
+  devFunValue[4] = 3.0*gc[1]*(1-2.0*gc[0]-gc[1]);
+  devFunValue[5] = -1+4.0*gc[1]+3.0*gc[0]-6.0*gc[0]*gc[1]-3.0*gc[0]*gc[0];
+  devFunValue[6] = 4*(6*gc[0]*gc[1]-2*gc[0]+3*gc[1]*gc[1]-4*gc[1]+1);
+  devFunValue[7] = 4.0*gc[0]*(-4.0+6.0*gc[1]+3.0*gc[0]);
+  
+  devFunValue[8] = 4*gc[1]*(6*gc[0]+3*gc[1]-2);
+  devFunValue[9] = 4.0*gc[0]*(-2.0+6.0*gc[1]+3.0*gc[0]);
+  
+  devFunValue[10] = 4*gc[1]*(3*(gc[1]+2*gc[0])-4);
+  devFunValue[11] = 4.0*(1-2.0*gc[1]-4.0*gc[0]+6.0*gc[0]*gc[1]+3.0*gc[0]*gc[0]);
+  
+  devFunValue[12] = 27*gc[1]*(-2*gc[0]-gc[1]+1);
+  devFunValue[13] = 27.*gc[0]*(1-2.0*gc[1]-gc[0]);
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1552,6 +1581,27 @@ void GaussInfo::quad9aInit()
   funValue[7] = 0.5*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1]);
   funValue[8] = (1.-gc[0]*gc[0])*(1.-gc[1]*gc[1]);
   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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1589,6 +1639,21 @@ void GaussInfo::tetra4aInit()
   funValue[2] = 1.0 - gc[0] - gc[1] - gc[2];
   funValue[3] = gc[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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1626,6 +1691,21 @@ void GaussInfo::tetra4bInit()
   funValue[1] = 1.0 - gc[0] - gc[1] - gc[2];
   funValue[3] = gc[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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1699,6 +1779,39 @@ void GaussInfo::tetra10aInit()
   funValue[8] = 4.0*gc[0]*gc[2];
   funValue[9] = 4.0*gc[0]*(1.0 - gc[0] - gc[1] - 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1771,6 +1884,39 @@ void GaussInfo::tetra10bInit()
   funValue[9] = 4.0*gc[0]*gc[2];
   funValue[8] = 4.0*gc[0]*(1.0 - gc[0] - gc[1] - 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1880,6 +2026,24 @@ void GaussInfo::pyra5bInit()
   funValue[1] = 0.25*(+gc[0] + gc[1] - 1.0)*(-gc[0] + gc[1] - 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -1986,6 +2150,48 @@ void GaussInfo::pyra13aInit()
   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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -2081,6 +2287,48 @@ void GaussInfo::pyra13bInit()
   funValue[12]=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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 
@@ -2209,6 +2457,27 @@ void GaussInfo::penta6bInit()
   funValue[5] = 0.5*gc[2]*(gc[0] + 1.0);
   funValue[4] = 0.5*(1.0 - gc[1] - gc[2])*(1.0 + gc[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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -2257,6 +2526,27 @@ void GaussInfo::penta6DegTria3aInit()
    funValue[4] = 0.;
    funValue[5] = 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -2305,6 +2595,27 @@ void GaussInfo::penta6DegTria3bInit()
    funValue[4] = 0.;
    funValue[5] = 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -2583,6 +2894,54 @@ void GaussInfo::penta15bInit()
   funValue[10] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
   funValue[9]  = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 + gc[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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 void GaussInfo::penta18aInit() 
@@ -2705,6 +3064,63 @@ void GaussInfo::penta18aInit()
   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);
   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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 void GaussInfo::penta18bInit() 
@@ -2827,6 +3243,63 @@ void GaussInfo::penta18bInit()
   funValue[16] = 4.0*gc[2]*(gc[0] * gc[0] - 1) * ( gc[2] + gc[1] - 1);
   funValue[15] = 4.0*gc[1]*(gc[0] * gc[0] - 1) * ( gc[2] + gc[1] - 1);
   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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -2987,6 +3460,33 @@ void GaussInfo::hexa8bInit()
   funValue[6] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
   funValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -3047,6 +3547,33 @@ void GaussInfo::hexa8DegQuad4aInit()
   funValue[6] = 0.;
   funValue[7] = 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -3097,16 +3624,43 @@ void GaussInfo::hexa8DegQuad4bInit()
    break;
    LOCAL_COORD_MACRO_END;
 
-   SHAPE_FUN_MACRO_BEGIN;
-   funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
-   funValue[1] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
-   funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
-   funValue[3] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
-   funValue[4] = 0.;
-   funValue[5] = 0.;
-   funValue[6] = 0.;
-   funValue[7] = 0.;
-   SHAPE_FUN_MACRO_END;
+  SHAPE_FUN_MACRO_BEGIN;
+  funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
+  funValue[1] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
+  funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
+  funValue[3] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
+  funValue[4] = 0.;
+  funValue[5] = 0.;
+  funValue[6] = 0.;
+  funValue[7] = 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -3158,16 +3712,43 @@ void GaussInfo::hexa8DegQuad4cInit()
 
    LOCAL_COORD_MACRO_END;
 
-   SHAPE_FUN_MACRO_BEGIN;
-   funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
-   funValue[1] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
-   funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
-   funValue[3] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
-   funValue[4] = 0. ;
-   funValue[5] = 0. ;
-   funValue[6] = 0. ;
-   funValue[7] = 0. ;
-   SHAPE_FUN_MACRO_END;
+  SHAPE_FUN_MACRO_BEGIN;
+  funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
+  funValue[1] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
+  funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
+  funValue[3] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
+  funValue[4] = 0. ;
+  funValue[5] = 0. ;
+  funValue[6] = 0. ;
+  funValue[7] = 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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 /*!
@@ -3537,6 +4118,70 @@ void GaussInfo::hexa20bInit()
   funValue[13] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
   funValue[12] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[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[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");
+  DEV_SHAPE_FUN_MACRO_END;
 }
 
 void GaussInfo::hexa27aInit()
index 89c249da6585bf60d1204039d9b3ff1e37b71523..b888600b6915e50f639fbe2b141bd1dd0eb3a9ac 100644 (file)
@@ -1097,7 +1097,7 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
             return funVal
         vec = [-0.85685375,-0.90643355,-0.90796825]
         eps = 1e-6
-
+        # 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
             ref_coord = [list(elt) for elt in MEDCouplingGaussLocalization.GetDefaultReferenceCoordinatesOf(gt).getValuesAsTuple()]
 
@@ -1122,7 +1122,7 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
         # 2D cells
         vec = [0.64,0.2]
 
-        for gt in [NORM_QUAD8,NORM_QUAD4,NORM_TRI3,NORM_TRI6]:
+        for gt in [NORM_QUAD8,NORM_QUAD4,NORM_TRI3,NORM_TRI6,NORM_TRI7]:
             ref_coord = [list(elt) for elt in MEDCouplingGaussLocalization.GetDefaultReferenceCoordinatesOf(gt).getValuesAsTuple()]
 
             der_computed = GetDerivative(ref_coord,vec)
@@ -1136,7 +1136,7 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
             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())
+            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]]),
@@ -1153,6 +1153,31 @@ class MEDCouplingBasicsTest7(unittest.TestCase):
             delta_Y = der_computed[:,1]-der_deduced
             delta_Y.abs()
             self.assertTrue(delta_Y.findIdsNotInRange(-1e-5,+1e-5).empty())
+            
+        # 1D cells
+        vec = [0.64]
+
+        for gt in [NORM_SEG2,NORM_SEG3]:
+            ref_coord = [list(elt) for elt in MEDCouplingGaussLocalization.GetDefaultReferenceCoordinatesOf(gt).getValuesAsTuple()]
+
+            der_computed = GetDerivative(ref_coord,vec)
+            der_computed.rearrange(1)
+
+            der_deduced = ( GetShapeFunc(ref_coord,[vec[0]+eps])-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())
+        
+        #B version of SEG2
+        for gt,ref_coord in [(NORM_SEG2,[[0.], [1.]])]:
+            der_computed = GetDerivative(ref_coord,vec)
+            der_computed.rearrange(1)
+
+            der_deduced = ( GetShapeFunc(ref_coord,[vec[0]+eps])-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())
+        
 
     def testComputeTriangleHeight0(self):
         arr = DataArrayDouble([0,1])