SpECTRE  v2021.12.06
Elasticity::Solutions::BentBeam< Registrars > Class Template Reference

A state of pure bending of an elastic beam in 2D. More...

#include <BentBeam.hpp>

Classes

struct  BendingMoment
 
struct  Height
 
struct  Length
 
struct  Material
 

Public Types

using constitutive_relation_type = Elasticity::ConstitutiveRelations::IsotropicHomogeneous< 2 >
 
using options = tmpl::list< Length, Height, BendingMoment, Material >
 
- Public Types inherited from Elasticity::Solutions::AnalyticSolution< 2, tmpl::list< Solutions::Registrars::BentBeam > >
using registrars = tmpl::list< Solutions::Registrars::BentBeam >
 
using creatable_classes = Registration::registrants< registrars >
 
- Public Types inherited from AnalyticData< Dim, Registrars >
using registrars = Registrars
 
using creatable_classes = Registration::registrants< registrars >
 

Public Member Functions

 BentBeam (const BentBeam &)=default
 
BentBeamoperator= (const BentBeam &)=default
 
 BentBeam (BentBeam &&)=default
 
BentBeamoperator= (BentBeam &&)=default
 
 BentBeam (double length, double height, double bending_moment, constitutive_relation_type constitutive_relation)
 
double length () const
 
double height () const
 
double bending_moment () const
 
const constitutive_relation_typeconstitutive_relation () const override
 A constitutive relation that represents the properties of the elastic material. More...
 
double potential_energy () const
 Return potential energy integrated over the whole beam material.
 
template<typename DataType , typename... RequestedTags>
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataType, 2 > &x, tmpl::list< RequestedTags... >) const
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from Elasticity::Solutions::AnalyticSolution< 2, tmpl::list< Solutions::Registrars::BentBeam > >
tuples::TaggedTuple< RequestedTags... > variables (const tnsr::I< DataType, Dim, Frame::Inertial > &x, tmpl::list< RequestedTags... >) const
 
virtual const ConstitutiveRelations::ConstitutiveRelation< Dim > & constitutive_relation () const =0
 A constitutive relation that represents the properties of the elastic material. More...
 
- Public Member Functions inherited from AnalyticData< Dim, Registrars >
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, Dim > &x, tmpl::list< Tags... >) const
 Retrieve a collection of tensor fields at spatial coordinate(s) x
 
template<typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataVector, Dim > &x, const Mesh< Dim > &mesh, const InverseJacobian< DataVector, Dim, Frame::ElementLogical, Frame::Inertial > &inv_jacobian, tmpl::list< Tags... >) const
 Retrieve a collection of tensor fields at spatial coordinate(s) x More...
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from AnalyticData< Dim, Registrars >
static constexpr size_t volume_dim = Dim
 

Detailed Description

template<typename Registrars = tmpl::list<Solutions::Registrars::BentBeam>>
class Elasticity::Solutions::BentBeam< Registrars >

A state of pure bending of an elastic beam in 2D.

Details

This solution describes a 2D slice through an elastic beam of length \(L\) and height \(H\), centered around (0, 0), that is subject to a bending moment \(M=\int T^{xx}y\mathrm{d}y\) (see e.g. [111], Eq. 11.41c for a bending moment in 1D). The beam material is characterized by an isotropic and homogeneous constitutive relation \(Y^{ijkl}\) in the plane-stress approximation (see Elasticity::ConstitutiveRelations::IsotropicHomogeneous). In this scenario, no body-forces \(f_\mathrm{ext}^j\) act on the material, so the Elasticity equations reduce to \(\nabla_i T^{ij}=0\), but the bending moment \(M\) generates the stress

\begin{align} T^{xx} &= \frac{12 M}{H^3} y \\ T^{xy} &= 0 = T^{yy} \text{.} \end{align}

By fixing the rigid-body motions to

\[ \xi^x(0,y)=0 \quad \text{and} \quad \xi^y\left(\pm \frac{L}{2},0\right)=0 \]

we find that this stress is produced by the displacement field

\begin{align} \xi^x&=-\frac{12 M}{EH^3}xy \\ \xi^y&=\frac{6 M}{EH^3}\left(x^2+\nu y^2-\frac{L^2}{4}\right) \end{align}

in terms of the Young's modulus \(E\) and the Poisson ration \(\nu\) of the material. The corresponding strain \(S_{ij}=\partial_{(i}\xi_{j)}\) is

\begin{align} S_{xx} &= -\frac{12 M}{EH^3} y \\ S_{yy} &= \frac{12 M}{EH^3} \nu y \\ S_{xy} &= S_{yx} = 0 \end{align}

and the potential energy stored in the entire infinitesimal slice is

\[ \int_{-L/2}^{L/2} \int_{-H/2}^{H/2} U dy\,dx = \frac{6M^2}{EH^3}L \text{.} \]

Member Function Documentation

◆ constitutive_relation()

template<typename Registrars = tmpl::list<Solutions::Registrars::BentBeam>>
const constitutive_relation_type & Elasticity::Solutions::BentBeam< Registrars >::constitutive_relation ( ) const
inlineoverridevirtual

A constitutive relation that represents the properties of the elastic material.

Implements Elasticity::AnalyticData::AnalyticData< Dim, Registrars >.

Member Data Documentation

◆ help

template<typename Registrars = tmpl::list<Solutions::Registrars::BentBeam>>
constexpr Options::String Elasticity::Solutions::BentBeam< Registrars >::help
staticconstexpr
Initial value:
{
"A 2D slice through an elastic beam which is subject to a bending "
"moment. The bending moment is applied along the length of the beam, "
"i.e. the x-axis, so that the beam's left and right ends are bent "
"towards the positive y-axis. It is measured in units of force."}

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