version 0.4.1
Ikarus Namespace Reference

Namespaces

namespace  AdaptiveStepSizing
 
namespace  AffordanceCollections
 
namespace  Concepts
 
namespace  EAS
 
namespace  Experimental
 
namespace  FEHelper
 
namespace  Materials
 
namespace  plot
 
namespace  PS
 
namespace  Python
 
namespace  ResultEvaluators
 
namespace  ResultTypes
 
namespace  traits
 
namespace  util
 
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...
 
struct  ArrudaBoyceMatParameters
 < Structure representing material parameters for the Arrudy-Boyce material model. 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  AssumedStress
 Wrapper class for using Assumed Stress with displacement based elements. More...
 
struct  AssumedStressPre
 A PreFE struct for Assumed Stress. 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  Broadcaster
 
class  Broadcaster< void(Args...)>
 Implements a Broadcaster for a specific function signature with return type void. More...
 
class  Broadcasters
 Fuses together multiple function signatures that can be emitted by one broadcaster. A broadcaster has to be a derived class of this class. 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...
 
struct  ControlRoutineBase
 Base for all control routines. Defines the message interface that can be broadcasted to listeners. More...
 
struct  ControlRoutineFactory
 A factory class for creating control routines. More...
 
struct  ControlRoutineState
 State for control routines. 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  DerivativeTraitsFromCallables< Impl::Functions< DerivativeArgs... >, Arg >
 
struct  DeriveSizeType
 A helper struct to derive the SizeType of the underlying container. More...
 
struct  DeriveSizeType< std::vector< bool > >
 
struct  DeriveSizeType< T >
 
class  DifferentiableFunction< Range(D), DerivativeTraits, F, FF... >
 DifferentiableFunction is a class taking several callables. The function are assumed to be derivatives of each other w.r.t. the argument. More...
 
struct  DifferentiableFunctionFactory
 
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  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 > >
 
struct  GeneralizedSymEigenSolver
 
struct  GeneralizedSymEigenSolver< EigenValueSolverType::Eigen, MT >
 This class implements a wrapper to the Eigen generalized eigen solver for square real symmetric matrices, i.e. to solve \( Ax = \lambda Bx\), where A is symmetric and B is positive definite. A and B have to be dense matrices. More...
 
struct  GeneralizedSymEigenSolver< EigenValueSolverType::Spectra, MT >
 This class implements a wrapper to the Spectra generalized eigen solver for square real symmetric matrices, i.e. to solve \( Ax = \lambda Bx\), where A is symmetric and B is positive definite. It calculates the full spectrum of eigenvalues. More...
 
class  GenericListener
 GenericListener class for observing specific messages. This class template implements an listener for a specific message type. More...
 
struct  GentMatParameters
 < Structure representing material parameters for the Gent material model. More...
 
class  IkarusInstance
 Singleton class representing an instance of the Ikarus framework. 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  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...
 
struct  Listener
 
class  LoadControl
 The LoadControl control routine increases the parameter of the fe requirements given in run function and solves the corresponding differentiable function f for its root and calls a nonlinear solver. controlroutines This class represents the LoadControl control routine. It increments the parameter of the fe requirement and utilizes a nonlinear solver, such as Newton's method, to solve the resulting system at each step. More...
 
struct  LoadControlConfig
 Config for the Load-Control control routine. More...
 
struct  LoadControlSubsidiaryFunction
 Structure representing the subsidiary function for the load control method. 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  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...
 
struct  NonlinearSolverBase
 Base for all nonlinear solvers. Defines the message interface that can be broadcasted to listeners. More...
 
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  NonlinearSolverState
 State for nonlinear solvers. More...
 
struct  NRSettings
 
struct  PartialGeneralizedSymEigenSolver
 This class implements a wrapper to the Spectra generalized eigen solver for square real symmetric matrices, i.e. to solve \( Ax = \lambda Bx\), where A is symmetric and B is positive definite. It calculates a selection of eigenvalues. At most \( n - 1 \), where \( n \) is the number of rows/cols of the matrices. More...
 
class  PathFollowing
 The PathFollowing control routine for path-following analysis. More...
 
struct  PathFollowingConfig
 Config for the Path-Following control routine. More...
 
struct  PathFollowingState
 State for path following control routine. 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. Works both out-of-the-box with Dune::VTK and Dune::Vtk. 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  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
 
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.
 

Typedefs

template<typename F >
using ControlRoutineStateType = Impl::ControlRoutineStateFactory< F >::type
 Helper to deduce the correct types for ControlRoutineState. More...
 
template<typename F >
using PathFollowingStateType = Impl::PathFollowingStateFactory< F >::type
 Helper to deduce the correct types for ControlRoutineState. More...
 
using LinearSolver = LinearSolverTemplate< double >
 
template<typename F >
using NonlinearSolverStateType = Impl::NonlinearSolverStateFactory< F >::type
 Helper to deduce the correct types for NonlinearSolverState. More...
 
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::displacementGradient , StrainTags::deformationGradient ,
  StrainTags::rightCauchyGreenTensor , StrainTags::greenLagrangian , 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  PrincipalStretchTags { BEGIN , total , deviatoric , END }
 A strongly typed enum class representing the type of the the principal strechts used in hyperelastic materials. More...
 
enum class  EigenValueSolverType { BEGIN , Spectra , Eigen , END }
 A strongly typed enum class representing the type of solver to use for the eigenvalue problem. 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::CORRECTION_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<typename NLS >
auto createControlRoutine (const LoadControlConfig &config, NLS &&nonlinearSolver)
 Function to create a load control instance. More...
 
template<typename NLS , typename PFConfig >
requires traits::isSpecialization<PathFollowingConfig, std::remove_cvref_t<PFConfig>>
::value auto createControlRoutine (PFConfig &&config, NLS &&nonlinearSolver)
 Function to create a path following instance. More...
 
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...
 
template<typename ASType = PS::LinearStress>
auto assumedStress (int numberOfInternalVariables)
 A helper function to create an assumed stress pre finite element. More...
 
template<typename ES = EAS::LinearStrain>
auto eas (int numberOfInternalVariables=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<Concepts::GeometricallyLinearMaterial 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<StrainTags tag, typename Derived >
Derived createGreenLagrangianStrains (const Eigen::MatrixBase< Derived > &eMB)
 Create Green-Lagrangian strain based on the input. More...
 
template<StrainTags tag, typename Derived >
Derived createDeformationGradient (const Eigen::MatrixBase< Derived > &eMB)
 Create the deformation gradient based on the input. More...
 
template<StrainTags tag, typename Derived >
Derived createRightCauchyGreen (const Eigen::MatrixBase< Derived > &eMB)
 Create right Cauchy-Green tensor based on the input. More...
 
template<StrainTags from, StrainTags to, typename Derived >
auto transformStrain (const Eigen::MatrixBase< Derived > &eRaw)
 Transform strain from one type to another. More...
 
template<StressTags tag, typename Derived >
Derived createPK2Stress (const Eigen::MatrixBase< Derived > &sMB, const Eigen::MatrixBase< Derived > &F)
 Create PK2 stress matrix based on the input. More...
 
template<StressTags tag, typename Derived >
Derived createPK1Stress (const Eigen::MatrixBase< Derived > &sMB, const Eigen::MatrixBase< Derived > &F)
 Create PK1 stress matrix based on the input. More...
 
template<StressTags tag, typename Derived >
Derived createKirchhoffStress (const Eigen::MatrixBase< Derived > &sMB, const Eigen::MatrixBase< Derived > &F)
 Create Kirchhoff stress matrix based on the input. More...
 
template<StressTags tag, typename Derived >
Derived createCauchyStress (const Eigen::MatrixBase< Derived > &sMB, const Eigen::MatrixBase< Derived > &F)
 Create Cauchy stress matrix based on the input. More...
 
template<StressTags from, StressTags to, typename DerivedS , typename DerivedF >
auto transformStress (const Eigen::MatrixBase< DerivedS > &sRaw, const Eigen::MatrixBase< DerivedF > &F)
 Transform stress measures from one type to another. More...
 
constexpr std::string toString (StrainTags _e)
 
constexpr std::string toString (StressTags _e)
 
constexpr std::string toString (TangentModuliTags _e)
 
constexpr std::string toString (PrincipalStretchTags _e)
 
template<Concepts::Material 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, Concepts::FlatAssembler AS>
auto makeResultFunction (std::shared_ptr< AS > assembler, Dune::VTK::Precision prec=Dune::VTK::Precision::float64, UserFunction &&userFunction={})
 Function to create a ResultFunction as a shared_ptr. More...
 
template<template< typename, int, int > class RT, typename UserFunction , Concepts::FlatAssembler AS>
auto makeResultFunction (std::shared_ptr< AS > assembler, UserFunction &&userFunction)
 Function to create a ResultFunction as a shared_ptr. More...
 
template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, Concepts::FlatAssembler AS>
auto makeResultVtkFunction (std::shared_ptr< AS > assembler, UserFunction &&userFunction={})
 Function to create a ResultFunction as a gridfunction that can be used with dune-vtk. More...
 
constexpr std::string toString (EigenValueSolverType _e)
 
template<EigenValueSolverType tag, typename MATA , typename MATB >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> && std::same_as<std::remove_cvref_t<MATA>, std::remove_cvref_t<MATB>> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<std::remove_cvref_t<MATA>>))
auto makeGeneralizedSymEigenSolver (MATA &&A, MATB &&B)
 Factory function to create a GeneralizedSymEigenSolver for a specific backend (Eigen or Spectra) with provided matrices for both quantities. More...
 
template<EigenValueSolverType tag, Concepts::FlatAssembler AssemblerA, Concepts::FlatAssembler AssemblerB>
requires (std::same_as<typename AssemblerA::MatrixType, typename AssemblerB::MatrixType> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<typename AssemblerA::MatrixType>))
auto makeGeneralizedSymEigenSolver (const std::shared_ptr< AssemblerA > assemblerA, const std::shared_ptr< AssemblerB > assemblerB)
 Factory function to create a GeneralizedSymEigenSolver for a specific backend (Eigen or Spectra) with provided assemblers for both quantities. More...
 
template<EigenValueSolverType tag, typename MATA >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<std::remove_cvref_t<MATA>>))
auto makeIdentitySymEigenSolver (MATA &&A)
 Factory function to create a GeneralizedSymEigenSolver with a provided matrix and an identity matrix. More...
 
template<EigenValueSolverType tag, Concepts::FlatAssembler AssemblerA>
requires (Concepts::DenseOrSparseEigenMatrix<typename AssemblerA::MatrixType> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<typename AssemblerA::MatrixType>))
auto makeIdentitySymEigenSolver (const std::shared_ptr< AssemblerA > &assemblerA)
 Factory function to create a GeneralizedSymEigenSolver with a provided matrix from an assembler and an identity matrix. More...
 
template<Concepts::FlatAssembler AssemblerA, Concepts::FlatAssembler AssemblerB>
requires (std::same_as<typename AssemblerA::MatrixType, typename AssemblerB::MatrixType>)
auto makePartialGeneralizedSymEigenSolver (std::shared_ptr< AssemblerA > assemblerA, std::shared_ptr< AssemblerB > assemblerB, Eigen::Index nev)
 Factory function to create a PartialGeneralizedSymEigenSolver with provided assemblers for both quantities. More...
 
template<typename MATA , typename MATB >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> && std::same_as<std::remove_cvref_t<MATA>, std::remove_cvref_t<MATB>>)
auto makePartialGeneralizedSymEigenSolver (MATA &&A, MATB &&B, Eigen::Index nev)
 Factory function to create a PartialGeneralizedSymEigenSolver with provided matrices for both quantities. More...
 
template<typename MATA >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>>)
auto makePartialIdentitySymEigenSolver (MATA &&A, Eigen::Index nev)
 Factory function to create a PartialGeneralizedSymEigenSolver with a provided matrix and an identity matrix. More...
 
template<Concepts::FlatAssembler AssemblerA>
auto makePartialIdentitySymEigenSolver (const std::shared_ptr< AssemblerA > &assemblerA, Eigen::Index nev)
 Factory function to create a PartialGeneralizedSymEigenSolver with a provided matrix from an assembler and an identity matrix. More...
 
constexpr std::string toString (SolverTypeTag _e)
 
template<typename F , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonConfig, std::remove_cvref_t<NRConfig>>
::value auto createNonlinearSolver (NRConfig &&config, F &&f)
 Function to create a NewtonRaphson solver instance. More...
 
template<typename F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto makeNewtonRaphson (const F &f, LS &&linearSolver={}, UF &&updateFunction={})
 Function to create a NewtonRaphson solver instance. More...
 
template<typename F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
 NewtonRaphson (const F &f, LS &&linearSolver={}, UF &&updateFunction={}) -> NewtonRaphson< F, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >
 
template<typename F , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonWithSubsidiaryFunctionConfig, std::remove_cvref_t<NRConfig>>
::value auto createNonlinearSolver (NRConfig &&config, F &&f)
 Function to create a NewtonRaphson with subsidiary function solver instance. More...
 
template<typename F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto makeNewtonRaphsonWithSubsidiaryFunction (const F &f, LS &&linearSolver={}, UF &&updateFunction={})
 Function to create a NewtonRaphson with subsidiary function solver instance. More...
 
template<typename F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
 NewtonRaphsonWithSubsidiaryFunction (const F &f, LS &&linearSolver={}, UF &&updateFunction={}) -> NewtonRaphsonWithSubsidiaryFunction< F, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >
 
template<typename F , typename TRConfig >
requires traits::isSpecializationNonTypeAndTypes<TrustRegionConfig, std::remove_cvref_t<TRConfig>>
::value auto createNonlinearSolver (TRConfig &&config, F &&f)
 Function to create a trust region non-linear solver. More...
 
template<typename F , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF = utils::UpdateDefault>
auto makeTrustRegion (const F &f, UF &&updateFunction={})
 Creates an instance of the TrustRegion solver. More...
 
template<typename F , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF2 = utils::UpdateDefault>
 TrustRegion (const F &f, UF2 &&updateFunction={}) -> TrustRegion< F, 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...
 
constexpr std::string toString (ControlMessages _e)
 
constexpr std::string toString (NonLinearSolverMessages _e)
 
template<typename Derived >
auto transpose (const Eigen::EigenBase< Derived > &A)
 
template<typename... DerivativeArgs, typename Arg >
 DerivativeTraitsFromCallables (const Impl::Functions< DerivativeArgs... > &derivativesFunctions, Arg &&parameterI) -> DerivativeTraitsFromCallables< Impl::Functions< DerivativeArgs... >, Arg >
 
template<typename... Args>
auto functions (Args &&... args)
 Creates a Functions object. More...
 
template<typename... F, typename Arg >
auto makeDifferentiableFunction (const Impl::Functions< F... > &derivativesFunctions, const Arg &parameter)
 Factory method for DifferentiableFunction It is a function taking several callables and the argument of these functions to derive the correct signatures for the functions (which could be templated lambdas) The function are assumed to be derivatives of each other w.r.t. the parameter. More...
 
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<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 ST , int size>
auto dyadic (const Eigen::Vector< ST, size > &a, const Eigen::Vector< ST, size > &b)
 Computes the dyadic product of two first order Tensors (here: Eigen::Vector). 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...
 
template<int dim = 3>
requires (dim == 2 or dim == 3)
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...
 
template<int dim = 3>
requires (dim == 2 or dim == 3)
constexpr std::array< size_t, 2 > fromVoigt (size_t i)
 Converts a Voigt notation index to matrix indices. More...
 
template<typename ScalarType , int size>
auto fromVoigt (const Eigen::Matrix< ScalarType, size, size > &CVoigt)
 Converts a matrix in Voigt notation to a Fourth-order tensor. More...
 
template<typename GEO >
requires (GEO::mydimension == 2)
Eigen::Matrix3d transformationMatrix (const GEO &geometry, const Dune::FieldVector< double, 2 > &pos)
 Calculates the 2D transformation matrix. More...
 
template<typename GEO >
requires (GEO::mydimension == 3)
Eigen::Matrix< double, 6, 6 > transformationMatrix (const GEO &geometry, const Dune::FieldVector< double, 3 > &pos)
 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>
static 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

◆ ControlRoutineStateType

template<typename F >
using Ikarus::ControlRoutineStateType = typedef Impl::ControlRoutineStateFactory<F>::type
Template Parameters
FType of the differentiable function to solve.

◆ FlatPreBasis_t

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

◆ LinearSolver

using Ikarus::LinearSolver = typedef LinearSolverTemplate<double>

◆ NonlinearSolverStateType

template<typename F >
using Ikarus::NonlinearSolverStateType = typedef Impl::NonlinearSolverStateFactory<F>::type
Template Parameters
FType of the differentiable function to solve.

◆ PathFollowingStateType

template<typename F >
using Ikarus::PathFollowingStateType = typedef Impl::PathFollowingStateFactory<F>::type
Template Parameters
FType of the differentiable function to solve.

Enumeration Type Documentation

◆ DBCOption

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

◆ EigenValueSolverType

enum class Ikarus::EigenValueSolverType
strong
Enumerator
BEGIN 
Spectra 
Eigen 
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 

◆ PrincipalStretchTags

enum class Ikarus::PrincipalStretchTags
strong
Enumerator
BEGIN 
total 
deviatoric 
END 

◆ 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

◆ assumedStress()

template<typename ASType = PS::LinearStress>
auto Ikarus::assumedStress ( int  numberOfInternalVariables)
Parameters
numberOfInternalVariablesNumber of AssumedStress parameters
Returns
An assumed stress pre finite element.

◆ 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

◆ createCauchyStress()

template<StressTags tag, typename Derived >
Derived Ikarus::createCauchyStress ( const Eigen::MatrixBase< Derived > &  sMB,
const Eigen::MatrixBase< Derived > &  F 
)

This function creates Cauchy stress matrix based on the input stress matrix and deformation gradient. What to do is decided by the provided stress tag

Template Parameters
tagTag of the input stress measure.
DerivedType of the Eigen matrices.
Parameters
sMBInput stress matrix.
FThe deformation gradient.
Returns
The Cauchy stress matrix.

◆ createControlRoutine() [1/2]

template<typename NLS >
auto Ikarus::createControlRoutine ( const LoadControlConfig config,
NLS &&  nonlinearSolver 
)
Template Parameters
NLSType of the nonlinear solver
Parameters
configthe provided config for the load control
nonlinearSolverthe provided nonlinearsolver
Returns
LoadControl the newly created load control instance
Here is the caller graph for this function:

◆ createControlRoutine() [2/2]

template<typename NLS , typename PFConfig >
requires traits::isSpecialization<PathFollowingConfig, std::remove_cvref_t<PFConfig>>
::value auto Ikarus::createControlRoutine ( PFConfig &&  config,
NLS &&  nonlinearSolver 
)
Template Parameters
NLSType of the nonlinear solver
PFConfigthe provided config for the path following
Parameters
configthe provided config for the path following
nonlinearSolverthe provided nonlinearsolver
Returns
PathFollowing

◆ createDeformationGradient()

template<StrainTags tag, typename Derived >
Derived Ikarus::createDeformationGradient ( const Eigen::MatrixBase< Derived > &  eMB)

This function creates deformation gradient based on the input strain matrix. What to do is decided by the provided strain tag

Template Parameters
tagTag of the input strain measure.
DerivedType of the Eigen matrix.
Parameters
eMBEigen matrix representing the input strain.
Returns
The deformation gradient matrix.

◆ createGreenLagrangianStrains()

template<StrainTags tag, typename Derived >
Derived Ikarus::createGreenLagrangianStrains ( const Eigen::MatrixBase< Derived > &  eMB)

This function creates Green-Lagrangian strains based on the input strain matrix. What to do is decided by the provided strain tag

Template Parameters
tagTag of the input strain measure.
DerivedType of the Eigen matrix.
Parameters
eMBEigen matrix representing the input strain.
Returns
The Green-Lagrangian strains matrix.

◆ createKirchhoffStress()

template<StressTags tag, typename Derived >
Derived Ikarus::createKirchhoffStress ( const Eigen::MatrixBase< Derived > &  sMB,
const Eigen::MatrixBase< Derived > &  F 
)

This function creates Kirchhoff stress matrix based on the input stress matrix and deformation gradient. What to do is decided by the provided stress tag

Template Parameters
tagTag of the input stress measure.
DerivedType of the Eigen matrices.
Parameters
sMBInput stress matrix.
FThe deformation gradient.
Returns
The Kirchhoff stress matrix.

◆ createNonlinearSolver() [1/3]

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

◆ createNonlinearSolver() [2/3]

template<typename F , typename NRConfig >
requires traits::isSpecialization<NewtonRaphsonWithSubsidiaryFunctionConfig, std::remove_cvref_t<NRConfig>>
::value auto Ikarus::createNonlinearSolver ( NRConfig &&  config,
F &&  f 
)
Template Parameters
FType of the differentiable function to solve.
NRConfigType of the nonlinear solver config.
Parameters
configConfig for the solver.
fFunction to solve.
Returns
Shared pointer to the NewtonRaphson solver instance.

◆ createNonlinearSolver() [3/3]

template<typename F , typename TRConfig >
requires traits::isSpecializationNonTypeAndTypes<TrustRegionConfig, std::remove_cvref_t<TRConfig>>
::value auto Ikarus::createNonlinearSolver ( TRConfig &&  config,
F &&  f 
)
Template Parameters
FType of the differentiable function to solve.
TRConfigType of the nonlinear solver config.
Parameters
configConfig for the solver.
fFunction to solve.
Returns
Shared pointer to the TrustRegion solver instance.

◆ createPK1Stress()

template<StressTags tag, typename Derived >
Derived Ikarus::createPK1Stress ( const Eigen::MatrixBase< Derived > &  sMB,
const Eigen::MatrixBase< Derived > &  F 
)

This function creates PK1 stress matrix based on the input stress matrix and deformation gradient. What to do is decided by the provided stress tag

Template Parameters
tagTag of the input stress measure.
DerivedType of the Eigen matrices.
Parameters
sMBInput stress matrix.
FThe deformation gradient.
Returns
The PK1 stress matrix.

◆ createPK2Stress()

template<StressTags tag, typename Derived >
Derived Ikarus::createPK2Stress ( const Eigen::MatrixBase< Derived > &  sMB,
const Eigen::MatrixBase< Derived > &  F 
)

This function creates PK2 stress matrix based on the input stress matrix and deformation gradient. What to do is decided by the provided stress tag

Template Parameters
tagTag of the input stress measure.
DerivedType of the Eigen matrices.
Parameters
sMBInput stress matrix.
FThe deformation gradient.
Returns
The PK2 stress matrix.

◆ createRightCauchyGreen()

template<StrainTags tag, typename Derived >
Derived Ikarus::createRightCauchyGreen ( const Eigen::MatrixBase< Derived > &  eMB)

This function creates Right Cauchy-Green tensor based on the input strain matrix. What to do is decided by the provided strain tag

Template Parameters
tagTag of the input strain measure.
DerivedType of the Eigen matrix.
Parameters
eMBEigen matrix representing the input strain.
Returns
The Right Cauchy-Green tensor matrix.

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

◆ DerivativeTraitsFromCallables()

template<typename... DerivativeArgs, typename Arg >
Ikarus::DerivativeTraitsFromCallables ( const Impl::Functions< DerivativeArgs... > &  derivativesFunctions,
Arg &&  parameterI 
) -> DerivativeTraitsFromCallables< Impl::Functions< DerivativeArgs... >, Arg >
Here is the caller graph for this function:

◆ eas()

template<typename ES = EAS::LinearStrain>
auto Ikarus::eas ( int  numberOfInternalVariables = 0)
Template Parameters
ESThe strain tag that is enhanced.
Parameters
numberOfInternalVariablesNumber 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:

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

◆ 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<Concepts::GeometricallyLinearMaterial 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 
)

◆ makeDifferentiableFunction()

template<typename... F, typename Arg >
auto Ikarus::makeDifferentiableFunction ( const Impl::Functions< F... > &  derivativesFunctions,
const Arg &  parameter 
)
Template Parameters
FThe types of functions.
ArgThe types of the argument.
Here is the caller graph for this function:

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

◆ makeGeneralizedSymEigenSolver() [1/2]

template<EigenValueSolverType tag, Concepts::FlatAssembler AssemblerA, Concepts::FlatAssembler AssemblerB>
requires (std::same_as<typename AssemblerA::MatrixType, typename AssemblerB::MatrixType> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<typename AssemblerA::MatrixType>))
auto Ikarus::makeGeneralizedSymEigenSolver ( const std::shared_ptr< AssemblerA >  assemblerA,
const std::shared_ptr< AssemblerB >  assemblerB 
)
Template Parameters
tagEigenValueSolverType indicating the solver backend.
AssemblerAthe type of the assembler for matrix A.
AssemblerBthe type of the assembler for matrix B.
Parameters
assemblerAassembler for matrix A.
assemblerBassembler for matrix B.
Returns
GeneralizedSymEigenSolver The created solver

◆ makeGeneralizedSymEigenSolver() [2/2]

template<EigenValueSolverType tag, typename MATA , typename MATB >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> && std::same_as<std::remove_cvref_t<MATA>, std::remove_cvref_t<MATB>> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<std::remove_cvref_t<MATA>>))
auto Ikarus::makeGeneralizedSymEigenSolver ( MATA &&  A,
MATB &&  B 
)
Template Parameters
tagEigenValueSolverType indicating the solver backend.
MATAthe type of matrix A
MATBthe type of matrix B
Returns
GeneralizedSymEigenSolver The created solver
Here is the caller graph for this function:

◆ makeIdentitySymEigenSolver() [1/2]

template<EigenValueSolverType tag, Concepts::FlatAssembler AssemblerA>
requires (Concepts::DenseOrSparseEigenMatrix<typename AssemblerA::MatrixType> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<typename AssemblerA::MatrixType>))
auto Ikarus::makeIdentitySymEigenSolver ( const std::shared_ptr< AssemblerA > &  assemblerA)
Template Parameters
AssemblerAthe type of the assembler for matrix A.
Parameters
assemblerAassembler for matrix A.

◆ makeIdentitySymEigenSolver() [2/2]

template<EigenValueSolverType tag, typename MATA >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> && not(tag == EigenValueSolverType::Eigen && Concepts::SparseEigenMatrix<std::remove_cvref_t<MATA>>))
auto Ikarus::makeIdentitySymEigenSolver ( MATA &&  A)
Remarks
This has some overhead compared to just using the non-generalized versions of the solvers directly, due to the decomposition of the second matrix.
Template Parameters
MATAthe deduced type of the provided matrix A
Parameters
Athe provided matrix A

◆ makeNewtonRaphson()

template<typename F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto Ikarus::makeNewtonRaphson ( const F &  f,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
)
Template Parameters
FType of the function to solve.
LSType of the linear solver used internally (default is SolverDefault).
UFType of the update function (default is UpdateDefault).
Parameters
fFunction 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 F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
auto Ikarus::makeNewtonRaphsonWithSubsidiaryFunction ( const F &  f,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
)
Template Parameters
FType of the function to solve.
LSType of the linear solver used internally (default is SolverDefault).
UFType of the update function (default is UpdateDefault).
Parameters
fFunction to solve.
linearSolverLinear solver used internally (default is SolverDefault).
updateFunctionUpdate function (default is UpdateDefault).
Returns
Shared pointer to the NewtonRaphson solver instance.

◆ makePartialGeneralizedSymEigenSolver() [1/2]

template<typename MATA , typename MATB >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>> && std::same_as<std::remove_cvref_t<MATA>, std::remove_cvref_t<MATB>>)
auto Ikarus::makePartialGeneralizedSymEigenSolver ( MATA &&  A,
MATB &&  B,
Eigen::Index  nev 
)
Template Parameters
MATAthe type of matrix A
MATBthe type of matrix B
Returns
PartialGeneralizedSymEigenSolver The created solver

◆ makePartialGeneralizedSymEigenSolver() [2/2]

template<Concepts::FlatAssembler AssemblerA, Concepts::FlatAssembler AssemblerB>
requires (std::same_as<typename AssemblerA::MatrixType, typename AssemblerB::MatrixType>)
auto Ikarus::makePartialGeneralizedSymEigenSolver ( std::shared_ptr< AssemblerA >  assemblerA,
std::shared_ptr< AssemblerB >  assemblerB,
Eigen::Index  nev 
)
Template Parameters
AssemblerAthe type of the assembler for matrix A.
AssemblerBthe type of the assembler for matrix B.
Parameters
assemblerAassembler for matrix A.
assemblerBassembler for matrix B.
Returns
PartialGeneralizedSymEigenSolver The created solver
Here is the caller graph for this function:

◆ makePartialIdentitySymEigenSolver() [1/2]

template<Concepts::FlatAssembler AssemblerA>
auto Ikarus::makePartialIdentitySymEigenSolver ( const std::shared_ptr< AssemblerA > &  assemblerA,
Eigen::Index  nev 
)
Template Parameters
AssemblerAthe type of the assembler for matrix A.
Parameters
assemblerAassembler for matrix A.

◆ makePartialIdentitySymEigenSolver() [2/2]

template<typename MATA >
requires (Concepts::DenseOrSparseEigenMatrix<std::remove_cvref_t<MATA>>)
auto Ikarus::makePartialIdentitySymEigenSolver ( MATA &&  A,
Eigen::Index  nev 
)
Template Parameters
MATAthe deduced type of the provided matrix A
Parameters
Athe provided matrix A
Returns
PartialGeneralizedSymEigenSolver The created solver
Here is the caller graph for this function:

◆ makeResultFunction() [1/2]

template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, Concepts::FlatAssembler AS>
auto Ikarus::makeResultFunction ( std::shared_ptr< AS >  assembler,
Dune::VTK::Precision  prec = Dune::VTK::Precision::float64,
UserFunction &&  userFunction = {} 
)

Constructs a ResultFunction object with given assembler 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
RTrequested result type
UserFunctionType of the user-defined function for custom result evaluation (default is DefaultUserFunction)
Parameters
assemblershared pointer to the underlying assembler (provides the finite elements and the requested results)
prec(optional) specify the used precision
userFunction(optional) the user function (default is DefaultUserFunction)

◆ makeResultFunction() [2/2]

template<template< typename, int, int > class RT, typename UserFunction , Concepts::FlatAssembler AS>
auto Ikarus::makeResultFunction ( std::shared_ptr< AS >  assembler,
UserFunction &&  userFunction 
)

Constructs a ResultFunction object with given assembler as shared_ptr to be used with the native Dune VTKWriter

Template Parameters
AStype of the assembler
RTrequested result type
UserFunctionType of the user-defined function for custom result evaluation (default is DefaultUserFunction)
Parameters
assemblershared pointer to the underlying assembler (provides the finite elements and the requested results)
userFunctionthe user function

◆ makeResultVtkFunction()

template<template< typename, int, int > class RT, typename UserFunction = Impl::DefaultUserFunction, Concepts::FlatAssembler AS>
auto Ikarus::makeResultVtkFunction ( std::shared_ptr< AS >  assembler,
UserFunction &&  userFunction = {} 
)

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);
Template Parameters
AStype of the assembler
RTrequested result type
UserFunctionType of the user-defined function for custom result evaluation (default is DefaultUserFunction)
Parameters
userFunction(optional) the user function (default is DefaultUserFunction)
assemblershared pointer to the underlying assembler (provides the finite elements and the requested results)

◆ 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 F , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF = utils::UpdateDefault>
auto Ikarus::makeTrustRegion ( const F &  f,
UF &&  updateFunction = {} 
)
Template Parameters
FType of the function to solve.
preConditionerType of the preconditioner used internally (default is IncompleteCholesky).
UFType of the update function (default is UpdateDefault).
Parameters
fThe function to solve.
updateFunctionUpdate function (default is UpdateDefault).
Returns
Shared pointer to the TrustRegion solver instance.

◆ 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 F , typename LS = utils::SolverDefault, typename UF = utils::UpdateDefault>
Ikarus::NewtonRaphson ( const F &  f,
LS &&  linearSolver = {},
UF &&  updateFunction = {} 
) -> NewtonRaphson< F, std::remove_cvref_t< LS >, std::remove_cvref_t< UF > >

◆ NewtonRaphsonWithSubsidiaryFunction()

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

◆ nonLinearElastic()

template<Concepts::Material 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.

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

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

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

◆ toString() [2/15]

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

◆ toString() [3/15]

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

◆ toString() [4/15]

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

◆ toString() [5/15]

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

◆ toString() [6/15]

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

◆ toString() [7/15]

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

◆ toString() [8/15]

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

◆ toString() [9/15]

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

◆ toString() [10/15]

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

◆ toString() [11/15]

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

◆ toString() [12/15]

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

◆ toString() [13/15]

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

◆ toString() [14/15]

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

◆ toString() [15/15]

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.

◆ transformationMatrix() [1/2]

template<typename GEO >
requires (GEO::mydimension == 2)
Eigen::Matrix3d Ikarus::transformationMatrix ( const GEO &  geometry,
const Dune::FieldVector< double, 2 > &  pos 
)

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.
posThe position where the transformation matrix is to be evaluated.
Returns
The transformation matrix for 2D elements.

◆ transformationMatrix() [2/2]

template<typename GEO >
requires (GEO::mydimension == 3)
Eigen::Matrix< double, 6, 6 > Ikarus::transformationMatrix ( const GEO &  geometry,
const Dune::FieldVector< double, 3 > &  pos 
)

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.
posThe position where the transformation matrix is to be evaluated.
Returns
The transformation matrix for 3D elements.

◆ transformStrain()

template<StrainTags from, StrainTags to, typename Derived >
auto Ikarus::transformStrain ( const Eigen::MatrixBase< Derived > &  eRaw)

This function transforms one strain component matrix from one type to another, based on the provided strain tags

Template Parameters
fromTag of the source strain measure.
toTag of the target strain measure.
DerivedType of the Eigen matrix.
Parameters
eRawEigen matrix representing the input strain (can be in Voigt notation).
Returns
The transformed strain matrix.

◆ transformStress()

template<StressTags from, StressTags to, typename DerivedS , typename DerivedF >
auto Ikarus::transformStress ( const Eigen::MatrixBase< DerivedS > &  sRaw,
const Eigen::MatrixBase< DerivedF > &  F 
)

This function transforms a stress component matrix from one type to another, based on the provided stress tags and the deformation gradient

Template Parameters
fromTag of the source stress measure.
toTag of the target stress measure.
DerivedSType of the stress matrix.
Parameters
sRawEigen matrix representing the input stress (can be in Voigt notation).
FEigen matrix representing the deformation gradient (has to be in matrix notation).
Returns
The transformed stress matrix.

◆ 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 F , PreConditioner preConditioner = PreConditioner::IncompleteCholesky, typename UF2 = utils::UpdateDefault>
Ikarus::TrustRegion ( const F &  f,
UF2 &&  updateFunction = {} 
) -> TrustRegion< F, 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>>
staticconstexpr
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