v0.16.0
Loading...
Searching...
No Matches
Public Member Functions | Static Private Member Functions | Private Attributes | List of all members
AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM > Struct Template Reference

Lamé analytical solution for a hollow cylinder under radial pressure with a linear isotropic Hooke material. More...

#include "tutorials/src/AnalyticalSolutions.hpp"

Collaboration diagram for AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >:
[legend]

Public Member Functions

 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)
 
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).
 
MoFEM::VectorDouble displacement (const double x, const double y, const double) const
 Return the displacement vector at point (x, y, z).
 

Static Private Member Functions

static constexpr double sqr (const double v)
 

Private Attributes

const double E
 
const double nu
 
double A
 
double B
 

Detailed Description

template<int SPACE_DIM>
struct AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >

Lamé analytical solution for a hollow cylinder under radial pressure with a linear isotropic Hooke material.

The cylinder axis is aligned with z, while the solution is evaluated in the x-y cross-section. The z coordinate is ignored. SPACE_DIM == 2 is the plane-strain case with only the in-plane stress and displacement components returned. For SPACE_DIM == 3 this uses the plane-strain axial stress and zero axial displacement.

Examples
mofem/tutorials/vec-11_elastic_tie_mesh/elastic_tie_mesh.cpp.

Definition at line 18 of file AnalyticalSolutions.hpp.

Constructor & Destructor Documentation

◆ HollowCylinderUnderRadialPressure()

template<int SPACE_DIM>
AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >::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 
)
inline

Definition at line 20 of file AnalyticalSolutions.hpp.

25 const double a2 = sqr(inner_radius);
26 const double b2 = sqr(outer_radius);
27 const double denom = b2 - a2;
28
29 A = (inner_pressure * a2 - outer_pressure * b2) / denom;
30 B = (inner_pressure - outer_pressure) * a2 * b2 / denom;
31 }
constexpr double a2
double young_modulus
Young modulus.
Definition plastic.cpp:126
double poisson_ratio
Poisson ratio.
Definition plastic.cpp:127

Member Function Documentation

◆ displacement()

template<int SPACE_DIM>
MoFEM::VectorDouble AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >::displacement ( const double  x,
const double  y,
const double   
) const
inline

Return the displacement vector at point (x, y, z).

Definition at line 64 of file AnalyticalSolutions.hpp.

65 {
67 disp.clear();
68
69 const double r2 = sqr(x) + sqr(y);
70 const double r = std::sqrt(r2);
71 const double u_r =
72 (1. + nu) / E * ((1. - 2. * nu) * A * r + B / r);
73
74 disp[0] = u_r * x / r;
75 disp[1] = u_r * y / r;
76 if constexpr (SPACE_DIM == 3)
77 disp[2] = 0.;
78
79 return disp;
80 }
constexpr int SPACE_DIM
int r
Definition sdf.py:205

◆ sqr()

template<int SPACE_DIM>
static constexpr double AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >::sqr ( const double  v)
inlinestaticconstexprprivate

Definition at line 83 of file AnalyticalSolutions.hpp.

83{ return v * v; }
const double v
phase velocity of light in medium (cm/ns)

◆ stress()

template<int SPACE_DIM>
MoFEM::MatrixDouble AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >::stress ( const double  x,
const double  y,
const double   
) const
inline

Return the Cauchy stress in symmetric tensor storage at point (x, y, z).

Definition at line 37 of file AnalyticalSolutions.hpp.

38 {
40 stress.clear();
41
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;
48
50 SPACE_DIM, -1,
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;
55 if constexpr (SPACE_DIM == 3)
56 t_stress(2, 2) = 2. * nu * A;
57
58 return stress;
59 }
const double c
speed of light (cm/ns)
static auto getFTensor2SymmetricFromMat(M &data)
Get symmetric tensor rank 2 (matrix) form data matrix.
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).

Member Data Documentation

◆ A

Definition at line 87 of file AnalyticalSolutions.hpp.

◆ B

Definition at line 88 of file AnalyticalSolutions.hpp.

◆ E

Definition at line 85 of file AnalyticalSolutions.hpp.

◆ nu

template<int SPACE_DIM>
const double AnalyticalSolutions::HollowCylinderUnderRadialPressure< SPACE_DIM >::nu
private

Definition at line 86 of file AnalyticalSolutions.hpp.


The documentation for this struct was generated from the following file: