1#ifndef __ANALYTICAL_SOLUTIONS_HPP__
2#define __ANALYTICAL_SOLUTIONS_HPP__
21 const double inner_radius,
const double outer_radius,
22 const double inner_pressure,
const double outer_pressure,
25 const double a2 =
sqr(inner_radius);
26 const double b2 =
sqr(outer_radius);
27 const double denom = b2 -
a2;
29 A = (inner_pressure *
a2 - outer_pressure * b2) / denom;
30 B = (inner_pressure - outer_pressure) *
a2 * b2 / denom;
42 const double r2 =
sqr(x) +
sqr(y);
43 const double sigma_r =
A -
B / r2;
44 const double sigma_t =
A +
B / r2;
45 const double inv_r = 1. / std::sqrt(r2);
46 const double c = x * inv_r;
47 const double s = y * inv_r;
52 t_stress(0, 0) = sigma_r *
sqr(
c) + sigma_t *
sqr(s);
53 t_stress(1, 1) = sigma_r *
sqr(s) + sigma_t *
sqr(
c);
54 t_stress(0, 1) = (sigma_r - sigma_t) * s *
c;
56 t_stress(2, 2) = 2. *
nu *
A;
69 const double r2 =
sqr(x) +
sqr(y);
70 const double r = std::sqrt(r2);
72 (1. +
nu) /
E * ((1. - 2. *
nu) *
A * r +
B / r);
74 disp[0] = u_r * x / r;
75 disp[1] = u_r * y / r;
83 static constexpr double sqr(
const double v) {
return v *
v; }
const double c
speed of light (cm/ns)
const double v
phase velocity of light in medium (cm/ns)
static auto getFTensor2SymmetricFromMat(M &data)
Get symmetric tensor rank 2 (matrix) form data matrix.
Lamé analytical solution for a hollow cylinder under radial pressure with a linear isotropic Hooke ma...
HollowCylinderUnderRadialPressure(const double inner_radius, const double outer_radius, const double inner_pressure, const double outer_pressure, const double young_modulus, const double poisson_ratio)
static constexpr double sqr(const double v)
MoFEM::VectorDouble displacement(const double x, const double y, const double) const
Return the displacement vector at point (x, y, z).
MoFEM::MatrixDouble stress(const double x, const double y, const double) const
Return the Cauchy stress in symmetric tensor storage at point (x, y, z).
double young_modulus
Young modulus.
double poisson_ratio
Poisson ratio.