RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
skinTissue_Hendriks.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_EXAMPLES_SKIN_HENDRIKS_HH
22 #define RFFGEN_EXAMPLES_SKIN_HENDRIKS_HH
23 
24 #include "../../LinearAlgebra/strainTensor.hh"
25 #include "../../LinearAlgebra/unitMatrix.hh"
26 #include "../../LinearAlgebra/principalInvariants.hh"
27 #include "../../generate.hh"
28 
35 namespace RFFGen
36 {
48  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>()>
49  auto incompressibleSkin_Hendriks(double c0, double c1, const Matrix& F)
50  {
51  using namespace LinearAlgebra;
52  auto i1 = ShiftedFirstPrincipalInvariant<Matrix,offset>();
53  auto i2 = ShiftedSecondPrincipalInvariant<Matrix,offset>();
54 
55  auto S = LeftCauchyGreenStrainTensor<Matrix>(F);
56  return ( c0*i1 + c1*i1*i2 ) << S;
57 
58  }
59 
72  template <class Matrix , int offset = LinearAlgebra::dimension<Matrix>()>
73  auto incompressibleSkin_Hendriks(const Matrix& F)
74  {
75  return incompressibleSkin_Hendriks<Matrix,offset>(9.4,82.,F);
76  }
77 
78 
92  template <class InflationPenalty, class CompressionPenalty, class Matrix, int offset = LinearAlgebra::dimension<Matrix>()>
93  auto compressibleSkin_Hendriks(double c0, double c1, double d0, double d1, const Matrix& F)
94  {
95  return incompressibleSkin_Hendriks<Matrix,offset>(c0,c1,F) + volumetricPenalty<InflationPenalty,CompressionPenalty>(d0,d1,F);
96  }
97 
112  template < class InflationPenalty , class CompressionPenalty , class Matrix , int offset = LinearAlgebra::dimension<Matrix>() >
113  auto compressibleSkin_Hendriks(double d0, double d1, const Matrix& F)
114  {
115  return compressibleSkin_Hendriks<InflationPenalty,CompressionPenalty,Matrix,offset>(9.4,82.,d0,d1,F);
116  }
117 }
118 
119 #endif // RFFGEN_EXAMPLES_SKIN_HENDRIKS_HH
auto compressibleSkin_Hendriks(double c0, double c1, double d0, double d1, const Matrix &F)
Compressible version of the model for skin tissue of Hendriks: Mechanical behavior of human epidermal...
Definition: skinTissue_Hendriks.hh:93
auto incompressibleSkin_Hendriks(double c0, double c1, const Matrix &F)
Model for skin tissue of Hendriks: Mechanical behavior of human epidermal and dermal layers in vivo...
Definition: skinTissue_Hendriks.hh:49