45 const bool is_axially_symmetric)
47 static_assert(0 < DisplacementDim && DisplacementDim <= 3,
48 "LinearBMatrix::computeBMatrix: DisplacementDim must be in "
51 BMatrixType B = BMatrixType::Zero(
53 NPOINTS * DisplacementDim);
55 switch (DisplacementDim)
58 for (
int i = 0; i < NPOINTS; ++i)
60 B(2, 2 * NPOINTS + i) = dNdx(2, i);
61 B(4, NPOINTS + i) = dNdx(2, i) / std::sqrt(2);
62 B(4, 2 * NPOINTS + i) = dNdx(1, i) / std::sqrt(2);
63 B(5, i) = dNdx(2, i) / std::sqrt(2);
64 B(5, 2 * NPOINTS + i) = dNdx(0, i) / std::sqrt(2);
66 detail::fillBMatrix2DCartesianPart<NPOINTS>(dNdx, B);
69 detail::fillBMatrix2DCartesianPart<NPOINTS>(dNdx, B);
70 if (is_axially_symmetric)
72 for (
int i = 0; i < NPOINTS; ++i)
74 B(2, i) = N[i] / radius;