GCC Code Coverage Report


Directory: ./
File: HyperelasticityLaws/stVenantKirchhoff.hpp
Date: 2024-04-14 07:32:34
Exec Total Coverage
Lines: 1 3 33.3%
Branches: 0 2 0.0%

Line Branch Exec Source
1 // ______ ______ _ _ _____ ______
2 // | ____| ____| | (_)/ ____| | ____|
3 // | |__ | |__ | | _| (___ ___| |__
4 // | __| | __| | | | |\___ \ / __| __|
5 // | | | |____| |____| |____) | (__| |____
6 // |_| |______|______|_|_____/ \___|______|
7 // Finite Elements for Life Sciences and Engineering
8 //
9 // License: LGL2.1 License
10 // FELiScE default license: LICENSE in root folder
11 //
12 // Main authors: S. Gilles
13 //
14
15 #ifndef __FELISCE_HYPER_ELASTICITY_LAWS_ST_VENANT_KIRCHHOFF_HPP
16 # define __FELISCE_HYPER_ELASTICITY_LAWS_ST_VENANT_KIRCHHOFF_HPP
17
18 // System includes
19
20 // External includes
21
22 // Project includes
23 # include "HyperelasticityLaws/HyperElasticLaw.hpp"
24
25 namespace felisce
26 {
27 /*!
28 * \brief StVenant-Kirchhoff laws, to use a a policy of class HyperElasticityLaw.
29 *
30 * Note: this class defines the St venant Kirchhoff laws using invariants, thus complying with the generic
31 * interface of ElasticityModel class. However, these laws could be defined without those invariants, and
32 * this definition would be probably better in term of calculation time. So if Saint Venant Kirchhoff laws are
33 * to be used extensively, the possibility to implement them without invariants should remain open.
34 */
35 class StVenantKirchhoff
36 : public HyperElasticLaw
37 {
38 public:
39 ///@name Type Definitions
40 ///@{
41
42 /// Base class definition
43 typedef HyperElasticLaw BaseClassType;
44
45 /// Pointer definition of StVenantKirchhoff
46 FELISCE_CLASS_POINTER_DEFINITION(StVenantKirchhoff);
47
48 ///@}
49 ///@name Life Cycle
50 ///@{
51
52 // Constructor.
53 explicit StVenantKirchhoff();
54
55 // Destructor
56 1108 ~StVenantKirchhoff() override = default;
57
58 ///@}
59 ///@name Operators
60 ///@{
61
62 ///@}
63 ///@name Operations
64 ///@{
65
66 /*!
67 * \brief Initialise the arguments kappa1, kappa2 and bulk from the input parameter file.
68 *
69 * If left undefined there will be an exception when the methods are called.
70 */
71 void InitParameters() override;
72
73 // Function W
74 double W() const override;
75
76 // Derivative of W with respect of first invariant (dWdI1)
77 double FirstDerivativeWFirstInvariant() const override;
78
79 // Derivative of W with respect of second invariant (dWdI2)
80 double FirstDerivativeWSecondInvariant() const override;
81
82 // Derivative of W with respect of third invariant (dWdI3)
83 double FirstDerivativeWThirdInvariant() const override;
84
85 // Second derivative of W with respect of first invariant (d2WdI1dI1)
86 double SecondDerivativeWFirstInvariant() const override;
87
88 // Second derivative of W with respect of second invariant (d2WdI2dI2)
89 double SecondDerivativeWSecondInvariant() const override;
90
91 // Second derivative of W with respect of third invariant (d2WdI3dI3)
92 double SecondDerivativeWThirdInvariant() const override;
93
94 // Second derivative of W with respect of first and second invariant (d2WdI1dI2)
95 double SecondDerivativeWFirstAndSecondInvariant() const override;
96
97 // Second derivative of W with respect of first and third invariant (d2WdI1dI3)
98 double SecondDerivativeWFirstAndThirdInvariant() const override;
99
100 // Second derivative of W with respect of second and third invariant (d2WdI2dI3)
101 double SecondDerivativeWSecondAndThirdInvariant() const override;
102
103 ///@}
104 ///@name Access
105 ///@{
106
107 ///@}
108 ///@name Inquiry
109 ///@{
110
111 ///@}
112 ///@name Input and output
113 ///@{
114
115 /**
116 * @brief This returns the name of the hyperlastic law
117 * @return The name of the hyperlastic law
118 */
119 std::string name() override
120 {
121 return "StVenantKirchhoff";
122 }
123 ///@}
124 ///@name Friends
125 ///@{
126
127 ///@}
128 protected:
129 ///@name Protected Life Cycle
130 ///@{
131
132 ///@}
133 ///@name Protected static Member Variables
134 ///@{
135
136 ///@}
137 ///@name Protected member Variables
138 ///@{
139
140 ///@}
141 ///@name Protected Operators
142 ///@{
143
144 ///@}
145 ///@name Protected Operations
146 ///@{
147
148 ///@}
149 ///@name Protected Operators
150 ///@{
151
152 ///@}
153 ///@name Protected Operations
154 ///@{
155
156 ///@}
157 ///@name Protected Access
158 ///@{
159
160 ///@}
161 ///@name Protected Inquiry
162 ///@{
163
164 ///@}
165 ///@name Protected LifeCycle
166 ///@{
167
168 ///@}
169 private:
170 ///@name Private Life Cycle
171 ///@{
172
173 // Forbid recopy, move, etc...
174 StVenantKirchhoff(const StVenantKirchhoff&);
175
176 StVenantKirchhoff(StVenantKirchhoff&&) noexcept ;
177
178 StVenantKirchhoff operator=(const StVenantKirchhoff);
179
180 ///@}
181 ///@name Private Operators
182 ///@{
183
184 ///@}
185 ///@name Private Operations
186 ///@{
187
188 ///@}
189 ///@name Private static Member Variables
190 ///@{
191
192 ///@}
193 ///@name Private member Variables
194 ///@{
195
196 // Lame coefficient lambda.
197 double m_lame_lambda;
198
199 // Lame coefficient mu.
200 double m_lame_mu;
201
202 ///@}
203 ///@name Private Operators
204 ///@{
205
206 ///@}
207 ///@name Private Operations
208 ///@{
209
210 ///@}
211 ///@name Private Access
212 ///@{
213
214 ///@}
215 ///@name Private Inquiry
216 ///@{
217
218 ///@}
219 ///@name Private LifeCycle
220 ///@{
221
222 ///@}
223 };
224
225 } // namespace felisce
226
227 #endif // __FELISCE_HYPER_ELASTICITY_LAWS_ST_VENANT_KIRCHHOFF_HPP_HPP
228