Skip to content

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