version 0.4.1
Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS > Struct Template Reference

Implementation of a AutoDiff-based material model. More...

#include <ikarus/experimental/autodiffmat.hh>

Inheritance diagram for Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >:
[legend]

Public Types

using ScalarType = typename RealMAT::ScalarType
 
using StrainMatrix = typename RealMAT::StrainMatrix
 
using StressMatrix = typename RealMAT::StressMatrix
 
using MaterialTensor = typename RealMAT::MaterialTensor
 
using MaterialParameters = typename RealMAT::MaterialParameters
 

Public Member Functions

template<typename... Args>
 AutoDiffMAT (Args &&... args)
 Constructor for the AutoDiffMAT class. Forward the construction to the underlying element. More...
 
MaterialParameters materialParametersImpl () const
 Returns the material parameters stored in the material. More...
 
template<StrainTags tag, typename Derived >
auto storedEnergy (const Eigen::MatrixBase< Derived > &E) const
 Computes the stored energy in the underlying material model. More...
 
template<StrainTags tag, bool voigt = true, typename Derived >
auto stresses (const Eigen::MatrixBase< Derived > &E) const
 Computes the stresses in the underlying material model. More...
 
template<StrainTags tag, bool voigt = true, typename Derived >
auto tangentModuli (const Eigen::MatrixBase< Derived > &E) const
 Computes the tangent moduli in the underlying material model. More...
 
const RealMAT & realMAT () const
 Get the reference to the base material. More...
 

Static Public Member Functions

static constexpr std::string nameImpl () noexcept
 

Static Public Attributes

static constexpr int dim = RealMAT::dim
 
static constexpr int nVoigtIndices = dim * (dim + 1) / 2
 
static constexpr auto strainTag = RealMAT::strainTag
 
static constexpr auto stressTag = RealMAT::stressTag
 
static constexpr auto tangentModuliTag = RealMAT::tangentModuliTag
 
static constexpr bool energyAcceptsVoigt = RealMAT::energyAcceptsVoigt
 
static constexpr bool stressToVoigt = RealMAT::stressToVoigt
 
static constexpr bool stressAcceptsVoigt = RealMAT::stressAcceptsVoigt
 
static constexpr bool moduliToVoigt = RealMAT::moduliToVoigt
 
static constexpr bool moduliAcceptsVoigt = RealMAT::moduliAcceptsVoigt
 
static constexpr double derivativeFactorImpl = RealMAT::derivativeFactorImpl
 

Detailed Description

template<typename RealMAT, bool forceAutoDiffV = false, bool forceAutoDiffS = false>
struct Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >

As of now using autodiff on the implemented materials doesn't always yield the expected result. Therefore this is labelled as an experimental feature for now. Please validate your results independently.

Template Parameters
RealMATType of the original material model.
forceAutoDiffVForce automatic differentiation to compute tangentModuli via stresses and stresses via energy.
forceAutoDiffSForce automatic differentiation to compute tangentModuli and stresses via energy.

Member Typedef Documentation

◆ MaterialParameters

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
using Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::MaterialParameters = typename RealMAT::MaterialParameters

◆ MaterialTensor

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
using Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::MaterialTensor = typename RealMAT::MaterialTensor

◆ ScalarType

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
using Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::ScalarType = typename RealMAT::ScalarType

◆ StrainMatrix

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
using Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::StrainMatrix = typename RealMAT::StrainMatrix

◆ StressMatrix

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
using Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::StressMatrix = typename RealMAT::StressMatrix

Constructor & Destructor Documentation

◆ AutoDiffMAT()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
template<typename... Args>
Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::AutoDiffMAT ( Args &&...  args)
inlineexplicit
Template Parameters
ArgsVariadic template for constructor arguments.
Parameters
argsConstructor arguments.

Member Function Documentation

◆ materialParametersImpl()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
MaterialParameters Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::materialParametersImpl ( ) const
inline

◆ nameImpl()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
static constexpr std::string Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::nameImpl ( )
inlinestaticconstexprnoexcept

◆ realMAT()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
const RealMAT & Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::realMAT ( ) const
inline
Returns
The reference to the base material.
Here is the caller graph for this function:

◆ storedEnergy()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
template<StrainTags tag, typename Derived >
auto Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::storedEnergy ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
DerivedThe derived type of the input matrix.
Parameters
EThe strain mesasure.
Returns
The stored energy.

◆ stresses()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
template<StrainTags tag, bool voigt = true, typename Derived >
auto Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::stresses ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtA boolean indicating whether to return stresses in Voigt notation.
DerivedThe derived type of the input matrix.
Parameters
EThe strain mesasure.
Returns
The stresses.

◆ tangentModuli()

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
template<StrainTags tag, bool voigt = true, typename Derived >
auto Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::tangentModuli ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtA boolean indicating whether to return tangent moduli in Voigt notation.
DerivedThe derived type of the input matrix.
Parameters
EThe strain mesasure.
Returns
The tangent moduli.

Member Data Documentation

◆ derivativeFactorImpl

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr double Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::derivativeFactorImpl = RealMAT::derivativeFactorImpl
staticconstexpr

◆ dim

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr int Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::dim = RealMAT::dim
staticconstexpr

◆ energyAcceptsVoigt

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr bool Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::energyAcceptsVoigt = RealMAT::energyAcceptsVoigt
staticconstexpr

◆ moduliAcceptsVoigt

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr bool Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::moduliAcceptsVoigt = RealMAT::moduliAcceptsVoigt
staticconstexpr

◆ moduliToVoigt

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr bool Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::moduliToVoigt = RealMAT::moduliToVoigt
staticconstexpr

◆ nVoigtIndices

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr int Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::nVoigtIndices = dim * (dim + 1) / 2
staticconstexpr

◆ strainTag

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr auto Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::strainTag = RealMAT::strainTag
staticconstexpr

◆ stressAcceptsVoigt

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr bool Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::stressAcceptsVoigt = RealMAT::stressAcceptsVoigt
staticconstexpr

◆ stressTag

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr auto Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::stressTag = RealMAT::stressTag
staticconstexpr

◆ stressToVoigt

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr bool Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::stressToVoigt = RealMAT::stressToVoigt
staticconstexpr

◆ tangentModuliTag

template<typename RealMAT , bool forceAutoDiffV = false, bool forceAutoDiffS = false>
constexpr auto Ikarus::Experimental::AutoDiffMAT< RealMAT, forceAutoDiffV, forceAutoDiffS >::tangentModuliTag = RealMAT::tangentModuliTag
staticconstexpr

The documentation for this struct was generated from the following file: