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
 
namespace  Vtk
 

Classes

struct  AffordanceCollection
 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  AssemblerManipulator
 The AssemblerManipulator defines a decorator for the assemblers that helps to manipulate the assembled quantities. More...
 
class  AssemblerManipulator< A, ScalarAss >
 
class  AssemblerManipulator< A, ScalarAss, VectorAss >
 
class  AssemblerManipulator< A, ScalarAss, VectorAss, MatrixAss >
 
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...
 
struct  DeriveSizeType
 A helper struct to derive the SizeType of the underlying container. More...
 
struct  DeriveSizeType< std::vector< bool > >
 
struct  DeriveSizeType< T >
 
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...
 
struct  FERequirementsFactory
 
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...
 
class  MatrixAssembler
 The MatrixAssembler provides an interface for an assembler that assembles matrix quantities. More...
 
struct  MatrixManipulator
 Base class for a wrapper to a matrix assembler. 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  NewtonRaphsonConfig
 Config for the Newton-Raphson solver. More...
 
class  NewtonRaphsonWithSubsidiaryFunction
 Newton-Raphson solver with subsidiary function. More...
 
struct  NewtonRaphsonWithSubsidiaryFunctionConfig
 Settings for the Newton-Raphson solver with subsidiary function. More...
 
struct  NewtonRaphsonWithSubsidiaryFunctionSettings
 
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 function are assumed to be derivatives of each other w.r.t. the first parameter.
 
struct  NonLinearOperatorFactory
 
struct  NonlinearSolverFactory
 A factory class for creating nonlinear solvers. More...
 
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...
 
struct  NRSettings
 
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  ResultTypeBase
 Base class for element definitions that provides common functionality for ResultTypes. 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
 The ScalarAssembler provides an interface for an assembler that assembles scalar quantities. More...
 
class  ScalarFlatAssembler
 ScalarFlatAssembler assembles scalar quantities. More...
 
struct  ScalarManipulator
 Base class for a wrapper to a scalar assembler. 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...
 
struct  TRSettings
 
class  Truss
 Truss class represents a truss finite element. More...
 
struct  TrussPre
 A PreFE struct for truss elements. More...
 
class  TrustRegion
 Trust Region solver for non-linear optimization problems. More...
 
struct  TrustRegionConfig
 
struct  VanishingStrain
 VanishingStrain material model that enforces strain components to be zero. More...
 
struct  VanishingStress
 VanishingStress material model that enforces stress components to be zero. More...
 
class  VectorAssembler
 The VectorAssembler provides an interface for an assembler that assembles vector quantities. More...
 
class  VectorFlatAssembler
 VectorFlatAssembler assembles vector quantities using a flat basis Indexing strategy. More...
 
struct  VectorManipulator
 Base class for a wrapper to a vector assembler. 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
 see https://en.wikipedia.org/wiki/Lam%C3%A9_parameters 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 AffordanceCollection.
 
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  DBCOption {
  BEGIN , Raw , Reduced , Full ,
  END
}
 
enum class  ScalarAffordance {
  BEGIN , noAffordance , mechanicalPotentialEnergy , microMagneticPotentialEnergy ,
  END
}
 A strongly typed enum class representing the scalar affordance. More...
 
enum class  VectorAffordance {
  BEGIN , noAffordance , forces , microMagneticForces ,
  END
}
 A strongly typed enum class representing the vector affordance. More...
 
enum class  MatrixAffordance {
  BEGIN , noAffordance , stiffness , materialstiffness ,
  geometricstiffness , stiffnessdiffBucklingVector , microMagneticHessian , mass ,
  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 {
  BEGIN , 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 ,
  END
}
 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 A >
auto makeAssemblerManipulator (A &&a)
 Creates an AssemblerManipulator instance based on the type of the provided assembler. More...
 
constexpr std::string toString (DBCOption _e)
 
template<typename FEC , typename DV >
auto makeSparseFlatAssembler (FEC &&fes, const DV &dirichletValues)
 
template<typename FEC , typename DV >
auto makeDenseFlatAssembler (FEC &&fes, const DV &dirichletValues)
 
template<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<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 (ScalarAffordance _e)
 
constexpr std::string toString (VectorAffordance _e)
 
constexpr std::string toString (MatrixAffordance _e)
 
constexpr std::string toString (FEParameter _e)
 
constexpr std::string toString (FESolutions _e)
 
auto vectorAffordance (MatrixAffordance affordanceM)
 
auto scalarAffordance (MatrixAffordance affordanceM)
 
auto scalarAffordance (VectorAffordance affordanceV)
 
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...
 
template<typename MAT >
auto linearElastic (const MAT &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::MatrixIndexPair... stressIndexPair, typename MaterialImpl >
auto makeVanishingStrain (MaterialImpl mat)
 Factory function to create a VanishingStrain material with specified strain indices. More...
 
template<typename MaterialImpl >
auto planeStrain (const MaterialImpl &mat)
 Factory function to create a VanishingStrain material for plane strain conditions. More...
 
template<Impl::MatrixIndexPair... 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...
 
auto truss (const double E, const double A)
 A helper function to create a truss 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...
 
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)
 
ConvertLameConstants< YoungsModulusAndLamesFirstParameterconvertLameConstants (const YoungsModulusAndLamesFirstParameter &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 AS >
auto makeResultFunction (std::shared_ptr< AS > assembler, Dune::VTK::Precision prec=Dune::VTK::Precision::float64)
 Function to create a ResultFunction as a shared_ptr. More...
 
template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, typename AS >
auto makeResultVtkFunction (std::shared_ptr< AS > assembler)
 Function to create a ResultFunction as a gridfunction that can be used with dune-vtk. More...
 
constexpr std::string toString (SolverTypeTag _e)
 
template<typename NLO , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonConfig, std::remove_cvref_t<NRConfig>>
::value auto createNonlinearSolver (NRConfig &&config, NLO &&nonLinearOperator)
 Function to create a NewtonRaphson solver instance. 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>
 NewtonRaphson (const NLO &nonLinearOperator, LS &&linearSolver={}, UF &&updateFunction={}) -> NewtonRaphson< NLO, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >
 
template<typename NLO , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonWithSubsidiaryFunctionConfig, std::remove_cvref_t<NRConfig>>
::value auto createNonlinearSolver (NRConfig &&config, NLO &&nonLinearOperator)
 Function to create a NewtonRaphson with subsidiary function 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 , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
 NewtonRaphsonWithSubsidiaryFunction (const NLO &nonLinearOperator, LS &&linearSolver={}, UF &&updateFunction={}) -> NewtonRaphsonWithSubsidiaryFunction< NLO, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >
 
template<typename NLO , typename TRConfig >
requires traits::isSpecializationNonTypeAndTypes<TrustRegionConfig, std::remove_cvref_t<TRConfig>>
::value auto createNonlinearSolver (TRConfig &&config, NLO &&nonLinearOperator)
 Function to create a trust region non-linear solver. 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 NLO , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF2 = utils::UpdateDefault>
 TrustRegion (const NLO &nonLinearOperator, UF2 &&updateFunction={}) -> TrustRegion< NLO, preConditioner, std::remove_cvref_t< UF2 > >
 
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 sizeOfCondensedIndices>
auto reduceMatrix (const Eigen::MatrixBase< Derived > &E, const std::array< size_t, sizeOfCondensedIndices > &indices)
 
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 std::tuple< DerivativeArgs... > &derivativesFunctions, const std::tuple< ParameterArgs... > &parameter)
 Initializes the results for functions and parameters. More...
 
template<typename... DerivativeArgs, typename... ParameterArgs>
 NonLinearOperator (const Impl::Functions< DerivativeArgs &&... > &a, const Impl::Parameter< ParameterArgs... > &b) -> NonLinearOperator< Impl::Functions< DerivativeArgs... >, Impl::Parameter< ParameterArgs... > >
 
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, int maxSize>
requires ((size > 0 and size <= 3) or (maxSize > 0 and maxSize <= 3 and size == Eigen::Dynamic))
auto toVoigt (const Eigen::Matrix< ST, size, size, Options, maxSize, maxSize > &E, bool isStrain=true)
 Converts a square 2x2 or 3x3 matrix to a Voigt notation vector. More...
 
template<typename ST , int size, int Options, int maxSize>
requires ((size == 1 or size == 3 or size == 6) or ((maxSize == 1 or maxSize == 3 or maxSize == 6) and size == Eigen::Dynamic))
auto fromVoigt (const Eigen::Matrix< ST, size, 1, Options, maxSize, 1 > &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 VectorAffordance forces = VectorAffordance::forces
 
constexpr MatrixAffordance stiffness = MatrixAffordance::stiffness
 
constexpr MatrixAffordance stiffnessdiffBucklingVector = MatrixAffordance::stiffnessdiffBucklingVector
 
constexpr MatrixAffordance mass = MatrixAffordance::mass
 
constexpr ScalarAffordance potentialEnergy = ScalarAffordance::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

◆ DBCOption

enum class Ikarus::DBCOption
strong
Enumerator
BEGIN 
Raw 
Reduced 
Full 
END 

◆ MatrixAffordance

enum class Ikarus::MatrixAffordance
strong

MatrixAffordance

Enumerator
BEGIN 
noAffordance 
stiffness 
materialstiffness 
geometricstiffness 
stiffnessdiffBucklingVector 
microMagneticHessian 
mass 
END 

◆ 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 

◆ ScalarAffordance

enum class Ikarus::ScalarAffordance
strong

ScalarAffordance

Enumerator
BEGIN 
noAffordance 
mechanicalPotentialEnergy 
microMagneticPotentialEnergy 
END 

◆ 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
BEGIN 
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 
END 

◆ StopReason

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

◆ VectorAffordance

enum class Ikarus::VectorAffordance
strong

VectorAffordance

Enumerator
BEGIN 
noAffordance 
forces 
microMagneticForces 
END 

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/6]

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

◆ convertLameConstants() [2/6]

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

◆ convertLameConstants() [3/6]

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

◆ convertLameConstants() [4/6]

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

◆ convertLameConstants() [5/6]

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

◆ convertLameConstants() [6/6]

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

◆ createNonlinearSolver() [1/3]

template<typename NLO , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonConfig, std::remove_cvref_t<NRConfig>>
::value auto Ikarus::createNonlinearSolver ( NRConfig &&  config,
NLO &&  nonLinearOperator 
)
Template Parameters
NLOType of the nonlinear operator to solve.
NRConfigType of the nonlinear solver config.
Parameters
configConfig for the solver.
nonLinearOperatorNonlinear operator to solve.
Returns
Shared pointer to the NewtonRaphson solver instance.
Here is the caller graph for this function:

◆ createNonlinearSolver() [2/3]

template<typename NLO , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonWithSubsidiaryFunctionConfig, std::remove_cvref_t<NRConfig>>
::value auto Ikarus::createNonlinearSolver ( NRConfig &&  config,
NLO &&  nonLinearOperator 
)
Template Parameters
NLOType of the nonlinear operator to solve.
NRConfigType of the nonlinear solver config.
Parameters
configConfig for the solver.
nonLinearOperatorNonlinear operator to solve.
Returns
Shared pointer to the NewtonRaphson solver instance.

◆ createNonlinearSolver() [3/3]

template<typename NLO , typename TRConfig >
requires traits::isSpecializationNonTypeAndTypes<TrustRegionConfig, std::remove_cvref_t<TRConfig>>
::value auto Ikarus::createNonlinearSolver ( TRConfig &&  config,
NLO &&  nonLinearOperator 
)
Template Parameters
NLOType of the nonlinear operator to solve.
TRConfigType of the nonlinear solver config.
Parameters
configConfig for the solver.
nonLinearOperatorNonlinear operator to solve.
Returns
Shared pointer to the TrustRegion solver instance.

◆ 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.
Here is the caller graph for this function:

◆ 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 std::tuple< DerivativeArgs... > &  derivativesFunctions,
const std::tuple< 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()

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

◆ makeAssemblerManipulator()

template<typename A >
auto Ikarus::makeAssemblerManipulator ( A &&  a)

This function constructs an appropriate AssemblerManipulator for the given assembler object, utilizing different interface and implementation templates based on the assembler's capabilities.

Template Parameters
AType of the assembler.
Parameters
aAn assembler object to be wrapped by the AssemblerManipulator.
Returns
An instance of AssemblerManipulator wrapping the provided assembler.

◆ 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.

◆ makeDenseFlatAssembler()

template<typename FEC , typename DV >
auto Ikarus::makeDenseFlatAssembler ( FEC &&  fes,
const DV &  dirichletValues 
)

◆ makeFE()

template<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.
useEigenRefA boolean flag indicating whether to use Eigen references.
Parameters
basisHandlerThe basis handler.
skSkill arguments.
Returns
An FEFactory object.

◆ makeFEWithUnTouchedBasis()

template<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.
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 AS >
auto Ikarus::makeResultFunction ( std::shared_ptr< AS >  assembler,
Dune::VTK::Precision  prec = Dune::VTK::Precision::float64 
)

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

Parameters
assemblershared pointer to the underlying assembler (provides the finite elements and the requested results)
Template Parameters
AStype of the assembler
Parameters
prec(optional) specify the used precision
Template Parameters
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 AS >
auto Ikarus::makeResultVtkFunction ( std::shared_ptr< AS >  assembler)

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
assemblershared pointer to the underlying assembler (provides the finite elements and the requested results)
Template Parameters
AStype of the assembler
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

◆ makeSparseFlatAssembler()

template<typename FEC , typename DV >
auto Ikarus::makeSparseFlatAssembler ( FEC &&  fes,
const DV &  dirichletValues 
)

◆ 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.

◆ makeVanishingStrain()

template<Impl::MatrixIndexPair... stressIndexPair, typename MaterialImpl >
auto Ikarus::makeVanishingStrain ( MaterialImpl  mat)
Template Parameters
matrixIndexPairThe array of MatrixIndexPair representing fixed strain 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:

◆ makeVanishingStress()

template<Impl::MatrixIndexPair... stressIndexPair, typename MaterialImpl >
auto Ikarus::makeVanishingStress ( MaterialImpl  mat,
typename MaterialImpl::ScalarType  p_tol = 1e-12 
)
Template Parameters
matrixIndexPairThe array of MatrixIndexPair 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.

◆ NewtonRaphson()

template<typename NLO , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
Ikarus::NewtonRaphson ( const NLO &  nonLinearOperator,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
) -> NewtonRaphson< NLO, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >

◆ NewtonRaphsonWithSubsidiaryFunction()

template<typename NLO , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
Ikarus::NewtonRaphsonWithSubsidiaryFunction ( const NLO &  nonLinearOperator,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
) -> NewtonRaphsonWithSubsidiaryFunction< NLO, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >

◆ 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.

◆ NonLinearOperator()

template<typename... DerivativeArgs, typename... ParameterArgs>
Ikarus::NonLinearOperator ( const Impl::Functions< DerivativeArgs &&... > &  a,
const Impl::Parameter< ParameterArgs... > &  b 
) -> NonLinearOperator< Impl::Functions< DerivativeArgs... >, Impl::Parameter< ParameterArgs... > >
Here is the caller graph for this function:

◆ parameter()

template<typename... Args>
auto Ikarus::parameter ( Args &&...  args)
Template Parameters
ArgsThe argument types.
Parameters
argsThe tuple of arguments.
Returns
auto The Parameter object.
Here is the caller graph for this function:

◆ planeStrain()

template<typename MaterialImpl >
auto Ikarus::planeStrain ( const MaterialImpl &  mat)

The output is as follows for the stress and material tangent (in Voigt notation):

\[ \BS(\BE) \rightarrow \begin{bmatrix} S_{11} \\ S_{22} \\ S_{12} \end{bmatrix}, \quad \BBC(\BE) \rightarrow \begin{bmatrix} C_{11} & C_{12} & C_{13} \\ C_{21} & C_{22} & C_{23} \\ C_{31} & C_{32} & C_{33} \end{bmatrix} \]

Template Parameters
MaterialImplThe underlying material model.
Parameters
matThe underlying material model.
Returns
VanishingStrain The created VanishingStrain material for plane strain case.

◆ 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.

◆ reduceMatrix()

template<typename Derived , size_t sizeOfCondensedIndices>
auto Ikarus::reduceMatrix ( const Eigen::MatrixBase< Derived > &  E,
const std::array< size_t, sizeOfCondensedIndices > &  indices 
)
Here is the caller graph for this function:

◆ scalarAffordance() [1/2]

auto Ikarus::scalarAffordance ( MatrixAffordance  affordanceM)
Here is the caller graph for this function:

◆ scalarAffordance() [2/2]

auto Ikarus::scalarAffordance ( VectorAffordance  affordanceV)

◆ 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/11]

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

◆ toString() [2/11]

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

◆ toString() [3/11]

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

◆ toString() [4/11]

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

◆ toString() [5/11]

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

◆ toString() [6/11]

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

◆ toString() [7/11]

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

◆ toString() [8/11]

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

◆ toString() [9/11]

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

◆ toString() [10/11]

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

◆ toString() [11/11]

constexpr std::string Ikarus::toString ( VectorAffordance  _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:

◆ truss()

auto Ikarus::truss ( const double  E,
const double  A 
)
inline
Parameters
EYoung's modulus of the truss member
ACross section area of the truss member
Returns
A truss pre finite element.

◆ TrustRegion()

template<typename NLO , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF2 = utils::UpdateDefault>
Ikarus::TrustRegion ( const NLO &  nonLinearOperator,
UF2 &&  updateFunction = {} 
) -> TrustRegion< NLO, preConditioner, std::remove_cvref_t< UF2 > >

◆ vectorAffordance()

auto Ikarus::vectorAffordance ( MatrixAffordance  affordanceM)
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 VectorAffordance Ikarus::forces = VectorAffordance::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 MatrixAffordance Ikarus::mass = MatrixAffordance::mass
inlineconstexpr

◆ potentialEnergy

constexpr ScalarAffordance Ikarus::potentialEnergy = ScalarAffordance::mechanicalPotentialEnergy
inlineconstexpr

◆ stiffness

constexpr MatrixAffordance Ikarus::stiffness = MatrixAffordance::stiffness
inlineconstexpr

◆ stiffnessdiffBucklingVector

constexpr MatrixAffordance Ikarus::stiffnessdiffBucklingVector = MatrixAffordance::stiffnessdiffBucklingVector
inlineconstexpr