44 enum Material mat = decodeMat_id<matId>::material,
55 typedef typename Base::function_ptr function_ptr;
195 const function_ptr
getRatio()
const override {
return _getRatio_impl<mat>(); }
201 const function_ptr
getMu(
const index_t & i)
const override {
return _getMu_impl<mat>(i);}
207 const function_ptr
getAlpha(
const index_t & i)
const override {
return _getAlpha_impl<mat>(i);}
210 std::ostream &
print(std::ostream &os)
const override;
214 typedef memory::shared_ptr< gsMaterialMatrixNonlinear >
Ptr;
217 typedef memory::unique_ptr< gsMaterialMatrixNonlinear >
uPtr;
380 template <enum Material _mat,
bool _comp>
381 constexpr
typename std::enable_if< (!_comp && _mat==Material::NH), gsMatrix<T>>::type dCijkl_impl(
const index_t patch,
const gsVector<T> & u,
const T z)
const;
383 template <enum Material _mat,
bool _comp>
384 constexpr
typename std::enable_if<!(!_comp && _mat==Material::NH), gsMatrix<T>>::type dCijkl_impl(
const index_t patch,
const gsVector<T> & u,
const T z)
const;
386 template <enum Material _mat,
bool _comp>
389 template <enum Material _mat,
bool _comp>
406 template<enum Material _mat,
bool _com>
408 template<enum Material _mat,
bool _com>
409 typename std::enable_if<_mat==Material::SvK, gsMatrix<T>>::type _eval3D_matrix_C_impl(
const gsMatrix<T> & Cmat,
const index_t patch,
const gsVector<T> & u,
const T z)
const;
423 template<enum Material _mat,
bool _com>
425 template<enum Material _mat,
bool _com>
426 typename std::enable_if<_com && !(_mat==Material::SvK), gsMatrix<T>>::type _eval3D_matrix_C_impl(
const gsMatrix<T> & Cmat,
const index_t patch,
const gsVector<T> & u,
const T z)
const;
440 template<enum Material _mat,
bool _com>
442 template<enum Material _mat,
bool _com>
443 typename std::enable_if<!_com && !(_mat==Material::SvK), gsMatrix<T>>::type _eval3D_matrix_C_impl(
const gsMatrix<T> & Cmat,
const index_t patch,
const gsVector<T> & u,
const T z)
const;
459 template <enum Material _mat,
bool _comp>
462 template <enum Material _mat,
bool _comp>
466 template<enum Material _mat,
bool _com>
481 template<enum Material _mat,
bool _com>
483 template<enum Material _mat,
bool _com>
485 template<enum Material _mat,
bool _com>
489 template<enum Material _mat,
bool _com>
504 template<enum Material _mat,
bool _com>
506 template<enum Material _mat,
bool _com>
507 typename std::enable_if<_mat==Material::SvK, gsMatrix<T>>::type _eval3D_stress_C_impl(
const gsMatrix<T> & Cmat,
const index_t patch,
const gsVector<T> & u,
const T z)
const;
508 template<enum Material _mat,
bool _com>
509 typename std::enable_if<_mat==Material::SvK, gsMatrix<T>>::type _eval3D_CauchyStress_impl(
const index_t patch,
const gsMatrix<T> & u,
const gsMatrix<T>& z)
const;
512 template<enum Material _mat,
bool _com>
527 template<enum Material _mat,
bool _com>
529 template<enum Material _mat,
bool _com>
530 typename std::enable_if<_com && !(_mat==Material::SvK), gsMatrix<T>>::type _eval3D_stress_C_impl(
const gsMatrix<T> & Cmat,
const index_t patch,
const gsVector<T> & u,
const T z)
const;
531 template<enum Material _mat,
bool _com>
532 typename std::enable_if<_com && !(_mat==Material::SvK), gsMatrix<T>>::type _eval3D_CauchyStress_impl(
const index_t patch,
const gsMatrix<T> & u,
const gsMatrix<T>& z)
const;
546 template<enum Material _mat,
bool _com>
548 template<enum Material _mat,
bool _com>
549 typename std::enable_if<!_com && !(_mat==Material::SvK), gsMatrix<T>>::type _eval3D_stress_C_impl(
const gsMatrix<T> & Cmat,
const index_t patch,
const gsVector<T> & u,
const T z)
const;
550 template<enum Material _mat,
bool _com>
551 typename std::enable_if<!_com && !(_mat==Material::SvK), gsMatrix<T>>::type _eval3D_CauchyStress_impl(
const index_t patch,
const gsMatrix<T> & u,
const gsMatrix<T>& z)
const;
565 template<enum Material _mat,
bool _com>
568 template<enum Material _mat>
569 typename std::enable_if<_mat==Material::MR, void>::type _setRatio_impl(
const gsFunctionSet<T> & Ratio);
570 template<enum Material _mat>
571 typename std::enable_if<_mat!=Material::MR, void>::type _setRatio_impl(
const gsFunctionSet<T> & Ratio);
573 template<enum Material _mat>
574 typename std::enable_if<_mat==Material::MR, const function_ptr>::type _getRatio_impl()
const;
575 template<enum Material _mat>
576 typename std::enable_if<_mat!=Material::MR, const function_ptr>::type _getRatio_impl()
const;
578 template<enum Material _mat>
579 typename std::enable_if<_mat==Material::OG, void>::type _setMu_impl(
const index_t & i,
const gsFunctionSet<T> & Mu_i);
580 template<enum Material _mat>
581 typename std::enable_if<_mat!=Material::OG, void>::type _setMu_impl(
const index_t & i,
const gsFunctionSet<T> & Mu_i);
583 template<enum Material _mat>
584 typename std::enable_if<_mat==Material::OG, const function_ptr>::type _getMu_impl(
const index_t & i)
const;
585 template<enum Material _mat>
586 typename std::enable_if<_mat!=Material::OG, const function_ptr>::type _getMu_impl(
const index_t & i)
const;
588 template<enum Material _mat>
589 typename std::enable_if<_mat==Material::OG, void>::type _setAlpha_impl(
const index_t & i,
const gsFunctionSet<T> & Alpha_i);
590 template<enum Material _mat>
591 typename std::enable_if<_mat!=Material::OG, void>::type _setAlpha_impl(
const index_t & i,
const gsFunctionSet<T> & Alpha_i);
593 template<enum Material _mat>
594 typename std::enable_if<_mat==Material::OG, const function_ptr>::type _getAlpha_impl(
const index_t & i)
const;
595 template<enum Material _mat>
596 typename std::enable_if<_mat!=Material::OG, const function_ptr>::type _getAlpha_impl(
const index_t & i)
const;
675 template<enum Material _mat, enum Implementation _imp>
676 constexpr
typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
680 template<enum Material _mat, enum Implementation _imp>
681 constexpr
typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
685 template<enum Material _mat, enum Implementation _imp>
686 constexpr
typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
690 template<enum Material _mat, enum Implementation _imp>
691 constexpr
typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
696 template<enum Material _mat, enum Implementation _imp>
697 constexpr
typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
702 template<enum Material _mat, enum Implementation _imp>
703 constexpr
typename std::enable_if<_imp==Implementation::Spectral , T>::type
707 template<enum Material _mat, enum Implementation _imp>
708 constexpr
typename std::enable_if<_imp==Implementation::Generalized , T>::type
721 template<enum Implementation _imp>
722 constexpr
typename std::enable_if<_imp==Implementation::Spectral, T>::type
726 template<enum Implementation _imp>
727 constexpr
typename std::enable_if<!(_imp==Implementation::Spectral),T>::type
731 template<enum Material _mat, enum Implementation _imp>
732 constexpr
typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
736 template<enum Material _mat, enum Implementation _imp>
737 constexpr
typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
741 template<enum Material _mat, enum Implementation _imp>
742 constexpr
typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
746 template<enum Material _mat, enum Implementation _imp>
747 constexpr
typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
752 template<enum Material _mat, enum Implementation _imp>
753 constexpr
typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
757 template<enum Material _mat, enum Implementation _imp>
758 constexpr
typename std::enable_if<_imp==Implementation::Spectral , T>::type
762 template<enum Material _mat, enum Implementation _imp>
763 constexpr
typename std::enable_if<_imp==Implementation::Generalized , T>::type
768 template<enum Material _mat, enum Implementation _imp>
769 constexpr
typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
773 template<enum Material _mat, enum Implementation _imp>
774 constexpr
typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
778 template<enum Material _mat, enum Implementation _imp>
779 constexpr
typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
783 template<enum Material _mat, enum Implementation _imp>
784 constexpr
typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
789 template<enum Material _mat, enum Implementation _imp>
790 constexpr
typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
795 template<enum Material _mat, enum Implementation _imp>
796 constexpr
typename std::enable_if<_imp==Implementation::Spectral , T>::type
800 template<enum Material _mat, enum Implementation _imp>
801 constexpr
typename std::enable_if<_imp==Implementation::Generalized , T>::type
806 template<enum Material _mat, enum Implementation _imp>
807 constexpr
typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
812 template<enum Material _mat, enum Implementation _imp>
813 constexpr
typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
817 template<enum Material _mat, enum Implementation _imp>
818 constexpr
typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
822 template<enum Material _mat, enum Implementation _imp>
823 constexpr
typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
828 template<enum Material _mat, enum Implementation _imp>
829 constexpr
typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
833 template<enum Material _mat, enum Implementation _imp>
834 constexpr
typename std::enable_if<_imp==Implementation::Spectral , T>::type
838 template<enum Material _mat, enum Implementation _imp>
839 constexpr
typename std::enable_if<_imp==Implementation::Generalized , T>::type
940 template<enum Material _mat>
944 template<enum Material _mat>
947 template<enum Material _mat>
948 constexpr
typename std::enable_if<!(_mat==Material::NH || _mat==Material::MR), T>::type
_dPsi_impl(
const index_t i,
const index_t j)
const
953 template<enum Material _mat>
954 constexpr
typename std::enable_if<_mat==Material::NH, T>::type
_dPsi_impl(
const index_t i,
const index_t j,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const;
957 template<enum Material _mat>
958 constexpr
typename std::enable_if<_mat==Material::MR, T>::type
_dPsi_impl(
const index_t i,
const index_t j,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const;
961 template<enum Material _mat>
962 constexpr
typename std::enable_if<_mat==Material::NH_ext, T>::type
_dPsi_impl(
const index_t i,
const index_t j,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const;
964 template<enum Material _mat>
965 constexpr
typename std::enable_if<!(_mat==Material::NH || _mat==Material::MR || _mat==Material::NH_ext), T>::type
_dPsi_impl(
const index_t i,
const index_t j,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const
969 template<enum Material _mat>
973 template<enum Material _mat>
976 template<enum Material _mat>
981 template<enum Material _mat>
982 constexpr
typename std::enable_if<_mat==Material::NH, T>::type
_d2Psi_impl(
const index_t i,
const index_t j,
const index_t k,
const index_t l,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const;
985 template<enum Material _mat>
986 constexpr
typename std::enable_if<_mat==Material::MR, T>::type
_d2Psi_impl(
const index_t i,
const index_t j,
const index_t k,
const index_t l,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const;
989 template<enum Material _mat>
990 constexpr
typename std::enable_if<_mat==Material::NH_ext, T>::type
_d2Psi_impl(
const index_t i,
const index_t j,
const index_t k,
const index_t l,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const;
992 template<enum Material _mat>
993 constexpr
typename std::enable_if<!(_mat==Material::NH || _mat==Material::MR || _mat==Material::NH_ext), T>::type
_d2Psi_impl(
const index_t i,
const index_t j,
const index_t k,
const index_t l,
const gsMatrix<T> & c,
const gsMatrix<T> & cinv)
const
1047 constexpr T
_p()
const;
1081 template<enum Material _mat,
bool _com>
1082 constexpr
typename std::enable_if<_com && (_mat==Material::NH), T>::type
_dPsi_da_impl(
const index_t a)
const;
1085 template<enum Material _mat,
bool _com>
1086 constexpr
typename std::enable_if<!_com && (_mat==Material::NH), T>::type
_dPsi_da_impl(
const index_t a)
const;
1089 template<enum Material _mat,
bool _com>
1090 constexpr
typename std::enable_if<_com && (_mat==Material::MR), T>::type
_dPsi_da_impl(
const index_t a)
const;
1093 template<enum Material _mat,
bool _com>
1094 constexpr
typename std::enable_if<!_com && (_mat==Material::MR), T>::type
_dPsi_da_impl(
const index_t a)
const;
1097 template<enum Material _mat,
bool _com>
1098 constexpr
typename std::enable_if<_com && (_mat==Material::OG), T>::type
_dPsi_da_impl(
const index_t a)
const;
1101 template<enum Material _mat,
bool _com>
1102 constexpr
typename std::enable_if<!_com && (_mat==Material::OG), T>::type
_dPsi_da_impl(
const index_t a)
const;
1105 template<enum Material _mat,
bool _com>
1106 constexpr
typename std::enable_if<_com && (_mat==Material::NH_ext), T>::type
_dPsi_da_impl(
const index_t a)
const;
1109 template<enum Material _mat,
bool _com>
1114 template<enum Material _mat,
bool _com>
1115 constexpr
typename std::enable_if<
1116 !( _mat==Material::NH
1117 || _mat==Material::MR
1118 || _mat==Material::OG
1119 || _mat==Material::NH_ext
1127 template<enum Material _mat,
bool _com>
1131 template<enum Material _mat,
bool _com>
1135 template<enum Material _mat,
bool _com>
1139 template<enum Material _mat,
bool _com>
1143 template<enum Material _mat,
bool _com>
1147 template<enum Material _mat,
bool _com>
1151 template<enum Material _mat,
bool _com>
1155 template<enum Material _mat,
bool _com>
1160 template<enum Material _mat,
bool _com>
1161 constexpr
typename std::enable_if<
1162 !( _mat==Material::NH
1163 || _mat==Material::MR
1164 || _mat==Material::OG
1165 || _mat==Material::NH_ext
1174 constexpr
typename std::enable_if<_com , T>::type
_Sa_impl(
const index_t a)
const;
1178 constexpr
typename std::enable_if<!_com, T>::type
_Sa_impl(
const index_t a)
const;
1203 using Base::m_thickness;
1205 using Base::m_density;
1210 using Base::m_options;
1215 return (a==b) ? 1 : 0;
1220 return (a!=b) ? 1 : 0;
1224 #ifdef GISMO_WITH_PYBIND11
1229 void pybind11_init_gsMaterialMatrixNH2i(pybind11::module &m);
1230 void pybind11_init_gsMaterialMatrixNH2c(pybind11::module &m);
1232 void pybind11_init_gsMaterialMatrixNH3i(pybind11::module &m);
1233 void pybind11_init_gsMaterialMatrixNH3c(pybind11::module &m);
1235 void pybind11_init_gsMaterialMatrixMR2i(pybind11::module &m);
1236 void pybind11_init_gsMaterialMatrixMR2c(pybind11::module &m);
1238 void pybind11_init_gsMaterialMatrixMR3i(pybind11::module &m);
1239 void pybind11_init_gsMaterialMatrixMR3c(pybind11::module &m);
1241 void pybind11_init_gsMaterialMatrixOG2i(pybind11::module &m);
1242 void pybind11_init_gsMaterialMatrixOG2c(pybind11::module &m);
1244 void pybind11_init_gsMaterialMatrixOG3i(pybind11::module &m);
1245 void pybind11_init_gsMaterialMatrixOG3c(pybind11::module &m);
1247 #endif // GISMO_WITH_PYBIND11
1252 #ifndef GISMO_BUILD_LIB
1253 #include GISMO_HPP_HEADER(gsMaterialMatrixNonlinear.hpp)
constexpr T _d2Psi_vol(const index_t i, const index_t j, const index_t k, const index_t l, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Provides the second (mixed) derivative of the volumetric part of the compressible strain energy densi...
Definition: gsMaterialMatrixNonlinear.hpp:2307
MaterialOutput
This class describes the output type.
Definition: gsMaterialMatrixUtils.h:98
void setPoissonsRatio(const gsFunctionSet< T > &PoissonsRatio) override
Sets the Poisson's Ratio.
Definition: gsMaterialMatrixNonlinear.hpp:1044
constexpr std::enable_if< _mat==Material::SvK &&_imp==Implementation::Analytical, T >::type _Cijkl3D_impl(const index_t i, const index_t j, const index_t k, const index_t l, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Specialization for compressible Cijkl3D(i,j,k,l,c,cinv) for SvK materials implemented analytically...
Definition: gsMaterialMatrixNonlinear.hpp:1423
constexpr std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Cijkl_impl(const index_t i, const index_t j, const index_t k, const index_t l) const
Specialization for incompressible Cijkl(i,j,k,l) for OG materials implemented analytically (not imple...
Definition: gsMaterialMatrixNonlinear.h:692
std::enable_if< _com, void >::type _pstretchDir_into_impl(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Implementation of stretchDir_into, specialization for compressible materials.
void setAlpha(const index_t &i, const gsFunctionSet< T > &Alpha_i) override
Sets Alpha_i.
Definition: gsMaterialMatrixNonlinear.h:204
constexpr std::enable_if<!_com &&(_mat==Material::NH_ext), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for incompressible Extended NH materials (not implemented) ...
Definition: gsMaterialMatrixNonlinear.h:1110
void pstretch_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:209
This class defines hyperelastic material matrices.
Definition: gsMaterialMatrixNonlinear.h:47
#define GISMO_NO_IMPLEMENTATION
Definition: gsDebug.h:129
gsMatrix< T > eval3D_matrix_C(const gsMatrix< T > &Cmat, const index_t patch, const gsVector< T > &u, const T z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:304
constexpr std::enable_if< _mat==Material::NH, T >::type _dPsi_impl(const index_t i, const index_t j) const
Implementation of _dPsi(i,j) for NH materials.
Definition: gsMaterialMatrixNonlinear.hpp:2078
gsMatrix< T > eval3D_detF(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:892
constexpr T _dp_da(const index_t a) const
First derivative of the Lagrange multiplier for incompressible materials w.r.t. the stretch ...
Definition: gsMaterialMatrixNonlinear.hpp:2629
#define short_t
Definition: gsConfig.h:35
gsMatrix< T > _eval3D_Compressible_matrix(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evalluates the compressible material matrix.
Definition: gsMaterialMatrixNonlinear.hpp:2012
const function_ptr getRatio() const override
Gets the Ratio for the MR material.
Definition: gsMaterialMatrixNonlinear.h:195
void defaultOptions() override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:195
constexpr std::enable_if< _com, T >::type _dSa_db_impl(const index_t a, const index_t b) const
Specialization of _dSa_db(a,b) for compressible materials.
std::enable_if<!(!_comp &&_mat==Material::NH), gsMatrix< T > >::type _eval3D_dmatrix_impl(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
{ function_description }
constexpr T _Cijkl3D(const index_t i, const index_t j, const index_t k, const index_t l, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Returns an entry of the material tensor C for compressible materials without static condensation...
Definition: gsMaterialMatrixNonlinear.hpp:1414
constexpr T _dPsi_da(const index_t a) const
First derivative of a strain energy density function w.r.t. the stretch .
Definition: gsMaterialMatrixNonlinear.hpp:2321
gsMatrix< T > eval3D_matrix(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:509
void setMu(const index_t &i, const gsFunctionSet< T > &Mu_i) override
Sets Mu_i.
Definition: gsMaterialMatrixNonlinear.h:198
gsMatrix< T > eval3D_pstress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:567
constexpr T _Cabcd(const index_t a, const index_t b, const index_t c, const index_t d) const
The material matrix for stretch-based implementations.
Definition: gsMaterialMatrixNonlinear.hpp:2696
constexpr T _Sa(const index_t a) const
Component of the stress.
Definition: gsMaterialMatrixNonlinear.hpp:2642
constexpr T _Cijkl(const index_t i, const index_t j, const index_t k, const index_t l) const
Returns an entry of the material tensor C for incompressible materials.
Definition: gsMaterialMatrixNonlinear.hpp:1231
memory::unique_ptr< gsMaterialMatrixNonlinear > uPtr
Unique pointer for gsMaterialMatrixNonlinear.
Definition: gsMaterialMatrixNonlinear.h:217
#define index_t
Definition: gsConfig.h:32
constexpr T _d2Psi_dab(const index_t a, const index_t b) const
Second derivative of a strain energy density function w.r.t. the stretches and .
Definition: gsMaterialMatrixNonlinear.hpp:2447
void setYoungsModulus(const gsFunctionSet< T > &YoungsModulus) override
Sets the YoungsModulus.
Definition: gsMaterialMatrixNonlinear.hpp:1032
std::enable_if< _mat==Material::SvK, gsMatrix< T > >::type _eval3D_detF_impl(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Implementation of jacobina determinant (detF)
Definition: gsMaterialMatrixNonlinear.hpp:901
constexpr std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Cijkl3D_impl(const index_t i, const index_t j, const index_t k, const index_t l, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Specialization for compressible Cijkl3D(i,j,k,l,c,cinv) for OG materials implemented analytically (no...
Definition: gsMaterialMatrixNonlinear.h:748
enum MatIntegration isVecIntegrated() const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.h:131
gsMatrix< T > _eval3D_Compressible_C33(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates the C33 (through thickness) component of the deformation tensor C for compressible material...
Definition: gsMaterialMatrixNonlinear.hpp:1815
gsMatrix< T > eval3D_stress_C(const gsMatrix< T > &Cmat, const index_t patch, const gsVector< T > &u, const T z, enum MaterialOutput out=MaterialOutput::Generic) const
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:693
Implementation
This class describes the way material models are implemented.
Definition: gsMaterialMatrixUtils.h:70
Base class with dimension in template; used for metric computations.
void setRatio(const gsFunctionSet< T > &Ratio) override
Sets the Ratio for the MR material.
Definition: gsMaterialMatrixNonlinear.h:193
constexpr T _dI_2(const index_t i, const index_t j, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Provides the derivative of the second invariant for compressible materials w.r.t. component C_{ij} of...
Definition: gsMaterialMatrixNonlinear.hpp:2163
gsMatrix< T > eval3D_vector(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:549
constexpr std::enable_if< _mat==Material::SvK &&_imp==Implementation::Analytical, T >::type _Cijkl_impl(const index_t i, const index_t j, const index_t k, const index_t l) const
Specialization for incompressible Cijkl(i,j,k,l) for SvK materials implemented analytically.
Definition: gsMaterialMatrixNonlinear.hpp:1242
Provides a list of labeled parameters/options that can be set and accessed easily.
constexpr T _dPsi_vol(const index_t i, const index_t j, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Provides the derivative of the volumetric part of the compressible strain energy density function w...
Definition: gsMaterialMatrixNonlinear.hpp:2229
constexpr std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Specialization for compressible Sij(i,j,c,cinv) for OG materials implemented analytically (not implem...
Definition: gsMaterialMatrixNonlinear.h:824
gsMatrix< T > eval3D_CauchyStress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:961
const function_ptr getPoissonsRatio() const override
Gets the Poisson's Ratio.
Definition: gsMaterialMatrixNonlinear.hpp:1050
constexpr T _d2J_dab(const index_t a, const index_t b) const
First derivative of the compressibilty function w.r.t. the stretches and .
Definition: gsMaterialMatrixNonlinear.hpp:2613
constexpr T _dSa_db(const index_t a, const index_t b) const
First derivative of the component of the stress w.r.t. the stretch .
Definition: gsMaterialMatrixNonlinear.hpp:2666
constexpr std::enable_if< _mat==Material::SvK &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j) const
Specialization for incompressible Sij(i,j) for SvK materials implemented analytically.
Definition: gsMaterialMatrixNonlinear.hpp:1627
const function_ptr getMu(const index_t &i) const override
Gets Mu_i.
Definition: gsMaterialMatrixNonlinear.h:201
constexpr T _d2Psi(const index_t i, const index_t j, const index_t k, const index_t l) const
Provides the second (mixed) derivative of the incompressible strain energy density function w...
Definition: gsMaterialMatrixNonlinear.hpp:2109
constexpr std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j) const
Specialization for incompressible Sij(i,j) for OG materials implemented analytically (not implemented...
Definition: gsMaterialMatrixNonlinear.h:785
gsMatrix< T > eval3D_pstressDir(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:597
constexpr T _p() const
Lagrange multiplier for incompressible materials.
Definition: gsMaterialMatrixNonlinear.hpp:2621
const function_ptr getAlpha(const index_t &i) const override
Gets Alpha_i.
Definition: gsMaterialMatrixNonlinear.h:207
gsMatrix< T > _eval_Compressible_CauchyVector(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Equivalent to _eval_Compressible_vector but for the Cauchy Vector.
constexpr std::enable_if< _com, T >::type _Cabcd_impl(const index_t a, const index_t b, const index_t c, const index_t d) const
Specialization of _Cabcd(a,b,c,d) for compressible materials.
enum MatIntegration isMatIntegrated() const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.h:128
std::enable_if<!_com &&!(_mat==Material::SvK), gsMatrix< T > >::type _eval3D_pstress_impl(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Implementation of the 3D (in-plane+thickness) evaluator of the stress vector, specialization for comp...
constexpr std::enable_if< _mat==Material::NH, T >::type _d2Psi_impl(const index_t i, const index_t j, const index_t k, const index_t l) const
Implementation of _d2Psi(i,j) for NH materials.
Definition: gsMaterialMatrixNonlinear.hpp:2120
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition: gsFuncData.h:23
const function_ptr getYoungsModulus() const override
Gets the YoungsModulus.
Definition: gsMaterialMatrixNonlinear.hpp:1038
std::enable_if< _mat==Material::SvK, gsMatrix< T > >::type _eval3D_matrix_impl(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Implementation of the 3D (in-plane+thickness) evaluator of the material matrix, specialization for Sv...
Definition: gsMaterialMatrixNonlinear.hpp:521
gsMatrix< T > eval3D_CauchyPStress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:627
constexpr T _Sii(const index_t i) const
Returns an entry of the diagonal of the stress tensor S for incompressible materials.
Definition: gsMaterialMatrixNonlinear.hpp:1798
gsMaterialMatrixNonlinear()
Destructor.
Definition: gsMaterialMatrixNonlinear.h:125
gsMatrix< T > _eval3D_Incompressible_matrix(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evalluates the incompressible material matrix.
Definition: gsMaterialMatrixNonlinear.hpp:1190
Provides material matrix utilities.
constexpr std::enable_if<!_com &&(_mat==Material::NH_ext), T >::type _d2Psi_dab_impl(const index_t a, const index_t b) const
Specialization of _d2Psi_dab(a,b) for incompressible Extended NH materials (not implemented) ...
Definition: gsMaterialMatrixNonlinear.h:1156
This class defines the base class for material matrices.
Definition: gsMaterialMatrixBaseDim.h:35
gsMatrix< T > _eval3D_Incompressible_stress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evalluates the incompressible stress vector.
Definition: gsMaterialMatrixNonlinear.hpp:825
constexpr T _dI_1(const index_t i, const index_t j) const
Provides the derivative of the first invariant compressible materials w.r.t. component C_{ij} of the ...
Definition: gsMaterialMatrixNonlinear.hpp:2155
constexpr std::enable_if< _mat==Material::NH_ext &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j) const
Specialization for incompressible Sij(i,j) for Extended NH materials implemented analytically (not im...
Definition: gsMaterialMatrixNonlinear.h:791
void _initialize()
Initializes the object.
Definition: gsMaterialMatrixNonlinear.hpp:202
constexpr T _dPsi_da_vol(const index_t a) const
First derivative of the volumetric part of a strain energy density function w.r.t. the stretch .
Definition: gsMaterialMatrixNonlinear.hpp:2436
constexpr std::enable_if< _mat==Material::NH_ext &&_imp==Implementation::Analytical, T >::type _Cijkl_impl(const index_t i, const index_t j, const index_t k, const index_t l) const
Specialization for incompressible Cijkl(i,j,k,l) for Extended NH materials implemented analytically (...
Definition: gsMaterialMatrixNonlinear.h:698
constexpr T _d2Psi_dab_vol(const index_t a, const index_t b) const
Second derivative of the volumetric part of a strain energy density function w.r.t. the stretches and .
Definition: gsMaterialMatrixNonlinear.hpp:2592
std::enable_if< _mat==Material::SvK, gsMatrix< T > >::type _eval3D_stress_impl(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Implementation of the 3D (in-plane+thickness) evaluator of the stress vector, specialization for SvK ...
Definition: gsMaterialMatrixNonlinear.hpp:668
void pstretchDir_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:257
gsMatrix< T > _eval3D_Compressible_stress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evalluates the compressible stress vector.
Definition: gsMaterialMatrixNonlinear.hpp:727
gsMatrix< T > eval3D_dmatrix(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:344
constexpr std::enable_if< _mat==Material::SvK &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j, const gsMatrix< T > &c, const gsMatrix< T > &cinv) const
Specialization for compressible Sij(i,j,c,cinv) for SvK materials implemented analytically.
Definition: gsMaterialMatrixNonlinear.h:808
Provides a base class for material matrices.
memory::shared_ptr< gsMaterialMatrixNonlinear > Ptr
Shared pointer for gsMaterialMatrixNonlinear.
Definition: gsMaterialMatrixNonlinear.h:214
constexpr std::enable_if< _com &&(_mat==Material::NH), T >::type _d2Psi_dab_impl(const index_t a, const index_t b) const
Specialization of _d2Psi_dab(a,b) for compressible NH materials.
std::enable_if< _com, void >::type _pstretch_into_impl(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Implementation of pstretch_into, specialization for compressible materials.
gsMatrix< T > eval3D_stress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:659
gsMatrix< T > eval3D_vector_C(const gsMatrix< T > &Cmat, const index_t patch, const gsVector< T > &u, const T z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:555
gsMatrix< T > eval3D_CauchyVector(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out=MaterialOutput::Generic) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:561
std::enable_if< _mat==Material::SvK, gsMatrix< T > >::type _eval3D_CauchyVector_impl(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Same as _eval3D_vector_impl for the Cauchy stress.
constexpr T _dJ_da(const index_t a) const
First derivative of the compressibilty function w.r.t. the stretche .
Definition: gsMaterialMatrixNonlinear.hpp:2605
gsMatrix< T > _eval3D_Compressible_detF(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates the jacobian determinant for compressible materials.
Definition: gsMaterialMatrixNonlinear.hpp:926
std::ostream & print(std::ostream &os) const override
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixNonlinear.hpp:153
Material
This class describes a material model.
Definition: gsMaterialMatrixUtils.h:50
constexpr std::enable_if< _com &&(_mat==Material::NH), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for compressible NH materials.
This object is a cache for computed values from an evaluator.
gsMatrix< T > _eval_Incompressible_CauchyVector(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Equivalent to _eval_Incompressible_vector but for the Cauchy Vector.
gsMatrix< T > _eval3D_Incompressible_detF(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates the jacobian determinant for compressible materials.
Definition: gsMaterialMatrixNonlinear.hpp:953
constexpr T _Sij(const index_t i, const index_t j) const
Returns an entry of the stress tensor S for incompressible materials.
Definition: gsMaterialMatrixNonlinear.hpp:1619
MatIntegration
This class describes if an object is integrated through-thickness or not.
Definition: gsMaterialMatrixUtils.h:35
constexpr T _dPsi(const index_t i, const index_t j) const
Provides the derivative of the incompressible strain energy density function w.r.t. component C_{ij} of the deformation tensor.
Definition: gsMaterialMatrixNonlinear.hpp:2067
constexpr std::enable_if< _com, T >::type _Sa_impl(const index_t a) const
Specialization of _Sa(a) for compressible materials.