version 0.4.1
Ikarus Namespace Reference

Namespaces

namespace  AdaptiveStepSizing
 
namespace  AffordanceCollections
 
namespace  Concepts
 
namespace  EAS
 
namespace  FEHelper
 
namespace  plot
 
namespace  Python
 
namespace  ResultEvaluators
 
namespace  ResultTypes
 
namespace  traits
 
namespace  utils
 

Classes

struct  AffordanceCollectionImpl
 Struct representing a collection of affordances. More...
 
struct  AlgoInfo
 Additional information about the TrustRegion algorithm. More...
 
struct  ArcLength
 Structure representing the subsidiary function for the standard arc-length method. More...
 
class  AutoDiffFE
 AutoDiffFE class, an automatic differentiation wrapper for finite elements. More...
 
class  BasisHandler
 Wrapper class for a hierarchical basis constructed from a pre-basis. More...
 
struct  BulkModulusAndLamesFirstParameter
 Structure representing Lame's first parameter and shear modulus. More...
 
struct  ControlInformation
 Structure containing information about the control results. More...
 
class  ControlLogger
 ControlLogger class for logging control messages. More...
 
class  ControlSubsamplingVertexVTKWriter
 ControlSubsamplingVertexVTKWriter class for writing VTK files with subsampling based on control messages. More...
 
struct  ConvertLameConstants
 Conversion utility for Lame's constants. More...
 
struct  DefaultMembraneStrain
 
class  DenseFlatAssembler
 DenseFlatAssembler assembles matrix quantities using a flat basis Indexing strategy. The matrix is stored in a dense matrix format. This format is exploited during the assembly process. More...
 
class  DirichletValues
 Class for handling Dirichlet boundary conditions in Ikarus. More...
 
struct  DisplacementControl
 Structure representing the subsidiary function for the displacement control method. More...
 
class  EnhancedAssumedStrains
 Wrapper class for using Enhanced Assumed Strains (EAS) with displacement based elements. More...
 
struct  EnhancedAssumedStrainsPre
 A PreFE struct for Enhanced Assumed Strains. More...
 
class  FE
 FE class is a base class for all finite elements. More...
 
struct  FEFactory
 FEFactory is a convenient wrapper to forward arguments to PreFE and create and construct a factory of finite elements. More...
 
struct  FEMixin
 CRTP mixin class for finite elements with additional skills. More...
 
class  FERequirements
 Class representing the requirements for finite element calculations. More...
 
class  FErequirements
 Class representing the requirements for finite element calculations. More...
 
struct  FETraits
 Traits for handling finite elements. More...
 
class  FlatAssemblerBase
 The FlatAssemblerBase takes care of common subtasks done by flat assemblers. More...
 
struct  FlatIndexMergingStrategy
 Define the flat index-merging strategy for a given strategy IMS More...
 
struct  FlatIndexMergingStrategy< Dune::Functions::BasisFactory::BlockedInterleaved >
 
struct  FlatIndexMergingStrategy< Dune::Functions::BasisFactory::BlockedLexicographic >
 
struct  FlatPreBasis
 Transform a PreBasis into one with flat index-merging strategyThis utility takes a pre-basis and converts recursively all index-merging strategies into their flat analog, i.e. BlockedInterleaved is converted into FlatInterleaved and BlockedLexicographic is transformed into FlatLexicographic. More...
 
struct  FlatPreBasis< Dune::Functions::CompositePreBasis< IMS, SPB... > >
 
struct  FlatPreBasis< Dune::Functions::PowerPreBasis< IMS, SPB, C > >
 
class  GenericObserver
 GenericObserver class for observing specific messages. More...
 
class  IkarusInstance
 Singleton class representing an instance of the Ikarus framework. More...
 
class  IObservable
 Generic observable interface for the Observer design pattern. See [3] for a description of the design pattern. More...
 
class  IObserver
 Generic observer interface for the Observer design pattern. See [3] for a description of the design pattern. More...
 
class  KirchhoffLoveShell
 Kirchhoff-Love shell finite element class. More...
 
struct  KirchhoffLoveShellPre
 A PreFE struct for Kirchhoff-Love shell elements. More...
 
struct  KlArgs
 A struct containing information about the Youngs Modulus, Poisson's ratio and the thickness for the Kirchhoff-Love shell element. More...
 
struct  LamesFirstParameterAndShearModulus
 
class  LinearElastic
 LinearElastic class represents a linear elastic finite element. More...
 
struct  LinearElasticityT
 Implementation of the Linear Elasticity material model.The energy is computed as. More...
 
struct  LinearElasticPre
 A PreFE struct for linear elastic elements. More...
 
class  LinearSolverTemplate
 A type-erased class which wraps most of the linear solvers available in Eigen. More...
 
class  LoadControl
 The LoadControl control routine increases the last parameter of a nonlinear operator and calls a nonlinear solver.This class represents the LoadControl control routine. It increments the last parameter of a nonlinear operator and utilizes a nonlinear solver, such as Newton's method, to solve the resulting system at each step. More...
 
struct  LoadControlSubsidiaryFunction
 Structure representing the subsidiary function for the load control method. More...
 
struct  Material
 Interface classf or materials. More...
 
struct  NeoHookeT
 Implementation of the Neo-Hookean material model.The energy is computed as. More...
 
struct  NeumannBoundaryLoadPre
 A PreFE struct for Neumann boundary load skill. More...
 
class  NewtonRaphson
 Implementation of the Newton-Raphson method for solving nonlinear equations. More...
 
struct  NewtonRaphsonSettings
 Settings for the Newton-Raphson solver. More...
 
class  NewtonRaphsonWithSubsidiaryFunction
 Newton-Raphson solver with subsidiary function. More...
 
struct  NewtonRaphsonWithSubsidiaryFunctionSettings
 Settings for the Newton-Raphson solver with subsidiary function. More...
 
class  NonLinearElastic
 NonLinearElastic class represents a non-linear elastic finite element. More...
 
struct  NonLinearElasticPre
 A PreFE struct for non-linear elastic elements. More...
 
class  NonLinearOperator
 Represents a NonLinearOperator class for handling nonlinear operators. More...
 
class  NonLinearOperator< Impl::Functions< DerivativeArgs... >, Impl::Parameter< ParameterArgs... > >
 NonLinearOperator is a class taking linear algebra function and their arguments. The fcuntion are assumed to be derivatvies of each other w.r.t. the first parameter.
 
struct  NonLinearSolverInformation
 Information about the result of a non-linear solver. More...
 
class  NonLinearSolverLogger
 Implementation of an observer for logging non-linear solvers.This class inherits from the IObserver class and provides specific implementations for updating based on NonLinearSolverMessages. More...
 
class  PathFollowing
 The PathFollowing control routine for path-following analysis. More...
 
struct  PreFE
 PreFE struct acts as a convenient wrapper for the FE class to access different type traits. More...
 
class  ResultFunction
 Wrapper to evaluate results for a vtkwriter. More...
 
struct  ResultWrapper
 Container that is used for FE Results. It gives access to the stored value, but can also be used to access the result in Matrix and Vector form. More...
 
class  ScalarAssembler
 ScalarAssembler assembles scalar quantities. More...
 
struct  Skills
 Struct representing a collection of skills. More...
 
class  SparseFlatAssembler
 SparseFlatAssembler assembles matrix quantities using a flat basis Indexing strategy. The matrix is stored in a sparse matrix format. This format is exploited during the assembly process. More...
 
struct  Stats
 Information about the TrustRegion solver. More...
 
struct  StVenantKirchhoffT
 Implementation of the Saint Venant-Kirchhoff material model.The energy is computed as. More...
 
struct  SubsidiaryArgs
 Structure containing arguments for subsidiary functions. More...
 
class  Traction
 Traction class represents distributed traction load that can be applied. More...
 
class  TrustRegion
 Trust Region solver for non-linear optimization problems. More...
 
struct  TrustRegionSettings
 Configuration settings for the TrustRegion solver. More...
 
struct  VanishingStress
 VanishingStress material model that enforces stress components to be zero. More...
 
class  VectorFlatAssembler
 VectorFlatAssembler assembles vector quantities using a flat basis Indexing strategy. More...
 
class  VolumeLoad
 VolumeLoad class represents distributed volume load that can be applied. More...
 
struct  VolumeLoadPre
 A PreFE struct for volume load skill. More...
 
struct  YoungsModulusAndBulkModulus
 Structure representing Young's modulus and Lame's first parameter. More...
 
struct  YoungsModulusAndLamesFirstParameter
 Structure representing bulk modulus and Lame's first parameter. More...
 
struct  YoungsModulusAndPoissonsRatio
 Structure representing Young's modulus and shear modulus. More...
 
struct  YoungsModulusAndShearModulus
 Structure representing Young's modulus and bulk modulus. More...
 

Concepts

concept  FEAffordance
 Concept to check if a given type is one of the predefined affordance enums or the AffordanceCollectionImpl.
 
concept  CorrectStrainSize
 Template concept for ensuring correct strain size.
 
concept  MPTuple
 Concept for checking if a type is a valid material parameter tuple.
 

Typedefs

using LinearElasticity = LinearElasticityT< double >
 Convenience typedef for LinearElasticity with double as ScalarType. More...
 
using NeoHooke = NeoHookeT< double >
 Alias for NeoHookeT with double as the default scalar type. More...
 
using StVenantKirchhoff = StVenantKirchhoffT< double >
 Alias for StVenantKirchhoffT with double as the default scalar type. More...
 
using LinearSolver = LinearSolverTemplate< double >
 
template<class PreBasis >
using FlatPreBasis_t = typename FlatPreBasis< PreBasis >::type
 Type alias for flatted PreBasis. More...
 

Enumerations

enum class  ScalarAffordances {
  ScalarAffordances::BEGIN , ScalarAffordances::noAffordance , ScalarAffordances::mechanicalPotentialEnergy , ScalarAffordances::microMagneticPotentialEnergy ,
  ScalarAffordances::END
}
 A strongly typed enum class representing the scalar affordance. More...
 
enum class  VectorAffordances {
  VectorAffordances::BEGIN , VectorAffordances::noAffordance , VectorAffordances::forces , VectorAffordances::microMagneticForces ,
  VectorAffordances::END
}
 A strongly typed enum class representing the vector affordance. More...
 
enum class  MatrixAffordances {
  MatrixAffordances::BEGIN , MatrixAffordances::noAffordance , MatrixAffordances::stiffness , MatrixAffordances::materialstiffness ,
  MatrixAffordances::geometricstiffness , MatrixAffordances::stiffnessdiffBucklingVector , MatrixAffordances::microMagneticHessian , MatrixAffordances::mass ,
  MatrixAffordances::END
}
 A strongly typed enum class representing the matrix affordance. More...
 
enum class  FEParameter {
  FEParameter::BEGIN , FEParameter::noParameter , FEParameter::loadfactor , FEParameter::time ,
  FEParameter::END
}
 A strongly typed enum class representing the FE parameter. More...
 
enum class  FESolutions {
  FESolutions::BEGIN , FESolutions::noSolution , FESolutions::displacement , FESolutions::velocity ,
  FESolutions::director , FESolutions::magnetizationAndVectorPotential , FESolutions::END
}
 A strongly typed enum class representing the type of the solutions vectors. More...
 
enum class  ResultShape { Vector , Matrix }
 
enum class  StrainTags {
  StrainTags::BEGIN , StrainTags::linear , StrainTags::deformationGradient , StrainTags::displacementGradient ,
  StrainTags::greenLagrangian , StrainTags::rightCauchyGreenTensor , StrainTags::END
}
 A strongly typed enum class representing the type of the passed strain. More...
 
enum class  StressTags {
  StressTags::BEGIN , StressTags::linear , StressTags::PK2 , StressTags::PK1 ,
  StressTags::Cauchy , StressTags::Kirchhoff , StressTags::END
}
 A strongly typed enum class representing the type of the computed stresses. More...
 
enum class  TangentModuliTags {
  TangentModuliTags::BEGIN , TangentModuliTags::Material , TangentModuliTags::Spatial , TangentModuliTags::TwoPoint ,
  TangentModuliTags::END
}
 A strongly typed enum class representing the type of the computed tangent moduli. More...
 
enum class  SolverTypeTag {
  none , si_ConjugateGradient , si_LeastSquaresConjugateGradient , si_BiCGSTAB ,
  sd_SimplicialLLT , sd_SimplicialLDLT , sd_SparseLU , sd_SparseQR ,
  sd_CholmodSupernodalLLT , sd_UmfPackLU , sd_SuperLU , d_PartialPivLU ,
  d_FullPivLU , d_HouseholderQR , d_ColPivHouseholderQR , d_FullPivHouseholderQR ,
  d_CompleteOrthogonalDecomposition , d_LLT , d_LDLT
}
 Enumeration representing different solver types. More...
 
enum class  MatrixTypeTag { Dense , Sparse }
 Enumeration representing different matrix types (Dense or Sparse). More...
 
enum class  PreConditioner { IncompleteCholesky , IdentityPreconditioner , DiagonalPreconditioner }
 Enumeration of available preconditioners for the trust region solver. More...
 
enum class  StopReason {
  gradientNormTolReached , correctionNormTolReached , maximumTimeReached , maximumIterationsReached ,
  dontStop
}
 Enumeration of reasons for stopping the TrustRegion solver. More...
 
enum class  ControlMessages {
  ControlMessages::BEGIN , ControlMessages::CONTROL_STARTED , ControlMessages::CONTROL_ENDED , ControlMessages::STEP_STARTED ,
  ControlMessages::STEP_ENDED , ControlMessages::SOLUTION_CHANGED , ControlMessages::END
}
 Enum class defining control-routine-related messages. More...
 
enum class  NonLinearSolverMessages {
  NonLinearSolverMessages::BEGIN , NonLinearSolverMessages::INIT , NonLinearSolverMessages::ITERATION_STARTED , NonLinearSolverMessages::ITERATION_ENDED ,
  NonLinearSolverMessages::RESIDUALNORM_UPDATED , NonLinearSolverMessages::CORRECTIONNORM_UPDATED , NonLinearSolverMessages::SOLUTION_CHANGED , NonLinearSolverMessages::FINISHED_SUCESSFULLY ,
  NonLinearSolverMessages::END
}
 Enum class defining non-linear solver-related messages. More...
 

Functions

template<typename FER = FERequirements<>, bool useFlat = true, bool useEigenRef = false, typename BH , typename SK >
auto makeFE (const BH &basisHandler, const SK &sk)
 A function to create a finite element using the flat version of the basis. More...
 
template<typename FER = FERequirements<>, bool useEigenRef = false, typename BH , typename SK >
auto makeFEWithUnTouchedBasis (const BH &basisHandler, SK &&sk)
 A function to create a finite element using the untouched version of the basis. More...
 
constexpr std::string toString (ScalarAffordances _e)
 
constexpr std::string toString (VectorAffordances _e)
 
constexpr std::string toString (MatrixAffordances _e)
 
constexpr std::string toString (FEParameter _e)
 
constexpr std::string toString (FESolutions _e)
 
template<template< typename, int, int > class RT>
auto makeRT ()
 Creates a dummy resultType which can be stored in a variable. More...
 
template<template< typename, int, int > class RT>
auto toString ()
 Retrieves a string representation of the ResultType template. More...
 
auto eas (int numberOfEASParameters=0)
 A helper function to create an enhanced assumed strain pre finite element. More...
 
auto kirchhoffLoveShell (const KlArgs &args)
 A helper function to create a Kirchhoff-Love shell pre finite element. More...
 
auto linearElastic (const YoungsModulusAndPoissonsRatio &mat)
 A helper function to create a linear elastic pre finite element. More...
 
template<typename GV , typename F >
auto neumannBoundaryLoad (const BoundaryPatch< GV > *patch, F &&load)
 A helper function to create a Neumann boundary load skill. More...
 
template<class F >
 VolumeLoadPre (F f) -> VolumeLoadPre< traits::FunctionTraits< F >::return_type::RowsAtCompileTime >
 
template<int worldDim>
auto volumeLoad (const std::function< Eigen::Vector< double, worldDim >(const Dune::FieldVector< double, worldDim > &, const double &)> &f)
 A helper function to create a volume load skill. More...
 
template<typename F >
auto volumeLoad (F &&f)
 A helper function to create a volume load skill. More...
 
template<typename MAT , typename S >
consteval bool hasCorrectSize ()
 Template function for checking if the strain size is correct. More...
 
template<StrainTags tag, typename Derived >
auto createGreenLagrangianStrains (const Eigen::MatrixBase< Derived > &eMB)
 Create Green-Lagrangian strain based on the input. More...
 
template<StrainTags tag, typename Derived >
decltype(auto) createDeformationGradient (const Eigen::MatrixBase< Derived > &eMB)
 Create the deformation gradient based on the input. More...
 
template<StrainTags tag, typename Derived >
decltype(auto) createRightCauchyGreen (const Eigen::MatrixBase< Derived > &eMB)
 Create right Cauchy-Green tensor based on the input. More...
 
template<StrainTags from, StrainTags to, typename Derived >
decltype(auto) transformStrain (const Eigen::MatrixBase< Derived > &eRaw)
 Transform strain from one type to another. More...
 
constexpr std::string toString (StrainTags _e)
 
constexpr std::string toString (StressTags _e)
 
constexpr std::string toString (TangentModuliTags _e)
 
template<Impl::StressIndexPair... stressIndexPair, typename MaterialImpl >
auto makeVanishingStress (MaterialImpl mat, typename MaterialImpl::ScalarType p_tol=1e-12)
 Factory function to create a VanishingStress material with specified stress indices. More...
 
template<typename MaterialImpl >
auto planeStress (const MaterialImpl &mat, typename MaterialImpl::ScalarType tol=1e-8)
 Factory function to create a VanishingStress material for plane stress conditions. More...
 
template<typename MaterialImpl >
auto shellMaterial (const MaterialImpl &mat, typename MaterialImpl::ScalarType tol=1e-8)
 Factory function to create a VanishingStress material for a shell material with zero normal stress condition. More...
 
template<typename MaterialImpl >
auto beamMaterial (const MaterialImpl &mat, typename MaterialImpl::ScalarType tol=1e-8)
 Factory function to create a VanishingStress material for a beam material with two zero normal stress condition. More...
 
template<typename MAT >
auto nonLinearElastic (const MAT &mat)
 A helper function to create a non-linear elastic pre finite element. More...
 
template<typename... Args>
auto skills (const Args &... args)
 Function to create a Skills instance with the given skills. More...
 
template<typename... Args1, typename... Args2>
auto merge (const Skills< Args1... > &sk1, const Skills< Args2... > &sk2)
 Function to merge two Skills instances. More...
 
Eigen::Matrix3d planeStressLinearElasticMaterialTangent (double E, double nu)
 Computes the plane stress linear elastic material tangent matrix. More...
 
Eigen::Matrix< double, 6, 6 > linearElasticMaterialTangent3D (double E, double nu)
 Computes the 3D linear elastic material tangent matrix. More...
 
ConvertLameConstants< YoungsModulusAndPoissonsRatioconvertLameConstants (const YoungsModulusAndPoissonsRatio &valuePair)
 
ConvertLameConstants< YoungsModulusAndShearModulusconvertLameConstants (const YoungsModulusAndShearModulus &valuePair)
 
ConvertLameConstants< YoungsModulusAndBulkModulusconvertLameConstants (const YoungsModulusAndBulkModulus &valuePair)
 
ConvertLameConstants< LamesFirstParameterAndShearModulusconvertLameConstants (const LamesFirstParameterAndShearModulus &valuePair)
 
ConvertLameConstants< BulkModulusAndLamesFirstParameterconvertLameConstants (const BulkModulusAndLamesFirstParameter &valuePair)
 
auto toLamesFirstParameterAndShearModulus (const YoungsModulusAndPoissonsRatio &matParameter)
 Converts Young's modulus and Poisson's ratio to Lame's first parameter and shear modulus. More...
 
auto toYoungsModulusAndPoissonsRatio (const LamesFirstParameterAndShearModulus &matParameter)
 Converts Lame's first parameter and shear modulus to Young's modulus and Poisson's ratio. More...
 
template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, typename FE >
auto makeResultFunction (std::vector< FE > *fes, const typename FE::FERequirementType &req)
 Function to create a ResultFunction as a shared_ptr. More...
 
template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, typename FE >
auto makeResultVtkFunction (std::vector< FE > *fes, const typename FE::FERequirementType &req)
 Function to create a ResultFunction as a gridfunction that can be used with dune-vtk. More...
 
template<typename NLO , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto makeNewtonRaphson (const NLO &nonLinearOperator, LS &&linearSolver={}, UF &&updateFunction={})
 Function to create a NewtonRaphson solver instance. More...
 
template<typename NLO , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto makeNewtonRaphsonWithSubsidiaryFunction (const NLO &nonLinearOperator, LS &&linearSolver={}, UF &&updateFunction={})
 Function to create a NewtonRaphson with subsidiary function solver instance. More...
 
template<typename NLO , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF = utils::UpdateDefault>
auto makeTrustRegion (const NLO &nonLinearOperator, UF &&updateFunction={})
 Creates an instance of the TrustRegion solver. More...
 
template<typename GV , typename PBF >
auto makeBasis (const GV &gv, const PBF &pb)
 Factory function to create a Basis object. More...
 
template<typename PB >
auto makeBasis (const Dune::Functions::DefaultGlobalBasis< PB > &gb)
 Factory function to create a Basis object from a DefaultGlobalBasis. More...
 
template<typename Derived >
auto transpose (const Eigen::EigenBase< Derived > &A)
 
template<typename ST , int size>
Dune::FieldVector< ST, size > toDune (const Eigen::Vector< ST, size > &vec)
 Create Eigen::Vector to Dune::FieldVector. More...
 
template<typename ST , int rows>
Dune::FieldVector< ST, rows > toDune (const Eigen::Matrix< ST, rows, 0 > &vec)
 Convert Eigen::Matrix to Dune::FieldVector. More...
 
template<typename ST , int rows, int cols>
Dune::FieldMatrix< ST, rows, cols > toDune (const Eigen::Matrix< ST, rows, cols > &mat)
 Convert Eigen::Matrix to Dune::FieldMatrix. More...
 
template<typename ST , int size>
Eigen::Map< const Eigen::Vector< ST, size > > toEigenMap (const Dune::FieldVector< ST, size > &vec)
 View a Dune::FieldVector as an Eigen::Vector using Map, no copies take place. More...
 
template<typename ST , int size>
Eigen::Map< Eigen::Vector< ST, size > > toEigenMap (Dune::FieldVector< ST, size > &vec)
 View a constant Dune::FieldVector as a constant Eigen::Vector, no copies take place. More...
 
template<class PreBasis >
decltype(auto) flatPreBasis (const PreBasis &preBasis)
 Generator function for a flatted PreBasis. More...
 
void init (int argc, char **argv, bool enableFileLogger=true)
 Initializes the Ikarus framework. More...
 
template<typename Derived >
auto orthonormalizeMatrixColumns (const Eigen::MatrixBase< Derived > &A)
 Orthonormalizes all Matrix columns using Gram-Schmidt Orthogonalization. More...
 
template<typename ValueType >
auto viewAsFlatEigenVector (Dune::BlockVector< ValueType > &blockedVector)
 View Dune::BlockVector as an Eigen::Vector. More...
 
template<typename ValueType >
auto viewAsFlatEigenVector (const Dune::BlockVector< ValueType > &blockedVector)
 View const Dune::BlockVector as an Eigen::Vector. More...
 
template<typename ValueType >
auto viewAsEigenMatrixAsDynFixed (Dune::BlockVector< ValueType > &blockedVector)
 View Dune::BlockVector as an Eigen::Matrix with dynamic rows and fixed columns depending on the size of the ValueType. More...
 
template<typename ValueType >
auto viewAsEigenMatrixAsDynFixed (const Dune::BlockVector< ValueType > &blockedVector)
 Const view Dune::BlockVector as an Eigen::Matrix with dynamic rows and fixed columns depending on the size of the ValueType. More...
 
template<typename ValueType >
auto viewAsEigenMatrixFixedDyn (Dune::BlockVector< ValueType > &blockedVector)
 View Dune::BlockVector as an Eigen::Matrix with fixed rows depending on the size of the ValueType and dynamic columns. More...
 
template<typename ValueType >
auto viewAsEigenMatrixFixedDyn (const Dune::BlockVector< ValueType > &blockedVector)
 Const view Dune::BlockVector as an Eigen::Matrix with fixed rows depending on the size of the ValueType and dynamic columns. More...
 
template<typename Type >
requires requires { Type::correctionSize; }
size_t correctionSize (const Dune::BlockVector< Type > &a)
 Returns the total correction size of a block vector with a Manifold as the underlying type. More...
 
template<typename Type >
requires requires { Type::valueSize; }
size_t valueSize (const Dune::BlockVector< Type > &a)
 Returns the total value size of a block vector with a Manifold as the underlying type. More...
 
template<typename Type , typename Derived >
requires (Ikarus::Concepts::AddAssignAble<Type, decltype(b.template segment<Type::correctionSize>(0))> and requires() { Type::correctionSize; })
Dune::BlockVector< Type > & operator+= (Dune::BlockVector< Type > &a, const Eigen::MatrixBase< Derived > &b)
 Enables the += operator for Dune::BlockVector += Eigen::Vector. More...
 
template<typename Type , typename Derived >
requires (Ikarus::Concepts::AddAssignAble<Type, decltype(b.template segment<Type::correctionSize>(0))> and requires() { Type::correctionSize; })
Dune::BlockVector< Type > & operator-= (Dune::BlockVector< Type > &a, const Eigen::MatrixBase< Derived > &b)
 Enables the -= operator for Dune::BlockVector += Eigen::Vector. More...
 
template<typename... Types, typename Derived >
Dune::TupleVector< Types... > & operator+= (Dune::TupleVector< Types... > &a, const Eigen::MatrixBase< Derived > &b)
 Enables the += operator for Dune::TupleVector += Eigen::Vector. More...
 
template<typename ManifoldPoint , typename Derived >
requires (Ikarus::Concepts::AddAssignAble<ManifoldPoint, decltype(b.template segment<ManifoldPoint::valueSize>(0))> and requires() { ManifoldPoint::valueSize; })
Dune::BlockVector< ManifoldPoint > & addInEmbedding (Dune::BlockVector< ManifoldPoint > &a, const Eigen::MatrixBase< Derived > &b)
 Enables the addition in the embedding space of a vector in the space M^n, where M is a manifold with the points of type ManifoldPoint. More...
 
template<typename Derived >
requires (!std::floating_point<Derived>)
auto norm (const Eigen::MatrixBase< Derived > &v)
 Adding free norm function to Eigen types. More...
 
auto norm (const std::floating_point auto &v)
 Helper Free Function to have the same interface as for Eigen Vector Types. More...
 
template<typename Scalar , int size>
auto operator* (const Eigen::DiagonalMatrix< Scalar, size > &a, const Eigen::DiagonalMatrix< Scalar, size > &b)
 Eigen::DiagonalMatrix Product Missing in Eigen. More...
 
template<typename Scalar , int size>
auto operator+= (Eigen::DiagonalMatrix< Scalar, size > &a, const Eigen::DiagonalMatrix< Scalar, size > &b)
 In-place addition for Eigen::DiagonalMatrix. More...
 
template<typename Derived , typename Scalar , int size>
auto operator+ (const Eigen::MatrixBase< Derived > &a, const Eigen::DiagonalMatrix< Scalar, size > &b)
 Eigen::Matrix + Eigen::DiagonalMatrix addition missing in Eigen. More...
 
template<typename Derived , typename Scalar , int size>
auto operator+ (const Eigen::DiagonalMatrix< Scalar, size > &a, const Eigen::MatrixBase< Derived > &b)
 Eigen::DiagonalMatrix + Eigen::Matrix addition missing in Eigen. More...
 
template<typename Scalar , int size>
auto operator- (const Eigen::DiagonalMatrix< Scalar, size > &a)
 Unary minus for Eigen::DiagonalMatrix. More...
 
template<typename Derived , typename Derived2 >
auto operator+ (const Eigen::MatrixBase< Derived > &a, const Eigen::DiagonalWrapper< Derived2 > &b)
 Addition of Eigen::Matrix and Eigen::DiagonalWrapper. More...
 
template<typename Derived , typename Derived2 >
auto operator+ (const Eigen::DiagonalWrapper< Derived > &a, const Eigen::MatrixBase< Derived2 > &b)
 Addition of Eigen::DiagonalWrapper and Eigen::Matrix. More...
 
template<typename Scalar , int size>
std::ostream & operator<< (std::ostream &os, const Eigen::DiagonalMatrix< Scalar, size > &a)
 Output stream operator for Eigen::DiagonalMatrix. More...
 
template<typename Derived >
Derived sym (const Eigen::MatrixBase< Derived > &A)
 Returns the symmetric part of a matrix. More...
 
template<typename Derived >
Derived skew (const Eigen::MatrixBase< Derived > &A)
 Returns the skew part of a matrix. More...
 
template<typename Derived >
void printForMaple (const Eigen::EigenBase< Derived > &A)
 Method to print the matrix in a format that can directly be copied to Maple. More...
 
template<typename FieldVectorT >
auto createRandomVector (typename FieldVectorT::value_type lower=-1, typename FieldVectorT::value_type upper=1)
 Creates a random vector of the specified type within a given range. More...
 
template<typename ScalarType >
Eigen::Matrix< ScalarType, 3, 3 > skew (const Eigen::Vector< ScalarType, 3 > &a)
 Create skew 3x3 matrix from 3d vector. More...
 
template<typename Derived , size_t sizeOfCondensedIndices>
auto staticCondensation (const Eigen::MatrixBase< Derived > &E, const std::array< size_t, sizeOfCondensedIndices > &indices)
 Performs static condensation on a square matrix. More...
 
template<typename Derived , size_t sizeOfRemovedCols>
auto removeCol (const Eigen::MatrixBase< Derived > &E, const std::array< size_t, sizeOfRemovedCols > &indices)
 Removes specified columns from a matrix. More...
 
template<typename ST , typename MaterialImpl >
auto toVoigtAndMaybeReduce (const Eigen::Matrix< ST, 3, 3 > &E, const MaterialImpl &material, bool isStrain=true)
 Converts a 3x3 matrix to Voigt notation, possibly reducing it based on material properties. More...
 
template<typename M , typename Derived >
decltype(auto) enlargeIfReduced (const Eigen::MatrixBase< Derived > &E)
 Enlarges a matrix if it reduced in the context of material laws, i.e., VanishingStress If the material is not reduced the untouched matrix is returned and rendering the function as a NoOp. More...
 
template<typename MessageType >
MessageType & increment (MessageType &e)
 Increments the given enum value. More...
 
template<typename T >
requires std::integral<T>
constexpr T ct_sqrt (T x)
 Compile-time square root for integer types. More...
 
template<typename... Args>
auto parameter (Args &&... args)
 Creates a Parameter object. More...
 
template<typename... Args>
auto functions (Args &&... args)
 Creates a Functions object. More...
 
template<typename... DerivativeArgs, typename... ParameterArgs>
auto initResults (const Impl::Functions< DerivativeArgs... > &derivativesFunctions, const Impl::Parameter< ParameterArgs... > &parameter)
 Initializes the results for functions and parameters. More...
 
template<class BaseQuadrature , class Quadrature >
auto tensorProductQuadrature (const BaseQuadrature &baseQuad, const Quadrature &onedQuad)
 Computes the tensor product quadrature rule using a base and one-dimensional quadrature rule. More...
 
template<typename Derived , typename T , auto rank>
Eigen::Tensor< typename Derived::Scalar, rank > tensorView (const Eigen::EigenBase< Derived > &matrix, const std::array< T, rank > &dims)
 View an Eigen matrix as an Eigen Tensor with specified dimensions. More...
 
auto dyadic (const auto &A_ij, const auto &B_kl)
 Computes the dyadic product of two Eigen tensors. More...
 
template<typename ScalarType = double, int dim = 3>
auto symmetricIdentityFourthOrder ()
 Generates a symmetric identity fourth-order tensor. More...
 
template<typename ScalarType = double, int dim = 3>
auto symmetricFourthOrder (const auto &A, const auto &B)
 Generates a symmetric fourth-order tensor based on two second-order input tensors. More...
 
template<typename ScalarType = double, int dim = 3>
auto identityFourthOrder ()
 Generates an identity fourth-order tensor. More...
 
template<typename AType , typename BType >
auto fourthOrderIKJL (const Eigen::MatrixBase< AType > &A, const Eigen::MatrixBase< BType > &B)
 Computes the IKJL product of two matrices. More...
 
template<typename ScalarType , long int dim>
auto symTwoSlots (const Eigen::TensorFixedSize< ScalarType, Eigen::Sizes< dim, dim, dim, dim > > &t, const std::array< size_t, 2 > &slots)
 Creates a symmetric fourth-order tensor in the two specified slots of the input tensor. More...
 
constexpr Eigen::Index toVoigt (Eigen::Index i, Eigen::Index j) noexcept
 Converts 2D indices to Voigt notation index. More...
 
template<typename ScalarType = double>
Eigen::Matrix< ScalarType, 6, 6 > toVoigt (const Eigen::TensorFixedSize< ScalarType, Eigen::Sizes< 3, 3, 3, 3 > > &ft)
 Converts a fourth-order tensor of fixed size 3x3x3x3 to a Voigt notation matrix of size 6x6. More...
 
template<typename ST , int size, int Options>
requires (size > 0 and size <= 3)
auto toVoigt (const Eigen::Matrix< ST, size, size, Options, size, size > &E, bool isStrain=true)
 Converts a square 2x2 or 3x3 matrix to a Voigt notation vector. More...
 
template<typename ST , int size>
requires (size == 1 or size == 3 or size == 6)
auto fromVoigt (const Eigen::Vector< ST, size > &EVoigt, bool isStrain=true)
 Converts a vector given in Voigt notation to a matrix. More...
 
constexpr std::array< size_t, 2 > fromVoigt (size_t i)
 Converts a Voigt notation index to matrix indices. More...
 
template<typename ScalarType >
auto fromVoigt (const Eigen::Matrix< ScalarType, 6, 6 > &CVoigt)
 Converts a matrix in Voigt notation to a Fourth-order tensor. More...
 
template<typename Geometry >
Eigen::Matrix3d calcTransformationMatrix2D (const Geometry &geometry)
 Calculates the 2D transformation matrix. More...
 
template<typename Geometry >
Eigen::Matrix< double, 6, 6 > calcTransformationMatrix3D (const Geometry &geometry)
 Calculates the 3D transformation matrix. More...
 

Variables

constexpr VectorAffordances forces = VectorAffordances::forces
 
constexpr MatrixAffordances stiffness = MatrixAffordances::stiffness
 
constexpr MatrixAffordances stiffnessdiffBucklingVector = MatrixAffordances::stiffnessdiffBucklingVector
 
constexpr MatrixAffordances mass = MatrixAffordances::mass
 
constexpr ScalarAffordances potentialEnergy = ScalarAffordances::mechanicalPotentialEnergy
 
template<template< typename, int, int > class RT1, template< typename, int, int > class RT2>
constexpr bool isSameResultType = std::is_same_v<Impl::DummyRT<RT1>, Impl::DummyRT<RT2>>
 Meta variable to test whether two ResultType templates are the same. More...
 
template<int dim>
constexpr auto voigtNotationContainer = std::get<dim - 1>(Impl::voigtIndices)
 Container for Voigt notation indices based on dimension.1D: 0,0 2D: 0,0; 1,1; 0,1 3D: 0,0; 1,1; 2,2; 1,2; 0,2; 0,1. More...
 

Typedef Documentation

◆ FlatPreBasis_t

template<class PreBasis >
using Ikarus::FlatPreBasis_t = typedef typename FlatPreBasis<PreBasis>::type

◆ LinearElasticity

◆ LinearSolver

using Ikarus::LinearSolver = typedef LinearSolverTemplate<double>

◆ NeoHooke

using Ikarus::NeoHooke = typedef NeoHookeT<double>

◆ StVenantKirchhoff

Enumeration Type Documentation

◆ MatrixTypeTag

enum class Ikarus::MatrixTypeTag
strong
Enumerator
Dense 
Sparse 

◆ PreConditioner

enum class Ikarus::PreConditioner
strong
Enumerator
IncompleteCholesky 
IdentityPreconditioner 
DiagonalPreconditioner 

◆ ResultShape

enum class Ikarus::ResultShape
strong
Enumerator
Vector 
Matrix 

◆ SolverTypeTag

enum class Ikarus::SolverTypeTag
strong

The prefix s and d stand for sparse and dense solvers and the second prefix i and d stand for iterative or direct solvers for the sparse case

Enumerator
none 
si_ConjugateGradient 
si_LeastSquaresConjugateGradient 
si_BiCGSTAB 
sd_SimplicialLLT 
sd_SimplicialLDLT 
sd_SparseLU 
sd_SparseQR 
sd_CholmodSupernodalLLT 
sd_UmfPackLU 
sd_SuperLU 
d_PartialPivLU 
d_FullPivLU 
d_HouseholderQR 
d_ColPivHouseholderQR 
d_FullPivHouseholderQR 
d_CompleteOrthogonalDecomposition 
d_LLT 
d_LDLT 

◆ StopReason

enum class Ikarus::StopReason
strong
Enumerator
gradientNormTolReached 
correctionNormTolReached 
maximumTimeReached 
maximumIterationsReached 
dontStop 

Function Documentation

◆ beamMaterial()

template<typename MaterialImpl >
auto Ikarus::beamMaterial ( const MaterialImpl &  mat,
typename MaterialImpl::ScalarType  tol = 1e-8 
)
Template Parameters
MaterialImplThe underlying material model.
Parameters
matThe underlying material model.
p_tolTolerance for stress reduction.
Returns
VanishingStress The created VanishingStress material for plane stress.

◆ calcTransformationMatrix2D()

template<typename Geometry >
Eigen::Matrix3d Ikarus::calcTransformationMatrix2D ( const Geometry &  geometry)

This function computes the transformation matrix needed to transform second-order tensors represented in Voigt notation from local to global coordinate system for 2D elements.

Template Parameters
GeometryThe geometry type.
Parameters
geometryReference to the geometry object.
Returns
The transformation matrix for 2D elements.

◆ calcTransformationMatrix3D()

template<typename Geometry >
Eigen::Matrix< double, 6, 6 > Ikarus::calcTransformationMatrix3D ( const Geometry &  geometry)

This function computes the transformation matrix needed to transform second-order tensors represented in Voigt notation from local to global coordinate system for 3D elements.

Template Parameters
GeometryThe geometry type.
Parameters
geometryReference to the geometry object.
Returns
The transformation matrix for 3D elements.

◆ convertLameConstants() [1/5]

ConvertLameConstants< BulkModulusAndLamesFirstParameter > Ikarus::convertLameConstants ( const BulkModulusAndLamesFirstParameter valuePair)
inline

◆ convertLameConstants() [2/5]

ConvertLameConstants< LamesFirstParameterAndShearModulus > Ikarus::convertLameConstants ( const LamesFirstParameterAndShearModulus valuePair)
inline

◆ convertLameConstants() [3/5]

ConvertLameConstants< YoungsModulusAndBulkModulus > Ikarus::convertLameConstants ( const YoungsModulusAndBulkModulus valuePair)
inline

◆ convertLameConstants() [4/5]

ConvertLameConstants< YoungsModulusAndPoissonsRatio > Ikarus::convertLameConstants ( const YoungsModulusAndPoissonsRatio valuePair)
inline
Here is the caller graph for this function:

◆ convertLameConstants() [5/5]

ConvertLameConstants< YoungsModulusAndShearModulus > Ikarus::convertLameConstants ( const YoungsModulusAndShearModulus valuePair)
inline

◆ ct_sqrt()

template<typename T >
requires std::integral<T>
constexpr T Ikarus::ct_sqrt ( x)
constexpr
Template Parameters
TThe integral type for which square root is calculated.
Parameters
xThe value for which square root is calculated.
Returns
constexpr T The calculated square root.
Here is the caller graph for this function:

◆ eas()

auto Ikarus::eas ( int  numberOfEASParameters = 0)
Parameters
numberOfEASParametersNumber of EAS parameters
Returns
An enhanced assumed strain pre finite element.

◆ functions()

template<typename... Args>
auto Ikarus::functions ( Args &&...  args)
Template Parameters
ArgsThe argument types.
Parameters
argsThe tuple of arguments.
Returns
auto The Functions object.

◆ hasCorrectSize()

template<typename MAT , typename S >
consteval bool Ikarus::hasCorrectSize ( )

The given strain quantity has to be a Eigen::Vector6 or a Eigen::Matrix3

Template Parameters
MATType of the material.
SType of the strains.

◆ init()

void Ikarus::init ( int  argc,
char **  argv,
bool  enableFileLogger = true 
)
inline
Parameters
argcThe number of command-line arguments.
argvThe command-line arguments.
enableFileLoggerFlag indicating whether to enable the file logger.

https://patorjk.com/software/taag/#p=testall&f=Univers&t=IKARUS (font: Lean)

Here is the caller graph for this function:

◆ initResults()

template<typename... DerivativeArgs, typename... ParameterArgs>
auto Ikarus::initResults ( const Impl::Functions< DerivativeArgs... > &  derivativesFunctions,
const Impl::Parameter< ParameterArgs... > &  parameter 
)
Template Parameters
DerivativeArgsThe types of derivative arguments.
ParameterArgsThe types of parameter arguments.
Parameters
derivativesFunctionsThe Functions object for derivative arguments.
parameterThe Parameter object for parameter arguments.
Returns
auto The initialized results.

◆ kirchhoffLoveShell()

auto Ikarus::kirchhoffLoveShell ( const KlArgs args)
Parameters
argsArguments for the Kirchhoff-Love shell element.
Returns
A Kirchhoff-Love shell pre finite element.

◆ linearElastic()

auto Ikarus::linearElastic ( const YoungsModulusAndPoissonsRatio mat)
Parameters
matMaterial parameters for the linear elastic element.
Returns
A linear elastic pre finite element.

◆ linearElasticMaterialTangent3D()

Eigen::Matrix< double, 6, 6 > Ikarus::linearElasticMaterialTangent3D ( double  E,
double  nu 
)
inline
Parameters
EYoung's modulus.
nuPoisson's ratio.
Returns
6x6 material tangent matrix. Structure representing Young's modulus and Poisson's ratio. see https://en.wikipedia.org/wiki/Lam%C3%A9_parameters
Here is the caller graph for this function:

◆ makeBasis() [1/2]

template<typename PB >
auto Ikarus::makeBasis ( const Dune::Functions::DefaultGlobalBasis< PB > &  gb)
Template Parameters
PBThe type of the pre-basis associated with the DefaultGlobalBasis.
Parameters
gbThe DefaultGlobalBasis.
Returns
A Basis object.

◆ makeBasis() [2/2]

template<typename GV , typename PBF >
auto Ikarus::makeBasis ( const GV &  gv,
const PBF &  pb 
)

Factory function that creates a Basis object from a given grid view and pre-basis factory.

Template Parameters
GVThe type of the grid view.
PBFThe type of the pre-basis factory function.
Parameters
gvThe grid view.
pbThe pre-basis factory function.
Returns
A Basis object.

◆ makeFE()

template<typename FER = FERequirements<>, bool useFlat = true, bool useEigenRef = false, typename BH , typename SK >
auto Ikarus::makeFE ( const BH &  basisHandler,
const SK &  sk 
)
Template Parameters
BHThe type of the basis handler.
SKType of the skills.
useFlatA boolean indicating if the the underlying basis should be handed out as flat or the untouched version.
FERThe requirements for the finite element.
useEigenRefA boolean flag indicating whether to use Eigen references.
Parameters
basisHandlerThe basis handler.
skSkill arguments.
Returns
An FEFactory object.

◆ makeFEWithUnTouchedBasis()

template<typename FER = FERequirements<>, bool useEigenRef = false, typename BH , typename SK >
auto Ikarus::makeFEWithUnTouchedBasis ( const BH &  basisHandler,
SK &&  sk 
)
Template Parameters
BHThe type of the basis handler.
SKType of the skills.
FERThe requirements for the finite element.
useEigenRefA boolean flag indicating whether to use Eigen references.
Parameters
basisHandlerThe basis handler.
skSkill arguments.
Returns
An FEFactory object.

◆ makeNewtonRaphson()

template<typename NLO , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto Ikarus::makeNewtonRaphson ( const NLO &  nonLinearOperator,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
)
Template Parameters
NLOType of the nonlinear operator to solve.
LSType of the linear solver used internally (default is SolverDefault).
UFType of the update function (default is UpdateDefault).
Parameters
nonLinearOperatorNonlinear operator to solve.
linearSolverLinear solver used internally (default is SolverDefault).
updateFunctionUpdate function (default is UpdateDefault).
Returns
Shared pointer to the NewtonRaphson solver instance.

◆ makeNewtonRaphsonWithSubsidiaryFunction()

template<typename NLO , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto Ikarus::makeNewtonRaphsonWithSubsidiaryFunction ( const NLO &  nonLinearOperator,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
)
Template Parameters
NLOType of the nonlinear operator to solve.
LSType of the linear solver used internally (default is SolverDefault).
UFType of the update function (default is UpdateDefault).
Parameters
nonLinearOperatorNonlinear operator to solve.
linearSolverLinear solver used internally (default is SolverDefault).
updateFunctionUpdate function (default is UpdateDefault).
Returns
Shared pointer to the NewtonRaphson solver instance.

◆ makeResultFunction()

template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, typename FE >
auto Ikarus::makeResultFunction ( std::vector< FE > *  fes,
const typename FE::FERequirementType req 
)

Constructs a ResultFunction object with given finite elements, ferequirements as shared_ptr to be used with the native Dune VTKWriter

Parameters
fesPointer to a vector of finite elements
reqFERequirements for evaluation
Template Parameters
FEType of the finite element
RTrequested result type
UserFunctionType of the user-defined function for custom result evaluation (default is DefaultUserFunction)

◆ makeResultVtkFunction()

template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, typename FE >
auto Ikarus::makeResultVtkFunction ( std::vector< FE > *  fes,
const typename FE::FERequirementType req 
)

Constructs a ResultFunction object with given finite elements, ferequirements as a VTK::Function to be used with dune-vtk It is possible to construct a localFunction from this as follows

auto localResultFunction = localFunction(vtkResultFunction);
localResultFunction.bind(element);
Parameters
fesPointer to a vector of finite elements
reqFERequirements for evaluation
Template Parameters
FEType of the finite element
RTrequested result type
UserFunctionType of the user-defined function for custom result evaluation (default is DefaultUserFunction)

◆ makeRT()

template<template< typename, int, int > class RT>
auto Ikarus::makeRT ( )
Template Parameters
RTThe ResultType template
Returns
The ResultType

◆ makeTrustRegion()

template<typename NLO , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF = utils::UpdateDefault>
auto Ikarus::makeTrustRegion ( const NLO &  nonLinearOperator,
UF &&  updateFunction = {} 
)
Template Parameters
NLOType of the nonlinear operator to solve.
preConditionerType of the preconditioner used internally (default is IncompleteCholesky).
UFType of the update function (default is UpdateDefault).
Parameters
nonLinearOperatorNonlinear operator to solve.
updateFunctionUpdate function (default is UpdateDefault).
Returns
Shared pointer to the TrustRegion solver instance.

◆ makeVanishingStress()

template<Impl::StressIndexPair... stressIndexPair, typename MaterialImpl >
auto Ikarus::makeVanishingStress ( MaterialImpl  mat,
typename MaterialImpl::ScalarType  p_tol = 1e-12 
)
Template Parameters
stressIndexPairThe array of StressIndexPair representing fixed stress components.
MaterialImplThe underlying material model.
Parameters
matThe underlying material model.
p_tolTolerance for stress reduction.
Returns
VanishingStress The created VanishingStress material.
Here is the caller graph for this function:

◆ merge()

template<typename... Args1, typename... Args2>
auto Ikarus::merge ( const Skills< Args1... > &  sk1,
const Skills< Args2... > &  sk2 
)
Template Parameters
Args1Variadic template parameters representing the skills of the first instance.
Args2Variadic template parameters representing the skills of the second instance.
Parameters
sk1The first Skills instance.
sk2The second Skills instance.
Returns
A new Skills instance containing the merged skills.

◆ neumannBoundaryLoad()

template<typename GV , typename F >
auto Ikarus::neumannBoundaryLoad ( const BoundaryPatch< GV > *  patch,
F &&  load 
)
Template Parameters
GVType of the grid view.
FType of the Neumann boundary load functor.
Parameters
patchThe patch where Neumann boundary load is applied.
loadThe neumann boundary load functor.
Returns
A Neumann boundary load skill.

◆ nonLinearElastic()

template<typename MAT >
auto Ikarus::nonLinearElastic ( const MAT &  mat)
Template Parameters
MATType of the material.
Parameters
matMaterial parameters for the non-linear elastic element.
Returns
A non-linear elastic pre finite element.

◆ parameter()

template<typename... Args>
auto Ikarus::parameter ( Args &&...  args)
Template Parameters
ArgsThe argument types.
Parameters
argsThe tuple of arguments.
Returns
auto The Parameter object.

◆ planeStress()

template<typename MaterialImpl >
auto Ikarus::planeStress ( const MaterialImpl &  mat,
typename MaterialImpl::ScalarType  tol = 1e-8 
)
Template Parameters
MaterialImplThe underlying material model.
Parameters
matThe underlying material model.
tolTolerance for stress reduction.
Returns
VanishingStress The created VanishingStress material for plane stress.

◆ planeStressLinearElasticMaterialTangent()

Eigen::Matrix3d Ikarus::planeStressLinearElasticMaterialTangent ( double  E,
double  nu 
)
inline
Parameters
EYoung's modulus.
nuPoisson's ratio.
Returns
3x3 material tangent matrix.
Here is the caller graph for this function:

◆ shellMaterial()

template<typename MaterialImpl >
auto Ikarus::shellMaterial ( const MaterialImpl &  mat,
typename MaterialImpl::ScalarType  tol = 1e-8 
)
Template Parameters
MaterialImplThe underlying material model.
Parameters
matThe underlying material model.
tolTolerance for stress reduction.
Returns
VanishingStress The created VanishingStress material for plane stress.

◆ skills()

template<typename... Args>
auto Ikarus::skills ( const Args &...  args)
Template Parameters
ArgsVariadic template parameters representing the skills.
Parameters
argsVariadic arguments representing the skills.
Returns
A Skills instance containing the specified skills.

◆ tensorProductQuadrature()

template<class BaseQuadrature , class Quadrature >
auto Ikarus::tensorProductQuadrature ( const BaseQuadrature &  baseQuad,
const Quadrature &  onedQuad 
)

This function constructs a tensor product quadrature rule by combining a base quadrature rule and a one-dimensional quadrature rule. It iterates over the points of the base quadrature and combines them with each point of the one-dimensional quadrature.

Template Parameters
BaseQuadratureType of the base quadrature.
QuadratureType of the one-dimensional quadrature.
Parameters
baseQuadThe base quadrature rule.
onedQuadThe one-dimensional quadrature rule.
Returns
Dune::QuadratureRule<double, BaseQuadrature::d + 1> - Tensor product quadrature rule.

◆ toDune() [1/3]

template<typename ST , int rows>
Dune::FieldVector< ST, rows > Ikarus::toDune ( const Eigen::Matrix< ST, rows, 0 > &  vec)

The matrix has fixed row size. The matrix needs to have a single column.

Template Parameters
STThe scalar type of the vectors.
rowsThe number of rows in the matrix.
Parameters
vecThe Eigen::Matrix to be converted.
Returns
Dune::FieldVector<ST, rows> representing the converted matrix.

◆ toDune() [2/3]

template<typename ST , int rows, int cols>
Dune::FieldMatrix< ST, rows, cols > Ikarus::toDune ( const Eigen::Matrix< ST, rows, cols > &  mat)

The matrix has fixed rows and column size

Template Parameters
STThe scalar type of the matrix.
rowsThe number of rows in the matrix.
colsThe number of columns in the matrix.
Parameters
matThe Eigen::Matrix to be converted.
Returns
Dune::FieldMatrix<ST, rows, cols> representing the converted matrix.

◆ toDune() [3/3]

template<typename ST , int size>
Dune::FieldVector< ST, size > Ikarus::toDune ( const Eigen::Vector< ST, size > &  vec)
Template Parameters
STThe scalar type of the vectors.
sizeThe size of the vectors.
Parameters
vecThe Eigen::Vector to be converted.
Returns
Dune::FieldVector<ST, size> representing the converted vector.

◆ toEigenMap() [1/2]

template<typename ST , int size>
Eigen::Map< const Eigen::Vector< ST, size > > Ikarus::toEigenMap ( const Dune::FieldVector< ST, size > &  vec)
Template Parameters
STThe scalar type of the vector.
sizeThe size of the vector.
Parameters
vecThe Dune::FieldVector to be viewed as Eigen::Vector.
Returns
Eigen::Map<const Eigen::Vector<ST, size>> representing the viewed vector.

◆ toEigenMap() [2/2]

template<typename ST , int size>
Eigen::Map< Eigen::Vector< ST, size > > Ikarus::toEigenMap ( Dune::FieldVector< ST, size > &  vec)
Template Parameters
STThe scalar type of the vector.
sizeThe size of the vector.
Parameters
vecThe Dune::FieldVector to be viewed as Eigen::Vector.
Returns
Eigen::Map<Eigen::Vector<ST, size>> representing the viewed vector.

◆ toLamesFirstParameterAndShearModulus()

auto Ikarus::toLamesFirstParameterAndShearModulus ( const YoungsModulusAndPoissonsRatio matParameter)
inline
Parameters
matParameterYoung's modulus and Poisson's ratio.
Returns
Lame's first parameter and shear modulus.

◆ toString() [1/9]

template<template< typename, int, int > class RT>
auto Ikarus::toString ( )
Template Parameters
RTthe ResultType template
Returns
the name of the ResultType

◆ toString() [2/9]

constexpr std::string Ikarus::toString ( FEParameter  _e)
constexpr

◆ toString() [3/9]

constexpr std::string Ikarus::toString ( FESolutions  _e)
constexpr

◆ toString() [4/9]

constexpr std::string Ikarus::toString ( MatrixAffordances  _e)
constexpr

◆ toString() [5/9]

constexpr std::string Ikarus::toString ( ScalarAffordances  _e)
constexpr
Here is the caller graph for this function:

◆ toString() [6/9]

constexpr std::string Ikarus::toString ( StrainTags  _e)
constexpr

◆ toString() [7/9]

constexpr std::string Ikarus::toString ( StressTags  _e)
constexpr

◆ toString() [8/9]

constexpr std::string Ikarus::toString ( TangentModuliTags  _e)
constexpr

◆ toString() [9/9]

constexpr std::string Ikarus::toString ( VectorAffordances  _e)
constexpr

◆ toYoungsModulusAndPoissonsRatio()

auto Ikarus::toYoungsModulusAndPoissonsRatio ( const LamesFirstParameterAndShearModulus matParameter)
inline
Parameters
matParameterLame's first parameter and shear modulus.
Returns
Young's modulus and Poisson's ratio.

◆ transpose()

template<typename Derived >
auto Ikarus::transpose ( const Eigen::EigenBase< Derived > &  A)
Here is the caller graph for this function:

◆ volumeLoad() [1/2]

template<int worldDim>
auto Ikarus::volumeLoad ( const std::function< Eigen::Vector< double, worldDim >(const Dune::FieldVector< double, worldDim > &, const double &)> &  f)
Template Parameters
worldDimThe world dimension.
Parameters
fA function representing the volume load.
Returns
A volume load skill.
Here is the caller graph for this function:

◆ volumeLoad() [2/2]

template<typename F >
auto Ikarus::volumeLoad ( F &&  f)
Parameters
fA function representing the volume load.
Returns
A volume load skill.

◆ VolumeLoadPre()

template<class F >
Ikarus::VolumeLoadPre ( f) -> VolumeLoadPre< traits::FunctionTraits< F >::return_type::RowsAtCompileTime >
Here is the caller graph for this function:

Variable Documentation

◆ forces

constexpr VectorAffordances Ikarus::forces = VectorAffordances::forces
inlineconstexpr

◆ isSameResultType

template<template< typename, int, int > class RT1, template< typename, int, int > class RT2>
constexpr bool Ikarus::isSameResultType = std::is_same_v<Impl::DummyRT<RT1>, Impl::DummyRT<RT2>>
constexpr
Template Parameters
RT1first ResultType template
RT2second ResultType template

◆ mass

constexpr MatrixAffordances Ikarus::mass = MatrixAffordances::mass
inlineconstexpr

◆ potentialEnergy

constexpr ScalarAffordances Ikarus::potentialEnergy = ScalarAffordances::mechanicalPotentialEnergy
inlineconstexpr

◆ stiffness

constexpr MatrixAffordances Ikarus::stiffness = MatrixAffordances::stiffness
inlineconstexpr

◆ stiffnessdiffBucklingVector

constexpr MatrixAffordances Ikarus::stiffnessdiffBucklingVector = MatrixAffordances::stiffnessdiffBucklingVector
inlineconstexpr