diff --git a/MathLib/Integration/GaussLegendreTet.cpp b/MathLib/Integration/GaussLegendreTet.cpp index 0ad827751cf406b340520f272d52a9d5dc367df7..c261ffb2299b2526641ef7ac773d778a46d122dd 100644 --- a/MathLib/Integration/GaussLegendreTet.cpp +++ b/MathLib/Integration/GaussLegendreTet.cpp @@ -22,7 +22,7 @@ GaussLegendreTet<2>::X = {{ {{1./4., 1./4., 1./4.}}, {{1./2., 1./6., 1./6.}}, {{1./6., 1./2., 1./6.}}, {{1./6., 1./6., 1./2.}} }}; -double const GaussLegendreTet<2>::W[5] = {-0.133333333333333, 0.075, 0.075, 0.075, 0.075}; +double const GaussLegendreTet<2>::W[5] = {-2./15., 0.075, 0.075, 0.075, 0.075}; const std::array<std::array<double, 3>, GaussLegendreTet<3>::NPoints> GaussLegendreTet<3>::X = {{ {{1./2., 1./2., 1./2.}}, diff --git a/NumLib/Fem/ShapeFunction/ShapeHex20-impl.h b/NumLib/Fem/ShapeFunction/ShapeHex20-impl.h index 56c2d256270d9064c9ec736f260afe72c919bd26..23e89c1a86414978199b3019c038c0ea76db0e92 100644 --- a/NumLib/Fem/ShapeFunction/ShapeHex20-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapeHex20-impl.h @@ -26,13 +26,10 @@ inline double dShapeFunctionHexHQ_Corner(const double r, const double s, const d { case 0: return 0.125 * (1 + s) * (1 + t) * (2.0 * r + s + t - 1.0); - break; case 1: return 0.125 * (1 + t) * (1 + r) * (2.0 * s + r + t - 1.0); - break; case 2: return 0.125 * (1 + r) * (1 + s) * (2.0 * t + s + r - 1.0); - break; } return 0.0; } @@ -43,13 +40,10 @@ inline double dShapeFunctionHexHQ_Middle(const double r, const double s, const d { case 0: return -0.5 * r * (1 + s) * (1 + t); - break; case 1: return 0.25 * (1 - r * r) * (1 + t); - break; case 2: return 0.25 * (1 - r * r) * (1 + s); - break; } return 0.0; } diff --git a/NumLib/Fem/ShapeFunction/ShapePrism6-impl.h b/NumLib/Fem/ShapeFunction/ShapePrism6-impl.h index 1bf4456e80ef968be3b95c3a9f14a32d4b725486..63e00a801520a95eda8cf10e69f2bc963d54e399 100644 --- a/NumLib/Fem/ShapeFunction/ShapePrism6-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapePrism6-impl.h @@ -32,25 +32,25 @@ void ShapePrism6::computeGradShapeFunction(const T_X &x, T_N &dN) double t = x[2]; // dN/dL1 dN[0] = -0.5 * (1.0 - t); - dN[1] = 0.5 * (1.0 - t); + dN[1] = -dN[0]; dN[2] = 0.0; dN[3] = -0.5 * (1.0 + t); - dN[4] = 0.5 * (1.0 + t); + dN[4] = -dN[3]; dN[5] = 0.0; // dN/dL2 - dN[6] = -0.5 * (1.0 - t); + dN[6] = dN[0]; dN[7] = 0.0; - dN[8] = 0.5 * (1.0 - t); - dN[9] = -0.5 * (1.0 + t); + dN[8] = -dN[0]; + dN[9] = dN[3]; dN[10] = 0.0; - dN[11] = 0.5 * (1.0 + t); + dN[11] = -dN[3]; // dN/dt dN[12] = -0.5 * (1.0 - L1 - L2); dN[13] = -0.5 * L1; dN[14] = -0.5 * L2; - dN[15] = 0.5 * (1.0 - L1 - L2); - dN[16] = 0.5 * L1; - dN[17] = 0.5 * L2; + dN[15] = -dN[12]; + dN[16] = -dN[13]; + dN[17] = -dN[14]; } } diff --git a/NumLib/Fem/ShapeFunction/ShapePyra13-impl.h b/NumLib/Fem/ShapeFunction/ShapePyra13-impl.h index ca671eaf7f543c74cbce4e16489732d9c9dedecf..32b94121bd51a672941d312f12b114266b3e1fa7 100644 --- a/NumLib/Fem/ShapeFunction/ShapePyra13-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapePyra13-impl.h @@ -49,9 +49,9 @@ void ShapePyra13::computeGradShapeFunction(const T_X &x, T_N &dN) dN[7] = -0.25 * r * (1.0 + s) * (1.0 - t) * (2.0 - s - s * t); dN[8] = -0.125 * (1.0 - s * s) * (1.0 - t) * (1.0 + 2.0 * r - t + 2 * r * t); dN[9] = -0.25 * (1.0 - s) * (1.0 - t * t); - dN[10] = 0.25 * (1.0 - s) * (1.0 - t * t); + dN[10] = -dN[9]; dN[11] = 0.25 * (1.0 + s) * (1.0 - t * t); - dN[12] = -0.25 * (1.0 + s) * (1.0 - t * t); + dN[12] = -dN[11]; //---dN/ds dN[13] = 0.0625 * (1.0 - r) * (1.0 - t) * (1.0 + r + 6.0 * s + 4.0 * r * s + t - r * t + 2.0 * s * t + 4.0 * r * s * t); @@ -65,8 +65,8 @@ void ShapePyra13::computeGradShapeFunction(const T_X &x, T_N &dN) dN[21] = -0.25 * (1.0 - r) * s * (1.0 - t) * (2.0 + r + r * t); dN[22] = -0.25 * (1.0 - r) * (1.0 - t * t); dN[23] = -0.25 * (1.0 + r) * (1.0 - t * t); - dN[24] = 0.25 * (1.0 + r) * (1.0 - t * t); - dN[25] = 0.25 * (1.0 - r) * (1.0 - t * t); + dN[24] = -dN[23]; + dN[25] = -dN[22]; //---dN/dt dN[26] = 0.125 * (1.0 - r) * (1.0 - s) * (1.0 + r + s + 2.0 * t + r * t + s * t + 2.0 * r * s * t); diff --git a/NumLib/Fem/ShapeFunction/ShapePyra5-impl.h b/NumLib/Fem/ShapeFunction/ShapePyra5-impl.h index ca8192bab3d9909f443cdc6c3297aa508547fee6..96857f970b1cf687107c6b602ca3a0b1eddbacd2 100644 --- a/NumLib/Fem/ShapeFunction/ShapePyra5-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapePyra5-impl.h @@ -32,15 +32,15 @@ void ShapePyra5::computeGradShapeFunction(const T_X &x, T_N &dN) const double t = x[2]; // dN/dL1 dN[0] = -0.125 * (1.0 - s) * (1.0 - t); - dN[1] = 0.125 * (1.0 - s) * (1.0 - t); + dN[1] = -dN[0]; dN[2] = 0.125 * (1.0 + s) * (1.0 - t); - dN[3] = -0.125 * (1.0 + s) * (1.0 - t); + dN[3] = -dN[2]; dN[4] = 0.0; // dN/dL2 dN[5] = -0.125 * (1.0 - r) * (1.0 - t); dN[6] = -0.125 * (1.0 + r) * (1.0 - t); - dN[7] = 0.125 * (1.0 + r) * (1.0 - t); - dN[8] = 0.125 * (1.0 - r) * (1.0 - t); + dN[7] = -dN[6]; + dN[8] = -dN[5]; dN[9] = 0.0; // dN/dt dN[10] = -0.125 * (1.0 - r) * (1.0 - s); diff --git a/NumLib/Fem/ShapeFunction/ShapeQuad8-impl.h b/NumLib/Fem/ShapeFunction/ShapeQuad8-impl.h index 5dda78834f8383690bb5fbb37d2d69b724669865..453bb5bdd9e5475654521dbec2fd4b1e715a42d4 100644 --- a/NumLib/Fem/ShapeFunction/ShapeQuad8-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapeQuad8-impl.h @@ -38,7 +38,7 @@ void ShapeQuad8::computeGradShapeFunction(const T_X &rs, T_N &dNdr) dNdr[4] = -r * (1 - s); dNdr[5] = (1 - s * s) * 0.5; dNdr[6] = -r * (1 + s); - dNdr[7] = -(1 - s * s) * 0.5; + dNdr[7] = -dNdr[5]; //dN/ds dNdr[8] = (1 - r) * (r + 2 * s) * 0.25; @@ -47,7 +47,7 @@ void ShapeQuad8::computeGradShapeFunction(const T_X &rs, T_N &dNdr) dNdr[11] = -(1 - r) * (r - 2 * s) * 0.25; dNdr[12] = -(1 - r * r) * 0.5; dNdr[13] = -(1 + r) * s; - dNdr[14] = (1 - r * r) * 0.5; + dNdr[14] = -dNdr[12]; dNdr[15] = -(1 - r) * s; } diff --git a/NumLib/Fem/ShapeFunction/ShapeQuad9-impl.h b/NumLib/Fem/ShapeFunction/ShapeQuad9-impl.h index 77924e002ee1b281eb1e2a070187fe20872ba265..184187cce0ddf3f94bd8cbb071c6ed91e6be48f0 100644 --- a/NumLib/Fem/ShapeFunction/ShapeQuad9-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapeQuad9-impl.h @@ -30,7 +30,7 @@ void ShapeQuad9::computeGradShapeFunction(const T_X &r, T_N &dNdr) dNdr[8] = -2.0 * r[0] * (1.0 - r[1] * r[1]); dNdr[7] = +0.5 * (1.0 - r[1] * r[1]) - 0.5 * dNdr[8]; dNdr[6] = -1.0 * r[0] * (1.0 - r[1]) - 0.5 * dNdr[8]; - dNdr[5] = -0.5 * (1.0 - r[1] * r[1]) - 0.5 * dNdr[8]; + dNdr[5] = -dNdr[7]; dNdr[4] = -1.0 * r[0] * (1.0 + r[1]) - 0.5 * dNdr[8]; dNdr[3] = +0.25 * (1 - r[1]) - 0.5 * dNdr[6] - 0.5 * dNdr[7] - 0.25 * dNdr[8]; dNdr[2] = -0.25 * (1 - r[1]) - 0.5 * dNdr[5] - 0.5 * dNdr[6] - 0.25 * dNdr[8]; @@ -41,7 +41,7 @@ void ShapeQuad9::computeGradShapeFunction(const T_X &r, T_N &dNdr) dNdr[16] = -1.0 * r[1] * (1.0 + r[0]) - 0.5 * dNdr[17]; dNdr[15] = -0.5 * (1.0 - r[0] * r[0]) - 0.5 * dNdr[17]; dNdr[14] = -1.0 * r[1] * (1.0 - r[0]) - 0.5 * dNdr[17]; - dNdr[13] = +0.5 * (1 - r[0] * r[0]) - 0.5 * dNdr[17]; + dNdr[13] = -dNdr[15]; dNdr[12] = -0.25 * (1 + r[0]) - 0.5 * dNdr[15] - 0.5 * dNdr[16] - 0.25 * dNdr[17]; dNdr[11] = -0.25 * (1 - r[0]) - 0.5 * dNdr[14] - 0.5 * dNdr[15] - 0.25 * dNdr[17]; dNdr[10] = +0.25 * (1 - r[0]) - 0.5 * dNdr[13] - 0.5 * dNdr[14] - 0.25 * dNdr[17]; diff --git a/NumLib/Fem/ShapeFunction/ShapeTri6-impl.h b/NumLib/Fem/ShapeFunction/ShapeTri6-impl.h index 70c793d22e4c03e1ca335dc2a1eca521bc8cd65c..63b1ae22c7f505649708f99fe1aad92ccefd3a60 100644 --- a/NumLib/Fem/ShapeFunction/ShapeTri6-impl.h +++ b/NumLib/Fem/ShapeFunction/ShapeTri6-impl.h @@ -25,7 +25,7 @@ template <class T_X, class T_N> void ShapeTri6::computeGradShapeFunction(const T_X &r, T_N &dNdr) { dNdr[0] = 4. * (r[0] + r[1]) - 3.; // dN1/dL1 - dNdr[6] = 4. * (r[0] + r[1]) - 3.; // dN1/dL2 + dNdr[6] = dNdr[0]; // dN1/dL2 dNdr[1] = 4. * r[0] - 1.; // dN2/dL1 dNdr[7] = 0.; // dN2/dL2 @@ -37,9 +37,9 @@ void ShapeTri6::computeGradShapeFunction(const T_X &r, T_N &dNdr) dNdr[9] = -4. * r[0]; // dN4/dL2 dNdr[4] = 4. * r[1]; // dN5/dL1 - dNdr[10] = 4. * r[0]; // dN5/dL2 + dNdr[10] = -dNdr[9]; // dN5/dL2 - dNdr[5] = -4. * r[1]; // dN6/dL1 + dNdr[5] = -dNdr[4]; // dN6/dL1 dNdr[11] = 4. * (1 - r[0] - 2. * r[1]); // dN6/dL2 }