Namespace ae108::elements
Namespace List > ae108 > elements
Framework to implement elements and material models. More...
Namespaces
Type | Name |
---|---|
namespace | embedding Embed a point in reference space into physical space. |
namespace | integrator Integrate an entity over an element. |
namespace | materialmodels Compute energy, stress, strain, and tangent matrix of material models. |
namespace | quadrature Integrate a function over a reference element. |
namespace | shape Compute the values, gradients, and support points of a set of shape functions. |
Classes
Type | Name |
---|---|
struct | AutomaticForcesTrait <class Element_> Computes the forces by differentiation of the energy. |
struct | AutomaticStiffnessMatrixTrait <class Element_> Computes the stiffness matrix by differentiation of the forces. |
struct | Bar <Dimension_, class ValueType_, class RealType_> |
struct | BarProperties <class RealType_> |
struct | ComputeConsistentMassMatrixTrait <class Element> |
struct | ComputeConsistentMassMatrixTrait< CoreElement< MaterialModel_, Integrator_, ValueType_, RealType_ > > <class MaterialModel_, class Integrator_, class ValueType_, class RealType_> |
struct | ComputeEnergyTrait <class Element> |
struct | ComputeEnergyTrait< Bar< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeEnergyTrait< CoreElement< MaterialModel_, Integrator_, ValueType_, RealType_ > > <class MaterialModel_, class Integrator_, class ValueType_, class RealType_> |
struct | ComputeEnergyTrait< ElementWithMass< Element_ > > <class Element_> |
struct | ComputeEnergyTrait< ForceElement< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeEnergyTrait< Minimal< Size_, Dimension_, DegreesOfFreedom_ > > <Size_, Dimension_, DegreesOfFreedom_> Always returns 0. |
struct | ComputeEnergyTrait< TimoshenkoBeamElement< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeForcesTrait <class Element> |
struct | ComputeForcesTrait< Bar< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeForcesTrait< CoreElement< MaterialModel_, Integrator_, ValueType_, RealType_ > > <class MaterialModel_, class Integrator_, class ValueType_, class RealType_> |
struct | ComputeForcesTrait< ElementWithMass< Element_ > > <class Element_> |
struct | ComputeForcesTrait< ForceElement< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeForcesTrait< Minimal< Size_, Dimension_, DegreesOfFreedom_ > > <Size_, Dimension_, DegreesOfFreedom_> Computes the forces by differentiating the energy. |
struct | ComputeForcesTrait< TimoshenkoBeamElement< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeLumpedMassMatrixTrait <class Element> |
struct | ComputeLumpedMassMatrixTrait< CoreElement< MaterialModel_, Integrator_, ValueType_, RealType_ > > <class MaterialModel_, class Integrator_, class ValueType_, class RealType_> |
struct | ComputeMassMatrixTrait <class Element> |
struct | ComputeMassMatrixTrait< ElementWithMass< Element_ > > <class Element_> |
struct | ComputeStiffnessMatrixTrait <class Element> |
struct | ComputeStiffnessMatrixTrait< Bar< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeStiffnessMatrixTrait< CoreElement< MaterialModel_, Integrator_, ValueType_, RealType_ > > <class MaterialModel_, class Integrator_, class ValueType_, class RealType_> |
struct | ComputeStiffnessMatrixTrait< ElementWithMass< Element_ > > <class Element_> |
struct | ComputeStiffnessMatrixTrait< ForceElement< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | ComputeStiffnessMatrixTrait< Minimal< Size_, Dimension_, DegreesOfFreedom_ > > <Size_, Dimension_, DegreesOfFreedom_> Computes the stiffness matrix by differentiating the forces. |
struct | ComputeStiffnessMatrixTrait< TimoshenkoBeamElement< Dimension_, ValueType_, RealType_ > > <Dimension_, class ValueType_, class RealType_> |
struct | CoreElement <class MaterialModel_, class Integrator_, class ValueType_, class RealType_> An element that computes energy, forces, and stiffness matrix using a material model and an integrator. |
struct | ElementBase <class Derived_, class SizeType_, class ValueType_, class RealType_, Size_, Dimension_, DegreesOfFreedom_> |
struct | ElementWithMass <class Element_> Extends a given element to also store a mass matrix. |
struct | ForceElement <Dimension_, class ValueType_, class RealType_> A single-vertex element that applies a force at that vertex. |
struct | Minimal <Size_, Dimension_, DegreesOfFreedom_> A minimal example of an element. Note that only the energy is defined. |
struct | TimoshenkoBeamElement <Dimension_, class ValueType_, class RealType_> _Implementation of the closed-form Timoshenko beam element as presented in Cook et. al (2002), "Concepts and applications of Finite Element |
Analysis", 4th ed., pp.24-32._ | |
struct | TimoshenkoBeamProperties <class RealType_, Dimension_> |
struct | TimoshenkoBeamProperties< RealType_, 2 > <class RealType_> |
struct | TimoshenkoBeamProperties< RealType_, 3 > <class RealType_> |
Public Functions
Type | Name |
---|---|
Element::Forces | automatic_forces (const Element & element, const typename Element::NodalDisplacements & displacements, const typename Element::Time & time) Computes the forces uses numerical differentiation of the energy. |
Element::StiffnessMatrix | automatic_stiffness_matrix (const Element & element, const typename Element::NodalDisplacements & displacements, const typename Element::Time & time) Computes the stiffness matrix using numerical differentation of the forces. |
Eigen::Matrix< RealType_, 2 *Dimension_, 2 *Dimension_, Eigen::RowMajor > | bar_stiffness_matrix (const tensor::Tensor< RealType_, Dimension_ > & axis, const BarProperties< RealType_ > & properties) noexcept Computes the stiffness matrix for a bar with the given axis and the given properties. |
Element::StiffnessMatrix | compute_consistent_mass_matrix (const Element & element) |
Element::Energy | compute_energy (const Element & element, const typename Element::NodalDisplacements & displacements, const typename Element::Time & time) |
Element::Forces | compute_forces (const Element & element, const typename Element::NodalDisplacements & displacements, const typename Element::Time & time) |
Element::StiffnessMatrix | compute_lumped_mass_matrix (const Element & element) |
Element::MassMatrix | compute_mass_matrix (const Element & element) |
Element::StiffnessMatrix | compute_stiffness_matrix (const Element & element, const typename Element::NodalDisplacements & displacements, const typename Element::Time & time) |
Eigen::Matrix< double, Dimension_ *(Dimension_+1), Dimension_ *(Dimension_+1), Eigen::RowMajor > | timoshenko_beam_consistent_mass_matrix (const tensor::Tensor< double, Dimension_ > & axis, const TimoshenkoBeamProperties< double, Dimension_ > & properties, const double density) noexcept Computes the consistent mass matrix for a Timoshenko beam with the given axis and the given properties. |
Eigen::Matrix< double, Dimension_ *(Dimension_+1), Dimension_ *(Dimension_+1), Eigen::RowMajor > | timoshenko_beam_lumped_mass_matrix (const tensor::Tensor< double, Dimension_ > & axis, const TimoshenkoBeamProperties< double, Dimension_ > & properties, const double density) noexcept Computes the lumped mass matrix for a Timoshenko beam with the given axis and the given properties. |
Eigen::Matrix< double, Dimension_ *(Dimension_+1), Dimension_ *(Dimension_+1), Eigen::RowMajor > | timoshenko_beam_stiffness_matrix (const tensor::Tensor< double, Dimension_ > & axis, const TimoshenkoBeamProperties< double, Dimension_ > & properties) noexcept Computes the stiffness matrix for a Timoshenko beam with the given axis and the given properties. |
Detailed Description
Library for specifying the behaviour of the elements that make up the mesh. For instance, use this library to define the energy needed to deform an element.
For instance, the library contains an implementation of the shape::Hexa8 element with a materialmodels::Hookean material model.
The main idea behind this library is that an element is just a material model (a way to compute an entity like energy) combined with an integrator (a way to integrate this entity over the element). These two concepts are (almost) orthogonal and the two components can therefore be chosen (almost) independently.
To implement an element, traits to compute energy, forces, and the stiffness matrix are provided. There are also traits to compute the forces and the stiffness matrix numerically.
These traits are implemented for the CoreElement element (which should be applicable to many use cases) and the Minimal element (which shows how to implement a valid element with minimal effort).
Public Functions Documentation
function automatic_forces
Computes the forces uses numerical differentiation of the energy.
template<class Element>
Element::Forces ae108::elements::automatic_forces (
const Element & element,
const typename Element::NodalDisplacements & displacements,
const typename Element::Time & time
)
function automatic_stiffness_matrix
Computes the stiffness matrix using numerical differentation of the forces.
template<class Element>
Element::StiffnessMatrix ae108::elements::automatic_stiffness_matrix (
const Element & element,
const typename Element::NodalDisplacements & displacements,
const typename Element::Time & time
)
function bar_stiffness_matrix
Computes the stiffness matrix for a bar with the given axis and the given properties.
template<std::size_t Dimension_, class RealType_>
Eigen::Matrix< RealType_, 2 *Dimension_, 2 *Dimension_, Eigen::RowMajor > ae108::elements::bar_stiffness_matrix (
const tensor::Tensor < RealType_, Dimension_ > & axis,
const BarProperties < RealType_ > & properties
) noexcept
Note:
see Dennis M. Kochmann, "Computational Mechanics I: Introduction to FEA Analysis", https://mm.ethz.ch/education, pp.77-81
function compute_consistent_mass_matrix
template<class Element>
Element::StiffnessMatrix ae108::elements::compute_consistent_mass_matrix (
const Element & element
)
function compute_energy
template<class Element>
Element::Energy ae108::elements::compute_energy (
const Element & element,
const typename Element::NodalDisplacements & displacements,
const typename Element::Time & time
)
function compute_forces
template<class Element>
Element::Forces ae108::elements::compute_forces (
const Element & element,
const typename Element::NodalDisplacements & displacements,
const typename Element::Time & time
)
function compute_lumped_mass_matrix
template<class Element>
Element::StiffnessMatrix ae108::elements::compute_lumped_mass_matrix (
const Element & element
)
function compute_mass_matrix
template<class Element>
Element::MassMatrix ae108::elements::compute_mass_matrix (
const Element & element
)
function compute_stiffness_matrix
template<class Element>
Element::StiffnessMatrix ae108::elements::compute_stiffness_matrix (
const Element & element,
const typename Element::NodalDisplacements & displacements,
const typename Element::Time & time
)
function timoshenko_beam_consistent_mass_matrix
Computes the consistent mass matrix for a Timoshenko beam with the given axis and the given properties.
template<std::size_t Dimension_>
Eigen::Matrix< double, Dimension_ *(Dimension_+1), Dimension_ *(Dimension_+1), Eigen::RowMajor > ae108::elements::timoshenko_beam_consistent_mass_matrix (
const tensor::Tensor < double, Dimension_ > & axis,
const TimoshenkoBeamProperties < double, Dimension_ > & properties,
const double density
) noexcept
Template parameters:
Dimension_
The dimenion of the physical space. Only dimensions 2 and 3 are supported.
function timoshenko_beam_lumped_mass_matrix
Computes the lumped mass matrix for a Timoshenko beam with the given axis and the given properties.
template<std::size_t Dimension_>
Eigen::Matrix< double, Dimension_ *(Dimension_+1), Dimension_ *(Dimension_+1), Eigen::RowMajor > ae108::elements::timoshenko_beam_lumped_mass_matrix (
const tensor::Tensor < double, Dimension_ > & axis,
const TimoshenkoBeamProperties < double, Dimension_ > & properties,
const double density
) noexcept
Template parameters:
Dimension_
The dimenion of the physical space. Only dimensions 2 and 3 are supported.
function timoshenko_beam_stiffness_matrix
Computes the stiffness matrix for a Timoshenko beam with the given axis and the given properties.
template<std::size_t Dimension_>
Eigen::Matrix< double, Dimension_ *(Dimension_+1), Dimension_ *(Dimension_+1), Eigen::RowMajor > ae108::elements::timoshenko_beam_stiffness_matrix (
const tensor::Tensor < double, Dimension_ > & axis,
const TimoshenkoBeamProperties < double, Dimension_ > & properties
) noexcept
Template parameters:
Dimension_
The dimenion of the physical space. Only dimensions 2 and 3 are supported.
The documentation for this class was generated from the following file elements/src/include/ae108/elements/automatic_forces.h