From: Anthony Geay Date: Wed, 8 Feb 2023 12:54:05 +0000 (+0100) Subject: WIP V2 of Emmanuelle X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2036b61d5a855895983c758ced58363c28c097e2;p=tools%2Fmedcoupling.git WIP V2 of Emmanuelle --- diff --git a/src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.cxx b/src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.cxx index 72c49b896..3c0b8411d 100644 --- a/src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.cxx +++ b/src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.cxx @@ -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() diff --git a/src/MEDCoupling_Swig/MEDCouplingBasicsTest7.py b/src/MEDCoupling_Swig/MEDCouplingBasicsTest7.py index 89c249da6..b888600b6 100644 --- a/src/MEDCoupling_Swig/MEDCouplingBasicsTest7.py +++ b/src/MEDCoupling_Swig/MEDCouplingBasicsTest7.py @@ -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])