NonLinearElastic class represents a non-linear elastic finite element. More...
#include <ikarus/finiteelements/mechanics/nonlinearelastic.hh>
Public Types | |
| using | Basis = Basis_ |
| using | Material = Material_ |
| using | FlatBasis = typename Basis::FlatBasis |
| using | BasePowerFE = PowerBasisFE< FlatBasis > |
| using | FERequirementType = FERequirements_ |
| using | ResultRequirementsType = ResultRequirements< FERequirementType > |
| using | LocalView = typename FlatBasis::LocalView |
| using | Element = typename LocalView::Element |
| using | Geometry = typename Element::Geometry |
| using | GridView = typename FlatBasis::GridView |
| using | Traits = TraitsFromLocalView< LocalView, useEigenRef > |
| using | LocalBasisType = decltype(std::declval< LocalView >().tree().child(0).finiteElement().localBasis()) |
| using | RootBasis = Basis_::FlatBasis |
| Type of the root basis. More... | |
| using | GlobalIndex = typename LocalView::MultiIndex |
| Type of the global index. More... | |
| using | GridElement = typename LocalView::Element |
| Type of the grid element. More... | |
Public Member Functions | |
| template<typename VolumeLoad = utils::LoadDefault, typename NeumannBoundaryLoad = utils::LoadDefault> | |
| NonLinearElastic (const Basis &globalBasis, const typename LocalView::Element &element, const Material &p_mat, VolumeLoad p_volumeLoad={}, const BoundaryPatch< GridView > *p_neumannBoundary=nullptr, NeumannBoundaryLoad p_neumannBoundaryLoad={}) | |
| Constructor for the NonLinearElastic class. More... | |
| template<typename ScalarType = double> | |
| auto | displacementFunction (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
| Get the displacement function for the given FERequirementType. More... | |
| template<typename ScalarType = double> | |
| auto | strainFunction (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
| The strain function for the given FERequirementType. More... | |
| template<typename ScalarType , int strainDim, bool voigt = true> | |
| auto | materialTangent (const Eigen::Vector< ScalarType, strainDim > &strain) const |
| Get the material tangent for the given strain. More... | |
| template<typename ScalarType , int strainDim> | |
| auto | getInternalEnergy (const Eigen::Vector< ScalarType, strainDim > &strain) const |
| Get the internal energy for the given strain. More... | |
| template<typename ScalarType , int strainDim, bool voigt = true> | |
| auto | getStress (const Eigen::Vector< ScalarType, strainDim > &strain) const |
| Get the stress for the given strain. More... | |
| double | calculateScalar (const FERequirementType &par) const |
| Calculate the scalar value associated with the given FERequirementType. More... | |
| void | calculateVector (const FERequirementType &par, typename Traits::template VectorType<> force) const |
| Calculate the vector associated with the given FERequirementType. More... | |
| void | calculateMatrix (const FERequirementType &par, typename Traits::template MatrixType<> K) const |
| Calculate the matrix associated with the given FERequirementType. More... | |
| void | calculateAt (const ResultRequirementsType &req, const Dune::FieldVector< double, Traits::mydim > &local, ResultTypeMap< double > &result) const |
| Calculate specified results at a given local position. More... | |
| constexpr size_t | size () const |
| Get the size of the local view. More... | |
| void | globalFlatIndices (std::vector< GlobalIndex > &globalIndices) const |
| Get the global flat indices for the power basis. More... | |
| const GridElement & | gridElement () const |
| Get the grid element associated with the local view. More... | |
| const LocalView & | localView () const |
| Get the const reference to the local view. More... | |
| LocalView & | localView () |
| Get the reference to the local view. More... | |
Public Attributes | |
| std::shared_ptr< const Geometry > | geo_ |
| Dune::CachedLocalBasis< std::remove_cvref_t< LocalBasisType > > | localBasis |
| std::function< Eigen::Vector< double, worldDim >(const Dune::FieldVector< double, worldDim > &, const double &)> | volumeLoad |
| std::function< Eigen::Vector< double, worldDim >(const Dune::FieldVector< double, worldDim > &, const double &)> | neumannBoundaryLoad |
| const BoundaryPatch< GridView > * | neumannBoundary |
| Material | mat |
| size_t | numberOfNodes {0} |
| int | order {} |
Static Public Attributes | |
| static constexpr int | myDim = Traits::mydim |
| static constexpr int | worldDim = Traits::worlddim |
| static constexpr auto | strainType = StrainTags::greenLagrangian |
| static constexpr int | num_children |
| Number of children in the powerBasis. More... | |
Protected Member Functions | |
| template<typename ScalarType > | |
| auto | calculateScalarImpl (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const -> ScalarType |
| template<typename ScalarType > | |
| void | calculateVectorImpl (const FERequirementType &par, typename Traits::template VectorType< ScalarType > force, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
| Basis_ | The basis type for the finite element. |
| Material_ | The material type for the finite element. |
| FERequirements_ | The requirements for the finite element. |
| useEigenRef | A boolean flag indicating whether to use Eigen references. |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::BasePowerFE = PowerBasisFE<FlatBasis> |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::Basis = Basis_ |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::Element = typename LocalView::Element |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::FERequirementType = FERequirements_ |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::FlatBasis = typename Basis::FlatBasis |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::Geometry = typename Element::Geometry |
|
inherited |
|
inherited |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::GridView = typename FlatBasis::GridView |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::LocalBasisType = decltype(std::declval<LocalView>().tree().child(0).finiteElement().localBasis()) |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::LocalView = typename FlatBasis::LocalView |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::Material = Material_ |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::ResultRequirementsType = ResultRequirements<FERequirementType> |
|
inherited |
| using Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::Traits = TraitsFromLocalView<LocalView, useEigenRef> |
|
inline |
| VolumeLoad | The type for the volume load function. |
| NeumannBoundaryLoad | The type for the Neumann boundary load function. |
| globalBasis | The global basis for the finite element. |
| element | The element for which the finite element is constructed. |
| p_mat | The material for the non-linear elastic element. |
| p_volumeLoad | Volume load function (default is LoadDefault). |
| p_neumannBoundary | Neumann boundary patch (default is nullptr). |
| p_neumannBoundaryLoad | Neumann boundary load function (default is LoadDefault). |
|
inline |
| req | The ResultRequirementsType object specifying the required results. |
| local | The local position for which results are to be calculated. |
| result | The ResultTypeMap object to store the calculated results. |
|
inline |
| ScalarType | The scalar type for the calculation. |
| par | The FERequirementType object specifying the requirements for the calculation. |
| K | The matrix to store the calculated result. |
|
inline |
| ScalarType | The scalar type for the calculation. |
| par | The FERequirementType object specifying the requirements for the calculation. |
|
inlineprotected |
|
inline |
| ScalarType | The scalar type for the calculation. |
| par | The FERequirementType object specifying the requirements for the calculation. |
| force | The vector to store the calculated result. |
|
inlineprotected |
|
inline |
| ScalarType | The scalar type for the displacement function. |
| par | The FERequirementType object. |
| dx | Optional displacement vector. |
|
inline |
| ScalarType | The scalar type for the material and strain. |
| strainDim | The dimension of the strain vector. |
| strain | The strain vector. |
|
inline |
| ScalarType | The scalar type for the material and strain. |
| strainDim | The dimension of the strain vector. |
| voigt | A boolean indicating whether to use the Voigt notation for stress. |
| strain | The strain vector. |
|
inlineinherited |
The global indices are collected in a FlatInterLeaved order. I.e. x_0, y_0, z_0, ..., x_n, y_n, z_n
| globalIndices | Output vector to store global indices. |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inline |
| ScalarType | The scalar type for the material and strain. |
| strainDim | The dimension of the strain vector. |
| voigt | Flag indicating whether to use Voigt notation. |
| strain | The strain vector. |
|
inlineconstexprinherited |
|
inline |
| ScalarType | The scalar type for the strain function. |
| par | The FERequirementType object. |
| dx | Optional displacement vector. |
| std::shared_ptr<const Geometry> Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::geo_ |
| Dune::CachedLocalBasis<std::remove_cvref_t<LocalBasisType> > Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::localBasis |
| Material Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::mat |
|
staticconstexpr |
| const BoundaryPatch<GridView>* Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::neumannBoundary |
| std::function<Eigen::Vector<double, worldDim>(const Dune::FieldVector<double, worldDim>&, const double&)> Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::neumannBoundaryLoad |
|
staticconstexprinherited |
| size_t Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::numberOfNodes {0} |
| int Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::order {} |
|
staticconstexpr |
| std::function<Eigen::Vector<double, worldDim>(const Dune::FieldVector<double, worldDim>&, const double&)> Ikarus::NonLinearElastic< Basis_, Material_, FERequirements_, useEigenRef >::volumeLoad |
|
staticconstexpr |