43 enum Material mat = decodeMat_id<matId>::material,
54 typedef typename Base::function_ptr function_ptr;
199 const function_ptr
getRatio()
const override {
return _getRatio_impl<mat>(); }
205 const function_ptr
getMu(
const index_t & i)
const override {
return _getMu_impl<mat>(i);}
211 const function_ptr
getAlpha(
const index_t & i)
const override {
return _getAlpha_impl<mat>(i);}
214 std::ostream &
print(std::ostream &os)
const override;
218 typedef memory::shared_ptr< gsMaterialMatrixNonlinear >
Ptr;
221 typedef memory::unique_ptr< gsMaterialMatrixNonlinear >
uPtr;
384 template <enum Material _mat,
bool _comp>
385 inline 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;
387 template <enum Material _mat,
bool _comp>
388 inline 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;
390 template <enum Material _mat,
bool _comp>
393 template <enum Material _mat,
bool _comp>
410 template<enum Material _mat,
bool _com>
412 template<enum Material _mat,
bool _com>
413 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;
427 template<enum Material _mat,
bool _com>
429 template<enum Material _mat,
bool _com>
444 template<enum Material _mat,
bool _com>
446 template<enum Material _mat,
bool _com>
463 template <enum Material _mat,
bool _comp>
466 template <enum Material _mat,
bool _comp>
470 template<enum Material _mat,
bool _com>
485 template<enum Material _mat,
bool _com>
487 template<enum Material _mat,
bool _com>
489 template<enum Material _mat,
bool _com>
493 template<enum Material _mat,
bool _com>
508 template<enum Material _mat,
bool _com>
510 template<enum Material _mat,
bool _com>
511 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;
512 template<enum Material _mat,
bool _com>
513 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;
516 template<enum Material _mat,
bool _com>
531 template<enum Material _mat,
bool _com>
533 template<enum Material _mat,
bool _com>
535 template<enum Material _mat,
bool _com>
550 template<enum Material _mat,
bool _com>
552 template<enum Material _mat,
bool _com>
554 template<enum Material _mat,
bool _com>
569 template<enum Material _mat,
bool _com>
572 template<enum Material _mat>
573 typename std::enable_if<_mat==Material::MR, void>::type _setRatio_impl(
const gsFunctionSet<T> & Ratio);
574 template<enum Material _mat>
575 typename std::enable_if<_mat!=Material::MR, void>::type _setRatio_impl(
const gsFunctionSet<T> & Ratio);
577 template<enum Material _mat>
578 typename std::enable_if<_mat==Material::MR, const function_ptr>::type _getRatio_impl()
const;
579 template<enum Material _mat>
580 typename std::enable_if<_mat!=Material::MR, const function_ptr>::type _getRatio_impl()
const;
582 template<enum Material _mat>
583 typename std::enable_if<_mat==Material::OG, void>::type _setMu_impl(
const index_t & i,
const gsFunctionSet<T> & Mu_i);
584 template<enum Material _mat>
585 typename std::enable_if<_mat!=Material::OG, void>::type _setMu_impl(
const index_t & i,
const gsFunctionSet<T> & Mu_i);
587 template<enum Material _mat>
588 typename std::enable_if<_mat==Material::OG, const function_ptr>::type _getMu_impl(
const index_t & i)
const;
589 template<enum Material _mat>
590 typename std::enable_if<_mat!=Material::OG, const function_ptr>::type _getMu_impl(
const index_t & i)
const;
592 template<enum Material _mat>
593 typename std::enable_if<_mat==Material::OG, void>::type _setAlpha_impl(
const index_t & i,
const gsFunctionSet<T> & Alpha_i);
594 template<enum Material _mat>
595 typename std::enable_if<_mat!=Material::OG, void>::type _setAlpha_impl(
const index_t & i,
const gsFunctionSet<T> & Alpha_i);
597 template<enum Material _mat>
598 typename std::enable_if<_mat==Material::OG, const function_ptr>::type _getAlpha_impl(
const index_t & i)
const;
599 template<enum Material _mat>
600 typename std::enable_if<_mat!=Material::OG, const function_ptr>::type _getAlpha_impl(
const index_t & i)
const;
679 template<enum Material _mat, enum Implementation _imp>
680 inline typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
684 template<enum Material _mat, enum Implementation _imp>
685 inline typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
689 template<enum Material _mat, enum Implementation _imp>
690 inline typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
694 template<enum Material _mat, enum Implementation _imp>
695 inline typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
700 template<enum Material _mat, enum Implementation _imp>
701 inline typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
706 template<enum Material _mat, enum Implementation _imp>
707 inline typename std::enable_if<_imp==Implementation::Spectral , T>::type
711 template<enum Material _mat, enum Implementation _imp>
712 inline typename std::enable_if<_imp==Implementation::Generalized , T>::type
725 template<enum Implementation _imp>
726 inline typename std::enable_if<_imp==Implementation::Spectral, T>::type
730 template<enum Implementation _imp>
731 inline typename std::enable_if<!(_imp==Implementation::Spectral),T>::type
735 template<enum Material _mat, enum Implementation _imp>
736 inline typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
740 template<enum Material _mat, enum Implementation _imp>
741 inline typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
745 template<enum Material _mat, enum Implementation _imp>
746 inline typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
750 template<enum Material _mat, enum Implementation _imp>
751 inline typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
756 template<enum Material _mat, enum Implementation _imp>
757 inline typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
761 template<enum Material _mat, enum Implementation _imp>
762 inline typename std::enable_if<_imp==Implementation::Spectral , T>::type
766 template<enum Material _mat, enum Implementation _imp>
767 inline typename std::enable_if<_imp==Implementation::Generalized , T>::type
772 template<enum Material _mat, enum Implementation _imp>
773 inline typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
777 template<enum Material _mat, enum Implementation _imp>
778 inline typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
782 template<enum Material _mat, enum Implementation _imp>
783 inline typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
787 template<enum Material _mat, enum Implementation _imp>
788 inline typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
793 template<enum Material _mat, enum Implementation _imp>
794 inline typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
799 template<enum Material _mat, enum Implementation _imp>
800 inline typename std::enable_if<_imp==Implementation::Spectral , T>::type
804 template<enum Material _mat, enum Implementation _imp>
805 inline typename std::enable_if<_imp==Implementation::Generalized , T>::type
810 template<enum Material _mat, enum Implementation _imp>
811 inline typename std::enable_if<_mat==Material::SvK && _imp==Implementation::Analytical, T>::type
816 template<enum Material _mat, enum Implementation _imp>
817 inline typename std::enable_if<_mat==Material::NH && _imp==Implementation::Analytical, T>::type
821 template<enum Material _mat, enum Implementation _imp>
822 inline typename std::enable_if<_mat==Material::MR && _imp==Implementation::Analytical, T>::type
826 template<enum Material _mat, enum Implementation _imp>
827 inline typename std::enable_if<_mat==Material::OG && _imp==Implementation::Analytical, T>::type
832 template<enum Material _mat, enum Implementation _imp>
833 inline typename std::enable_if<_mat==Material::NH_ext && _imp==Implementation::Analytical, T>::type
837 template<enum Material _mat, enum Implementation _imp>
838 inline typename std::enable_if<_imp==Implementation::Spectral , T>::type
842 template<enum Material _mat, enum Implementation _imp>
843 inline typename std::enable_if<_imp==Implementation::Generalized , T>::type
944 template<enum Material _mat>
948 template<enum Material _mat>
951 template<enum Material _mat>
952 inline typename std::enable_if<!(_mat==Material::NH || _mat==Material::MR), T>::type
_dPsi_impl(
const index_t ,
const index_t )
const
957 template<enum Material _mat>
961 template<enum Material _mat>
965 template<enum Material _mat>
968 template<enum Material _mat>
973 template<enum Material _mat>
977 template<enum Material _mat>
980 template<enum Material _mat>
985 template<enum Material _mat>
989 template<enum Material _mat>
993 template<enum Material _mat>
996 template<enum Material _mat>
1051 inline T
_p()
const;
1085 template<enum Material _mat,
bool _com>
1086 inline 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>
1093 template<enum Material _mat,
bool _com>
1097 template<enum Material _mat,
bool _com>
1101 template<enum Material _mat,
bool _com>
1105 template<enum Material _mat,
bool _com>
1109 template<enum Material _mat,
bool _com>
1113 template<enum Material _mat,
bool _com>
1118 template<enum Material _mat,
bool _com>
1119 inline typename std::enable_if<
1120 !( _mat==Material::NH
1121 || _mat==Material::MR
1122 || _mat==Material::OG
1123 || _mat==Material::NH_ext
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>
1159 template<enum Material _mat,
bool _com>
1164 template<enum Material _mat,
bool _com>
1165 inline typename std::enable_if<
1166 !( _mat==Material::NH
1167 || _mat==Material::MR
1168 || _mat==Material::OG
1169 || _mat==Material::NH_ext
1178 inline typename std::enable_if<_com , T>::type
_Sa_impl(
const index_t a)
const;
1207 using Base::m_thickness;
1209 using Base::m_density;
1214 using Base::m_options;
1219 return (a==b) ? 1 : 0;
1224 return (a!=b) ? 1 : 0;
1228#ifdef GISMO_WITH_PYBIND11
1233 void pybind11_init_gsMaterialMatrixNH2i(pybind11::module &m);
1234 void pybind11_init_gsMaterialMatrixNH2c(pybind11::module &m);
1236 void pybind11_init_gsMaterialMatrixNH3i(pybind11::module &m);
1237 void pybind11_init_gsMaterialMatrixNH3c(pybind11::module &m);
1239 void pybind11_init_gsMaterialMatrixMR2i(pybind11::module &m);
1240 void pybind11_init_gsMaterialMatrixMR2c(pybind11::module &m);
1242 void pybind11_init_gsMaterialMatrixMR3i(pybind11::module &m);
1243 void pybind11_init_gsMaterialMatrixMR3c(pybind11::module &m);
1245 void pybind11_init_gsMaterialMatrixOG2i(pybind11::module &m);
1246 void pybind11_init_gsMaterialMatrixOG2c(pybind11::module &m);
1248 void pybind11_init_gsMaterialMatrixOG3i(pybind11::module &m);
1249 void pybind11_init_gsMaterialMatrixOG3c(pybind11::module &m);
1256#ifndef GISMO_BUILD_LIB
1257#include GISMO_HPP_HEADER(gsMaterialMatrixNonlinear.hpp)
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition gsFunctionSet.h:219
This class defines the base class for material matrices.
Definition gsMaterialMatrixBaseDim.h:37
virtual gsMatrix< T > eval3D_CauchyStress(const index_t, const gsMatrix< T > &, const gsMatrix< T > &, enum MaterialOutput) const
{ function_description }
Definition gsMaterialMatrixBase.h:581
virtual gsMatrix< T > eval3D_dmatrix(const index_t, const gsMatrix< T > &, const gsMatrix< T > &, enum MaterialOutput) const
Evaluates the derivative of the matrix on patch on in-plane points u with height z.
Definition gsMaterialMatrixBase.h:398
virtual gsMatrix< T > eval3D_stress(const index_t, const gsMatrix< T > &, const gsMatrix< T > &, enum MaterialOutput) const
{ function_description }
Definition gsMaterialMatrixBase.h:549
virtual gsMatrix< T > eval3D_matrix(const index_t, const gsMatrix< T > &, const gsMatrix< T > &, enum MaterialOutput) const
Evaluates the matrix on patch on in-plane points u with height z.
Definition gsMaterialMatrixBase.h:367
virtual gsMatrix< T > eval3D_vector(const index_t, const gsMatrix< T > &, const gsMatrix< T > &, enum MaterialOutput) const
Evaluates the vector on patch on in-plane points u with height z.
Definition gsMaterialMatrixBase.h:422
This class defines hyperelastic material matrices.
Definition gsMaterialMatrixNonlinear.h:47
memory::unique_ptr< gsMaterialMatrixNonlinear > uPtr
Unique pointer for gsMaterialMatrixNonlinear.
Definition gsMaterialMatrixNonlinear.h:221
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
std::enable_if<!_com &&(_mat==Material::NH_ext), T >::type _d2Psi_dab_impl(const index_t, const index_t) const
Specialization of _d2Psi_dab(a,b) for incompressible Extended NH materials (not implemented)
Definition gsMaterialMatrixNonlinear.h:1160
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
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
std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Cijkl3D_impl(const index_t, const index_t, const index_t, const index_t, 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:752
T _dJ_da(const index_t a) const
First derivative of the compressibilty function w.r.t. the stretche .
Definition gsMaterialMatrixNonlinear.hpp:2605
memory::shared_ptr< gsMaterialMatrixNonlinear > Ptr
Shared pointer for gsMaterialMatrixNonlinear.
Definition gsMaterialMatrixNonlinear.h:218
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
Implementation of _d2Psi(i,j,c,cinv) for MR materials.
std::enable_if< _mat==Material::MR &&_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 MR materials implemented analytically.
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
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
std::enable_if<!_com &&(_mat==Material::OG), T >::type _d2Psi_dab_impl(const index_t a, const index_t b) const
Specialization of _d2Psi_dab(a,b) for incompressible OG materials.
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
Implementation of _d2Psi(i,j,c,cinv) for Extended NH materials.
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.
Definition gsMaterialMatrixNonlinear.hpp:2674
T _dPsi_da_vol(const index_t a) const
First derivative of the volumetric part of a strain energy density function w.r.t....
Definition gsMaterialMatrixNonlinear.hpp:2436
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
void pstretch_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const override
See gsMaterialMatrixBase for details.
Definition gsMaterialMatrixNonlinear.hpp:209
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
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.
Definition gsMaterialMatrixNonlinear.hpp:2330
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.
Definition gsMaterialMatrixNonlinear.hpp:2704
T _p() const
Lagrange multiplier for incompressible materials.
Definition gsMaterialMatrixNonlinear.hpp:2621
enum MatIntegration isMatIntegrated() const override
See gsMaterialMatrixBase for details.
Definition gsMaterialMatrixNonlinear.h:127
T _dPsi(const index_t i, const index_t j) const
Provides the derivative of the incompressible strain energy density function w.r.t....
Definition gsMaterialMatrixNonlinear.hpp:2067
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 incompressible materials.
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
std::enable_if< _mat==Material::MR &&_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 MR materials implemented analytically.
void _initialize()
Initializes the object.
Definition gsMaterialMatrixNonlinear.hpp:202
void setYoungsModulus(const gsFunctionSet< T > &YoungsModulus) override
Sets the YoungsModulus.
Definition gsMaterialMatrixNonlinear.hpp:1032
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
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
std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t, const index_t) const
Specialization for incompressible Sij(i,j) for OG materials implemented analytically (not implemented...
Definition gsMaterialMatrixNonlinear.h:789
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
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 }
std::enable_if< _mat==Material::NH &&_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 NH materials implemented analytically.
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.
Definition gsMaterialMatrixNonlinear.hpp:218
std::enable_if< _mat==Material::NH_ext &&_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 Extended NH materials implemented analyti...
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.
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
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
void setRatio(const gsFunctionSet< T > &Ratio) override
Sets the Ratio for the MR material.
Definition gsMaterialMatrixNonlinear.h:197
void setAlpha(const index_t &i, const gsFunctionSet< T > &Alpha_i) override
Sets Alpha_i.
Definition gsMaterialMatrixNonlinear.h:208
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
Implementation of _dPsi(i,j,c,cinv) for MR materials.
std::enable_if< _com &&!(_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.
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
std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t, const index_t, const gsMatrix< T > &, const gsMatrix< T > &) const
Specialization for compressible Sij(i,j,c,cinv) for OG materials implemented analytically (not implem...
Definition gsMaterialMatrixNonlinear.h:828
std::enable_if< _mat==Material::NH &&_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 NH materials implemented analytically.
enum MatIntegration isVecIntegrated() const override
See gsMaterialMatrixBase for details.
Definition gsMaterialMatrixNonlinear.h:130
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
std::enable_if< _com &&!(_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 compre...
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 incompressible materials.
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
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
std::enable_if< _mat==Material::NH_ext &&_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 Extended NH materials implemented analytically.
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...
std::enable_if<!_com &&(_mat==Material::MR), T >::type _d2Psi_dab_impl(const index_t a, const index_t b) const
Specialization of _d2Psi_dab(a,b) for incompressible MR materials.
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.
Definition gsMaterialMatrixNonlinear.hpp:266
void defaultOptions() override
See gsMaterialMatrixBase for details.
Definition gsMaterialMatrixNonlinear.hpp:195
T _Sa(const index_t a) const
Component of the stress.
Definition gsMaterialMatrixNonlinear.hpp:2642
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
std::ostream & print(std::ostream &os) const override
See gsMaterialMatrixBase for details.
Definition gsMaterialMatrixNonlinear.hpp:153
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
Implementation of _dPsi(i,j,c,cinv) for Extended NH materials.
std::enable_if< _com &&(_mat==Material::NH_ext), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for compressible Extended NH materials.
const function_ptr getMu(const index_t &i) const override
Gets Mu_i.
Definition gsMaterialMatrixNonlinear.h:205
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.
std::enable_if< _com, T >::type _Sa_impl(const index_t a) const
Specialization of _Sa(a) for compressible materials.
Definition gsMaterialMatrixNonlinear.hpp:2650
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
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 compressible Extended NH materials.
std::enable_if< _mat==Material::NH &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j) const
Specialization for incompressible Sij(i,j) for NH materials implemented analytically.
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
std::enable_if< _imp==Implementation::Spectral, 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 all materials implemented spectrally.
void setMu(const index_t &i, const gsFunctionSet< T > &Mu_i) override
Sets Mu_i.
Definition gsMaterialMatrixNonlinear.h:202
std::enable_if< _mat==Material::NH_ext &&_imp==Implementation::Analytical, T >::type _Cijkl_impl(const index_t, const index_t, const index_t, const index_t) const
Specialization for incompressible Cijkl(i,j,k,l) for Extended NH materials implemented analytically (...
Definition gsMaterialMatrixNonlinear.h:702
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
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
std::enable_if< _com &&(_mat==Material::MR), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for compressible MR materials.
std::enable_if<!(_imp==Implementation::Spectral), T >::type _Cijkl_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 Cijkl(i,j,k,l,c,cinv) for all materials implemented not spectrally.
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 incompressible materials.
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::MR &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t i, const index_t j) const
Specialization for incompressible Sij(i,j) for MR materials implemented analytically.
std::enable_if< _mat==Material::OG &&_imp==Implementation::Analytical, T >::type _Cijkl_impl(const index_t, const index_t, const index_t, const index_t) const
Specialization for incompressible Cijkl(i,j,k,l) for OG materials implemented analytically (not imple...
Definition gsMaterialMatrixNonlinear.h:696
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
std::enable_if<!_com &&!(_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 comp...
const function_ptr getRatio() const override
Gets the Ratio for the MR material.
Definition gsMaterialMatrixNonlinear.h:199
std::enable_if< _imp==Implementation::Spectral, 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 all materials implemented spectrally.
void pstretchDir_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const override
See gsMaterialMatrixBase for details.
Definition gsMaterialMatrixNonlinear.hpp:257
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
const function_ptr getAlpha(const index_t &i) const override
Gets Alpha_i.
Definition gsMaterialMatrixNonlinear.h:211
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.
Definition gsMaterialMatrixNonlinear.hpp:2456
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
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
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
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
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
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....
Definition gsMaterialMatrixNonlinear.hpp:2592
void setPoissonsRatio(const gsFunctionSet< T > &PoissonsRatio) override
Sets the Poisson's Ratio.
Definition gsMaterialMatrixNonlinear.hpp:1044
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 incompressible NH materials.
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
std::enable_if< _com &&(_mat==Material::OG), T >::type _d2Psi_dab_impl(const index_t a, const index_t b) const
Specialization of _d2Psi_dab(a,b) for compressible OG materials.
std::enable_if< _mat==Material::MR &&_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 MR materials implemented analytically.
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_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
const function_ptr getYoungsModulus() const override
Gets the YoungsModulus.
Definition gsMaterialMatrixNonlinear.hpp:1038
std::enable_if< _imp==Implementation::Spectral, T >::type _Sij_impl(const index_t i, const index_t j) const
Specialization for incompressible Sij(i,j) for all materials implemented spectrally.
std::enable_if< _com &&!(_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 inco...
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:124
const function_ptr getPoissonsRatio() const override
Gets the Poisson's Ratio.
Definition gsMaterialMatrixNonlinear.hpp:1050
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
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
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
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
std::enable_if<!_com &&!(_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.
std::enable_if<!_com &&!(_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 in...
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 incompressible materials.
std::enable_if< _com &&(_mat==Material::OG), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for compressible OG materials.
std::enable_if< _mat==Material::NH &&_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 NH materials implemented analytically.
std::enable_if< _com &&(_mat==Material::MR), T >::type _d2Psi_dab_impl(const index_t a, const index_t b) const
Specialization of _d2Psi_dab(a,b) for compressible MR materials.
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
std::enable_if< _imp==Implementation::Generalized, 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 all materials implemented generally.
std::enable_if<!_com, T >::type _Sa_impl(const index_t a) const
Specialization of _Sa(a) for incompressible materials.
std::enable_if<!_com &&(_mat==Material::OG), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for incompressible OG materials.
std::enable_if< _imp==Implementation::Spectral, 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 all materials implemented spectrally.
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_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
std::enable_if<!_com &&(_mat==Material::NH), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for incompressible NH materials.
std::enable_if< _mat==Material::SvK &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t, const index_t, const gsMatrix< T > &, const gsMatrix< T > &) const
Specialization for compressible Sij(i,j,c,cinv) for SvK materials implemented analytically.
Definition gsMaterialMatrixNonlinear.h:812
std::enable_if<!_com &&(_mat==Material::MR), T >::type _dPsi_da_impl(const index_t a) const
Specialization of _dPsi_da(a) for incompressible MR materials.
std::enable_if< _mat==Material::NH_ext &&_imp==Implementation::Analytical, T >::type _Sij_impl(const index_t, const index_t) const
Specialization for incompressible Sij(i,j) for Extended NH materials implemented analytically (not im...
Definition gsMaterialMatrixNonlinear.h:795
std::enable_if<!_com &&(_mat==Material::NH_ext), T >::type _dPsi_da_impl(const index_t) const
Specialization of _dPsi_da(a) for incompressible Extended NH materials (not implemented)
Definition gsMaterialMatrixNonlinear.h:1114
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.
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
A matrix with arbitrary coefficient type and fixed or dynamic size.
Definition gsMatrix.h:41
A vector with arbitrary coefficient type and fixed or dynamic size.
Definition gsVector.h:37
Material
This class describes a material model.
Definition gsMaterialMatrixUtils.h:51
Implementation
This class describes the way material models are implemented.
Definition gsMaterialMatrixUtils.h:71
MaterialOutput
This class describes the output type.
Definition gsMaterialMatrixUtils.h:99
MatIntegration
This class describes if an object is integrated through-thickness or not.
Definition gsMaterialMatrixUtils.h:36
#define short_t
Definition gsConfig.h:35
#define index_t
Definition gsConfig.h:32
#define GISMO_NO_IMPLEMENTATION
Definition gsDebug.h:129
This object is a cache for computed values from an evaluator.
Base class with dimension in template; used for metric computations.
Provides material matrix utilities.
Provides a list of labeled parameters/options that can be set and accessed easily.
The G+Smo namespace, containing all definitions for the library.