1 // Copyright (C) 2007-2024 CEA, EDF
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 #include "InterpKernelGaussCoords.hxx"
22 #include "CellModel.hxx"
30 using namespace INTERP_KERNEL;
32 const double GaussInfo::SEG2A_REF[2]={-1.0, 1.0};
34 const double GaussInfo::SEG2B_REF[2]={0., 1.0};
36 const double GaussInfo::SEG3_REF[3]={-1.0, 1.0, 0.0};
38 const double GaussInfo::SEG4_REF[4]={-1.0, 1.0, -0.3333333333333333, 0.3333333333333333};
40 const double GaussInfo::TRIA3A_REF[6]={-1.0, 1.0, -1.0, -1.0, 1.0, -1.0};
42 const double GaussInfo::TRIA3B_REF[6]={0.0, 0.0, 1.0, 0.0, 0.0, 1.0};
44 const double GaussInfo::TRIA6A_REF[12]={-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 0.0, -1.0, 0.0, 0.0};
46 const double GaussInfo::TRIA6B_REF[12]={0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.5};
48 const double GaussInfo::TRIA7A_REF[14]={0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.5, 0.3333333333333333, 0.3333333333333333};
50 const double GaussInfo::QUAD4A_REF[8]={-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0};
52 const double GaussInfo::QUAD4B_REF[8]={-1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0};
54 const double GaussInfo::QUAD8A_REF[16]={-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0};
56 const double GaussInfo::QUAD8B_REF[16]={-1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, -1.0, 0.0};
58 const double GaussInfo::QUAD9A_REF[18]={-1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, -1.0, 0.0, 0.0, 0.0};
60 const double GaussInfo::TETRA4A_REF[12]={0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0};
62 const double GaussInfo::TETRA4B_REF[12]={0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0};
64 const double GaussInfo::TETRA10A_REF[30]={0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.0};
66 const double GaussInfo::TETRA10B_REF[30]={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};
68 const double GaussInfo::PYRA5A_REF[15]={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};
70 const double GaussInfo::PYRA5B_REF[15]={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};
72 const double GaussInfo::PYRA13A_REF[39]={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};
74 const double GaussInfo::PYRA13B_REF[39]={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};
76 const double GaussInfo::PENTA6A_REF[18]={-1.0, 1.0, 0.0, -1.0, -0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0};
78 const double GaussInfo::PENTA6B_REF[18]={-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};
80 const double GaussInfo::PENTA15A_REF[45]={-1.0, 1.0, 0.0, -1.0, -0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.5, 0.5, -1.0, 0.0, 0.5, -1.0, 0.5, 0.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, 1.0, 0.0, 0.5, 1.0, 0.5, 0.0};
82 const double GaussInfo::PENTA15B_REF[45]={-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};
84 const double GaussInfo::PENTA18A_REF[54]={-1.0, 1.0, 0.0, -1.0, -0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.5, 0.5, -1.0, 0.0, 0.5, -1.0, 0.5, 0.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, 1.0, 0.0, 0.5, 1.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0};
86 const double GaussInfo::PENTA18B_REF[54]={-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};
88 const double GaussInfo::HEXA8A_REF[24]={-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};
90 const double GaussInfo::HEXA8B_REF[24]={-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};
92 const double GaussInfo::HEXA20A_REF[60]={-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, -1.0, 1.0, 0.0, -1.0, 0.0, 1.0, -1.0, -1.0, 0.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, 0.0, -1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, -1.0, 0.0, 1.0};
94 const double GaussInfo::HEXA20B_REF[60]={-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};
96 const double GaussInfo::HEXA27A_REF[81]={-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, 0.0, 0.0, -1.0, -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.0, 0.0, 0.0};
98 //Define common part of the code in the MACRO
99 //---------------------------------------------------------------
100 #define LOCAL_COORD_MACRO_BEGIN \
101 _my_local_reference_coord.resize( _my_local_ref_dim*_my_local_nb_ref ); \
102 for( int refId = 0; refId < _my_local_nb_ref; refId++ ) \
104 double* coords = &_my_local_reference_coord[ refId*_my_local_ref_dim ]; \
108 //---------------------------------------------------------------
109 #define LOCAL_COORD_MACRO_END \
113 //---------------------------------------------------------------
114 #define SHAPE_FUN_MACRO_BEGIN \
115 for( int gaussId = 0 ; gaussId < _my_nb_gauss ; gaussId++ ) \
117 double* funValue = &_my_function_value[ gaussId * _my_nb_ref ]; \
118 const double* gc = &_my_gauss_coord[ gaussId * getGaussCoordDim() ];
120 //---------------------------------------------------------------
121 #define SHAPE_FUN_MACRO_END \
124 #define DEV_SHAPE_FUN_MACRO_BEGIN \
125 for( int gaussId = 0 ; gaussId < _my_nb_gauss ; gaussId++ ) \
127 double *devFunValue = _my_derivative_func_value.data() + gaussId * getReferenceCoordDim() * _my_nb_ref; \
128 const double *gc = _my_gauss_coord.data() + gaussId * getGaussCoordDim();
130 #define DEV_SHAPE_FUN_MACRO_END \
133 #define CHECK_MACRO \
136 std::ostringstream stream; \
137 stream << "Error in the gauss localization for the cell with type "; \
138 stream << cellModel.getRepr(); \
140 throw INTERP_KERNEL::Exception(stream.str().c_str()); \
144 //---------------------------------------------------------------
145 static bool IsEqual(double theLeft, double theRight)
147 static double EPS = 1.0E-3;
148 if(fabs(theLeft) + fabs(theRight) > EPS)
149 return fabs(theLeft-theRight)/(fabs(theLeft)+fabs(theRight)) < EPS;
154 ////////////////////////////////////////////////////////////////////////////////////////////////
155 // GAUSS INFO CLASS //
156 ////////////////////////////////////////////////////////////////////////////////////////////////
159 * Constructor of the GaussInfo
161 GaussInfo::GaussInfo( NormalizedCellType theGeometry,
162 const DataVector& theGaussCoord,
164 const DataVector& theReferenceCoord,
166 _my_geometry(theGeometry),
167 _my_nb_gauss(theNbGauss),
168 _my_gauss_coord(theGaussCoord),
169 _my_nb_ref(theNbRef),
170 _my_reference_coord(theReferenceCoord)
172 //Allocate shape function values
173 _my_function_value.resize( _my_nb_gauss * _my_nb_ref );
174 _my_derivative_func_value.resize( _my_nb_gauss * _my_nb_ref * getReferenceCoordDim() );
180 GaussInfo::~GaussInfo()
185 * Return dimension of the gauss coordinates
187 int GaussInfo::getGaussCoordDim() const
191 return (int)_my_gauss_coord.size()/_my_nb_gauss;
200 * Return dimension of the reference coordinates
202 int GaussInfo::getReferenceCoordDim() const
206 return (int)(_my_reference_coord.size()/_my_nb_ref);
215 * Return type of the cell.
217 NormalizedCellType GaussInfo::getCellType() const
223 * Return Nb of the gauss points.
225 int GaussInfo::getNbGauss() const
231 * Return Nb of the reference coordinates.
233 int GaussInfo::getNbRef() const
238 GaussInfo GaussInfo::convertToLinear() const
244 std::vector<double> a(SEG3_REF,SEG3_REF+3);
245 if(IsSatisfy(a,_my_reference_coord))
247 std::vector<double> c(SEG2A_REF,SEG2A_REF+2);
248 return GaussInfo(NORM_SEG2,_my_gauss_coord,getNbGauss(),c,2);
250 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for SEG3 !");
254 std::vector<double> a(TRIA6A_REF,TRIA6A_REF+12),b(TRIA6B_REF,TRIA6B_REF+12);
255 if(IsSatisfy(a,_my_reference_coord))
257 std::vector<double> c(TRIA3A_REF,TRIA3A_REF+6);
258 return GaussInfo(NORM_TRI3,_my_gauss_coord,getNbGauss(),c,3);
260 if(IsSatisfy(b,_my_reference_coord))
262 std::vector<double> c(TRIA3B_REF,TRIA3B_REF+6);
263 return GaussInfo(NORM_TRI3,_my_gauss_coord,getNbGauss(),c,3);
265 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for TRI6 !");
269 std::vector<double> a(TRIA7A_REF,TRIA7A_REF+14);
270 if(IsSatisfy(a,_my_reference_coord))
272 std::vector<double> c(TRIA3B_REF,TRIA3B_REF+6);
273 return GaussInfo(NORM_TRI3,_my_gauss_coord,getNbGauss(),c,3);
275 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for TRI7 !");
279 std::vector<double> a(QUAD8A_REF,QUAD8A_REF+16),b(QUAD8B_REF,QUAD8B_REF+16);
280 if(IsSatisfy(a,_my_reference_coord))
282 std::vector<double> c(QUAD4A_REF,QUAD4A_REF+8);
283 return GaussInfo(NORM_QUAD4,_my_gauss_coord,getNbGauss(),c,4);
285 if(IsSatisfy(b,_my_reference_coord))
287 std::vector<double> c(QUAD4B_REF,QUAD4B_REF+8);
288 return GaussInfo(NORM_QUAD4,_my_gauss_coord,getNbGauss(),c,4);
290 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for QUAD8 !");
294 std::vector<double> a(QUAD9A_REF,QUAD9A_REF+18);
295 if(IsSatisfy(a,_my_reference_coord))
297 std::vector<double> c(QUAD4B_REF,QUAD4B_REF+8);
298 return GaussInfo(NORM_QUAD4,_my_gauss_coord,getNbGauss(),c,4);
300 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for QUAD9 !");
304 std::vector<double> a(TETRA10A_REF,TETRA10A_REF+30),b(TETRA10B_REF,TETRA10B_REF+30);
305 if(IsSatisfy(a,_my_reference_coord))
307 std::vector<double> c(TETRA4A_REF,TETRA4A_REF+12);
308 return GaussInfo(NORM_TETRA4,_my_gauss_coord,getNbGauss(),c,4);
310 if(IsSatisfy(b,_my_reference_coord))
312 std::vector<double> c(TETRA4B_REF,TETRA4B_REF+12);
313 return GaussInfo(NORM_TETRA4,_my_gauss_coord,getNbGauss(),c,4);
315 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for TETRA10 !");
319 std::vector<double> a(PYRA13A_REF,PYRA13A_REF+39),b(PYRA13B_REF,PYRA13B_REF+39);
320 if(IsSatisfy(a,_my_reference_coord))
322 std::vector<double> c(PYRA5A_REF,PYRA5A_REF+15);
323 return GaussInfo(NORM_PYRA5,_my_gauss_coord,getNbGauss(),c,5);
325 if(IsSatisfy(b,_my_reference_coord))
327 std::vector<double> c(PYRA5B_REF,PYRA5B_REF+15);
328 return GaussInfo(NORM_PYRA5,_my_gauss_coord,getNbGauss(),c,5);
330 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for PYRA13 !");
334 std::vector<double> a(PENTA15A_REF,PENTA15A_REF+45),b(PENTA15B_REF,PENTA15B_REF+45);
335 if(IsSatisfy(a,_my_reference_coord))
337 std::vector<double> c(PENTA6A_REF,PENTA6A_REF+18);
338 return GaussInfo(NORM_PENTA6,_my_gauss_coord,getNbGauss(),c,6);
340 if(IsSatisfy(b,_my_reference_coord))
342 std::vector<double> c(PENTA6B_REF,PENTA6B_REF+18);
343 return GaussInfo(NORM_PENTA6,_my_gauss_coord,getNbGauss(),c,6);
345 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for PENTA15 !");
349 std::vector<double> a(PENTA18A_REF,PENTA18A_REF+54),b(PENTA18B_REF,PENTA18B_REF+54);
350 if(IsSatisfy(a,_my_reference_coord))
352 std::vector<double> c(PENTA6A_REF,PENTA6A_REF+18);
353 return GaussInfo(NORM_PENTA6,_my_gauss_coord,getNbGauss(),c,6);
355 if(IsSatisfy(b,_my_reference_coord))
357 std::vector<double> c(PENTA6B_REF,PENTA6B_REF+18);
358 return GaussInfo(NORM_PENTA6,_my_gauss_coord,getNbGauss(),c,6);
360 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for PENTA18 !");
364 std::vector<double> a(HEXA20A_REF,HEXA20A_REF+60),b(HEXA20B_REF,HEXA20B_REF+60);
365 if(IsSatisfy(a,_my_reference_coord))
367 std::vector<double> c(HEXA8A_REF,HEXA8A_REF+24);
368 return GaussInfo(NORM_HEXA8,_my_gauss_coord,getNbGauss(),c,8);
370 if(IsSatisfy(b,_my_reference_coord))
372 std::vector<double> c(HEXA8B_REF,HEXA8B_REF+24);
373 return GaussInfo(NORM_HEXA8,_my_gauss_coord,getNbGauss(),c,8);
375 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for HEXA20 !");
379 std::vector<double> a(HEXA27A_REF,HEXA27A_REF+81);
380 if(IsSatisfy(a,_my_reference_coord))
382 std::vector<double> c(HEXA8B_REF,HEXA8B_REF+24);
383 return GaussInfo(NORM_HEXA8,_my_gauss_coord,getNbGauss(),c,8);
385 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not recognized pattern for HEXA27 !");
388 throw INTERP_KERNEL::Exception("GaussInfo::convertToLinear : not implemented yet for other types than TETRA10, HEXA20, HEXA27, TRI3, QUAD8, QUAD8, PYRA13, PENTA15 !");
393 bool GaussInfo::IsSatisfy(const std::vector<double>& ref1, const std::vector<double>& ref2)
395 std::size_t sz(ref1.size());
398 for(std::size_t i=0;i<sz;i++)
399 if(!IsEqual(ref1[i],ref2[i]))
407 bool GaussInfo::isSatisfy()
410 bool anIsSatisfy = ((_my_local_nb_ref == _my_nb_ref) && (_my_local_ref_dim == getReferenceCoordDim()));
414 for( int refId = 0; refId < _my_local_nb_ref; refId++ )
416 double* refCoord = &_my_reference_coord[ refId*_my_local_ref_dim ];
417 double* localRefCoord = &_my_local_reference_coord[ refId*_my_local_ref_dim ];
418 bool anIsEqual = false;
419 for( int dimId = 0; dimId < _my_local_ref_dim; dimId++ )
421 anIsEqual = IsEqual( localRefCoord[dimId], refCoord[dimId]);
432 std::vector<double> GaussInfo::NormalizeCoordinatesIfNecessary(NormalizedCellType ct, int inputDim, const std::vector<double>& inputArray)
434 std::size_t sz(inputArray.size()),dim((std::size_t)inputDim);
436 throw INTERP_KERNEL::Exception("GaussInfo::NormalizeCoordinatesIfNecessary : invalid dimension ! Must be !=0 !");
438 throw INTERP_KERNEL::Exception("GaussInfo::NormalizeCoordinatesIfNecessary : invalid input array ! Inconsistent with the given dimension !");
439 const CellModel& cm(CellModel::GetCellModel(ct));
440 std::size_t baseDim((std::size_t)cm.getDimension());
443 std::size_t nbOfItems(sz/dim);
444 std::vector<double> ret(nbOfItems*baseDim);
447 for(std::size_t i=0;i<nbOfItems;i++)
451 ret[i*baseDim+j]=inputArray[i*dim+j];
458 for(std::size_t i=0;i<nbOfItems;i++)
462 ret[i*baseDim+j]=inputArray[i*dim+j];
468 std::vector<double> GaussInfo::GetDefaultReferenceCoordinatesOf(NormalizedCellType ct)
472 case INTERP_KERNEL::NORM_SEG2:
473 return std::vector<double>(SEG2A_REF,SEG2A_REF+sizeof(SEG2A_REF)/sizeof(double));
474 case INTERP_KERNEL::NORM_SEG3:
475 return std::vector<double>(SEG3_REF,SEG3_REF+sizeof(SEG3_REF)/sizeof(double));
476 case INTERP_KERNEL::NORM_SEG4:
477 return std::vector<double>(SEG4_REF,SEG4_REF+sizeof(SEG4_REF)/sizeof(double));
478 case INTERP_KERNEL::NORM_TRI3:
479 return std::vector<double>(TRIA3A_REF,TRIA3A_REF+sizeof(TRIA3A_REF)/sizeof(double));
480 case INTERP_KERNEL::NORM_TRI6:
481 return std::vector<double>(TRIA6A_REF,TRIA6A_REF+sizeof(TRIA6A_REF)/sizeof(double));
482 case INTERP_KERNEL::NORM_TRI7:
483 return std::vector<double>(TRIA7A_REF,TRIA7A_REF+sizeof(TRIA7A_REF)/sizeof(double));
484 case INTERP_KERNEL::NORM_QUAD4:
485 return std::vector<double>(QUAD4A_REF,QUAD4A_REF+sizeof(QUAD4A_REF)/sizeof(double));
486 case INTERP_KERNEL::NORM_QUAD8:
487 return std::vector<double>(QUAD8A_REF,QUAD8A_REF+sizeof(QUAD8A_REF)/sizeof(double));
488 case INTERP_KERNEL::NORM_QUAD9:
489 return std::vector<double>(QUAD9A_REF,QUAD9A_REF+sizeof(QUAD9A_REF)/sizeof(double));
490 case INTERP_KERNEL::NORM_TETRA4:
491 return std::vector<double>(TETRA4A_REF,TETRA4A_REF+sizeof(TETRA4A_REF)/sizeof(double));
492 case INTERP_KERNEL::NORM_TETRA10:
493 return std::vector<double>(TETRA10A_REF,TETRA10A_REF+sizeof(TETRA10A_REF)/sizeof(double));
494 case INTERP_KERNEL::NORM_PYRA5:
495 return std::vector<double>(PYRA5A_REF,PYRA5A_REF+sizeof(PYRA5A_REF)/sizeof(double));
496 case INTERP_KERNEL::NORM_PYRA13:
497 return std::vector<double>(PYRA13A_REF,PYRA13A_REF+sizeof(PYRA13A_REF)/sizeof(double));
498 case INTERP_KERNEL::NORM_PENTA6:
499 return std::vector<double>(PENTA6A_REF,PENTA6A_REF+sizeof(PENTA6A_REF)/sizeof(double));
500 case INTERP_KERNEL::NORM_PENTA15:
501 return std::vector<double>(PENTA15A_REF,PENTA15A_REF+sizeof(PENTA15A_REF)/sizeof(double));
502 case INTERP_KERNEL::NORM_PENTA18:
503 return std::vector<double>(PENTA18A_REF,PENTA18A_REF+sizeof(PENTA18A_REF)/sizeof(double));
504 case INTERP_KERNEL::NORM_HEXA8:
505 return std::vector<double>(HEXA8A_REF,HEXA8A_REF+sizeof(HEXA8A_REF)/sizeof(double));
506 case INTERP_KERNEL::NORM_HEXA20:
507 return std::vector<double>(HEXA20A_REF,HEXA20A_REF+sizeof(HEXA20A_REF)/sizeof(double));
508 case INTERP_KERNEL::NORM_HEXA27:
509 return std::vector<double>(HEXA27A_REF,HEXA27A_REF+sizeof(HEXA27A_REF)/sizeof(double));
511 THROW_IK_EXCEPTION("Input type " << ct << "is not managed by GetDefaultReferenceCoordinatesOf")
516 * Returns true if \a ptInRefCoo is in reference cell of type \a ct (regarding GetDefaultReferenceCoordinatesOf)
517 * \sa GetDefaultReferenceCoordinatesOf
519 bool GaussInfo::IsInOrOutForReference(NormalizedCellType ct, const double *ptInRefCoo, double eps)
523 case INTERP_KERNEL::NORM_SEG2:
524 case INTERP_KERNEL::NORM_SEG3:
526 return std::fabs(ptInRefCoo[0]) < 1.0+eps;
528 case INTERP_KERNEL::NORM_QUAD4:
529 case INTERP_KERNEL::NORM_QUAD8:
530 case INTERP_KERNEL::NORM_QUAD9:
532 return std::find_if(ptInRefCoo,ptInRefCoo+2,[eps](double v){ return std::fabs(v) > 1.0+eps; }) == ptInRefCoo+2;
534 case INTERP_KERNEL::NORM_HEXA8:
535 case INTERP_KERNEL::NORM_HEXA20:
536 case INTERP_KERNEL::NORM_HEXA27:
538 return std::find_if(ptInRefCoo,ptInRefCoo+3,[eps](double v){ return std::fabs(v) > 1.0+eps; }) == ptInRefCoo+3;
541 THROW_IK_EXCEPTION("IsInOrOutForReference : not implemented for this geo type !");
545 typedef void (*MapToShapeFunction)(GaussInfo& obj);
548 * Initialize the internal vectors
550 void GaussInfo::initLocalInfo()
552 bool aSatify = false;
553 const CellModel& cellModel(CellModel::GetCellModel(_my_geometry));
554 switch( _my_geometry )
557 _my_local_ref_dim = 0;
558 _my_local_nb_ref = 1;
560 aSatify = isSatisfy();
565 _my_local_ref_dim = 1;
566 _my_local_nb_ref = 2;
568 aSatify = isSatisfy();
572 aSatify = isSatisfy();
578 _my_local_ref_dim = 1;
579 _my_local_nb_ref = 3;
581 aSatify = isSatisfy();
586 _my_local_ref_dim = 1;
587 _my_local_nb_ref = 4;
589 aSatify = isSatisfy();
594 _my_local_ref_dim = 2;
595 _my_local_nb_ref = 3;
597 aSatify = isSatisfy();
602 aSatify = isSatisfy();
608 _my_local_ref_dim = 2;
609 _my_local_nb_ref = 6;
611 aSatify = isSatisfy();
615 aSatify = isSatisfy();
621 _my_local_ref_dim = 2;
622 _my_local_nb_ref = 7;
624 aSatify = isSatisfy();
630 _my_local_ref_dim = 2;
631 _my_local_nb_ref = 4;
632 MapToShapeFunction QUAD4PTR[]={Quad4aInit,Quad4bInit,Quad4cInit,Quad4DegSeg2Init};
633 std::size_t NB_OF_QUAD4PTR(sizeof(QUAD4PTR)/sizeof(MapToShapeFunction));
634 for(std::size_t i=0;i<NB_OF_QUAD4PTR && !aSatify;i++)
636 (QUAD4PTR[i])(*this);
637 aSatify = isSatisfy();
645 _my_local_ref_dim = 2;
646 _my_local_nb_ref = 8;
648 aSatify = isSatisfy();
653 aSatify = isSatisfy();
659 _my_local_ref_dim = 2;
660 _my_local_nb_ref = 9;
662 aSatify = isSatisfy();
667 _my_local_ref_dim = 3;
668 _my_local_nb_ref = 4;
670 aSatify = isSatisfy();
675 aSatify = isSatisfy();
681 _my_local_ref_dim = 3;
682 _my_local_nb_ref = 10;
684 aSatify = isSatisfy();
689 aSatify = isSatisfy();
695 _my_local_ref_dim = 3;
696 _my_local_nb_ref = 5;
698 aSatify = isSatisfy();
703 aSatify = isSatisfy();
709 _my_local_ref_dim = 3;
710 _my_local_nb_ref = 13;
712 aSatify = isSatisfy();
717 aSatify = isSatisfy();
724 _my_local_ref_dim = 3;
725 _my_local_nb_ref = 6;
726 MapToShapeFunction PENTA6PTR[]={Penta6aInit,Penta6bInit,Penta6DegTria3aInit,Penta6DegTria3bInit};
727 std::size_t NB_OF_PENTA6PTR(sizeof(PENTA6PTR)/sizeof(MapToShapeFunction));
728 for(std::size_t i=0;i<NB_OF_PENTA6PTR && !aSatify;i++)
730 (PENTA6PTR[i])(*this);
731 aSatify = isSatisfy();
737 /* _my_local_ref_dim = 3;
738 _my_local_nb_ref = 6;
740 aSatify = isSatisfy();
745 aSatify = isSatisfy();
752 _my_local_ref_dim = 3;
753 _my_local_nb_ref = 15;
754 MapToShapeFunction PENTA15PTR[]={Penta15aInit,Penta15bInit};
755 std::size_t NB_OF_PENTA15PTR(sizeof(PENTA15PTR)/sizeof(MapToShapeFunction));
756 for(std::size_t i=0;i<NB_OF_PENTA15PTR && !aSatify;i++)
758 (PENTA15PTR[i])(*this);
759 aSatify = isSatisfy();
767 _my_local_ref_dim = 3;
768 _my_local_nb_ref = 18;
769 MapToShapeFunction PENTA18PTR[]={Penta18aInit,Penta18bInit};
770 std::size_t NB_OF_PENTA18PTR(sizeof(PENTA18PTR)/sizeof(MapToShapeFunction));
771 for(std::size_t i=0;i<NB_OF_PENTA18PTR && !aSatify;i++)
773 (PENTA18PTR[i])(*this);
774 aSatify = isSatisfy();
782 _my_local_ref_dim = 3;
783 _my_local_nb_ref = 8;
784 MapToShapeFunction HEXA8PTR[]={Hexa8aInit,Hexa8bInit,Hexa8DegQuad4aInit,Hexa8DegQuad4bInit,Hexa8DegQuad4cInit};
785 std::size_t NB_OF_HEXA8PTR(sizeof(HEXA8PTR)/sizeof(MapToShapeFunction));
786 for(std::size_t i=0;i<NB_OF_HEXA8PTR && !aSatify;i++)
788 (HEXA8PTR[i])(*this);
789 aSatify = isSatisfy();
796 _my_local_ref_dim = 3;
797 _my_local_nb_ref = 20;
799 aSatify = isSatisfy();
804 aSatify = isSatisfy();
810 _my_local_ref_dim = 3;
811 _my_local_nb_ref = 27;
813 aSatify = isSatisfy();
818 throw INTERP_KERNEL::Exception("Not managed cell type !");
824 * Return shape function value by node id
826 const double *GaussInfo::getFunctionValues( const int theGaussId ) const
828 return _my_function_value.data() + _my_nb_ref*theGaussId ;
832 * Return the derivative of shape function value by node id
834 const double *GaussInfo::getDerivativeOfShapeFunctionAt( const int theGaussId ) const
836 return _my_derivative_func_value.data() + _my_nb_ref*getReferenceCoordDim()*theGaussId;
839 void GaussInfo::point1Init()
841 double *funValue(&_my_function_value[0]);
846 * Init Segment 2 Reference coordinates ans Shape function.
848 void GaussInfo::seg2aInit()
850 LOCAL_COORD_MACRO_BEGIN;
852 coords[0] = SEG2A_REF[0];
855 coords[0] = SEG2A_REF[1];
857 LOCAL_COORD_MACRO_END;
859 SHAPE_FUN_MACRO_BEGIN;
860 funValue[0] = 0.5*(1.0 - gc[0]);
861 funValue[1] = 0.5*(1.0 + gc[0]);
864 DEV_SHAPE_FUN_MACRO_BEGIN;
866 devFunValue[0] = -0.5;
868 devFunValue[1] = 0.5;
870 DEV_SHAPE_FUN_MACRO_END;
873 void GaussInfo::seg2bInit()
875 LOCAL_COORD_MACRO_BEGIN;
877 coords[0] = SEG2B_REF[0];
880 coords[0] = SEG2B_REF[1];
882 LOCAL_COORD_MACRO_END;
884 SHAPE_FUN_MACRO_BEGIN;
885 funValue[0] = 1.0 - gc[0];
889 DEV_SHAPE_FUN_MACRO_BEGIN;
891 devFunValue[0] = -1.0 ;
893 devFunValue[1] = 1.0 ;
895 DEV_SHAPE_FUN_MACRO_END;
899 * Init Segment 3 Reference coordinates ans Shape function.
901 void GaussInfo::seg3Init()
903 LOCAL_COORD_MACRO_BEGIN;
905 coords[0] = SEG3_REF[0];
908 coords[0] = SEG3_REF[1];
911 coords[0] = SEG3_REF[2];
912 LOCAL_COORD_MACRO_END;
914 SHAPE_FUN_MACRO_BEGIN;
915 funValue[0] = -0.5*(1.0 - gc[0])*gc[0];
916 funValue[1] = 0.5*(1.0 + gc[0])*gc[0];
917 funValue[2] = (1.0 + gc[0])*(1.0 - gc[0]);
920 DEV_SHAPE_FUN_MACRO_BEGIN;
921 devFunValue[0] = -0.5*(1-2*gc[0]);
922 devFunValue[1] = 0.5*(2*gc[0]+1);
923 devFunValue[2] = -2*gc[0];
924 DEV_SHAPE_FUN_MACRO_END;
928 * Init Segment 4 Reference coordinates ans Shape function.
930 void GaussInfo::seg4Init()
932 LOCAL_COORD_MACRO_BEGIN;
934 coords[0] = SEG4_REF[0];
937 coords[0] = SEG4_REF[1];
940 coords[0] = SEG4_REF[2];
943 coords[0] = SEG4_REF[3];
944 LOCAL_COORD_MACRO_END;
946 SHAPE_FUN_MACRO_BEGIN;
947 funValue[0] = 9.0/16.0 * (1-gc[0])*(gc[0]+1.0/3.0)*(gc[0]-1.0/3.0);
948 funValue[1] = -9.0/16.0 * (1+gc[0])*(1.0/3.0-gc[0])*(gc[0]+1.0/3.0);
949 funValue[2] = 27.0/16.0 * (gc[0]-1)*(gc[0]+1)*(gc[0]-1.0/3.0);
950 funValue[3] = -27.0/16.0 * (gc[0]-1)*(gc[0]+1)*(gc[0]+1.0/3.0);
953 DEV_SHAPE_FUN_MACRO_BEGIN;
954 devFunValue[0] = 9.0/16.0 * (-3.0*gc[0]*gc[0]+2.0*gc[0]+1.0/9.0);
955 devFunValue[1] = 9.0/16.0 * (3.0*gc[0]*gc[0]+2.0*gc[0]-1.0/9.0);
956 devFunValue[2] = 27.0/16.0 * (3.0*gc[0]*gc[0]-2.0/3.0*gc[0]-1.0);
957 devFunValue[3] = -27.0/16.0 * (3.0*gc[0]*gc[0]+2.0/3.0*gc[0]-1.0);
958 DEV_SHAPE_FUN_MACRO_END;
962 * Init Triangle Reference coordinates ans Shape function.
965 void GaussInfo::tria3aInit()
967 LOCAL_COORD_MACRO_BEGIN;
969 coords[0] = TRIA3A_REF[0];
970 coords[1] = TRIA3A_REF[1];
973 coords[0] = TRIA3A_REF[2];
974 coords[1] = TRIA3A_REF[3];
977 coords[0] = TRIA3A_REF[4];
978 coords[1] = TRIA3A_REF[5];
980 LOCAL_COORD_MACRO_END;
982 SHAPE_FUN_MACRO_BEGIN;
983 funValue[0] = 0.5*(1.0 + gc[1]);
984 funValue[1] = -0.5*(gc[0] + gc[1]);
985 funValue[2] = 0.5*(1.0 + gc[0]);
988 DEV_SHAPE_FUN_MACRO_BEGIN;
990 devFunValue[0] = 0.0 ;
991 devFunValue[1] = 0.5 ;
993 devFunValue[2] = -0.5;
994 devFunValue[3] = -0.5;
996 devFunValue[4] = 0.5;
997 devFunValue[5] = 0.0;
999 DEV_SHAPE_FUN_MACRO_END;
1003 * Init Triangle Reference coordinates ans Shape function.
1006 void GaussInfo::tria3bInit()
1008 LOCAL_COORD_MACRO_BEGIN;
1010 coords[0] = TRIA3B_REF[0];
1011 coords[1] = TRIA3B_REF[1];
1014 coords[0] = TRIA3B_REF[2];
1015 coords[1] = TRIA3B_REF[3];
1018 coords[0] = TRIA3B_REF[4];
1019 coords[1] = TRIA3B_REF[5];
1021 LOCAL_COORD_MACRO_END;
1023 SHAPE_FUN_MACRO_BEGIN;
1024 funValue[0] = 1.0 - gc[0] - gc[1];
1025 funValue[1] = gc[0];
1026 funValue[2] = gc[1];
1027 SHAPE_FUN_MACRO_END;
1029 DEV_SHAPE_FUN_MACRO_BEGIN;
1031 devFunValue[0] = -1.0 ;
1032 devFunValue[1] = -1.0 ;
1034 devFunValue[2] = 1.0 ;
1035 devFunValue[3] = 0.0 ;
1037 devFunValue[4] = 0.0 ;
1038 devFunValue[5] = 1.0 ;
1040 DEV_SHAPE_FUN_MACRO_END;
1044 * Init Quadratic Triangle Reference coordinates ans Shape function.
1047 void GaussInfo::tria6aInit()
1049 LOCAL_COORD_MACRO_BEGIN;
1051 coords[0] = TRIA6A_REF[0];
1052 coords[1] = TRIA6A_REF[1];
1055 coords[0] = TRIA6A_REF[2];
1056 coords[1] = TRIA6A_REF[3];
1059 coords[0] = TRIA6A_REF[4];
1060 coords[1] = TRIA6A_REF[5];
1063 coords[0] = TRIA6A_REF[6];
1064 coords[1] = TRIA6A_REF[7];
1067 coords[0] = TRIA6A_REF[8];
1068 coords[1] = TRIA6A_REF[9];
1071 coords[0] = TRIA6A_REF[10];
1072 coords[1] = TRIA6A_REF[11];
1074 LOCAL_COORD_MACRO_END;
1076 SHAPE_FUN_MACRO_BEGIN;
1077 funValue[0] = 0.5*(1.0 + gc[1])*gc[1];
1078 funValue[1] = 0.5*(gc[0] + gc[1])*(gc[0] + gc[1] + 1);
1079 funValue[2] = 0.5*(1.0 + gc[0])*gc[0];
1080 funValue[3] = -1.0*(1.0 + gc[1])*(gc[0] + gc[1]);
1081 funValue[4] = -1.0*(1.0 + gc[0])*(gc[0] + gc[1]);
1082 funValue[5] = (1.0 + gc[1])*(1.0 + gc[1]);
1083 SHAPE_FUN_MACRO_END;
1085 DEV_SHAPE_FUN_MACRO_BEGIN;
1087 devFunValue[0] = 0.0;
1088 devFunValue[1] = 0.5*( 2*gc[1] + 1.0 );
1090 devFunValue[2] = 0.5*( 2*gc[0] + 2.0*gc[1] + 1.0);
1091 devFunValue[3] = 0.5*( 2*gc[1] + 2.0*gc[0] + 1.0);
1093 devFunValue[4] = gc[0] + 0.5;
1094 devFunValue[5] = 0.0;
1096 devFunValue[6] = -1.0*(1.0 + gc[1]);
1097 devFunValue[7] = -1.0*(2*gc[1]+gc[0]+1.0);
1099 devFunValue[8] = -1.0*(2*gc[0]+gc[1]+1.0);
1100 devFunValue[9] = -1.0*(1.0 + gc[0]);
1102 devFunValue[10] = 0.0;
1103 devFunValue[11] = (2*gc[1]+2.0);
1105 DEV_SHAPE_FUN_MACRO_END;
1109 * Init Quadratic Triangle Reference coordinates ans Shape function.
1112 void GaussInfo::tria6bInit()
1114 LOCAL_COORD_MACRO_BEGIN;
1116 coords[0] = TRIA6B_REF[0];
1117 coords[1] = TRIA6B_REF[1];
1120 coords[0] = TRIA6B_REF[2];
1121 coords[1] = TRIA6B_REF[3];
1124 coords[0] = TRIA6B_REF[4];
1125 coords[1] = TRIA6B_REF[5];
1128 coords[0] = TRIA6B_REF[6];
1129 coords[1] = TRIA6B_REF[7];
1132 coords[0] = TRIA6B_REF[8];
1133 coords[1] = TRIA6B_REF[9];
1136 coords[0] = TRIA6B_REF[10];
1137 coords[1] = TRIA6B_REF[11];
1139 LOCAL_COORD_MACRO_END;
1141 SHAPE_FUN_MACRO_BEGIN;
1142 funValue[0] = (1.0 - gc[0] - gc[1])*(1.0 - 2.0*gc[0] - 2.0*gc[1]);
1143 funValue[1] = gc[0]*(2.0*gc[0] - 1.0);
1144 funValue[2] = gc[1]*(2.0*gc[1] - 1.0);
1145 funValue[3] = 4.0*gc[0]*(1.0 - gc[0] - gc[1]);
1146 funValue[4] = 4.0*gc[0]*gc[1];
1147 funValue[5] = 4.0*gc[1]*(1.0 - gc[0] - gc[1]);
1148 SHAPE_FUN_MACRO_END;
1150 DEV_SHAPE_FUN_MACRO_BEGIN;
1152 devFunValue[0] = 4*gc[0] + 4*gc[1] - 3.0 ;
1153 devFunValue[1] = 4*gc[1] + 4*gc[0] - 3.0 ;
1155 devFunValue[2] = 4*gc[0] - 1.0 ;
1156 devFunValue[3] = 0.0 ;
1158 devFunValue[4] = 0.0 ;
1159 devFunValue[5] = 4*gc[1] - 1.0 ;
1161 devFunValue[6] = -8.0*gc[0] - 4.0 * gc[1] + 4.0 ;
1162 devFunValue[7] = -4.0*gc[0] ;
1164 devFunValue[8] = 4.0*gc[1];
1165 devFunValue[9] = 4.0*gc[0];
1167 devFunValue[10] = -4.0*gc[1] ;
1168 devFunValue[11] = -8.0*gc[1] - 4.0*gc[0] + 4.0 ;
1170 DEV_SHAPE_FUN_MACRO_END;
1173 void GaussInfo::tria7aInit()
1175 LOCAL_COORD_MACRO_BEGIN;
1177 coords[0] = TRIA7A_REF[0];
1178 coords[1] = TRIA7A_REF[1];
1181 coords[0] = TRIA7A_REF[2];
1182 coords[1] = TRIA7A_REF[3];
1185 coords[0] = TRIA7A_REF[4];
1186 coords[1] = TRIA7A_REF[5];
1189 coords[0] = TRIA7A_REF[6];
1190 coords[1] = TRIA7A_REF[7];
1193 coords[0] = TRIA7A_REF[8];
1194 coords[1] = TRIA7A_REF[9];
1197 coords[0] = TRIA7A_REF[10];
1198 coords[1] = TRIA7A_REF[11];
1201 coords[0] = TRIA7A_REF[12];
1202 coords[1] = TRIA7A_REF[13];
1204 LOCAL_COORD_MACRO_END;
1206 SHAPE_FUN_MACRO_BEGIN;
1207 funValue[0]=1-3*(gc[0]+gc[1])+2*(gc[0]*gc[0]+gc[1]*gc[1])+7*gc[0]*gc[1]-3*gc[0]*gc[1]*(gc[0]+gc[1]);
1208 funValue[1]=gc[0]*(-1+2*gc[0]+3*gc[1]-3*gc[1]*(gc[0]+gc[1]));
1209 funValue[2]=gc[1]*(-1.+3.*gc[0]+2.*gc[1]-3.*gc[0]*(gc[0]+gc[1]));
1210 funValue[3]=4*gc[0]*(1-gc[0]-4*gc[1]+3*gc[1]*(gc[0]+gc[1]));
1211 funValue[4]=4*gc[0]*gc[1]*(-2+3*(gc[0]+gc[1]));
1212 funValue[5]=4*gc[1]*(1-4*gc[0]-gc[1]+3*gc[0]*(gc[0]+gc[1]));
1213 funValue[6]=27*gc[0]*gc[1]*(1-gc[0]-gc[1]);
1214 SHAPE_FUN_MACRO_END;
1216 DEV_SHAPE_FUN_MACRO_BEGIN;
1217 devFunValue[0] = 7*gc[1]-3*gc[1]*(2*gc[0]+gc[1])+4*gc[0]-3;
1218 devFunValue[1] = -3+4.0*gc[1]+7.0*gc[0]-6.0*gc[0]*gc[1]-3.0*gc[0]*gc[0];
1220 devFunValue[2] = -6*gc[0]*gc[1]+4*gc[0]-3*gc[1]*gc[1]+3*gc[1]-1;
1221 devFunValue[3] = 3.0*gc[0]*(1-2.0*gc[1]-gc[0]);
1223 devFunValue[4] = 3.0*gc[1]*(1-2.0*gc[0]-gc[1]);
1224 devFunValue[5] = -1+4.0*gc[1]+3.0*gc[0]-6.0*gc[0]*gc[1]-3.0*gc[0]*gc[0];
1226 devFunValue[6] = 4*(6*gc[0]*gc[1]-2*gc[0]+3*gc[1]*gc[1]-4*gc[1]+1);
1227 devFunValue[7] = 4.0*gc[0]*(-4.0+6.0*gc[1]+3.0*gc[0]);
1229 devFunValue[8] = 4*gc[1]*(6*gc[0]+3*gc[1]-2);
1230 devFunValue[9] = 4.0*gc[0]*(-2.0+6.0*gc[1]+3.0*gc[0]);
1232 devFunValue[10] = 4*gc[1]*(3*(gc[1]+2*gc[0])-4);
1233 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]);
1235 devFunValue[12] = 27*gc[1]*(-2*gc[0]-gc[1]+1);
1236 devFunValue[13] = 27.*gc[0]*(1-2.0*gc[1]-gc[0]);
1237 DEV_SHAPE_FUN_MACRO_END;
1241 * Init Quadrangle Reference coordinates ans Shape function.
1244 void GaussInfo::quad4aInit()
1246 LOCAL_COORD_MACRO_BEGIN;
1248 coords[0] = QUAD4A_REF[0];
1249 coords[1] = QUAD4A_REF[1];
1252 coords[0] = QUAD4A_REF[2];
1253 coords[1] = QUAD4A_REF[3];
1256 coords[0] = QUAD4A_REF[4];
1257 coords[1] = QUAD4A_REF[5];
1260 coords[0] = QUAD4A_REF[6];
1261 coords[1] = QUAD4A_REF[7];
1263 LOCAL_COORD_MACRO_END;
1265 SHAPE_FUN_MACRO_BEGIN;
1266 funValue[0] = 0.25*(1.0 + gc[1])*(1.0 - gc[0]);
1267 funValue[1] = 0.25*(1.0 - gc[1])*(1.0 - gc[0]);
1268 funValue[2] = 0.25*(1.0 - gc[1])*(1.0 + gc[0]);
1269 funValue[3] = 0.25*(1.0 + gc[1])*(1.0 + gc[0]);
1270 SHAPE_FUN_MACRO_END;
1272 DEV_SHAPE_FUN_MACRO_BEGIN;
1274 devFunValue[0] = -0.25*(1.0 + gc[1]);
1275 devFunValue[1] = 0.25*(1.0 - gc[0]);
1277 devFunValue[2] = -0.25*(1.0 - gc[1]);
1278 devFunValue[3] = -0.25*(1.0 - gc[0]);
1280 devFunValue[4] = 0.25*(1.0 - gc[1]);
1281 devFunValue[5] = -0.25*(1.0 + gc[0]);
1283 devFunValue[6] = 0.25*(1.0 + gc[1]);
1284 devFunValue[7] = 0.25*(1.0 + gc[0]);
1286 DEV_SHAPE_FUN_MACRO_END;
1290 * Init Quadrangle Reference coordinates ans Shape function.
1293 void GaussInfo::quad4bInit()
1295 LOCAL_COORD_MACRO_BEGIN;
1297 coords[0] = QUAD4B_REF[0];
1298 coords[1] = QUAD4B_REF[1];
1301 coords[0] = QUAD4B_REF[2];
1302 coords[1] = QUAD4B_REF[3];
1305 coords[0] = QUAD4B_REF[4];
1306 coords[1] = QUAD4B_REF[5];
1309 coords[0] = QUAD4B_REF[6];
1310 coords[1] = QUAD4B_REF[7];
1312 LOCAL_COORD_MACRO_END;
1314 SHAPE_FUN_MACRO_BEGIN;
1315 funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
1316 funValue[1] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
1317 funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
1318 funValue[3] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
1319 SHAPE_FUN_MACRO_END;
1321 DEV_SHAPE_FUN_MACRO_BEGIN;
1323 devFunValue[0] = -0.25*(1.0 - gc[1]);
1324 devFunValue[1] = -0.25*(1.0 - gc[0]);
1326 devFunValue[2] = 0.25*(1.0 - gc[1]);
1327 devFunValue[3] = -0.25*(1.0 + gc[0]);
1329 devFunValue[4] = 0.25*(1.0 + gc[1]);
1330 devFunValue[5] = 0.25*(1.0 + gc[0]);
1332 devFunValue[6] = -0.25*(1.0 + gc[1]);
1333 devFunValue[7] = 0.25*(1.0 - gc[0]);
1335 DEV_SHAPE_FUN_MACRO_END;
1338 void GaussInfo::quad4cInit()
1340 LOCAL_COORD_MACRO_BEGIN;
1358 LOCAL_COORD_MACRO_END;
1360 SHAPE_FUN_MACRO_BEGIN;
1361 funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
1362 funValue[1] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
1363 funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
1364 funValue[3] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
1365 SHAPE_FUN_MACRO_END;
1367 DEV_SHAPE_FUN_MACRO_BEGIN;
1369 devFunValue[0] = -0.25*(1.0 - gc[1]);
1370 devFunValue[1] = -0.25*(1.0 - gc[0]);
1372 devFunValue[2] = -0.25*(1.0 + gc[1]);
1373 devFunValue[3] = 0.25*(1.0 - gc[0]);
1375 devFunValue[4] = 0.25*(1.0 + gc[1]);
1376 devFunValue[5] = 0.25*(1.0 + gc[0]);
1378 devFunValue[6] = 0.25*(1.0 - gc[1]);
1379 devFunValue[7] = -0.25*(1.0 + gc[0]);
1381 DEV_SHAPE_FUN_MACRO_END;
1385 * This shapefunc map is same as degenerated seg2aInit
1387 void GaussInfo::quad4DegSeg2Init()
1389 LOCAL_COORD_MACRO_BEGIN;
1406 LOCAL_COORD_MACRO_END;
1408 SHAPE_FUN_MACRO_BEGIN;
1409 funValue[0] = 0.5*(1.0 - gc[0]);
1410 funValue[1] = 0.5*(1.0 + gc[0]);
1413 SHAPE_FUN_MACRO_END;
1415 DEV_SHAPE_FUN_MACRO_BEGIN;
1417 devFunValue[0] = -0.5;
1418 devFunValue[1] = 0.0;
1420 devFunValue[2] = 0.5;
1421 devFunValue[3] = 0.0;
1423 devFunValue[4] = 0.0;
1424 devFunValue[5] = 0.0;
1426 devFunValue[6] = 0.0;
1427 devFunValue[7] = 0.0;
1429 DEV_SHAPE_FUN_MACRO_END;
1433 * Init Quadratic Quadrangle Reference coordinates ans Shape function.
1436 void GaussInfo::quad8aInit()
1438 LOCAL_COORD_MACRO_BEGIN;
1440 coords[0] = QUAD8A_REF[0];
1441 coords[1] = QUAD8A_REF[1];
1444 coords[0] = QUAD8A_REF[2];
1445 coords[1] = QUAD8A_REF[3];
1448 coords[0] = QUAD8A_REF[4];
1449 coords[1] = QUAD8A_REF[5];
1452 coords[0] = QUAD8A_REF[6];
1453 coords[1] = QUAD8A_REF[7];
1456 coords[0] = QUAD8A_REF[8];
1457 coords[1] = QUAD8A_REF[9];
1460 coords[0] = QUAD8A_REF[10];
1461 coords[1] = QUAD8A_REF[11];
1464 coords[0] = QUAD8A_REF[12];
1465 coords[1] = QUAD8A_REF[13];
1468 coords[0] = QUAD8A_REF[14];
1469 coords[1] = QUAD8A_REF[15];
1471 LOCAL_COORD_MACRO_END;
1473 SHAPE_FUN_MACRO_BEGIN;
1474 funValue[0] = 0.25*(1.0 + gc[1])*(1.0 - gc[0])*(gc[1] - gc[0] - 1.0);
1475 funValue[1] = 0.25*(1.0 - gc[1])*(1.0 - gc[0])*(-gc[1] - gc[0] - 1.0);
1476 funValue[2] = 0.25*(1.0 - gc[1])*(1.0 + gc[0])*(-gc[1] + gc[0] - 1.0);
1477 funValue[3] = 0.25*(1.0 + gc[1])*(1.0 + gc[0])*(gc[1] + gc[0] - 1.0);
1478 funValue[4] = 0.5*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[1]);
1479 funValue[5] = 0.5*(1.0 - gc[1])*(1.0 - gc[0])*(1.0 + gc[0]);
1480 funValue[6] = 0.5*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 + gc[1]);
1481 funValue[7] = 0.5*(1.0 + gc[1])*(1.0 - gc[0])*(1.0 + gc[0]);
1482 SHAPE_FUN_MACRO_END;
1484 DEV_SHAPE_FUN_MACRO_BEGIN;
1486 devFunValue[0] = 0.25*(1.0 + gc[1])*(2*gc[0]-gc[1]);
1487 devFunValue[1] = 0.25*(1.0 - gc[0])*(2*gc[1]-gc[0]);
1489 devFunValue[2] = 0.25*(1.0 - gc[1])*(2*gc[0]+gc[1]);
1490 devFunValue[3] = 0.25*(1.0 - gc[0])*(2*gc[1]+gc[0]);
1492 devFunValue[4] = 0.25*(1.0 - gc[1])*(2*gc[0]-gc[1]);
1493 devFunValue[5] = 0.25*(1.0 + gc[0])*(2*gc[1]-gc[0]);
1495 devFunValue[6] = 0.25*(1.0 + gc[1])*(2*gc[0]+gc[1]);
1496 devFunValue[7] = 0.25*(1.0 + gc[0])*(2*gc[1]+gc[0]);
1498 devFunValue[8] = -0.5*(1.0 - gc[1])*(1.0 + gc[1]);
1499 devFunValue[9] = 0.5*(1.0 - gc[0])*(-2*gc[1]);
1501 devFunValue[10] = 0.5*(1.0 - gc[1])*(-2*gc[0]);
1502 devFunValue[11] = -0.5*(1.0 - gc[0])*(1.0 + gc[0]);
1504 devFunValue[12] = 0.5*(1.0 - gc[1])*(1.0 + gc[1]);
1505 devFunValue[13] = 0.5*(1.0 + gc[0])*(-2*gc[1]);
1507 devFunValue[14] = 0.5*(1.0 + gc[1])*(-2*gc[0]);
1508 devFunValue[15] = 0.5*(1.0 - gc[0])*(1.0 + gc[0]);
1510 DEV_SHAPE_FUN_MACRO_END;
1514 * Init Quadratic Quadrangle Reference coordinates ans Shape function.
1517 void GaussInfo::quad8bInit()
1519 LOCAL_COORD_MACRO_BEGIN;
1521 coords[0] = QUAD8B_REF[0];
1522 coords[1] = QUAD8B_REF[1];
1525 coords[0] = QUAD8B_REF[2];
1526 coords[1] = QUAD8B_REF[3];
1529 coords[0] = QUAD8B_REF[4];
1530 coords[1] = QUAD8B_REF[5];
1533 coords[0] = QUAD8B_REF[6];
1534 coords[1] = QUAD8B_REF[7];
1537 coords[0] = QUAD8B_REF[8];
1538 coords[1] = QUAD8B_REF[9];
1541 coords[0] = QUAD8B_REF[10];
1542 coords[1] = QUAD8B_REF[11];
1545 coords[0] = QUAD8B_REF[12];
1546 coords[1] = QUAD8B_REF[13];
1549 coords[0] = QUAD8B_REF[14];
1550 coords[1] = QUAD8B_REF[15];
1552 LOCAL_COORD_MACRO_END;
1554 SHAPE_FUN_MACRO_BEGIN;
1555 funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1])*(-1.0 - gc[0] - gc[1]);
1556 funValue[1] = 0.25*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0 + gc[0] - gc[1]);
1557 funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0 + gc[0] + gc[1]);
1558 funValue[3] = 0.25*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0 - gc[0] + gc[1]);
1559 funValue[4] = 0.5*(1.0 - gc[0]*gc[0])*(1.0 - gc[1]);
1560 funValue[5] = 0.5*(1.0 - gc[1]*gc[1])*(1.0 + gc[0]);
1561 funValue[6] = 0.5*(1.0 - gc[0]*gc[0])*(1.0 + gc[1]);
1562 funValue[7] = 0.5*(1.0 - gc[1]*gc[1])*(1.0 - gc[0]);
1563 SHAPE_FUN_MACRO_END;
1565 DEV_SHAPE_FUN_MACRO_BEGIN;
1567 devFunValue[0] = 0.25*(1.0 - gc[1])*(2*gc[0] + gc[1] );
1568 devFunValue[1] = 0.25*(1.0 - gc[0])*(2*gc[1] + gc[0] );
1570 devFunValue[2] = 0.25*(1.0 - gc[1])*(2*gc[0] - gc[1] );
1571 devFunValue[3] = 0.25*(1.0 + gc[0])*(2*gc[1] - gc[0] );
1573 devFunValue[4] = 0.25*(1.0 + gc[1])*(2*gc[0] + gc[1]);
1574 devFunValue[5] = 0.25*(1.0 + gc[0])*(2*gc[1] + gc[0]);
1576 devFunValue[6] = 0.25*( 1.0 + gc[1])*(2*gc[0] - gc[1] );
1577 devFunValue[7] = 0.25*(1.0 - gc[0])*(2*gc[1] - gc[0]);
1579 devFunValue[8] = -(1.0 - gc[1])*gc[0];
1580 devFunValue[9] = -0.5*(1.0 - gc[0]*gc[0]);
1582 devFunValue[10] = 0.5*(1.0 - gc[1]*gc[1]);
1583 devFunValue[11] = -(1.0 + gc[0])*gc[1];
1585 devFunValue[12] = -(1.0 + gc[1])*gc[0];
1586 devFunValue[13] = 0.5*(1.0 - gc[0]*gc[0]);
1588 devFunValue[14] = -0.5*(1.0 - gc[1]*gc[1]);
1589 devFunValue[15] = -(1.0 - gc[0])*gc[1];
1591 DEV_SHAPE_FUN_MACRO_END;
1594 void GaussInfo::quad9aInit()
1596 LOCAL_COORD_MACRO_BEGIN;
1598 coords[0] = QUAD9A_REF[0];
1599 coords[1] = QUAD9A_REF[1];
1602 coords[0] = QUAD9A_REF[2];
1603 coords[1] = QUAD9A_REF[3];
1606 coords[0] = QUAD9A_REF[4];
1607 coords[1] = QUAD9A_REF[5];
1610 coords[0] = QUAD9A_REF[6];
1611 coords[1] = QUAD9A_REF[7];
1614 coords[0] = QUAD9A_REF[8];
1615 coords[1] = QUAD9A_REF[9];
1618 coords[0] = QUAD9A_REF[10];
1619 coords[1] = QUAD9A_REF[11];
1622 coords[0] = QUAD9A_REF[12];
1623 coords[1] = QUAD9A_REF[13];
1626 coords[0] = QUAD9A_REF[14];
1627 coords[1] = QUAD9A_REF[15];
1630 coords[0] = QUAD9A_REF[16];
1631 coords[1] = QUAD9A_REF[17];
1633 LOCAL_COORD_MACRO_END;
1635 SHAPE_FUN_MACRO_BEGIN;
1636 funValue[0] = 0.25*gc[0]*gc[1]*(gc[0]-1.)*(gc[1]-1.);
1637 funValue[1] = 0.25*gc[0]*gc[1]*(gc[0]+1.)*(gc[1]-1.);
1638 funValue[2] = 0.25*gc[0]*gc[1]*(gc[0]+1.)*(gc[1]+1.);
1639 funValue[3] = 0.25*gc[0]*gc[1]*(gc[0]-1.)*(gc[1]+1.);
1640 funValue[4] = 0.5*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.);
1641 funValue[5] = 0.5*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1]);
1642 funValue[6] = 0.5*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.);
1643 funValue[7] = 0.5*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1]);
1644 funValue[8] = (1.-gc[0]*gc[0])*(1.-gc[1]*gc[1]);
1645 SHAPE_FUN_MACRO_END;
1647 DEV_SHAPE_FUN_MACRO_BEGIN;
1648 devFunValue[0] = 0.5*(2*gc[0]-1.0)*0.5*gc[1]*(gc[1]-1.0);
1649 devFunValue[1] = 0.5*gc[0]*(gc[0]-1.0)*0.5*(2*gc[1]-1.0);;
1651 devFunValue[2] = 0.5*(2.0*gc[0]+1.0)*0.5*gc[1]*(gc[1]-1.0);
1652 devFunValue[3] = 0.5*gc[0]*(1.0+gc[0])*0.5*(2.0*gc[1]-1.0);
1654 devFunValue[4] = 0.5*(2.0*gc[0]+1.0)*0.5*gc[1]*(1.0+gc[1]);
1655 devFunValue[5] = 0.5*gc[0]*(1.0+gc[0])*0.5*(2.0*gc[1]+1.0);
1657 devFunValue[6] = 0.5*(2.0*gc[0]-1.0)*0.5*gc[1]*(1.0+gc[1]);
1658 devFunValue[7] = 0.5*gc[0]*(gc[0]-1.0)*0.5*(2.0*gc[1]+1.0);
1660 devFunValue[8] = -2.0*gc[0]*0.5*gc[1]*(gc[1]-1.0);
1661 devFunValue[9] = (1.0+gc[0])*(1.0-gc[0])*0.5*(2.0*gc[1]-1.0);
1663 devFunValue[10] = 0.5*(2.0*gc[0]+1.0)*(1.0+gc[1])*(1.0-gc[1]);
1664 devFunValue[11] = 0.5*gc[0]*(1+gc[0])*-2.0*gc[1];
1666 devFunValue[12] = -2.0*gc[0]*0.5*gc[1]*(1.0+gc[1]);
1667 devFunValue[13] = (1.0+gc[0])*(1.0-gc[0])*0.5*(2.0*gc[1]+1.0);
1669 devFunValue[14] = 0.5*(2.0*gc[0]-1.0)*(1.0+gc[1])*(1.0-gc[1]);
1670 devFunValue[15] = 0.5*gc[0]*(gc[0]-1.0)*-2.0*gc[1];
1672 devFunValue[16] = -2.0*gc[0]*(1.0+gc[1])*(1.0-gc[1]);
1673 devFunValue[17] = (1.0+gc[0])*(1.0-gc[0])*-2.0*gc[1];
1674 DEV_SHAPE_FUN_MACRO_END;
1678 * Init Tetrahedron Reference coordinates ans Shape function.
1681 void GaussInfo::tetra4aInit()
1683 LOCAL_COORD_MACRO_BEGIN;
1685 coords[0] = TETRA4A_REF[0];
1686 coords[1] = TETRA4A_REF[1];
1687 coords[2] = TETRA4A_REF[2];
1690 coords[0] = TETRA4A_REF[3];
1691 coords[1] = TETRA4A_REF[4];
1692 coords[2] = TETRA4A_REF[5];
1695 coords[0] = TETRA4A_REF[6];
1696 coords[1] = TETRA4A_REF[7];
1697 coords[2] = TETRA4A_REF[8];
1700 coords[0] = TETRA4A_REF[9];
1701 coords[1] = TETRA4A_REF[10];
1702 coords[2] = TETRA4A_REF[11];
1704 LOCAL_COORD_MACRO_END;
1706 SHAPE_FUN_MACRO_BEGIN;
1707 funValue[0] = gc[1];
1708 funValue[1] = gc[2];
1709 funValue[2] = 1.0 - gc[0] - gc[1] - gc[2];
1710 funValue[3] = gc[0];
1711 SHAPE_FUN_MACRO_END;
1713 DEV_SHAPE_FUN_MACRO_BEGIN;
1714 devFunValue[0] = 0.0;
1715 devFunValue[1] = 1.0;
1716 devFunValue[2] = 0.0;
1718 devFunValue[3] = 0.0;
1719 devFunValue[4] = 0.0;
1720 devFunValue[5] = 1.0;
1722 devFunValue[6] = -1.0;
1723 devFunValue[7] = -1.0;
1724 devFunValue[8] = -1.0;
1726 devFunValue[9] = 1.0;
1727 devFunValue[10] = 0.0;
1728 devFunValue[11] = 0.0;
1729 DEV_SHAPE_FUN_MACRO_END;
1733 * Init Tetrahedron Reference coordinates ans Shape function.
1736 void GaussInfo::tetra4bInit()
1738 LOCAL_COORD_MACRO_BEGIN;
1740 coords[0] = TETRA4B_REF[0];
1741 coords[1] = TETRA4B_REF[1];
1742 coords[2] = TETRA4B_REF[2];
1745 coords[0] = TETRA4B_REF[3];
1746 coords[1] = TETRA4B_REF[4];
1747 coords[2] = TETRA4B_REF[5];
1750 coords[0] = TETRA4B_REF[6];
1751 coords[1] = TETRA4B_REF[7];
1752 coords[2] = TETRA4B_REF[8];
1755 coords[0] = TETRA4B_REF[9];
1756 coords[1] = TETRA4B_REF[10];
1757 coords[2] = TETRA4B_REF[11];
1759 LOCAL_COORD_MACRO_END;
1761 SHAPE_FUN_MACRO_BEGIN;
1762 funValue[0] = gc[1];
1763 funValue[2] = gc[2];
1764 funValue[1] = 1.0 - gc[0] - gc[1] - gc[2];
1765 funValue[3] = gc[0];
1766 SHAPE_FUN_MACRO_END;
1768 DEV_SHAPE_FUN_MACRO_BEGIN;
1769 devFunValue[0] = 0.0;
1770 devFunValue[1] = 1.0;
1771 devFunValue[2] = 0.0;
1773 devFunValue[3] = -1.0;
1774 devFunValue[4] = -1.0;
1775 devFunValue[5] = -1.0;
1777 devFunValue[6] = 0.0;
1778 devFunValue[7] = 0.0;
1779 devFunValue[8] = 1.0;
1781 devFunValue[9] = 1.0;
1782 devFunValue[10] = 0.0;
1783 devFunValue[11] = 0.0;
1784 DEV_SHAPE_FUN_MACRO_END;
1788 * Init Quadratic Tetrahedron Reference coordinates ans Shape function.
1791 void GaussInfo::tetra10aInit()
1793 LOCAL_COORD_MACRO_BEGIN;
1795 coords[0] = TETRA10A_REF[0];
1796 coords[1] = TETRA10A_REF[1];
1797 coords[2] = TETRA10A_REF[2];
1800 coords[0] = TETRA10A_REF[3];
1801 coords[1] = TETRA10A_REF[4];
1802 coords[2] = TETRA10A_REF[5];
1805 coords[0] = TETRA10A_REF[6];
1806 coords[1] = TETRA10A_REF[7];
1807 coords[2] = TETRA10A_REF[8];
1810 coords[0] = TETRA10A_REF[9];
1811 coords[1] = TETRA10A_REF[10];
1812 coords[2] = TETRA10A_REF[11];
1815 coords[0] = TETRA10A_REF[12];
1816 coords[1] = TETRA10A_REF[13];
1817 coords[2] = TETRA10A_REF[14];
1820 coords[0] = TETRA10A_REF[15];
1821 coords[1] = TETRA10A_REF[16];
1822 coords[2] = TETRA10A_REF[17];
1825 coords[0] = TETRA10A_REF[18];
1826 coords[1] = TETRA10A_REF[19];
1827 coords[2] = TETRA10A_REF[20];
1830 coords[0] = TETRA10A_REF[21];
1831 coords[1] = TETRA10A_REF[22];
1832 coords[2] = TETRA10A_REF[23];
1835 coords[0] = TETRA10A_REF[24];
1836 coords[1] = TETRA10A_REF[25];
1837 coords[2] = TETRA10A_REF[26];
1840 coords[0] = TETRA10A_REF[27];
1841 coords[1] = TETRA10A_REF[28];
1842 coords[2] = TETRA10A_REF[29];
1844 LOCAL_COORD_MACRO_END;
1846 SHAPE_FUN_MACRO_BEGIN;
1847 funValue[0] = gc[1]*(2.0*gc[1] - 1.0);
1848 funValue[1] = gc[2]*(2.0*gc[2] - 1.0);
1849 funValue[2] = (1.0 - gc[0] - gc[1] - gc[2])*(1.0 - 2.0*gc[0] - 2.0*gc[1] - 2.0*gc[2]);
1850 funValue[3] = gc[0]*(2.0*gc[0] - 1.0);
1851 funValue[4] = 4.0*gc[1]*gc[2];
1852 funValue[5] = 4.0*gc[2]*(1.0 - gc[0] - gc[1] - gc[2]);
1853 funValue[6] = 4.0*gc[1]*(1.0 - gc[0] - gc[1] - gc[2]);
1854 funValue[7] = 4.0*gc[0]*gc[1];
1855 funValue[8] = 4.0*gc[0]*gc[2];
1856 funValue[9] = 4.0*gc[0]*(1.0 - gc[0] - gc[1] - gc[2]);
1857 SHAPE_FUN_MACRO_END;
1859 DEV_SHAPE_FUN_MACRO_BEGIN;
1860 devFunValue[0] = 0.0;
1861 devFunValue[1] = 4.0*gc[1]-1.0;
1862 devFunValue[2] = 0.0;
1864 devFunValue[3] = 0.0;
1865 devFunValue[4] = 0.0;
1866 devFunValue[5] = 4.0*gc[2]-1.0;
1868 devFunValue[6] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
1869 devFunValue[7] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
1870 devFunValue[8] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
1872 devFunValue[9] = 4.0*gc[0]-1.0;
1873 devFunValue[10] = 0.0;
1874 devFunValue[11] = 0.0;
1876 devFunValue[12] = 0.0;
1877 devFunValue[13] = 4.0*gc[2];
1878 devFunValue[14] = 4.0*gc[1];
1880 devFunValue[15] = -4.0*gc[2];
1881 devFunValue[16] = -4.0*gc[2];
1882 devFunValue[17] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[2]);
1884 devFunValue[18] = -4.0*gc[1];
1885 devFunValue[19] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[1]);;
1886 devFunValue[20] = -4.0*gc[1];
1888 devFunValue[21] = 4.0*gc[1];
1889 devFunValue[22] = 4.0*gc[0];
1890 devFunValue[23] = 0.0;
1892 devFunValue[24] = 4.0*gc[2];
1893 devFunValue[25] = 0.0;
1894 devFunValue[26] = 4.0*gc[0];
1896 devFunValue[27] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[0]);
1897 devFunValue[28] = -4.0*gc[0];
1898 devFunValue[29] = -4.0*gc[0];
1899 DEV_SHAPE_FUN_MACRO_END;
1903 * Init Quadratic Tetrahedron Reference coordinates ans Shape function.
1906 void GaussInfo::tetra10bInit()
1908 LOCAL_COORD_MACRO_BEGIN;
1910 coords[0] = TETRA10B_REF[0];
1911 coords[1] = TETRA10B_REF[1];
1912 coords[2] = TETRA10B_REF[2];
1915 coords[0] = TETRA10B_REF[3];
1916 coords[1] = TETRA10B_REF[4];
1917 coords[2] = TETRA10B_REF[5];
1920 coords[0] = TETRA10B_REF[6];
1921 coords[1] = TETRA10B_REF[7];
1922 coords[2] = TETRA10B_REF[8];
1925 coords[0] = TETRA10B_REF[9];
1926 coords[1] = TETRA10B_REF[10];
1927 coords[2] = TETRA10B_REF[11];
1930 coords[0] = TETRA10B_REF[12];
1931 coords[1] = TETRA10B_REF[13];
1932 coords[2] = TETRA10B_REF[14];
1935 coords[0] = TETRA10B_REF[15];
1936 coords[1] = TETRA10B_REF[16];
1937 coords[2] = TETRA10B_REF[17];
1940 coords[0] = TETRA10B_REF[18];
1941 coords[1] = TETRA10B_REF[19];
1942 coords[2] = TETRA10B_REF[20];
1945 coords[0] = TETRA10B_REF[21];
1946 coords[1] = TETRA10B_REF[22];
1947 coords[2] = TETRA10B_REF[23];
1950 coords[0] = TETRA10B_REF[24];
1951 coords[1] = TETRA10B_REF[25];
1952 coords[2] = TETRA10B_REF[26];
1955 coords[0] = TETRA10B_REF[27];
1956 coords[1] = TETRA10B_REF[28];
1957 coords[2] = TETRA10B_REF[29];
1959 LOCAL_COORD_MACRO_END;
1960 SHAPE_FUN_MACRO_BEGIN;
1961 funValue[0] = gc[1]*(2.0*gc[1] - 1.0);
1962 funValue[2] = gc[2]*(2.0*gc[2] - 1.0);
1963 funValue[1] = (1.0 - gc[0] - gc[1] - gc[2])*(1.0 - 2.0*gc[0] - 2.0*gc[1] - 2.0*gc[2]);
1964 funValue[3] = gc[0]*(2.0*gc[0] - 1.0);
1965 funValue[6] = 4.0*gc[1]*gc[2];
1966 funValue[5] = 4.0*gc[2]*(1.0 - gc[0] - gc[1] - gc[2]);
1967 funValue[4] = 4.0*gc[1]*(1.0 - gc[0] - gc[1] - gc[2]);
1968 funValue[7] = 4.0*gc[0]*gc[1];
1969 funValue[9] = 4.0*gc[0]*gc[2];
1970 funValue[8] = 4.0*gc[0]*(1.0 - gc[0] - gc[1] - gc[2]);
1971 SHAPE_FUN_MACRO_END;
1973 DEV_SHAPE_FUN_MACRO_BEGIN;
1974 devFunValue[0] = 0.0;
1975 devFunValue[1] = 4.0*gc[1]-1.0;
1976 devFunValue[2] = 0.0;
1978 devFunValue[3] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
1979 devFunValue[4] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
1980 devFunValue[5] = 1.0-4.0*(1-gc[0]-gc[1]-gc[2]);
1982 devFunValue[6] = 0.0;
1983 devFunValue[7] = 0.0;
1984 devFunValue[8] = 4.0*gc[2]-1.0;
1986 devFunValue[9] = 4.0*gc[0]-1.0;
1987 devFunValue[10] = 0.0;
1988 devFunValue[11] = 0.0;
1990 devFunValue[12] = -4.0*gc[1];
1991 devFunValue[13] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[1]);;
1992 devFunValue[14] = -4.0*gc[1];
1994 devFunValue[15] = -4.0*gc[2];
1995 devFunValue[16] = -4.0*gc[2];
1996 devFunValue[17] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[2]);
1998 devFunValue[18] = 0.0;
1999 devFunValue[19] = 4.0*gc[2];
2000 devFunValue[20] = 4.0*gc[1];
2002 devFunValue[21] = 4.0*gc[1];
2003 devFunValue[22] = 4.0*gc[0];
2004 devFunValue[23] = 0.0;
2006 devFunValue[24] = 4.0*((1-gc[0]-gc[1]-gc[2])-gc[0]);
2007 devFunValue[25] = -4.0*gc[0];
2008 devFunValue[26] = -4.0*gc[0];
2010 devFunValue[27] = 4.0*gc[2];
2011 devFunValue[28] = 0.0;
2012 devFunValue[29] = 4.0*gc[0];
2013 DEV_SHAPE_FUN_MACRO_END;
2017 * Init Pyramid Reference coordinates ans Shape function.
2020 void GaussInfo::pyra5aInit()
2022 LOCAL_COORD_MACRO_BEGIN;
2024 coords[0] = PYRA5A_REF[0];
2025 coords[1] = PYRA5A_REF[1];
2026 coords[2] = PYRA5A_REF[2];
2029 coords[0] = PYRA5A_REF[3];
2030 coords[1] = PYRA5A_REF[4];
2031 coords[2] = PYRA5A_REF[5];
2034 coords[0] = PYRA5A_REF[6];
2035 coords[1] = PYRA5A_REF[7];
2036 coords[2] = PYRA5A_REF[8];
2039 coords[0] = PYRA5A_REF[9];
2040 coords[1] = PYRA5A_REF[10];
2041 coords[2] = PYRA5A_REF[11];
2044 coords[0] = PYRA5A_REF[12];
2045 coords[1] = PYRA5A_REF[13];
2046 coords[2] = PYRA5A_REF[14];
2048 LOCAL_COORD_MACRO_END;
2050 SHAPE_FUN_MACRO_BEGIN;
2051 funValue[0] = 0.25*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2052 funValue[1] = 0.25*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2053 funValue[2] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2054 funValue[3] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2055 funValue[4] = gc[2];
2056 SHAPE_FUN_MACRO_END;
2058 DEV_SHAPE_FUN_MACRO_BEGIN;
2060 devFunValue[0] = (-(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2061 devFunValue[1] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2062 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);
2064 devFunValue[3] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2065 devFunValue[4] = (-(-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2066 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);
2068 devFunValue[6] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2069 devFunValue[7] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2070 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);
2072 devFunValue[9] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2073 devFunValue[10] = ((gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2074 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);
2076 devFunValue[12] = 0.0;
2077 devFunValue[13] = 0.0;
2078 devFunValue[14] = 1.0;
2080 DEV_SHAPE_FUN_MACRO_END;
2084 * Init Pyramid Reference coordinates ans Shape function.
2087 void GaussInfo::pyra5bInit()
2089 LOCAL_COORD_MACRO_BEGIN;
2091 coords[0] = PYRA5B_REF[0];
2092 coords[1] = PYRA5B_REF[1];
2093 coords[2] = PYRA5B_REF[2];
2096 coords[0] = PYRA5B_REF[3];
2097 coords[1] = PYRA5B_REF[4];
2098 coords[2] = PYRA5B_REF[5];
2101 coords[0] = PYRA5B_REF[6];
2102 coords[1] = PYRA5B_REF[7];
2103 coords[2] = PYRA5B_REF[8];
2106 coords[0] = PYRA5B_REF[9];
2107 coords[1] = PYRA5B_REF[10];
2108 coords[2] = PYRA5B_REF[11];
2111 coords[0] = PYRA5B_REF[12];
2112 coords[1] = PYRA5B_REF[13];
2113 coords[2] = PYRA5B_REF[14];
2115 LOCAL_COORD_MACRO_END;
2117 SHAPE_FUN_MACRO_BEGIN;
2118 funValue[0] = 0.25*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2119 funValue[3] = 0.25*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2120 funValue[2] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2121 funValue[1] = 0.25*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2122 funValue[4] = gc[2];
2123 SHAPE_FUN_MACRO_END;
2125 DEV_SHAPE_FUN_MACRO_BEGIN;
2126 devFunValue[0] = (-(-gc[0]+gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2127 devFunValue[1] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2128 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);
2130 devFunValue[3] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2131 devFunValue[4] = ((gc[0]+gc[1]+gc[2]-1.0)+(-gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2132 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);
2134 devFunValue[6] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2135 devFunValue[7] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2136 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);
2138 devFunValue[9] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2139 devFunValue[10] = (-(-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))/((1.0-gc[2])*4.0);
2140 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);
2142 devFunValue[12] = 0.0;
2143 devFunValue[13] = 0.0;
2144 devFunValue[14] = 1.0;
2145 DEV_SHAPE_FUN_MACRO_END;
2149 * Init Quadratic Pyramid Reference coordinates ans Shape function.
2152 void GaussInfo::pyra13aInit()
2154 LOCAL_COORD_MACRO_BEGIN;
2156 coords[0] = PYRA13A_REF[0];
2157 coords[1] = PYRA13A_REF[1];
2158 coords[2] = PYRA13A_REF[2];
2161 coords[0] = PYRA13A_REF[3];
2162 coords[1] = PYRA13A_REF[4];
2163 coords[2] = PYRA13A_REF[5];
2166 coords[0] = PYRA13A_REF[6];
2167 coords[1] = PYRA13A_REF[7];
2168 coords[2] = PYRA13A_REF[8];
2171 coords[0] = PYRA13A_REF[9];
2172 coords[1] = PYRA13A_REF[10];
2173 coords[2] = PYRA13A_REF[11];
2176 coords[0] = PYRA13A_REF[12];
2177 coords[1] = PYRA13A_REF[13];
2178 coords[2] = PYRA13A_REF[14];
2181 coords[0] = PYRA13A_REF[15];
2182 coords[1] = PYRA13A_REF[16];
2183 coords[2] = PYRA13A_REF[17];
2186 coords[0] = PYRA13A_REF[18];
2187 coords[1] = PYRA13A_REF[19];
2188 coords[2] = PYRA13A_REF[20];
2191 coords[0] = PYRA13A_REF[21];
2192 coords[1] = PYRA13A_REF[22];
2193 coords[2] = PYRA13A_REF[23];
2196 coords[0] = PYRA13A_REF[24];
2197 coords[1] = PYRA13A_REF[25];
2198 coords[2] = PYRA13A_REF[26];
2201 coords[0] = PYRA13A_REF[27];
2202 coords[1] = PYRA13A_REF[28];
2203 coords[2] = PYRA13A_REF[29];
2206 coords[0] = PYRA13A_REF[30];
2207 coords[1] = PYRA13A_REF[31];
2208 coords[2] = PYRA13A_REF[32];
2211 coords[0] = PYRA13A_REF[33];
2212 coords[1] = PYRA13A_REF[34];
2213 coords[2] = PYRA13A_REF[35];
2216 coords[0] = PYRA13A_REF[36];
2217 coords[1] = PYRA13A_REF[37];
2218 coords[2] = PYRA13A_REF[38];
2220 LOCAL_COORD_MACRO_END;
2222 SHAPE_FUN_MACRO_BEGIN;
2223 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]);
2224 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]);
2225 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]);
2226 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]);
2228 funValue[4]=2.0*gc[2]*(gc[2]-0.5);
2230 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]);
2231 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]);
2232 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]);
2233 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]);
2235 funValue[9]=gc[2]*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2236 funValue[10]=gc[2]*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2237 funValue[11]=gc[2]*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2238 funValue[12]=gc[2]*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2239 SHAPE_FUN_MACRO_END;
2241 DEV_SHAPE_FUN_MACRO_BEGIN;
2242 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]));
2243 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]));
2244 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]));
2246 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]));
2247 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]));
2248 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]));
2250 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]));
2251 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]));
2252 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]));
2254 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]));
2255 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]));
2256 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]));
2259 devFunValue[12] = 0.0;
2260 devFunValue[13] = 0.0;
2261 devFunValue[14] = 4.0*gc[2]-1.0;
2263 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]));
2264 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]));
2265 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]));
2267 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]));
2268 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]));
2269 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]));
2271 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]));
2272 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]));
2273 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]));
2275 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]));
2276 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]));
2277 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]));
2280 devFunValue[27] =(-(-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2281 devFunValue[28] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2282 devFunValue[29] = (-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]);
2284 devFunValue[30] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2285 devFunValue[31] = (-(gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2286 devFunValue[32] = (-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]);
2288 devFunValue[33] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2289 devFunValue[34] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2290 devFunValue[35] = (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]);
2292 devFunValue[36] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2293 devFunValue[37] = ((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2294 devFunValue[38] = (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]);
2295 DEV_SHAPE_FUN_MACRO_END;
2299 * Init Quadratic Pyramid Reference coordinates ans Shape function.
2302 void GaussInfo::pyra13bInit()
2304 LOCAL_COORD_MACRO_BEGIN;
2306 coords[0] = PYRA13B_REF[0];
2307 coords[1] = PYRA13B_REF[1];
2308 coords[2] = PYRA13B_REF[2];
2311 coords[0] = PYRA13B_REF[3];
2312 coords[1] = PYRA13B_REF[4];
2313 coords[2] = PYRA13B_REF[5];
2316 coords[0] = PYRA13B_REF[6];
2317 coords[1] = PYRA13B_REF[7];
2318 coords[2] = PYRA13B_REF[8];
2321 coords[0] = PYRA13B_REF[9];
2322 coords[1] = PYRA13B_REF[10];
2323 coords[2] = PYRA13B_REF[11];
2326 coords[0] = PYRA13B_REF[12];
2327 coords[1] = PYRA13B_REF[13];
2328 coords[2] = PYRA13B_REF[14];
2331 coords[0] = PYRA13B_REF[15];
2332 coords[1] = PYRA13B_REF[16];
2333 coords[2] = PYRA13B_REF[17];
2336 coords[0] = PYRA13B_REF[18];
2337 coords[1] = PYRA13B_REF[19];
2338 coords[2] = PYRA13B_REF[20];
2341 coords[0] = PYRA13B_REF[21];
2342 coords[1] = PYRA13B_REF[22];
2343 coords[2] = PYRA13B_REF[23];
2346 coords[0] = PYRA13B_REF[24];
2347 coords[1] = PYRA13B_REF[25];
2348 coords[2] = PYRA13B_REF[26];
2351 coords[0] = PYRA13B_REF[27];
2352 coords[1] = PYRA13B_REF[28];
2353 coords[2] = PYRA13B_REF[29];
2356 coords[0] = PYRA13B_REF[30];
2357 coords[1] = PYRA13B_REF[31];
2358 coords[2] = PYRA13B_REF[32];
2361 coords[0] = PYRA13B_REF[33];
2362 coords[1] = PYRA13B_REF[34];
2363 coords[2] = PYRA13B_REF[35];
2366 coords[0] = PYRA13B_REF[36];
2367 coords[1] = PYRA13B_REF[37];
2368 coords[2] = PYRA13B_REF[38];
2370 LOCAL_COORD_MACRO_END;
2372 SHAPE_FUN_MACRO_BEGIN;
2373 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]);
2374 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]);
2375 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]);
2376 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]);
2378 funValue[4] =2.0*gc[2]*(gc[2]-0.5);
2380 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]);
2381 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]);
2382 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]);
2383 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]);
2385 funValue[9] =gc[2]*(-gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2386 funValue[10]=gc[2]*(gc[0]+gc[1]+gc[2]-1.0)*(-gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2387 funValue[11]=gc[2]*(gc[0]-gc[1]+gc[2]-1.0)*(gc[0]+gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2388 funValue[12]=gc[2]*(-gc[0]-gc[1]+gc[2]-1.0)*(gc[0]-gc[1]+gc[2]-1.0)/(1.0-gc[2]);
2390 SHAPE_FUN_MACRO_END;
2392 DEV_SHAPE_FUN_MACRO_BEGIN;
2393 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]));
2394 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]));
2395 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]));
2397 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]));
2398 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]));
2399 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]));
2401 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]));
2402 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]));
2403 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]));
2405 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]));
2406 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]));
2407 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]));
2410 devFunValue[12] = 0.0;
2411 devFunValue[13] = 0.0;
2412 devFunValue[14] = 4.0*gc[2]-1.0;
2414 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]));
2415 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]));
2416 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]));
2418 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]));
2419 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]));
2420 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]));
2422 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]));
2423 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]));
2424 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]));
2426 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]));
2427 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]));
2428 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]));
2431 devFunValue[27] =(-(-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2432 devFunValue[28] = ((-gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2433 devFunValue[29] = (-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]);
2435 devFunValue[36] = ((-gc[0]-gc[1]+gc[2]-1.0)-(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2436 devFunValue[37] = (-(gc[0]-gc[1]+gc[2]-1.0)-(-gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2437 devFunValue[38] = (-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]);
2439 devFunValue[33] = ((gc[0]+gc[1]+gc[2]-1.0)+(gc[0]-gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2440 devFunValue[34] = ((gc[0]-gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2441 devFunValue[35] = (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]);
2443 devFunValue[30] = ((-gc[0]+gc[1]+gc[2]-1.0)-(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2444 devFunValue[31] = ((-gc[0]+gc[1]+gc[2]-1.0)+(gc[0]+gc[1]+gc[2]-1.0))*gc[2]/(1.0-gc[2]);
2445 devFunValue[32] = (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]);
2446 DEV_SHAPE_FUN_MACRO_END;
2451 * Init Pentahedron Reference coordinates and Shape function.
2454 void GaussInfo::penta6aInit()
2456 LOCAL_COORD_MACRO_BEGIN;
2458 coords[0] = PENTA6A_REF[0];
2459 coords[1] = PENTA6A_REF[1];
2460 coords[2] = PENTA6A_REF[2];
2463 coords[0] = PENTA6A_REF[3];
2464 coords[1] = PENTA6A_REF[4];
2465 coords[2] = PENTA6A_REF[5];
2468 coords[0] = PENTA6A_REF[6];
2469 coords[1] = PENTA6A_REF[7];
2470 coords[2] = PENTA6A_REF[8];
2473 coords[0] = PENTA6A_REF[9];
2474 coords[1] = PENTA6A_REF[10];
2475 coords[2] = PENTA6A_REF[11];
2478 coords[0] = PENTA6A_REF[12];
2479 coords[1] = PENTA6A_REF[13];
2480 coords[2] = PENTA6A_REF[14];
2483 coords[0] = PENTA6A_REF[15];
2484 coords[1] = PENTA6A_REF[16];
2485 coords[2] = PENTA6A_REF[17];
2487 LOCAL_COORD_MACRO_END;
2489 SHAPE_FUN_MACRO_BEGIN;
2490 funValue[0] = 0.5*gc[1]*(1.0 - gc[0]);
2491 funValue[1] = 0.5*gc[2]*(1.0 - gc[0]);
2492 funValue[2] = 0.5*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
2494 funValue[3] = 0.5*gc[1]*(gc[0] + 1.0);
2495 funValue[4] = 0.5*gc[2]*(gc[0] + 1.0);
2496 funValue[5] = 0.5*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
2497 SHAPE_FUN_MACRO_END;
2499 DEV_SHAPE_FUN_MACRO_BEGIN;
2501 devFunValue[0] = 0.5*gc[1]*(-1.0);
2502 devFunValue[1] = 0.5*(1.0 - gc[0]);
2503 devFunValue[2] = 0.0;
2505 devFunValue[3] = 0.5*gc[2]*(-1.0);
2506 devFunValue[4] = 0.0;
2507 devFunValue[5] = 0.5*(1.0 - gc[0]);
2509 devFunValue[6] = 0.5*(1.0 - gc[1] - gc[2])*(-1.0);
2510 devFunValue[7] = 0.5*(-1.0)*(1.0 - gc[0]);
2511 devFunValue[8] = 0.5*(-1.0)*(1.0 - gc[0]);
2513 devFunValue[9] = 0.5*gc[1];
2514 devFunValue[10] = 0.5*(gc[0] + 1.0);
2515 devFunValue[11] = 0.0;
2517 devFunValue[12] = 0.5*gc[2];
2518 devFunValue[13] = 0.0;
2519 devFunValue[14] = 0.5*(gc[0] + 1.0);
2521 devFunValue[15] = 0.5*(1.0 - gc[1] - gc[2]);
2522 devFunValue[16] = 0.5*(-1.0)*(1.0 + gc[0]);
2523 devFunValue[17] = 0.5*(-1.0)*(1.0 + gc[0]);
2525 DEV_SHAPE_FUN_MACRO_END;
2529 * Init Pentahedron Reference coordinates and Shape function.
2532 void GaussInfo::penta6bInit()
2534 LOCAL_COORD_MACRO_BEGIN;
2536 coords[0] = PENTA6B_REF[0];
2537 coords[1] = PENTA6B_REF[1];
2538 coords[2] = PENTA6B_REF[2];
2541 coords[0] = PENTA6B_REF[3];
2542 coords[1] = PENTA6B_REF[4];
2543 coords[2] = PENTA6B_REF[5];
2546 coords[0] = PENTA6B_REF[6];
2547 coords[1] = PENTA6B_REF[7];
2548 coords[2] = PENTA6B_REF[8];
2551 coords[0] = PENTA6B_REF[9];
2552 coords[1] = PENTA6B_REF[10];
2553 coords[2] = PENTA6B_REF[11];
2556 coords[0] = PENTA6B_REF[12];
2557 coords[1] = PENTA6B_REF[13];
2558 coords[2] = PENTA6B_REF[14];
2561 coords[0] = PENTA6B_REF[15];
2562 coords[1] = PENTA6B_REF[16];
2563 coords[2] = PENTA6B_REF[17];
2565 LOCAL_COORD_MACRO_END;
2567 SHAPE_FUN_MACRO_BEGIN;
2568 funValue[0] = 0.5*gc[1]*(1.0 - gc[0]);
2569 funValue[2] = 0.5*gc[2]*(1.0 - gc[0]);
2570 funValue[1] = 0.5*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
2571 funValue[3] = 0.5*gc[1]*(gc[0] + 1.0);
2572 funValue[5] = 0.5*gc[2]*(gc[0] + 1.0);
2573 funValue[4] = 0.5*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
2574 SHAPE_FUN_MACRO_END;
2576 DEV_SHAPE_FUN_MACRO_BEGIN;
2577 devFunValue[0] = 0.5*gc[1]*(-1.0);
2578 devFunValue[1] = 0.5*(1.0 - gc[0]);
2579 devFunValue[2] = 0.0;
2581 devFunValue[6] = 0.5*gc[2]*(-1.0);
2582 devFunValue[7] = 0.0;
2583 devFunValue[8] = 0.5*(1.0 - gc[0]);
2585 devFunValue[3] = 0.5*(1.0 - gc[1] - gc[2])*(-1.0);
2586 devFunValue[4] = 0.5*(-1.0)*(1.0 - gc[0]);
2587 devFunValue[5] = 0.5*(-1.0)*(1.0 - gc[0]);
2589 devFunValue[9] = 0.5*gc[1];
2590 devFunValue[10] = 0.5*(gc[0] + 1.0);
2591 devFunValue[11] = 0.0;
2593 devFunValue[15] = 0.5*gc[2];
2594 devFunValue[16] = 0.0;
2595 devFunValue[17] = 0.5*(gc[0] + 1.0);
2597 devFunValue[12] = 0.5*(1.0 - gc[1] - gc[2]);
2598 devFunValue[13] = 0.5*(-1.0)*(1.0 + gc[0]);
2599 devFunValue[14] = 0.5*(-1.0)*(1.0 + gc[0]);
2600 DEV_SHAPE_FUN_MACRO_END;
2604 * This shapefunc map is same as degenerated tria3aInit
2606 void GaussInfo::penta6DegTria3aInit()
2608 LOCAL_COORD_MACRO_BEGIN;
2639 LOCAL_COORD_MACRO_END;
2641 SHAPE_FUN_MACRO_BEGIN;
2642 funValue[0] = 0.5*(1.0 + gc[1]);
2643 funValue[1] = -0.5*(gc[0] + gc[1]);
2644 funValue[2] = 0.5*(1.0 + gc[0]);
2648 SHAPE_FUN_MACRO_END;
2650 DEV_SHAPE_FUN_MACRO_BEGIN;
2651 devFunValue[0] = 0.0;
2652 devFunValue[1] = 0.5;
2653 devFunValue[2] = 0.0;
2655 devFunValue[3] = -0.5;
2656 devFunValue[4] = -0.5;
2657 devFunValue[5] = 0.0;
2659 devFunValue[6] = 0.5;
2660 devFunValue[7] = 0.0;
2661 devFunValue[8] = 0.0;
2663 devFunValue[9] = 0.0;
2664 devFunValue[10] = 0.0;
2665 devFunValue[11] = 0.0;
2667 devFunValue[12] = 0.0;
2668 devFunValue[13] = 0.0;
2669 devFunValue[14] = 0.0;
2671 devFunValue[15] = 0.0;
2672 devFunValue[16] = 0.0;
2673 devFunValue[17] = 0.0;
2674 DEV_SHAPE_FUN_MACRO_END;
2678 * This shapefunc map is same as degenerated tria3bInit
2680 void GaussInfo::penta6DegTria3bInit()
2682 LOCAL_COORD_MACRO_BEGIN;
2713 LOCAL_COORD_MACRO_END;
2715 SHAPE_FUN_MACRO_BEGIN;
2716 funValue[0] = 1.0 - gc[0] - gc[1];
2717 funValue[1] = gc[0];
2718 funValue[2] = gc[1];
2722 SHAPE_FUN_MACRO_END;
2724 DEV_SHAPE_FUN_MACRO_BEGIN;
2725 devFunValue[0] = -1.0;
2726 devFunValue[1] = -1.0;
2727 devFunValue[2] = 0.0;
2729 devFunValue[3] = 1.0;
2730 devFunValue[4] = 0.0;
2731 devFunValue[5] = 0.0;
2733 devFunValue[6] = 0.0;
2734 devFunValue[7] = 1.0;
2735 devFunValue[8] = 0.0;
2737 devFunValue[9] = 0.0;
2738 devFunValue[10] = 0.0;
2739 devFunValue[11] = 0.0;
2741 devFunValue[12] = 0.0;
2742 devFunValue[13] = 0.0;
2743 devFunValue[14] = 0.0;
2745 devFunValue[15] = 0.0;
2746 devFunValue[16] = 0.0;
2747 devFunValue[17] = 0.0;
2748 DEV_SHAPE_FUN_MACRO_END;
2752 * Init Pentahedron Reference coordinates and Shape function.
2755 void GaussInfo::penta15aInit()
2757 LOCAL_COORD_MACRO_BEGIN;
2759 coords[0] = PENTA15A_REF[0];
2760 coords[1] = PENTA15A_REF[1];
2761 coords[2] = PENTA15A_REF[2];
2764 coords[0] = PENTA15A_REF[3];
2765 coords[1] = PENTA15A_REF[4];
2766 coords[2] = PENTA15A_REF[5];
2769 coords[0] = PENTA15A_REF[6];
2770 coords[1] = PENTA15A_REF[7];
2771 coords[2] = PENTA15A_REF[8];
2774 coords[0] = PENTA15A_REF[9];
2775 coords[1] = PENTA15A_REF[10];
2776 coords[2] = PENTA15A_REF[11];
2779 coords[0] = PENTA15A_REF[12];
2780 coords[1] = PENTA15A_REF[13];
2781 coords[2] = PENTA15A_REF[14];
2784 coords[0] = PENTA15A_REF[15];
2785 coords[1] = PENTA15A_REF[16];
2786 coords[2] = PENTA15A_REF[17];
2789 coords[0] = PENTA15A_REF[18];
2790 coords[1] = PENTA15A_REF[19];
2791 coords[2] = PENTA15A_REF[20];
2794 coords[0] = PENTA15A_REF[21];
2795 coords[1] = PENTA15A_REF[22];
2796 coords[2] = PENTA15A_REF[23];
2799 coords[0] = PENTA15A_REF[24];
2800 coords[1] = PENTA15A_REF[25];
2801 coords[2] = PENTA15A_REF[26];
2804 coords[0] = PENTA15A_REF[27];
2805 coords[1] = PENTA15A_REF[28];
2806 coords[2] = PENTA15A_REF[29];
2809 coords[0] = PENTA15A_REF[30];
2810 coords[1] = PENTA15A_REF[31];
2811 coords[2] = PENTA15A_REF[32];
2814 coords[0] = PENTA15A_REF[33];
2815 coords[1] = PENTA15A_REF[34];
2816 coords[2] = PENTA15A_REF[35];
2819 coords[0] = PENTA15A_REF[36];
2820 coords[1] = PENTA15A_REF[37];
2821 coords[2] = PENTA15A_REF[38];
2824 coords[0] = PENTA15A_REF[39];
2825 coords[1] = PENTA15A_REF[40];
2826 coords[2] = PENTA15A_REF[41];
2829 coords[0] = PENTA15A_REF[42];
2830 coords[1] = PENTA15A_REF[43];
2831 coords[2] = PENTA15A_REF[44];
2833 LOCAL_COORD_MACRO_END;
2835 SHAPE_FUN_MACRO_BEGIN;
2836 funValue[0] = 0.5*gc[1]*(1.0 - gc[0])*(2.0*gc[1] - 2.0 - gc[0]);
2837 funValue[1] = 0.5*gc[2]*(1.0 - gc[0])*(2.0*gc[2] - 2.0 - gc[0]);
2838 funValue[2] = 0.5*(gc[0] - 1.0)*(1.0 - gc[1] - gc[2])*(gc[0] + 2.0*gc[1] + 2.0*gc[2]);
2840 funValue[3] = 0.5*gc[1]*(1.0 + gc[0])*(2.0*gc[1] - 2.0 + gc[0]);
2841 funValue[4] = 0.5*gc[2]*(1.0 + gc[0])*(2.0*gc[2] - 2.0 + gc[0]);
2842 funValue[5] = 0.5*(-gc[0] - 1.0)*(1.0 - gc[1] - gc[2])*(-gc[0] + 2.0*gc[1] + 2.0*gc[2]);
2844 funValue[6] = 2.0*gc[1]*gc[2]*(1.0 - gc[0]);
2845 funValue[7] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
2846 funValue[8] = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
2848 funValue[9] = gc[1]*(1.0 - gc[0]*gc[0]);
2849 funValue[10] = gc[2]*(1.0 - gc[0]*gc[0]);
2850 funValue[11] = (1.0 - gc[1] - gc[2])*(1.0 - gc[0]*gc[0]);
2852 funValue[12] = 2.0*gc[1]*gc[2]*(1.0 + gc[0]);
2853 funValue[13] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
2854 funValue[14] = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
2855 SHAPE_FUN_MACRO_END;
2857 DEV_SHAPE_FUN_MACRO_BEGIN;
2859 devFunValue[0] = 0.5*gc[1]*(2 * gc[0] - 2 * gc[1] + 1.0 );
2860 devFunValue[1] = (1.0 - gc[0])*(2.0*gc[1] -1 - 0.5*gc[0]);
2861 devFunValue[2] = 0.0;
2863 devFunValue[3] = 0.5*gc[2]*(2 * gc[0] - 2 * gc[2] + 1.0 );
2864 devFunValue[4] = 0.0;
2865 devFunValue[5] = (1.0 - gc[0])*(2.0*gc[2] -1 - 0.5*gc[0]);
2867 devFunValue[6] = 0.5*(1.0 - gc[1] - gc[2])*(2*gc[0] -1.0 + 2*gc[1] + 2*gc[2]);
2868 devFunValue[7] = 0.5*(gc[0] - 1.0)* ( -4*gc[1] -gc[0] -4*gc[2] + 2.0);
2869 devFunValue[8] = 0.5*(gc[0] - 1.0)* ( -4*gc[2] -4*gc[1] -gc[0] + 2.0);
2871 devFunValue[9] = 0.5*gc[1]*( 2*gc[0] + 2*gc[1] -1.0 );
2872 devFunValue[10] = (1.0 + gc[0])*(2.0*gc[1] - 1.0 + 0.5*gc[0]);
2873 devFunValue[11] = 0.0;
2875 devFunValue[12] = 0.5*gc[2]*( 2*gc[0] + 2*gc[2] -1.0 );
2876 devFunValue[13] = 0.0;
2877 devFunValue[14] = (1.0 + gc[0])*(2.0*gc[2] - 1.0 + 0.5*gc[0]);
2879 devFunValue[15] = 0.5*(1.0 - gc[1] - gc[2])*(2 * gc[0] - 2.0 * gc[1] - 2.0 * gc[2] + 1.0 );
2880 devFunValue[16] = 0.5*(-gc[0] - 1.0) * (-4.0*gc[1] + gc[0] - 4.0 * gc[2] + 2.0) ;
2881 devFunValue[17] = 0.5*(-gc[0] - 1.0) * (-4.0*gc[2] - 4*gc[1] + gc[0] + 2.0 );
2883 devFunValue[18] = - 2.0*gc[1]*gc[2];
2884 devFunValue[19] = 2.0*gc[2]*(1.0 - gc[0]);
2885 devFunValue[20] = 2.0*gc[1]*(1.0 - gc[0]);
2887 devFunValue[21] = -2.0*gc[2]*(1.0 - gc[1] - gc[2]);
2888 devFunValue[22] = -2.0*gc[2]*(1.0 - gc[0]);
2889 devFunValue[23] = (-4*gc[2]-2*gc[1]+2.0)*(1.0 - gc[0]);
2891 devFunValue[24] = -2.0*gc[1]*(1.0 - gc[1] - gc[2]);
2892 devFunValue[25] = (-4*gc[1]-2*gc[2]+2)*(1.0 - gc[0]);
2893 devFunValue[26] = -2.0*gc[1]*(1.0 - gc[0]);
2895 devFunValue[27] = gc[1]*(- 2.0 * gc[0]);
2896 devFunValue[28] = (1.0 - gc[0]*gc[0]);
2897 devFunValue[29] = 0.0;
2899 devFunValue[30] = -2.0 * gc[2] *gc[0];
2900 devFunValue[31] = 0.0;
2901 devFunValue[32] = (1.0 - gc[0]*gc[0]);
2903 devFunValue[33] = -2.0 * (1.0 - gc[1] - gc[2]) * gc[0];
2904 devFunValue[34] = -1.0*(1.0 - gc[0]*gc[0]);
2905 devFunValue[35] = -1.0*(1.0 - gc[0]*gc[0]);
2907 devFunValue[36] = 2.0*gc[1]*gc[2];
2908 devFunValue[37] = 2.0*gc[2]*(1.0 + gc[0]);
2909 devFunValue[38] = 2.0*gc[1]*(1.0 + gc[0]);
2911 devFunValue[39] = 2.0*gc[2]*(1.0 - gc[1] - gc[2]);
2912 devFunValue[40] = -2.0*gc[2]*(1.0 + gc[0]);
2913 devFunValue[41] = (2.0 - 2.0 * gc[1] - 4.0 * gc[2])*(1.0 + gc[0]);
2915 devFunValue[42] = 2.0*gc[1]*(1.0 - gc[1] - gc[2]);
2916 devFunValue[43] = (2.0 - 4*gc[1] - 2*gc[2])*(1.0 + gc[0]);
2917 devFunValue[44] = -2.0*gc[1]*(1.0 + gc[0]);
2919 DEV_SHAPE_FUN_MACRO_END;
2923 * Init Qaudratic Pentahedron Reference coordinates and Shape function.
2926 void GaussInfo::penta15bInit()
2928 LOCAL_COORD_MACRO_BEGIN;
2930 coords[0] = PENTA15B_REF[0];
2931 coords[1] = PENTA15B_REF[1];
2932 coords[2] = PENTA15B_REF[2];
2935 coords[0] = PENTA15B_REF[3];
2936 coords[1] = PENTA15B_REF[4];
2937 coords[2] = PENTA15B_REF[5];
2940 coords[0] = PENTA15B_REF[6];
2941 coords[1] = PENTA15B_REF[7];
2942 coords[2] = PENTA15B_REF[8];
2945 coords[0] = PENTA15B_REF[9];
2946 coords[1] = PENTA15B_REF[10];
2947 coords[2] = PENTA15B_REF[11];
2950 coords[0] = PENTA15B_REF[12];
2951 coords[1] = PENTA15B_REF[13];
2952 coords[2] = PENTA15B_REF[14];
2955 coords[0] = PENTA15B_REF[15];
2956 coords[1] = PENTA15B_REF[16];
2957 coords[2] = PENTA15B_REF[17];
2960 coords[0] = PENTA15B_REF[18];
2961 coords[1] = PENTA15B_REF[19];
2962 coords[2] = PENTA15B_REF[20];
2965 coords[0] = PENTA15B_REF[21];
2966 coords[1] = PENTA15B_REF[22];
2967 coords[2] = PENTA15B_REF[23];
2970 coords[0] = PENTA15B_REF[24];
2971 coords[1] = PENTA15B_REF[25];
2972 coords[2] = PENTA15B_REF[26];
2975 coords[0] = PENTA15B_REF[27];
2976 coords[1] = PENTA15B_REF[28];
2977 coords[2] = PENTA15B_REF[29];
2980 coords[0] = PENTA15B_REF[30];
2981 coords[1] = PENTA15B_REF[31];
2982 coords[2] = PENTA15B_REF[32];
2985 coords[0] = PENTA15B_REF[33];
2986 coords[1] = PENTA15B_REF[34];
2987 coords[2] = PENTA15B_REF[35];
2990 coords[0] = PENTA15B_REF[36];
2991 coords[1] = PENTA15B_REF[37];
2992 coords[2] = PENTA15B_REF[38];
2995 coords[0] = PENTA15B_REF[39];
2996 coords[1] = PENTA15B_REF[40];
2997 coords[2] = PENTA15B_REF[41];
3000 coords[0] = PENTA15B_REF[42];
3001 coords[1] = PENTA15B_REF[43];
3002 coords[2] = PENTA15B_REF[44];
3004 LOCAL_COORD_MACRO_END;
3006 SHAPE_FUN_MACRO_BEGIN;
3007 funValue[0] = 0.5*gc[1]*(1.0 - gc[0])*(2.0*gc[1] - 2.0 - gc[0]);
3008 funValue[2] = 0.5*gc[2]*(1.0 - gc[0])*(2.0*gc[2] - 2.0 - gc[0]);
3009 funValue[1] = 0.5*(gc[0] - 1.0)*(1.0 - gc[1] - gc[2])*(gc[0] + 2.0*gc[1] + 2.0*gc[2]);
3011 funValue[3] = 0.5*gc[1]*(1.0 + gc[0])*(2.0*gc[1] - 2.0 + gc[0]);
3012 funValue[5] = 0.5*gc[2]*(1.0 + gc[0])*(2.0*gc[2] - 2.0 + gc[0]);
3013 funValue[4] = 0.5*(-gc[0] - 1.0)*(1.0 - gc[1] - gc[2])*(-gc[0] + 2.0*gc[1] + 2.0*gc[2]);
3015 funValue[8] = 2.0*gc[1]*gc[2]*(1.0 - gc[0]);
3016 funValue[7] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
3017 funValue[6] = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 - gc[0]);
3019 funValue[12] = gc[1]*(1.0 - gc[0]*gc[0]);
3020 funValue[14] = gc[2]*(1.0 - gc[0]*gc[0]);
3021 funValue[13] = (1.0 - gc[1] - gc[2])*(1.0 - gc[0]*gc[0]);
3023 funValue[11] = 2.0*gc[1]*gc[2]*(1.0 + gc[0]);
3024 funValue[10] = 2.0*gc[2]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
3025 funValue[9] = 2.0*gc[1]*(1.0 - gc[1] - gc[2])*(1.0 + gc[0]);
3026 SHAPE_FUN_MACRO_END;
3028 DEV_SHAPE_FUN_MACRO_BEGIN;
3029 devFunValue[0] = 0.5*gc[1]*(2 * gc[0] - 2 * gc[1] + 1.0 );
3030 devFunValue[1] = (1.0 - gc[0])*(2.0*gc[1] -1 - 0.5*gc[0]);
3031 devFunValue[2] = 0.0;
3033 devFunValue[6] = 0.5*gc[2]*(2 * gc[0] - 2 * gc[2] + 1.0 );
3034 devFunValue[7] = 0.0;
3035 devFunValue[8] = (1.0 - gc[0])*(2.0*gc[2] -1 - 0.5*gc[0]);
3037 devFunValue[3] = 0.5*(1.0 - gc[1] - gc[2])*(2*gc[0] -1.0 + 2*gc[1] + 2*gc[2]);
3038 devFunValue[4] = 0.5*(gc[0] - 1.0)* ( -4*gc[1] -gc[0] -4*gc[2] + 2.0);
3039 devFunValue[5] = 0.5*(gc[0] - 1.0)* ( -4*gc[2] -4*gc[1] -gc[0] + 2.0);
3041 devFunValue[9] = 0.5*gc[1]*( 2*gc[0] + 2*gc[1] -1.0 );
3042 devFunValue[10] = (1.0 + gc[0])*(2.0*gc[1] - 1.0 + 0.5*gc[0]);
3043 devFunValue[11] = 0.0;
3045 devFunValue[15] = 0.5*gc[2]*( 2*gc[0] + 2*gc[2] -1.0 );
3046 devFunValue[16] = 0.0;
3047 devFunValue[17] = (1.0 + gc[0])*(2.0*gc[2] - 1.0 + 0.5*gc[0]);
3049 devFunValue[12] = 0.5*(1.0 - gc[1] - gc[2])*(2 * gc[0] - 2.0 * gc[1] - 2.0 * gc[2] + 1.0 );
3050 devFunValue[13] = 0.5*(-gc[0] - 1.0) * (-4.0*gc[1] + gc[0] - 4.0 * gc[2] + 2.0) ;
3051 devFunValue[14] = 0.5*(-gc[0] - 1.0) * (-4.0*gc[2] - 4*gc[1] + gc[0] + 2.0 );
3053 devFunValue[24] = - 2.0*gc[1]*gc[2];
3054 devFunValue[25] = 2.0*gc[2]*(1.0 - gc[0]);
3055 devFunValue[26] = 2.0*gc[1]*(1.0 - gc[0]);
3057 devFunValue[21] = -2.0*gc[2]*(1.0 - gc[1] - gc[2]);
3058 devFunValue[22] = -2.0*gc[2]*(1.0 - gc[0]);
3059 devFunValue[23] = (-4*gc[2]-2*gc[1]+2.0)*(1.0 - gc[0]);
3061 devFunValue[18] = -2.0*gc[1]*(1.0 - gc[1] - gc[2]);
3062 devFunValue[19] = (-4*gc[1]-2*gc[2]+2)*(1.0 - gc[0]);
3063 devFunValue[20] = -2.0*gc[1]*(1.0 - gc[0]);
3066 devFunValue[36] = gc[1]*(- 2.0 * gc[0]);
3067 devFunValue[37] = (1.0 - gc[0]*gc[0]);
3068 devFunValue[38] = 0.0;
3070 devFunValue[42] = -2.0 * gc[2] *gc[0];
3071 devFunValue[43] = 0.0;
3072 devFunValue[44] = (1.0 - gc[0]*gc[0]);
3074 devFunValue[39] = -2.0 * (1.0 - gc[1] - gc[2]) * gc[0];
3075 devFunValue[40] = -1.0*(1.0 - gc[0]*gc[0]);
3076 devFunValue[41] = -1.0*(1.0 - gc[0]*gc[0]);
3078 devFunValue[33] = 2.0*gc[1]*gc[2];
3079 devFunValue[34] = 2.0*gc[2]*(1.0 + gc[0]);
3080 devFunValue[35] = 2.0*gc[1]*(1.0 + gc[0]);
3082 devFunValue[30] = 2.0*gc[2]*(1.0 - gc[1] - gc[2]);
3083 devFunValue[31] = -2.0*gc[2]*(1.0 + gc[0]);
3084 devFunValue[32] = (2.0 - 2.0 * gc[1] - 4.0 * gc[2])*(1.0 + gc[0]);
3086 devFunValue[27] = 2.0*gc[1]*(1.0 - gc[1] - gc[2]);
3087 devFunValue[28] = (2.0 - 4*gc[1] - 2*gc[2])*(1.0 + gc[0]);
3088 devFunValue[29] = -2.0*gc[1]*(1.0 + gc[0]);
3090 DEV_SHAPE_FUN_MACRO_END;
3093 void GaussInfo::penta18aInit()
3095 LOCAL_COORD_MACRO_BEGIN;
3097 coords[0] = PENTA18A_REF[0];
3098 coords[1] = PENTA18A_REF[1];
3099 coords[2] = PENTA18A_REF[2];
3102 coords[0] = PENTA18A_REF[3];
3103 coords[1] = PENTA18A_REF[4];
3104 coords[2] = PENTA18A_REF[5];
3107 coords[0] = PENTA18A_REF[6];
3108 coords[1] = PENTA18A_REF[7];
3109 coords[2] = PENTA18A_REF[8];
3112 coords[0] = PENTA18A_REF[9];
3113 coords[1] = PENTA18A_REF[10];
3114 coords[2] = PENTA18A_REF[11];
3117 coords[0] = PENTA18A_REF[12];
3118 coords[1] = PENTA18A_REF[13];
3119 coords[2] = PENTA18A_REF[14];
3122 coords[0] = PENTA18A_REF[15];
3123 coords[1] = PENTA18A_REF[16];
3124 coords[2] = PENTA18A_REF[17];
3127 coords[0] = PENTA18A_REF[18];
3128 coords[1] = PENTA18A_REF[19];
3129 coords[2] = PENTA18A_REF[20];
3132 coords[0] = PENTA18A_REF[21];
3133 coords[1] = PENTA18A_REF[22];
3134 coords[2] = PENTA18A_REF[23];
3137 coords[0] = PENTA18A_REF[24];
3138 coords[1] = PENTA18A_REF[25];
3139 coords[2] = PENTA18A_REF[26];
3142 coords[0] = PENTA18A_REF[27];
3143 coords[1] = PENTA18A_REF[28];
3144 coords[2] = PENTA18A_REF[29];
3147 coords[0] = PENTA18A_REF[30];
3148 coords[1] = PENTA18A_REF[31];
3149 coords[2] = PENTA18A_REF[32];
3152 coords[0] = PENTA18A_REF[33];
3153 coords[1] = PENTA18A_REF[34];
3154 coords[2] = PENTA18A_REF[35];
3157 coords[0] = PENTA18A_REF[36];
3158 coords[1] = PENTA18A_REF[37];
3159 coords[2] = PENTA18A_REF[38];
3162 coords[0] = PENTA18A_REF[39];
3163 coords[1] = PENTA18A_REF[40];
3164 coords[2] = PENTA18A_REF[41];
3167 coords[0] = PENTA18A_REF[42];
3168 coords[1] = PENTA18A_REF[43];
3169 coords[2] = PENTA18A_REF[44];
3172 coords[0] = PENTA18A_REF[45];
3173 coords[1] = PENTA18A_REF[46];
3174 coords[2] = PENTA18A_REF[47];
3177 coords[0] = PENTA18A_REF[48];
3178 coords[1] = PENTA18A_REF[49];
3179 coords[2] = PENTA18A_REF[50];
3182 coords[0] = PENTA18A_REF[51];
3183 coords[1] = PENTA18A_REF[52];
3184 coords[2] = PENTA18A_REF[53];
3186 LOCAL_COORD_MACRO_END;
3188 SHAPE_FUN_MACRO_BEGIN;
3189 funValue[0] = gc[0]*gc[1]*(gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
3190 funValue[1] = gc[0]*gc[2]*(gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
3191 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;
3193 funValue[3] = gc[0]*gc[1]*(gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
3194 funValue[4] = gc[0]*gc[2]*(gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
3195 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;
3197 funValue[6] = 2.0*gc[0]*gc[1]*gc[2]*(gc[0]-1.0);
3198 funValue[7] = -2.0*gc[0]*gc[2]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3199 funValue[8] = -2.0*gc[0]*gc[1]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3201 funValue[9] = -gc[1]*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]-1.0);
3202 funValue[10] = -gc[2]*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]-1.0);
3203 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);
3205 funValue[12] = 2.0*gc[0]*gc[1]*gc[2]*(gc[0]+1.0);
3206 funValue[13] = -2.0*gc[0]*gc[2]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3207 funValue[14] = -2.0*gc[0]*gc[1]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3209 funValue[15] = -4.0*gc[1]*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
3210 funValue[16] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3211 funValue[17] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3212 SHAPE_FUN_MACRO_END;
3214 DEV_SHAPE_FUN_MACRO_BEGIN;
3215 devFunValue[0] = gc[1]*(2.0*gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
3216 devFunValue[1] = gc[0]*(gc[0]-1.0)*(4.0*gc[1]-1.0)/2.0;
3217 devFunValue[2] = 0.0;
3219 devFunValue[3] = gc[2]*(2.0*gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
3220 devFunValue[4] = 0.0;
3221 devFunValue[5] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]-1.0)/2.0;
3223 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;
3224 devFunValue[7] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3225 devFunValue[8] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3227 devFunValue[9] = gc[1]*(2.0*gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
3228 devFunValue[10] = gc[0]*(gc[0]+1.0)*(4.0*gc[1]-1.0)/2.0;
3229 devFunValue[11] = 0.0;
3231 devFunValue[12] = gc[2]*(2.0*gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
3232 devFunValue[13] = 0.0;
3233 devFunValue[14] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]-1.0)/2.0;
3235 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;
3236 devFunValue[16] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3237 devFunValue[17] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3239 devFunValue[18] = 2.0*gc[1]*gc[2]*(2.0*gc[0]-1.0);
3240 devFunValue[19] = 2.0*gc[0]*gc[2]*(gc[0]-1.0);
3241 devFunValue[20] = 2.0*gc[0]*gc[1]*(gc[0]-1.0);
3243 devFunValue[21] = -2.0*gc[2]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3244 devFunValue[22] = -2.0*gc[0]*gc[2]*(gc[0]-1.0);
3245 devFunValue[23] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[2]+gc[1]-1.0);
3247 devFunValue[24] = -2.0*gc[1]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3248 devFunValue[25] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[1]+gc[2]-1.0);
3249 devFunValue[26] = -2.0*gc[0]*gc[1]*(gc[0]-1.0);
3251 devFunValue[27] = -2.0*gc[0]*gc[1]*(2.0*gc[1]-1.0);
3252 devFunValue[28] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[1]-1.0);
3253 devFunValue[29] = 0.0;
3255 devFunValue[30] = -2.0*gc[0]*gc[2]*(2.0*gc[2]-1.0);
3256 devFunValue[31] = 0.0;
3257 devFunValue[32] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]-1.0);
3259 devFunValue[33] = -2.0*gc[0]*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0);
3260 devFunValue[34] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
3261 devFunValue[35] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
3263 devFunValue[36] = 2.0*gc[1]*gc[2]*(2.0*gc[0]+1.0);
3264 devFunValue[37] = 2.0*gc[0]*gc[2]*(gc[0]+1.0);
3265 devFunValue[38] = 2.0*gc[0]*gc[1]*(gc[0]+1.0);
3267 devFunValue[39] = -2.0*gc[2]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3268 devFunValue[40] = -2.0*gc[0]*gc[2]*(gc[0]+1.0);
3269 devFunValue[41] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
3271 devFunValue[42] = -2.0*gc[1]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3272 devFunValue[43] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
3273 devFunValue[44] = -2.0*gc[0]*gc[1]*(gc[0]+1.0);
3275 devFunValue[45] = -8.0*gc[0]*gc[1]*gc[2];
3276 devFunValue[46] = -4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
3277 devFunValue[47] = -4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
3279 devFunValue[48] = 8.0*gc[0]*gc[2]*(gc[2]+gc[1]-1.0);
3280 devFunValue[49] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
3281 devFunValue[50] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
3283 devFunValue[51] = 8.0*gc[0]*gc[1]*(gc[2]+gc[1]-1.0);
3284 devFunValue[52] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
3285 devFunValue[53] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
3286 DEV_SHAPE_FUN_MACRO_END;
3289 void GaussInfo::penta18bInit()
3291 LOCAL_COORD_MACRO_BEGIN;
3293 coords[0] = PENTA18B_REF[0];
3294 coords[1] = PENTA18B_REF[1];
3295 coords[2] = PENTA18B_REF[2];
3298 coords[0] = PENTA18B_REF[3];
3299 coords[1] = PENTA18B_REF[4];
3300 coords[2] = PENTA18B_REF[5];
3303 coords[0] = PENTA18B_REF[6];
3304 coords[1] = PENTA18B_REF[7];
3305 coords[2] = PENTA18B_REF[8];
3308 coords[0] = PENTA18B_REF[9];
3309 coords[1] = PENTA18B_REF[10];
3310 coords[2] = PENTA18B_REF[11];
3313 coords[0] = PENTA18B_REF[12];
3314 coords[1] = PENTA18B_REF[13];
3315 coords[2] = PENTA18B_REF[14];
3318 coords[0] = PENTA18B_REF[15];
3319 coords[1] = PENTA18B_REF[16];
3320 coords[2] = PENTA18B_REF[17];
3323 coords[0] = PENTA18B_REF[18];
3324 coords[1] = PENTA18B_REF[19];
3325 coords[2] = PENTA18B_REF[20];
3328 coords[0] = PENTA18B_REF[21];
3329 coords[1] = PENTA18B_REF[22];
3330 coords[2] = PENTA18B_REF[23];
3333 coords[0] = PENTA18B_REF[24];
3334 coords[1] = PENTA18B_REF[25];
3335 coords[2] = PENTA18B_REF[26];
3338 coords[0] = PENTA18B_REF[27];
3339 coords[1] = PENTA18B_REF[28];
3340 coords[2] = PENTA18B_REF[29];
3343 coords[0] = PENTA18B_REF[30];
3344 coords[1] = PENTA18B_REF[31];
3345 coords[2] = PENTA18B_REF[32];
3348 coords[0] = PENTA18B_REF[33];
3349 coords[1] = PENTA18B_REF[34];
3350 coords[2] = PENTA18B_REF[35];
3353 coords[0] = PENTA18B_REF[36];
3354 coords[1] = PENTA18B_REF[37];
3355 coords[2] = PENTA18B_REF[38];
3358 coords[0] = PENTA18B_REF[39];
3359 coords[1] = PENTA18B_REF[40];
3360 coords[2] = PENTA18B_REF[41];
3363 coords[0] = PENTA18B_REF[42];
3364 coords[1] = PENTA18B_REF[43];
3365 coords[2] = PENTA18B_REF[44];
3368 coords[0] = PENTA18B_REF[45];
3369 coords[1] = PENTA18B_REF[46];
3370 coords[2] = PENTA18B_REF[47];
3373 coords[0] = PENTA18B_REF[48];
3374 coords[1] = PENTA18B_REF[49];
3375 coords[2] = PENTA18B_REF[50];
3378 coords[0] = PENTA18B_REF[51];
3379 coords[1] = PENTA18B_REF[52];
3380 coords[2] = PENTA18B_REF[53];
3382 LOCAL_COORD_MACRO_END;
3384 SHAPE_FUN_MACRO_BEGIN;
3385 funValue[0] = gc[0]*gc[1]*(gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
3386 funValue[2] = gc[0]*gc[2]*(gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
3387 funValue[1] = gc[0]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
3389 funValue[3] = gc[0]*gc[1]*(gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
3390 funValue[5] = gc[0]*gc[2]*(gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
3391 funValue[4] = gc[0]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0)/2.0;
3393 funValue[8] = 2.0*gc[0]*gc[1]*gc[2]*(gc[0]-1.0);
3394 funValue[7] = -2.0*gc[0]*gc[2]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3395 funValue[6] = -2.0*gc[0]*gc[1]*(gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3397 funValue[12] = -gc[1]*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]-1.0);
3398 funValue[14] = -gc[2]*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]-1.0);
3399 funValue[13] = -(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0);
3401 funValue[11] = 2.0*gc[0]*gc[1]*gc[2]*(gc[0]+1.0);
3402 funValue[10] = -2.0*gc[0]*gc[2]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3403 funValue[9] = -2.0*gc[0]*gc[1]*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3405 funValue[17] = -4.0*gc[1]*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
3406 funValue[16] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3407 funValue[15] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3408 SHAPE_FUN_MACRO_END;
3410 DEV_SHAPE_FUN_MACRO_BEGIN;
3411 devFunValue[0] = gc[1]*(2.0*gc[0]-1.0)*(2.0*gc[1]-1.0)/2.0;
3412 devFunValue[1] = gc[0]*(gc[0]-1.0)*(4.0*gc[1]-1.0)/2.0;
3413 devFunValue[2] = 0.0;
3415 devFunValue[6] = gc[2]*(2.0*gc[0]-1.0)*(2.0*gc[2]-1.0)/2.0;
3416 devFunValue[7] = 0.0;
3417 devFunValue[8] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]-1.0)/2.0;
3419 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;
3420 devFunValue[4] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3421 devFunValue[5] = gc[0]*(gc[0]-1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3423 devFunValue[9] = gc[1]*(2.0*gc[0]+1.0)*(2.0*gc[1]-1.0)/2.0;
3424 devFunValue[10] = gc[0]*(gc[0]+1.0)*(4.0*gc[1]-1.0)/2.0;
3425 devFunValue[11] = 0.0;
3427 devFunValue[15] = gc[2]*(2.0*gc[0]+1.0)*(2.0*gc[2]-1.0)/2.0;
3428 devFunValue[16] = 0.0;
3429 devFunValue[17] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]-1.0)/2.0;
3431 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;
3432 devFunValue[13] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3433 devFunValue[14] = gc[0]*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0)/2.0;
3435 devFunValue[24] = 2.0*gc[1]*gc[2]*(2.0*gc[0]-1.0);
3436 devFunValue[25] = 2.0*gc[0]*gc[2]*(gc[0]-1.0);
3437 devFunValue[26] = 2.0*gc[0]*gc[1]*(gc[0]-1.0);
3439 devFunValue[21] = -2.0*gc[2]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3440 devFunValue[22] = -2.0*gc[0]*gc[2]*(gc[0]-1.0);
3441 devFunValue[23] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[2]+gc[1]-1.0);
3443 devFunValue[18] = -2.0*gc[1]*(2.0*gc[0]-1.0)*(gc[2]+gc[1]-1.0);
3444 devFunValue[19] = -2.0*gc[0]*(gc[0]-1.0)*(2.0*gc[1]+gc[2]-1.0);
3445 devFunValue[20] = -2.0*gc[0]*gc[1]*(gc[0]-1.0);
3447 devFunValue[36] = -2.0*gc[0]*gc[1]*(2.0*gc[1]-1.0);
3448 devFunValue[37] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[1]-1.0);
3449 devFunValue[38] = 0.0;
3451 devFunValue[42] = -2.0*gc[0]*gc[2]*(2.0*gc[2]-1.0);
3452 devFunValue[43] = 0.0;
3453 devFunValue[44] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]-1.0);
3455 devFunValue[39] = -2.0*gc[0]*(gc[2]+gc[1]-1.0)*(2.0*gc[2]+2.0*gc[1]-1.0);
3456 devFunValue[40] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
3457 devFunValue[41] = -(gc[0]-1.0)*(gc[0]+1.0)*(4.0*gc[2]+4.0*gc[1]-3.0);
3459 devFunValue[33] = 2.0*gc[1]*gc[2]*(2.0*gc[0]+1.0);
3460 devFunValue[34] = 2.0*gc[0]*gc[2]*(gc[0]+1.0);
3461 devFunValue[35] = 2.0*gc[0]*gc[1]*(gc[0]+1.0);
3463 devFunValue[30] = -2.0*gc[2]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3464 devFunValue[31] = -2.0*gc[0]*gc[2]*(gc[0]+1.0);
3465 devFunValue[32] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
3467 devFunValue[27] = -2.0*gc[1]*(2.0*gc[0]+1.0)*(gc[2]+gc[1]-1.0);
3468 devFunValue[28] = -2.0*gc[0]*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
3469 devFunValue[29] = -2.0*gc[0]*gc[1]*(gc[0]+1.0);
3471 devFunValue[51] = -8.0*gc[0]*gc[1]*gc[2];
3472 devFunValue[52] = -4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
3473 devFunValue[53] = -4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
3475 devFunValue[48] = 8.0*gc[0]*gc[2]*(gc[2]+gc[1]-1.0);
3476 devFunValue[49] = 4.0*gc[2]*(gc[0]-1.0)*(gc[0]+1.0);
3477 devFunValue[50] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[2]+gc[1]-1.0);
3479 devFunValue[45] = 8.0*gc[0]*gc[1]*(gc[2]+gc[1]-1.0);
3480 devFunValue[46] = 4.0*(gc[0]-1.0)*(gc[0]+1.0)*(2.0*gc[1]+gc[2]-1.0);
3481 devFunValue[47] = 4.0*gc[1]*(gc[0]-1.0)*(gc[0]+1.0);
3482 DEV_SHAPE_FUN_MACRO_END;
3486 * Init Hehahedron Reference coordinates and Shape function.
3489 void GaussInfo::hexa8aInit()
3491 LOCAL_COORD_MACRO_BEGIN;
3493 coords[0] = HEXA8A_REF[0];
3494 coords[1] = HEXA8A_REF[1];
3495 coords[2] = HEXA8A_REF[2];
3498 coords[0] = HEXA8A_REF[3];
3499 coords[1] = HEXA8A_REF[4];
3500 coords[2] = HEXA8A_REF[5];
3503 coords[0] = HEXA8A_REF[6];
3504 coords[1] = HEXA8A_REF[7];
3505 coords[2] = HEXA8A_REF[8];
3508 coords[0] = HEXA8A_REF[9];
3509 coords[1] = HEXA8A_REF[10];
3510 coords[2] = HEXA8A_REF[11];
3513 coords[0] = HEXA8A_REF[12];
3514 coords[1] = HEXA8A_REF[13];
3515 coords[2] = HEXA8A_REF[14];
3518 coords[0] = HEXA8A_REF[15];
3519 coords[1] = HEXA8A_REF[16];
3520 coords[2] = HEXA8A_REF[17];
3523 coords[0] = HEXA8A_REF[18];
3524 coords[1] = HEXA8A_REF[19];
3525 coords[2] = HEXA8A_REF[20];
3528 coords[0] = HEXA8A_REF[21];
3529 coords[1] = HEXA8A_REF[22];
3530 coords[2] = HEXA8A_REF[23];
3532 LOCAL_COORD_MACRO_END;
3534 SHAPE_FUN_MACRO_BEGIN;
3535 funValue[0] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
3536 funValue[1] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
3537 funValue[2] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
3538 funValue[3] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
3540 funValue[4] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
3541 funValue[5] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
3542 funValue[6] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
3543 funValue[7] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
3544 SHAPE_FUN_MACRO_END;
3546 DEV_SHAPE_FUN_MACRO_BEGIN;
3548 devFunValue[0] = 0.125 * (-1.0) * (1.0 - gc[1])*(1.0 - gc[2]);
3549 devFunValue[1] = 0.125 * (1.0 - gc[0]) * (-1.0) * (1.0 - gc[2]);
3550 devFunValue[2] = 0.125 * (1.0 - gc[0]) * (1.0 - gc[1]) *(-1.0);
3552 devFunValue[3] = 0.125*(1.0 - gc[1])*(1.0 - gc[2]);
3553 devFunValue[4] = 0.125*(1.0 + gc[0])*(-1.0)*(1.0 - gc[2]);
3554 devFunValue[5] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0);
3556 devFunValue[6] = 0.125*(1.0 + gc[1])*(1.0 - gc[2]);
3557 devFunValue[7] = 0.125*(1.0 + gc[0])*(1.0 - gc[2]);
3558 devFunValue[8] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0);
3560 devFunValue[9 ] = 0.125*(-1.0)*(1.0 + gc[1])*(1.0 - gc[2]);
3561 devFunValue[10] = 0.125*(1.0 - gc[0])*(1.0 - gc[2]);
3562 devFunValue[11] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0);
3564 devFunValue[12] = 0.125*(-1.0)*(1.0 - gc[1])*(1.0 + gc[2]);
3565 devFunValue[13] = 0.125*(1.0 - gc[0])*(-1.0)*(1.0 + gc[2]);
3566 devFunValue[14] = 0.125*(1.0 - gc[0])*(1.0 - gc[1]);
3568 devFunValue[15] = 0.125*(1.0 - gc[1])*(1.0 + gc[2]);
3569 devFunValue[16] = 0.125*(1.0 + gc[0])*(-1.0)*(1.0 + gc[2]);
3570 devFunValue[17] = 0.125*(1.0 + gc[0])*(1.0 - gc[1]);
3572 devFunValue[18] = 0.125*(1.0 + gc[1])*(1.0 + gc[2]);
3573 devFunValue[19] = 0.125*(1.0 + gc[0])*(1.0 + gc[2]);
3574 devFunValue[20] = 0.125*(1.0 + gc[0])*(1.0 + gc[1]);
3576 devFunValue[21] = 0.125*(-1.0)*(1.0 + gc[1])*(1.0 + gc[2]);
3577 devFunValue[22] = 0.125*(1.0 - gc[0])*(1.0 + gc[2]);
3578 devFunValue[23] = 0.125*(1.0 - gc[0])*(1.0 + gc[1]);
3580 DEV_SHAPE_FUN_MACRO_END;
3584 * Init Hehahedron Reference coordinates and Shape function.
3587 void GaussInfo::hexa8bInit()
3589 LOCAL_COORD_MACRO_BEGIN;
3591 coords[0] = HEXA8B_REF[0];
3592 coords[1] = HEXA8B_REF[1];
3593 coords[2] = HEXA8B_REF[2];
3596 coords[0] = HEXA8B_REF[3];
3597 coords[1] = HEXA8B_REF[4];
3598 coords[2] = HEXA8B_REF[5];
3601 coords[0] = HEXA8B_REF[6];
3602 coords[1] = HEXA8B_REF[7];
3603 coords[2] = HEXA8B_REF[8];
3606 coords[0] = HEXA8B_REF[9];
3607 coords[1] = HEXA8B_REF[10];
3608 coords[2] = HEXA8B_REF[11];
3611 coords[0] = HEXA8B_REF[12];
3612 coords[1] = HEXA8B_REF[13];
3613 coords[2] = HEXA8B_REF[14];
3616 coords[0] = HEXA8B_REF[15];
3617 coords[1] = HEXA8B_REF[16];
3618 coords[2] = HEXA8B_REF[17];
3621 coords[0] = HEXA8B_REF[18];
3622 coords[1] = HEXA8B_REF[19];
3623 coords[2] = HEXA8B_REF[20];
3626 coords[0] = HEXA8B_REF[21];
3627 coords[1] = HEXA8B_REF[22];
3628 coords[2] = HEXA8B_REF[23];
3630 LOCAL_COORD_MACRO_END;
3632 SHAPE_FUN_MACRO_BEGIN;
3633 funValue[0] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
3634 funValue[3] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
3635 funValue[2] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
3636 funValue[1] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
3638 funValue[4] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
3639 funValue[7] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
3640 funValue[6] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
3641 funValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
3642 SHAPE_FUN_MACRO_END;
3644 DEV_SHAPE_FUN_MACRO_BEGIN;
3645 devFunValue[0] = 0.125 * (-1.0) * (1.0 - gc[1])*(1.0 - gc[2]);
3646 devFunValue[1] = 0.125 * (1.0 - gc[0]) * (-1.0) * (1.0 - gc[2]);
3647 devFunValue[2] = 0.125 * (1.0 - gc[0]) * (1.0 - gc[1]) *(-1.0);
3649 devFunValue[9] = 0.125*(1.0 - gc[1])*(1.0 - gc[2]);
3650 devFunValue[10] = 0.125*(1.0 + gc[0])*(-1.0)*(1.0 - gc[2]);
3651 devFunValue[11] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0);
3653 devFunValue[6] = 0.125*(1.0 + gc[1])*(1.0 - gc[2]);
3654 devFunValue[7] = 0.125*(1.0 + gc[0])*(1.0 - gc[2]);
3655 devFunValue[8] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0);
3657 devFunValue[3] = 0.125*(-1.0)*(1.0 + gc[1])*(1.0 - gc[2]);
3658 devFunValue[4] = 0.125*(1.0 - gc[0])*(1.0 - gc[2]);
3659 devFunValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0);
3661 devFunValue[12] = 0.125*(-1.0)*(1.0 - gc[1])*(1.0 + gc[2]);
3662 devFunValue[13] = 0.125*(1.0 - gc[0])*(-1.0)*(1.0 + gc[2]);
3663 devFunValue[14] = 0.125*(1.0 - gc[0])*(1.0 - gc[1]);
3665 devFunValue[21] = 0.125*(1.0 - gc[1])*(1.0 + gc[2]);
3666 devFunValue[22] = 0.125*(1.0 + gc[0])*(-1.0)*(1.0 + gc[2]);
3667 devFunValue[23] = 0.125*(1.0 + gc[0])*(1.0 - gc[1]);
3669 devFunValue[18] = 0.125*(1.0 + gc[1])*(1.0 + gc[2]);
3670 devFunValue[19] = 0.125*(1.0 + gc[0])*(1.0 + gc[2]);
3671 devFunValue[20] = 0.125*(1.0 + gc[0])*(1.0 + gc[1]);
3673 devFunValue[15] = 0.125*(-1.0)*(1.0 + gc[1])*(1.0 + gc[2]);
3674 devFunValue[16] = 0.125*(1.0 - gc[0])*(1.0 + gc[2]);
3675 devFunValue[17] = 0.125*(1.0 - gc[0])*(1.0 + gc[1]);
3676 DEV_SHAPE_FUN_MACRO_END;
3680 * This shapefunc map is same as degenerated quad4bInit
3682 void GaussInfo::hexa8DegQuad4aInit()
3684 LOCAL_COORD_MACRO_BEGIN;
3725 LOCAL_COORD_MACRO_END;
3727 SHAPE_FUN_MACRO_BEGIN;
3728 funValue[0] = 0.25*(1.0 + gc[1])*(1.0 - gc[0]);
3729 funValue[1] = 0.25*(1.0 - gc[1])*(1.0 - gc[0]);
3730 funValue[2] = 0.25*(1.0 - gc[1])*(1.0 + gc[0]);
3731 funValue[3] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
3736 SHAPE_FUN_MACRO_END;
3738 DEV_SHAPE_FUN_MACRO_BEGIN;
3739 devFunValue[0] = -0.25*(1.0+gc[1]);
3740 devFunValue[1] = 0.25*(1.0-gc[0]);
3741 devFunValue[2] = 0.0;
3743 devFunValue[3] = -0.25*(1-gc[1]);
3744 devFunValue[4] = -0.25*(1.0-gc[0]);
3745 devFunValue[5] = 0.0;
3747 devFunValue[6] = 0.25*(1.0-gc[1]);
3748 devFunValue[7] = -0.25*(1.0+gc[0]);
3749 devFunValue[8] = 0.0;
3751 devFunValue[9] = 0.25*(1.0+gc[1]);
3752 devFunValue[10] = 0.25*(1.0+gc[0]);
3753 devFunValue[11] = 0.0;
3755 devFunValue[12] = 0.0;
3756 devFunValue[13] = 0.0;
3757 devFunValue[14] = 0.0;
3759 devFunValue[15] = 0.0;
3760 devFunValue[16] = 0.0;
3761 devFunValue[17] = 0.0;
3763 devFunValue[18] = 0.0;
3764 devFunValue[19] = 0.0;
3765 devFunValue[20] = 0.0;
3767 devFunValue[21] = 0.0;
3768 devFunValue[22] = 0.0;
3769 devFunValue[23] = 0.0;
3770 DEV_SHAPE_FUN_MACRO_END;
3774 * This shapefunc map is same as degenerated quad4bInit
3776 void GaussInfo::hexa8DegQuad4bInit()
3778 LOCAL_COORD_MACRO_BEGIN;
3819 LOCAL_COORD_MACRO_END;
3821 SHAPE_FUN_MACRO_BEGIN;
3822 funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
3823 funValue[1] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
3824 funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
3825 funValue[3] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
3830 SHAPE_FUN_MACRO_END;
3832 DEV_SHAPE_FUN_MACRO_BEGIN;
3833 devFunValue[0] = -0.25*(1.0-gc[1]);
3834 devFunValue[1] = -0.25*(1.0-gc[0]);
3835 devFunValue[2] = 0.0;
3837 devFunValue[3] = 0.25*(1-gc[1]);
3838 devFunValue[4] = -0.25*(1.0+gc[0]);
3839 devFunValue[5] = 0.0;
3841 devFunValue[6] = 0.25*(1.0+gc[1]);
3842 devFunValue[7] = 0.25*(1.0+gc[0]);
3843 devFunValue[8] = 0.0;
3845 devFunValue[9] = -0.25*(1.0+gc[1]);
3846 devFunValue[10] = 0.25*(1.0-gc[0]);
3847 devFunValue[11] = 0.0;
3849 devFunValue[12] = 0.0;
3850 devFunValue[13] = 0.0;
3851 devFunValue[14] = 0.0;
3853 devFunValue[15] = 0.0;
3854 devFunValue[16] = 0.0;
3855 devFunValue[17] = 0.0;
3857 devFunValue[18] = 0.0;
3858 devFunValue[19] = 0.0;
3859 devFunValue[20] = 0.0;
3861 devFunValue[21] = 0.0;
3862 devFunValue[22] = 0.0;
3863 devFunValue[23] = 0.0;
3864 DEV_SHAPE_FUN_MACRO_END;
3868 * This shapefunc map is same as degenerated quad4cInit
3870 void GaussInfo::hexa8DegQuad4cInit()
3872 LOCAL_COORD_MACRO_BEGIN;
3914 LOCAL_COORD_MACRO_END;
3916 SHAPE_FUN_MACRO_BEGIN;
3917 funValue[0] = 0.25*(1.0 - gc[0])*(1.0 - gc[1]);
3918 funValue[1] = 0.25*(1.0 - gc[0])*(1.0 + gc[1]);
3919 funValue[2] = 0.25*(1.0 + gc[0])*(1.0 + gc[1]);
3920 funValue[3] = 0.25*(1.0 + gc[0])*(1.0 - gc[1]);
3925 SHAPE_FUN_MACRO_END;
3927 DEV_SHAPE_FUN_MACRO_BEGIN;
3928 devFunValue[0] = -0.25*(1.0-gc[1]);
3929 devFunValue[1] = -0.25*(1.0-gc[0]);
3930 devFunValue[2] = 0.0;
3932 devFunValue[3] = -0.25*(1.0+gc[1]);
3933 devFunValue[4] = 0.25*(1.0-gc[0]);
3934 devFunValue[5] = 0.0;
3936 devFunValue[6] = 0.25*(1.0+gc[1]);
3937 devFunValue[7] = 0.25*(1.0+gc[0]);
3938 devFunValue[8] = 0.0;
3940 devFunValue[9] = 0.25*(1.0-gc[1]);
3941 devFunValue[10] = -0.25*(1.0+gc[0]);
3942 devFunValue[11] = 0.0;
3944 devFunValue[12] = 0.0;
3945 devFunValue[13] = 0.0;
3946 devFunValue[14] = 0.0;
3948 devFunValue[15] = 0.0;
3949 devFunValue[16] = 0.0;
3950 devFunValue[17] = 0.0;
3952 devFunValue[18] = 0.0;
3953 devFunValue[19] = 0.0;
3954 devFunValue[20] = 0.0;
3956 devFunValue[21] = 0.0;
3957 devFunValue[22] = 0.0;
3958 devFunValue[23] = 0.0;
3959 DEV_SHAPE_FUN_MACRO_END;
3963 * Init Qaudratic Hehahedron Reference coordinates and Shape function.
3966 void GaussInfo::hexa20aInit()
3968 LOCAL_COORD_MACRO_BEGIN;
3970 coords[0] = HEXA20A_REF[0];
3971 coords[1] = HEXA20A_REF[1];
3972 coords[2] = HEXA20A_REF[2];
3975 coords[0] = HEXA20A_REF[3];
3976 coords[1] = HEXA20A_REF[4];
3977 coords[2] = HEXA20A_REF[5];
3980 coords[0] = HEXA20A_REF[6];
3981 coords[1] = HEXA20A_REF[7];
3982 coords[2] = HEXA20A_REF[8];
3985 coords[0] = HEXA20A_REF[9];
3986 coords[1] = HEXA20A_REF[10];
3987 coords[2] = HEXA20A_REF[11];
3990 coords[0] = HEXA20A_REF[12];
3991 coords[1] = HEXA20A_REF[13];
3992 coords[2] = HEXA20A_REF[14];
3995 coords[0] = HEXA20A_REF[15];
3996 coords[1] = HEXA20A_REF[16];
3997 coords[2] = HEXA20A_REF[17];
4000 coords[0] = HEXA20A_REF[18];
4001 coords[1] = HEXA20A_REF[19];
4002 coords[2] = HEXA20A_REF[20];
4005 coords[0] = HEXA20A_REF[21];
4006 coords[1] = HEXA20A_REF[22];
4007 coords[2] = HEXA20A_REF[23];
4010 coords[0] = HEXA20A_REF[24];
4011 coords[1] = HEXA20A_REF[25];
4012 coords[2] = HEXA20A_REF[26];
4015 coords[0] = HEXA20A_REF[27];
4016 coords[1] = HEXA20A_REF[28];
4017 coords[2] = HEXA20A_REF[29];
4020 coords[0] = HEXA20A_REF[30];
4021 coords[1] = HEXA20A_REF[31];
4022 coords[2] = HEXA20A_REF[32];
4025 coords[0] = HEXA20A_REF[33];
4026 coords[1] = HEXA20A_REF[34];
4027 coords[2] = HEXA20A_REF[35];
4030 coords[0] = HEXA20A_REF[36];
4031 coords[1] = HEXA20A_REF[37];
4032 coords[2] = HEXA20A_REF[38];
4035 coords[0] = HEXA20A_REF[39];
4036 coords[1] = HEXA20A_REF[40];
4037 coords[2] = HEXA20A_REF[41];
4040 coords[0] = HEXA20A_REF[42];
4041 coords[1] = HEXA20A_REF[43];
4042 coords[2] = HEXA20A_REF[44];
4045 coords[0] = HEXA20A_REF[45];
4046 coords[1] = HEXA20A_REF[46];
4047 coords[2] = HEXA20A_REF[47];
4050 coords[0] = HEXA20A_REF[48];
4051 coords[1] = HEXA20A_REF[49];
4052 coords[2] = HEXA20A_REF[50];
4055 coords[0] = HEXA20A_REF[51];
4056 coords[1] = HEXA20A_REF[52];
4057 coords[2] = HEXA20A_REF[53];
4060 coords[0] = HEXA20A_REF[54];
4061 coords[1] = HEXA20A_REF[55];
4062 coords[2] = HEXA20A_REF[56];
4065 coords[0] = HEXA20A_REF[57];
4066 coords[1] = HEXA20A_REF[58];
4067 coords[2] = HEXA20A_REF[59];
4069 LOCAL_COORD_MACRO_END;
4071 SHAPE_FUN_MACRO_BEGIN;
4072 funValue[0] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 - gc[2])*
4073 (-2.0 - gc[0] - gc[1] - gc[2]);
4074 funValue[1] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 - gc[2])*
4075 (-2.0 + gc[0] - gc[1] - gc[2]);
4076 funValue[2] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[2])*
4077 (-2.0 + gc[0] + gc[1] - gc[2]);
4078 funValue[3] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 - gc[2])*
4079 (-2.0 - gc[0] + gc[1] - gc[2]);
4080 funValue[4] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[2])*
4081 (-2.0 - gc[0] - gc[1] + gc[2]);
4082 funValue[5] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 + gc[2])*
4083 (-2.0 + gc[0] - gc[1] + gc[2]);
4084 funValue[6] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 + gc[2])*
4085 (-2.0 + gc[0] + gc[1] + gc[2]);
4086 funValue[7] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[2])*
4087 (-2.0 - gc[0] + gc[1] + gc[2]);
4089 funValue[8] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
4090 funValue[9] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(1.0 - gc[2]);
4091 funValue[10] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4092 funValue[11] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(1.0 - gc[2]);
4093 funValue[12] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(1.0 - gc[1]);
4094 funValue[13] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(1.0 - gc[1]);
4095 funValue[14] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(1.0 + gc[1]);
4096 funValue[15] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(1.0 + gc[1]);
4097 funValue[16] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4098 funValue[17] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(1.0 + gc[2]);
4099 funValue[18] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4100 funValue[19] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(1.0 + gc[2]);
4101 SHAPE_FUN_MACRO_END;
4103 DEV_SHAPE_FUN_MACRO_BEGIN;
4105 devFunValue[0] = 0.125*(1. + gc[1] + gc[2] + 2* gc[0]) * (1.0 - gc[1])*(1.0 - gc[2]);
4106 devFunValue[1] = 0.125*(1.0 - gc[0])*(1. + gc[0] + gc[2] + 2 * gc[1])*(1.0 - gc[2]);
4107 devFunValue[2] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[0] + gc[1] + 2 *gc[2]);
4109 devFunValue[3] = 0.125*(-1.0 - gc[1] - gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
4110 devFunValue[4] = 0.125*(1.0 + gc[0])* (1 - gc[0] + gc[2] + 2*gc[1]) *(1.0 - gc[2]);
4111 devFunValue[5] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])* (1 - gc[0] + gc[1] + 2*gc[2]);
4113 devFunValue[6] = 0.125*(-1.0 + gc[1] - gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4114 devFunValue[7] = 0.125*(1.0 + gc[0])* (-1 + gc[0] - gc[2] + 2*gc[1]) *(1.0 - gc[2]);
4115 devFunValue[8] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[0] - gc[1] + 2*gc[2]);
4117 devFunValue[9] = 0.125*(1.0 - gc[1] + gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4118 devFunValue[10] = 0.125*(1.0 - gc[0])*(-1 - gc[0] - gc[2] + 2*gc[1])*(1.0 - gc[2]);
4119 devFunValue[11] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[0] - gc[1] + 2*gc[2]);
4121 devFunValue[12] = 0.125*(1.0 + gc[1] - gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4122 devFunValue[13] = 0.125*(1.0 - gc[0])*(1 + gc[0] - gc[2] + 2*gc[1])*(1.0 + gc[2]);
4123 devFunValue[14] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(-1.0 - gc[0] - gc[1] + 2*gc[2]);
4125 devFunValue[15] = 0.125*(-1.0 - gc[1] + gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4126 devFunValue[16] = 0.125*(1.0 + gc[0])*(1 - gc[0] - gc[2] + 2*gc[1])*(1.0 + gc[2]);
4127 devFunValue[17] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0 + gc[0] - gc[1] + 2*gc[2]);
4129 devFunValue[18] = 0.125*(-1.0 + gc[1] + gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4130 devFunValue[19] = 0.125*(1.0 + gc[0])*(-1 + gc[0] + gc[2] + 2*gc[1])*(1.0 + gc[2]);
4131 devFunValue[20] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0 + gc[0] + gc[1] + 2*gc[2]);
4133 devFunValue[21] = 0.125*(1.0 - gc[1] - gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4134 devFunValue[22] = 0.125*(1.0 - gc[0])*(-1 - gc[0] + gc[2] + 2*gc[1])*(1.0 + gc[2]);
4135 devFunValue[23] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0 - gc[0] + gc[1] + 2*gc[2]);
4137 devFunValue[24] = 0.25*(-2.0*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
4138 devFunValue[25] = 0.25*(1.0 - gc[0]*gc[0])*(-1)*(1.0 - gc[2]);
4139 devFunValue[26] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(-1.0);
4141 devFunValue[27] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[2]);
4142 devFunValue[28] = 0.25*(-2.0*gc[1])*(1.0 + gc[0])*(1.0 - gc[2]);
4143 devFunValue[29] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(-1.0);
4145 devFunValue[30] = 0.25*(-2.0*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4146 devFunValue[31] = 0.25*(1.0 - gc[0]*gc[0])*(1.0)*(1.0 - gc[2]);
4147 devFunValue[32] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(-1.0);
4149 devFunValue[33] = 0.25*(1.0 - gc[1]*gc[1])*(-1.0)*(1.0 - gc[2]);
4150 devFunValue[34] = 0.25*(-2.0*gc[1])*(1.0 - gc[0])*(1.0 - gc[2]);
4151 devFunValue[35] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(-1.0);
4153 devFunValue[36] = 0.25*(1.0 - gc[2]*gc[2])*(-1.0)*(1.0 - gc[1]);
4154 devFunValue[37] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(-1.0);
4155 devFunValue[38] = 0.25*(-2.0*gc[2])*(1.0 - gc[0])*(1.0 - gc[1]);
4157 devFunValue[39] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[1]);
4158 devFunValue[40] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(-1.0);
4159 devFunValue[41] = 0.25*(-2.0*gc[2])*(1.0 + gc[0])*(1.0 - gc[1]);
4161 devFunValue[42] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[1]);
4162 devFunValue[43] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0]);
4163 devFunValue[44] = 0.25*(-2.0*gc[2])*(1.0 + gc[0])*(1.0 + gc[1]);
4165 devFunValue[45] = 0.25*(1.0 - gc[2]*gc[2])*(-1.0)*(1.0 + gc[1]);
4166 devFunValue[46] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0]);
4167 devFunValue[47] = 0.25*(-2.0*gc[2])*(1.0 - gc[0])*(1.0 + gc[1]);
4169 devFunValue[48] = 0.25*(-2.0*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4170 devFunValue[49] = 0.25*(1.0 - gc[0]*gc[0])*(-1.0)*(1.0 + gc[2]);
4171 devFunValue[50] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1]);
4173 devFunValue[51] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[2]);
4174 devFunValue[52] = 0.25*(-2.0*gc[1])*(1.0 + gc[0])*(1.0 + gc[2]);
4175 devFunValue[53] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0]);
4177 devFunValue[54] = 0.25*(-2.0*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4178 devFunValue[55] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[2]);
4179 devFunValue[56] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1]);
4181 devFunValue[57] = 0.25*(1.0 - gc[1]*gc[1])*(-1.0)*(1.0 + gc[2]);
4182 devFunValue[58] = 0.25*(-2.0*gc[1])*(1.0 - gc[0])*(1.0 + gc[2]);
4183 devFunValue[59] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0]);
4185 SHAPE_FUN_MACRO_END;
4189 * Init Qaudratic Hehahedron Reference coordinates and Shape function.
4192 void GaussInfo::hexa20bInit()
4194 LOCAL_COORD_MACRO_BEGIN;
4196 coords[0] = HEXA20B_REF[0];
4197 coords[1] = HEXA20B_REF[1];
4198 coords[2] = HEXA20B_REF[2];
4201 coords[0] = HEXA20B_REF[3];
4202 coords[1] = HEXA20B_REF[4];
4203 coords[2] = HEXA20B_REF[5];
4206 coords[0] = HEXA20B_REF[6];
4207 coords[1] = HEXA20B_REF[7];
4208 coords[2] = HEXA20B_REF[8];
4211 coords[0] = HEXA20B_REF[9];
4212 coords[1] = HEXA20B_REF[10];
4213 coords[2] = HEXA20B_REF[11];
4216 coords[0] = HEXA20B_REF[12];
4217 coords[1] = HEXA20B_REF[13];
4218 coords[2] = HEXA20B_REF[14];
4221 coords[0] = HEXA20B_REF[15];
4222 coords[1] = HEXA20B_REF[16];
4223 coords[2] = HEXA20B_REF[17];
4226 coords[0] = HEXA20B_REF[18];
4227 coords[1] = HEXA20B_REF[19];
4228 coords[2] = HEXA20B_REF[20];
4231 coords[0] = HEXA20B_REF[21];
4232 coords[1] = HEXA20B_REF[22];
4233 coords[2] = HEXA20B_REF[23];
4236 coords[0] = HEXA20B_REF[24];
4237 coords[1] = HEXA20B_REF[25];
4238 coords[2] = HEXA20B_REF[26];
4241 coords[0] = HEXA20B_REF[27];
4242 coords[1] = HEXA20B_REF[28];
4243 coords[2] = HEXA20B_REF[29];
4246 coords[0] = HEXA20B_REF[30];
4247 coords[1] = HEXA20B_REF[31];
4248 coords[2] = HEXA20B_REF[32];
4251 coords[0] = HEXA20B_REF[33];
4252 coords[1] = HEXA20B_REF[34];
4253 coords[2] = HEXA20B_REF[35];
4256 coords[0] = HEXA20B_REF[36];
4257 coords[1] = HEXA20B_REF[37];
4258 coords[2] = HEXA20B_REF[38];
4261 coords[0] = HEXA20B_REF[39];
4262 coords[1] = HEXA20B_REF[40];
4263 coords[2] = HEXA20B_REF[41];
4266 coords[0] = HEXA20B_REF[42];
4267 coords[1] = HEXA20B_REF[43];
4268 coords[2] = HEXA20B_REF[44];
4271 coords[0] = HEXA20B_REF[45];
4272 coords[1] = HEXA20B_REF[46];
4273 coords[2] = HEXA20B_REF[47];
4276 coords[0] = HEXA20B_REF[48];
4277 coords[1] = HEXA20B_REF[49];
4278 coords[2] = HEXA20B_REF[50];
4281 coords[0] = HEXA20B_REF[51];
4282 coords[1] = HEXA20B_REF[52];
4283 coords[2] = HEXA20B_REF[53];
4286 coords[0] = HEXA20B_REF[54];
4287 coords[1] = HEXA20B_REF[55];
4288 coords[2] = HEXA20B_REF[56];
4291 coords[0] = HEXA20B_REF[57];
4292 coords[1] = HEXA20B_REF[58];
4293 coords[2] = HEXA20B_REF[59];
4295 LOCAL_COORD_MACRO_END;
4297 SHAPE_FUN_MACRO_BEGIN;
4299 funValue[0] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 - gc[2])*
4300 (-2.0 - gc[0] - gc[1] - gc[2]);
4301 funValue[3] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 - gc[2])*
4302 (-2.0 + gc[0] - gc[1] - gc[2]);
4303 funValue[2] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[2])*
4304 (-2.0 + gc[0] + gc[1] - gc[2]);
4305 funValue[1] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 - gc[2])*
4306 (-2.0 - gc[0] + gc[1] - gc[2]);
4307 funValue[4] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[2])*
4308 (-2.0 - gc[0] - gc[1] + gc[2]);
4309 funValue[7] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(1.0 + gc[2])*
4310 (-2.0 + gc[0] - gc[1] + gc[2]);
4311 funValue[6] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 + gc[2])*
4312 (-2.0 + gc[0] + gc[1] + gc[2]);
4313 funValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[2])*
4314 (-2.0 - gc[0] + gc[1] + gc[2]);
4316 funValue[11] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
4317 funValue[10] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(1.0 - gc[2]);
4318 funValue[9] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4319 funValue[8] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(1.0 - gc[2]);
4320 funValue[16] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(1.0 - gc[1]);
4321 funValue[19] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(1.0 - gc[1]);
4322 funValue[18] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(1.0 + gc[1]);
4323 funValue[17] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(1.0 + gc[1]);
4324 funValue[15] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4325 funValue[14] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(1.0 + gc[2]);
4326 funValue[13] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4327 funValue[12] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(1.0 + gc[2]);
4328 SHAPE_FUN_MACRO_END;
4330 DEV_SHAPE_FUN_MACRO_BEGIN;
4331 devFunValue[0] = 0.125*(1. + gc[1] + gc[2] + 2* gc[0]) * (1.0 - gc[1])*(1.0 - gc[2]);
4332 devFunValue[1] = 0.125*(1.0 - gc[0])*(1. + gc[0] + gc[2] + 2 * gc[1])*(1.0 - gc[2]);
4333 devFunValue[2] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(1.0 + gc[0] + gc[1] + 2 *gc[2]);
4335 devFunValue[9] = 0.125*(-1.0 - gc[1] - gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
4336 devFunValue[10] = 0.125*(1.0 + gc[0])* (1 - gc[0] + gc[2] + 2*gc[1]) *(1.0 - gc[2]);
4337 devFunValue[11] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])* (1 - gc[0] + gc[1] + 2*gc[2]);
4339 devFunValue[6] = 0.125*(-1.0 + gc[1] - gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4340 devFunValue[7] = 0.125*(1.0 + gc[0])* (-1 + gc[0] - gc[2] + 2*gc[1]) *(1.0 - gc[2]);
4341 devFunValue[8] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(1.0 - gc[0] - gc[1] + 2*gc[2]);
4343 devFunValue[3] = 0.125*(1.0 - gc[1] + gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4344 devFunValue[4] = 0.125*(1.0 - gc[0])*(-1 - gc[0] - gc[2] + 2*gc[1])*(1.0 - gc[2]);
4345 devFunValue[5] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(1.0 + gc[0] - gc[1] + 2*gc[2]);
4347 devFunValue[12] = 0.125*(1.0 + gc[1] - gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4348 devFunValue[13] = 0.125*(1.0 - gc[0])*(1 + gc[0] - gc[2] + 2*gc[1])*(1.0 + gc[2]);
4349 devFunValue[14] = 0.125*(1.0 - gc[0])*(1.0 - gc[1])*(-1.0 - gc[0] - gc[1] + 2*gc[2]);
4351 devFunValue[21] = 0.125*(-1.0 - gc[1] + gc[2] + 2*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4352 devFunValue[22] = 0.125*(1.0 + gc[0])*(1 - gc[0] - gc[2] + 2*gc[1])*(1.0 + gc[2]);
4353 devFunValue[23] = 0.125*(1.0 + gc[0])*(1.0 - gc[1])*(-1.0 + gc[0] - gc[1] + 2*gc[2]);
4355 devFunValue[18] = 0.125*(-1.0 + gc[1] + gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4356 devFunValue[19] = 0.125*(1.0 + gc[0])*(-1 + gc[0] + gc[2] + 2*gc[1])*(1.0 + gc[2]);
4357 devFunValue[20] = 0.125*(1.0 + gc[0])*(1.0 + gc[1])*(-1.0 + gc[0] + gc[1] + 2*gc[2]);
4359 devFunValue[15] = 0.125*(1.0 - gc[1] - gc[2] + 2*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4360 devFunValue[16] = 0.125*(1.0 - gc[0])*(-1 - gc[0] + gc[2] + 2*gc[1])*(1.0 + gc[2]);
4361 devFunValue[17] = 0.125*(1.0 - gc[0])*(1.0 + gc[1])*(-1.0 - gc[0] + gc[1] + 2*gc[2]);
4363 devFunValue[33] = 0.25*(-2.0*gc[0])*(1.0 - gc[1])*(1.0 - gc[2]);
4364 devFunValue[34] = 0.25*(1.0 - gc[0]*gc[0])*(-1)*(1.0 - gc[2]);
4365 devFunValue[35] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1])*(-1.0);
4367 devFunValue[30] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[2]);
4368 devFunValue[31] = 0.25*(-2.0*gc[1])*(1.0 + gc[0])*(1.0 - gc[2]);
4369 devFunValue[32] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0])*(-1.0);
4371 devFunValue[27] = 0.25*(-2.0*gc[0])*(1.0 + gc[1])*(1.0 - gc[2]);
4372 devFunValue[28] = 0.25*(1.0 - gc[0]*gc[0])*(1.0)*(1.0 - gc[2]);
4373 devFunValue[29] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1])*(-1.0);
4375 devFunValue[24] = 0.25*(1.0 - gc[1]*gc[1])*(-1.0)*(1.0 - gc[2]);
4376 devFunValue[25] = 0.25*(-2.0*gc[1])*(1.0 - gc[0])*(1.0 - gc[2]);
4377 devFunValue[26] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0])*(-1.0);
4379 devFunValue[48] = 0.25*(1.0 - gc[2]*gc[2])*(-1.0)*(1.0 - gc[1]);
4380 devFunValue[49] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0])*(-1.0);
4381 devFunValue[50] = 0.25*(-2.0*gc[2])*(1.0 - gc[0])*(1.0 - gc[1]);
4383 devFunValue[57] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[1]);
4384 devFunValue[58] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0])*(-1.0);
4385 devFunValue[59] = 0.25*(-2.0*gc[2])*(1.0 + gc[0])*(1.0 - gc[1]);
4387 devFunValue[54] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[1]);
4388 devFunValue[55] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 + gc[0]);
4389 devFunValue[56] = 0.25*(-2.0*gc[2])*(1.0 + gc[0])*(1.0 + gc[1]);
4391 devFunValue[51] = 0.25*(1.0 - gc[2]*gc[2])*(-1.0)*(1.0 + gc[1]);
4392 devFunValue[52] = 0.25*(1.0 - gc[2]*gc[2])*(1.0 - gc[0]);
4393 devFunValue[53] = 0.25*(-2.0*gc[2])*(1.0 - gc[0])*(1.0 + gc[1]);
4395 devFunValue[45] = 0.25*(-2.0*gc[0])*(1.0 - gc[1])*(1.0 + gc[2]);
4396 devFunValue[46] = 0.25*(1.0 - gc[0]*gc[0])*(-1.0)*(1.0 + gc[2]);
4397 devFunValue[47] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 - gc[1]);
4399 devFunValue[42] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[2]);
4400 devFunValue[43] = 0.25*(-2.0*gc[1])*(1.0 + gc[0])*(1.0 + gc[2]);
4401 devFunValue[44] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 + gc[0]);
4403 devFunValue[39] = 0.25*(-2.0*gc[0])*(1.0 + gc[1])*(1.0 + gc[2]);
4404 devFunValue[40] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[2]);
4405 devFunValue[41] = 0.25*(1.0 - gc[0]*gc[0])*(1.0 + gc[1]);
4407 devFunValue[36] = 0.25*(1.0 - gc[1]*gc[1])*(-1.0)*(1.0 + gc[2]);
4408 devFunValue[37] = 0.25*(-2.0*gc[1])*(1.0 - gc[0])*(1.0 + gc[2]);
4409 devFunValue[38] = 0.25*(1.0 - gc[1]*gc[1])*(1.0 - gc[0]);
4410 DEV_SHAPE_FUN_MACRO_END;
4413 void GaussInfo::hexa27aInit()
4415 LOCAL_COORD_MACRO_BEGIN;
4417 coords[0] = HEXA27A_REF[0];
4418 coords[1] = HEXA27A_REF[1];
4419 coords[2] = HEXA27A_REF[2];
4422 coords[0] = HEXA27A_REF[3];
4423 coords[1] = HEXA27A_REF[4];
4424 coords[2] = HEXA27A_REF[5];
4427 coords[0] = HEXA27A_REF[6];
4428 coords[1] = HEXA27A_REF[7];
4429 coords[2] = HEXA27A_REF[8];
4432 coords[0] = HEXA27A_REF[9];
4433 coords[1] = HEXA27A_REF[10];
4434 coords[2] = HEXA27A_REF[11];
4437 coords[0] = HEXA27A_REF[12];
4438 coords[1] = HEXA27A_REF[13];
4439 coords[2] = HEXA27A_REF[14];
4442 coords[0] = HEXA27A_REF[15];
4443 coords[1] = HEXA27A_REF[16];
4444 coords[2] = HEXA27A_REF[17];
4447 coords[0] = HEXA27A_REF[18];
4448 coords[1] = HEXA27A_REF[19];
4449 coords[2] = HEXA27A_REF[20];
4452 coords[0] = HEXA27A_REF[21];
4453 coords[1] = HEXA27A_REF[22];
4454 coords[2] = HEXA27A_REF[23];
4457 coords[0] = HEXA27A_REF[24];
4458 coords[1] = HEXA27A_REF[25];
4459 coords[2] = HEXA27A_REF[26];
4462 coords[0] = HEXA27A_REF[27];
4463 coords[1] = HEXA27A_REF[28];
4464 coords[2] = HEXA27A_REF[29];
4467 coords[0] = HEXA27A_REF[30];
4468 coords[1] = HEXA27A_REF[31];
4469 coords[2] = HEXA27A_REF[32];
4472 coords[0] = HEXA27A_REF[33];
4473 coords[1] = HEXA27A_REF[34];
4474 coords[2] = HEXA27A_REF[35];
4477 coords[0] = HEXA27A_REF[36];
4478 coords[1] = HEXA27A_REF[37];
4479 coords[2] = HEXA27A_REF[38];
4482 coords[0] = HEXA27A_REF[39];
4483 coords[1] = HEXA27A_REF[40];
4484 coords[2] = HEXA27A_REF[41];
4487 coords[0] = HEXA27A_REF[42];
4488 coords[1] = HEXA27A_REF[43];
4489 coords[2] = HEXA27A_REF[44];
4492 coords[0] = HEXA27A_REF[45];
4493 coords[1] = HEXA27A_REF[46];
4494 coords[2] = HEXA27A_REF[47];
4497 coords[0] = HEXA27A_REF[48];
4498 coords[1] = HEXA27A_REF[49];
4499 coords[2] = HEXA27A_REF[50];
4502 coords[0] = HEXA27A_REF[51];
4503 coords[1] = HEXA27A_REF[52];
4504 coords[2] = HEXA27A_REF[53];
4507 coords[0] = HEXA27A_REF[54];
4508 coords[1] = HEXA27A_REF[55];
4509 coords[2] = HEXA27A_REF[56];
4512 coords[0] = HEXA27A_REF[57];
4513 coords[1] = HEXA27A_REF[58];
4514 coords[2] = HEXA27A_REF[59];
4517 coords[0] = HEXA27A_REF[60];
4518 coords[1] = HEXA27A_REF[61];
4519 coords[2] = HEXA27A_REF[62];
4522 coords[0] = HEXA27A_REF[63];
4523 coords[1] = HEXA27A_REF[64];
4524 coords[2] = HEXA27A_REF[65];
4527 coords[0] = HEXA27A_REF[66];
4528 coords[1] = HEXA27A_REF[67];
4529 coords[2] = HEXA27A_REF[68];
4532 coords[0] = HEXA27A_REF[69];
4533 coords[1] = HEXA27A_REF[70];
4534 coords[2] = HEXA27A_REF[71];
4537 coords[0] = HEXA27A_REF[72];
4538 coords[1] = HEXA27A_REF[73];
4539 coords[2] = HEXA27A_REF[74];
4542 coords[0] = HEXA27A_REF[75];
4543 coords[1] = HEXA27A_REF[76];
4544 coords[2] = HEXA27A_REF[77];
4547 coords[0] = HEXA27A_REF[78];
4548 coords[1] = HEXA27A_REF[79];
4549 coords[2] = HEXA27A_REF[80];
4551 LOCAL_COORD_MACRO_END;
4553 SHAPE_FUN_MACRO_BEGIN;
4555 funValue[0] =0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]-1.);
4556 funValue[1] =0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]-1.);
4557 funValue[2] =0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]-1.);
4558 funValue[3] =0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]-1.);
4559 funValue[4] =0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]+1.);
4560 funValue[5] =0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]+1.);
4561 funValue[6] =0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]+1.);
4562 funValue[7] =0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]+1.);
4563 funValue[8] =0.25*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]-1.);
4564 funValue[9] =0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]-1.);
4565 funValue[10]=0.25*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]-1.);
4566 funValue[11]=0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]-1.);
4567 funValue[12]=0.25*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]+1.);
4568 funValue[13]=0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]+1.);
4569 funValue[14]=0.25*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]+1.);
4570 funValue[15]=0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]+1.);
4571 funValue[16]=0.25*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]-1.)*(1.-gc[2]*gc[2]);
4572 funValue[17]=0.25*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]+1.)*(1.-gc[2]*gc[2]);
4573 funValue[18]=0.25*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]+1.)*(1.-gc[2]*gc[2]);
4574 funValue[19]=0.25*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]-1.)*(1.-gc[2]*gc[2]);
4575 funValue[20]=0.5*(1.-gc[0]*gc[0])*(1.-gc[1]*gc[1])*gc[2]*(gc[2]-1.);
4576 funValue[21]=0.5*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1])*(1.-gc[2]*gc[2]);
4577 funValue[22]=0.5*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.)*(1.-gc[2]*gc[2]);
4578 funValue[23]=0.5*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1])*(1.-gc[2]*gc[2]);
4579 funValue[24]=0.5*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.)*(1.-gc[2]*gc[2]);
4580 funValue[25]=0.5*(1.-gc[0]*gc[0])*(1.-gc[1]*gc[1])*gc[2]*(gc[2]+1.);
4581 funValue[26]=(1.-gc[0]*gc[0])*(1.-gc[1]*gc[1])*(1.-gc[2]*gc[2]);
4583 SHAPE_FUN_MACRO_END;
4585 DEV_SHAPE_FUN_MACRO_BEGIN;
4587 devFunValue[0] = 0.125*(2*gc[0]-1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]-1.);
4588 devFunValue[1] = 0.125*gc[0]*(gc[0]-1.)*(2*gc[1]-1.)*gc[2]*(gc[2]-1.);
4589 devFunValue[2] = 0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]-1.)*(2*gc[2]-1.);
4591 devFunValue[3] = 0.125*(2*gc[0]-1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]-1.);
4592 devFunValue[4] = 0.125*gc[0]*(gc[0]-1.)*(2*gc[1]+1.)*gc[2]*(gc[2]-1.);
4593 devFunValue[5] = 0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]+1.)*(2*gc[2]-1.);
4595 devFunValue[6] = 0.125*(2*gc[0]+1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]-1.);
4596 devFunValue[7] = 0.125*gc[0]*(gc[0]+1.)*(2*gc[1]+1.)*gc[2]*(gc[2]-1.);
4597 devFunValue[8] = 0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]+1.)*(2*gc[2]-1.);
4599 devFunValue[9] = 0.125*(2*gc[0]+1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]-1.);
4600 devFunValue[10] = 0.125*gc[0]*(gc[0]+1.)*(2*gc[1]-1.)*gc[2]*(gc[2]-1.);
4601 devFunValue[11] = 0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]-1.)*(2*gc[2]-1.);
4603 devFunValue[12] = 0.125*(2*gc[0]-1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]+1.);
4604 devFunValue[13] = 0.125*gc[0]*(gc[0]-1.)*(2*gc[1]-1.)*gc[2]*(gc[2]+1.);
4605 devFunValue[14] = 0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]-1.)*(2*gc[2]+1.);
4607 devFunValue[15] = 0.125*(2*gc[0]-1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]+1.);
4608 devFunValue[16] = 0.125*gc[0]*(gc[0]-1.)*(2*gc[1]+1.)*gc[2]*(gc[2]+1.);
4609 devFunValue[17] = 0.125*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]+1.)*(2*gc[2]+1.);
4611 devFunValue[18] = 0.125*(2*gc[0]+1.)*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]+1.);
4612 devFunValue[19] = 0.125*gc[0]*(gc[0]+1.)*(2*gc[1]+1.)*gc[2]*(gc[2]+1.);
4613 devFunValue[20] = 0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]+1.)*(2*gc[2]+1.);
4615 devFunValue[21] = 0.125*(2*gc[0]+1.)*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]+1.);
4616 devFunValue[22] = 0.125*gc[0]*(gc[0]+1.)*(2*gc[1]-1.)*gc[2]*(gc[2]+1.);
4617 devFunValue[23] = 0.125*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]-1.)*(2*gc[2]+1.);
4619 devFunValue[24] = 0.25*(2*gc[0]-1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]-1.);
4620 devFunValue[25] = 0.25*gc[0]*(gc[0]-1.)*(-2*gc[1])*gc[2]*(gc[2]-1.);
4621 devFunValue[26] = 0.25*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1])*(2*gc[2]-1.);
4623 devFunValue[27] = 0.25*(-2*gc[0])*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]-1.);
4624 devFunValue[28] = 0.25*(1.-gc[0]*gc[0])*(2*gc[1]+1.)*gc[2]*(gc[2]-1.);
4625 devFunValue[29] = 0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.)*(2*gc[2]-1.);
4627 devFunValue[30] = 0.25*(2*gc[0]+1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]-1.);
4628 devFunValue[31] = 0.25*gc[0]*(gc[0]+1.)*(-2*gc[1])*gc[2]*(gc[2]-1.);
4629 devFunValue[32] = 0.25*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1])*(2*gc[2]-1.);
4631 devFunValue[33] = 0.25*(-2*gc[0])*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]-1.);
4632 devFunValue[34] = 0.25*(1.-gc[0]*gc[0])*(2*gc[1]-1.)*gc[2]*(gc[2]-1.);
4633 devFunValue[35] = 0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.)*(2*gc[2]-1.);
4635 devFunValue[36] = 0.25*(2*gc[0]-1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]+1.);
4636 devFunValue[37] = 0.25*gc[0]*(gc[0]-1.)*(-2*gc[1])*gc[2]*(gc[2]+1.);
4637 devFunValue[38] = 0.25*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1])*(2*gc[2]+1.);
4639 devFunValue[39] = 0.25*(-2*gc[0])*gc[1]*(gc[1]+1.)*gc[2]*(gc[2]+1.);
4640 devFunValue[40] = 0.25*(1.-gc[0]*gc[0])*(2*gc[1]+1.)*gc[2]*(gc[2]+1.);
4641 devFunValue[41] = 0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.)*(2*gc[2]+1.);
4643 devFunValue[42] = 0.25*(2*gc[0]+1.)*(1.-gc[1]*gc[1])*gc[2]*(gc[2]+1.);
4644 devFunValue[43] = 0.25*gc[0]*(gc[0]+1.)*(-2*gc[1])*gc[2]*(gc[2]+1.);
4645 devFunValue[44] = 0.25*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1])*(2*gc[2]+1.);
4647 devFunValue[45] = 0.25*(-2*gc[0])*gc[1]*(gc[1]-1.)*gc[2]*(gc[2]+1.);
4648 devFunValue[46] = 0.25*(1.-gc[0]*gc[0])*(2*gc[1]-1.)*gc[2]*(gc[2]+1.);
4649 devFunValue[47] = 0.25*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.)*(2*gc[2]+1.);
4651 devFunValue[48] = 0.25*(2*gc[0]-1.)*gc[1]*(gc[1]-1.)*(1.-gc[2]*gc[2]);
4652 devFunValue[49] = 0.25*gc[0]*(gc[0]-1.)*(2*gc[1]-1.)*(1.-gc[2]*gc[2]);
4653 devFunValue[50] = 0.25*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]-1.)*(-2*gc[2]);
4655 devFunValue[51] = 0.25*(2*gc[0]-1.)*gc[1]*(gc[1]+1.)*(1.-gc[2]*gc[2]);
4656 devFunValue[52] = 0.25*gc[0]*(gc[0]-1.)*(2*gc[1]+1.)*(1.-gc[2]*gc[2]);
4657 devFunValue[53] = 0.25*gc[0]*(gc[0]-1.)*gc[1]*(gc[1]+1.)*(-2*gc[2]);
4659 devFunValue[54] = 0.25*(2*gc[0]+1.)*gc[1]*(gc[1]+1.)*(1.-gc[2]*gc[2]);
4660 devFunValue[55] = 0.25*gc[0]*(gc[0]+1.)*(2*gc[1]+1.)*(1.-gc[2]*gc[2]);
4661 devFunValue[56] = 0.25*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]+1.)*(-2*gc[2]);
4663 devFunValue[57] = 0.25*(2*gc[0]+1.)*gc[1]*(gc[1]-1.)*(1.-gc[2]*gc[2]);
4664 devFunValue[58] = 0.25*gc[0]*(gc[0]+1.)*(2*gc[1]-1.)*(1.-gc[2]*gc[2]);
4665 devFunValue[59] = 0.25*gc[0]*(gc[0]+1.)*gc[1]*(gc[1]-1.)*(-2*gc[2]);
4667 devFunValue[60] = 0.5*(-2*gc[0])*(1.-gc[1]*gc[1])*gc[2]*(gc[2]-1.);
4668 devFunValue[61] = 0.5*(1.-gc[0]*gc[0])*(-2*gc[1])*gc[2]*(gc[2]-1.);
4669 devFunValue[62] = 0.5*(1.-gc[0]*gc[0])*(1.-gc[1]*gc[1])*(2*gc[2]-1.);
4671 devFunValue[63] = 0.5*(2*gc[0]-1.)*(1.-gc[1]*gc[1])*(1.-gc[2]*gc[2]);
4672 devFunValue[64] = 0.5*gc[0]*(gc[0]-1.)*(-2*gc[1])*(1.-gc[2]*gc[2]);
4673 devFunValue[65] = 0.5*gc[0]*(gc[0]-1.)*(1.-gc[1]*gc[1])*(-2*gc[2]);
4675 devFunValue[66] = 0.5*(-2*gc[0])*gc[1]*(gc[1]+1.)*(1.-gc[2]*gc[2]);
4676 devFunValue[67] = 0.5*(1.-gc[0]*gc[0])*(2*gc[1]+1.)*(1.-gc[2]*gc[2]);
4677 devFunValue[68] = 0.5*(1.-gc[0]*gc[0])*gc[1]*(gc[1]+1.)*(-2*gc[2]);
4679 devFunValue[69] = 0.5*(2*gc[0]+1.)*(1.-gc[1]*gc[1])*(1.-gc[2]*gc[2]);
4680 devFunValue[70] = 0.5*gc[0]*(gc[0]+1.)*(-2*gc[1])*(1.-gc[2]*gc[2]);
4681 devFunValue[71] = 0.5*gc[0]*(gc[0]+1.)*(1.-gc[1]*gc[1])*(-2*gc[2]);
4683 devFunValue[72] = 0.5*(-2*gc[0])*gc[1]*(gc[1]-1.)*(1.-gc[2]*gc[2]);
4684 devFunValue[73] = 0.5*(1.-gc[0]*gc[0])*(2*gc[1]-1.)*(1.-gc[2]*gc[2]);
4685 devFunValue[74] = 0.5*(1.-gc[0]*gc[0])*gc[1]*(gc[1]-1.)*(-2*gc[2]);
4687 devFunValue[75] = 0.5*(-2*gc[0])*(1.-gc[1]*gc[1])*gc[2]*(gc[2]+1.);
4688 devFunValue[76] = 0.5*(1.-gc[0]*gc[0])*(-2*gc[1])*gc[2]*(gc[2]+1.);
4689 devFunValue[77] = 0.5*(1.-gc[0]*gc[0])*(1.-gc[1]*gc[1])*(2*gc[2]+1.);
4691 devFunValue[78] = (-2*gc[0])*(1.-gc[1]*gc[1])*(1.-gc[2]*gc[2]);
4692 devFunValue[79] = (1.-gc[0]*gc[0])*(-2*gc[1])*(1.-gc[2]*gc[2]);
4693 devFunValue[80] = (1.-gc[0]*gc[0])*(1.-gc[1]*gc[1])*(-2*gc[2]);
4695 DEV_SHAPE_FUN_MACRO_END;
4698 ////////////////////////////////////////////////////////////////////////////////////////////////
4699 // GAUSS COORD CLASS //
4700 ////////////////////////////////////////////////////////////////////////////////////////////////
4704 GaussCoords::GaussCoords()
4711 GaussCoords::~GaussCoords()
4713 GaussInfoVector::iterator it = _my_gauss_info.begin();
4714 for( ; it != _my_gauss_info.end(); it++ )
4722 * Add Gauss localization info
4724 void GaussCoords::addGaussInfo( NormalizedCellType theGeometry,
4726 const double* theGaussCoord,
4727 mcIdType theNbGauss,
4728 const double* theReferenceCoord,
4731 GaussInfoVector::iterator it = _my_gauss_info.begin();
4732 for( ; it != _my_gauss_info.end(); it++ )
4734 if( (*it)->getCellType() == theGeometry )
4740 DataVector aGaussCoord;
4741 for(int i = 0 ; i < theNbGauss*coordDim; i++ )
4742 aGaussCoord.push_back(theGaussCoord[i]);
4744 DataVector aReferenceCoord;
4745 for(int i = 0 ; i < theNbRef*coordDim; i++ )
4746 aReferenceCoord.push_back(theReferenceCoord[i]);
4749 GaussInfo* info = new GaussInfo( theGeometry, aGaussCoord, FromIdType<int>(theNbGauss), aReferenceCoord, FromIdType<int>(theNbRef));
4750 info->initLocalInfo();
4752 //If info with cell type doesn't exist add it
4753 if( it == _my_gauss_info.end() )
4755 _my_gauss_info.push_back(info);
4757 // If information exists, update it
4761 std::size_t index = std::distance(_my_gauss_info.begin(),it);
4763 _my_gauss_info[index] = info;
4769 * Calculate gauss points coordinates
4771 double* GaussCoords::calculateCoords( NormalizedCellType theGeometry,
4772 const double *theNodeCoords,
4773 const int theSpaceDim,
4774 const mcIdType *theIndex)
4776 const GaussInfo *info = getInfoGivenCellType(theGeometry);
4777 int nbCoords = theSpaceDim * info->getNbGauss();
4778 double *aCoords = new double[nbCoords];
4779 calculateCoordsAlg(info,theNodeCoords,theSpaceDim,theIndex,aCoords);
4784 void GaussCoords::calculateCoords( NormalizedCellType theGeometry, const double *theNodeCoords, const int theSpaceDim, const mcIdType *theIndex, double *result)
4786 const GaussInfo *info = getInfoGivenCellType(theGeometry);
4787 calculateCoordsAlg(info,theNodeCoords,theSpaceDim,theIndex,result);
4790 void GaussCoords::calculateCoordsAlg(const GaussInfo *info, const double* theNodeCoords, const int theSpaceDim, const mcIdType *theIndex, double *result)
4792 int aConn = info->getNbRef();
4794 int nbCoords = theSpaceDim * info->getNbGauss();
4795 std::fill(result,result+nbCoords,0.);
4797 for( int gaussId = 0; gaussId < info->getNbGauss(); gaussId++ )
4799 double *coord=result+gaussId*theSpaceDim;
4800 const double *function=info->getFunctionValues(gaussId);
4801 for ( int connId = 0; connId < aConn ; connId++ )
4803 const double* nodeCoord = theNodeCoords + (theIndex[connId]*theSpaceDim);
4804 for( int dimId = 0; dimId < theSpaceDim; dimId++ )
4805 coord[dimId] += nodeCoord[dimId]*function[connId];
4810 const GaussInfo *GaussCoords::getInfoGivenCellType(NormalizedCellType cellType)
4812 GaussInfoVector::const_iterator it = _my_gauss_info.begin();
4813 //Try to find gauss localization info
4814 for( ; it != _my_gauss_info.end() ; it++ )
4815 if( (*it)->getCellType()==cellType)
4817 throw INTERP_KERNEL::Exception("Can't find gauss localization information !");