RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
adiposeTissue_SommerHolzapfel.hh
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the C++-library RFFGen. */
4 /* Copyright 2015 Lars Lubkoll */
5 /* */
6 /* RFFGen is free software: you can redistribute it and/or modify */
7 /* it under the terms of the GNU General Public License as published by */
8 /* the Free Software Foundation, either version 3 of the License, or */
9 /* (at your option) any later version. */
10 /* */
11 /* RFFGen is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public License */
17 /* along with RFFGen. If not, see <http://www.gnu.org/licenses/>. */
18 /* */
19 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
20 
21 #ifndef RFFGEN_ADIPOSE_TISSUE_SOMMER_HOLZAPFEL_HH
22 #define RFFGEN_ADIPOSE_TISSUE_SOMMER_HOLZAPFEL_HH
23 
24 #include "../../LinearAlgebra/principalInvariants.hh"
25 #include "../../LinearAlgebra/mixedInvariants.hh"
26 #include "../../LinearAlgebra/strainTensor.hh"
27 #include "../../LinearAlgebra/tensorProduct.hh"
28 #include "../../CMath/exp.hh"
29 #include "../../generate.hh"
30 
38 namespace RFFGen
39 {
43  namespace Detail
44  {
45  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>() >
46  auto generateIncompressibleAdiposeTissue_SommerHolzapfel(double cCells, double k1, double k2, double kappa, const Matrix& M, const Matrix& F)
47  {
48  using CMath::exp;
49  using namespace LinearAlgebra;
50  auto i1 = FirstPrincipalInvariant<Matrix>(F);
51  auto si1 = ShiftedFirstPrincipalInvariant<Matrix,offset>(F);
52  auto i4 = FirstMixedInvariant<Matrix>(F,M);
53 
54  auto aniso = kappa*i1 + (1-3*kappa)*i4 - 1;
55  return ( cCells*si1 +
56  (k1/k2)*( exp( k2*(aniso^2) ) - 1)
57  ) << LeftCauchyGreenStrainTensor<Matrix>(F);
58  }
59  }
80  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>()>
81  auto incompressibleAdiposeTissue_SommerHolzapfel(double cCells, double k1, double k2, double kappa, const Matrix& M, const Matrix& F)
82  {
83  return Detail::generateIncompressibleAdiposeTissue_SommerHolzapfel<Matrix,offset>(cCells,k1,k2,kappa,M,F);
84  }
85 
100  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>()>
101  auto incompressibleAdiposeTissue_SommerHolzapfel(const Matrix& M, const Matrix& F)
102  {
103  return incompressibleAdiposeTissue_SommerHolzapfel<Matrix,offset>(0.15,0.8,47.3,0.09,M,F);
104  }
105 
106 
125  template <class Inflation, class Compression, class Matrix , int offset = LinearAlgebra::dimension<Matrix>()>
126  auto compressibleAdiposeTissue_SommerHolzapfel(double cCells, double k1, double k2, double kappa, double d0, double d1, const Matrix& M, const Matrix& F)
127  {
128  return Detail::generateIncompressibleAdiposeTissue_SommerHolzapfel<Matrix,offset>(cCells,k1,k2,kappa,M,F) + volumetricPenalty<Inflation,Compression>(d0,d1,F);
129  }
130 
146  template <class Inflation, class Compression, class Matrix , int offset = LinearAlgebra::dimension<Matrix>()>
147  auto compressibleAdiposeTissue_SommerHolzapfel(double d0, double d1, const Matrix& M, const Matrix& F)
148  {
149  return compressibleAdiposeTissue_SommerHolzapfel<Inflation,Compression,Matrix,offset>(0.15,0.8,47.3,0.09,d0,d1,M,F);
150  }
151 }
152 
153 #endif // RFFGEN_ADIPOSE_TISSUE_SOMMER_HOLZAPFEL_HH
auto compressibleAdiposeTissue_SommerHolzapfel(double cCells, double k1, double k2, double kappa, double d0, double d1, const Matrix &M, const Matrix &F)
Compressible version of the model for adipose tissue of Sommer et al.: Multiaxial mechanical properti...
Definition: adiposeTissue_SommerHolzapfel.hh:126
auto incompressibleAdiposeTissue_SommerHolzapfel(double cCells, double k1, double k2, double kappa, const Matrix &M, const Matrix &F)
Model for adipose tissue of Sommer et al.: Multiaxial mechanical properties and constitutive modeling...
Definition: adiposeTissue_SommerHolzapfel.hh:81