Documentation 6b54b78464
Loading...
Searching...
No Matches
nonlinear_models.hpp
Go to the documentation of this file.
1/*!
2 * \file nonlinear_models.hpp
3 * \brief Declarations of nonlinear constitutive models.
4 * \author Ruben Sanchez
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
31
32
33/*!
34 * \class CFEM_NeoHookean_Comp
35 * \brief Class for computing the constitutive and stress tensors for a neo-Hookean material model, compressible.
36 * \ingroup Elasticity_Equations
37 * \author R.Sanchez
38 * \version 8.5.0 "Harrier"
39 */
41
42public:
43 /*!
44 * \brief Constructor of the class.
45 * \param[in] val_nDim - Number of dimensions of the problem.
46 * \param[in] val_nVar - Number of variables of the problem.
47 * \param[in] config - Definition of the particular problem.
48 */
49 CFEM_NeoHookean_Comp(unsigned short val_nDim, unsigned short val_nVar, const CConfig *config);
50
51private:
52 /*!
53 * \brief Compute the plane stress term.
54 * \param[in,out] element_container - The finite element.
55 * \param[in] config - Definition of the problem.
56 * \param[in] iGauss - Index of Gaussian integration point.
57 */
58 void Compute_Plane_Stress_Term(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
59
60 /*!
61 * \brief Compute the constitutive matrix.
62 * \param[in,out] element_container - The finite element.
63 * \param[in] config - Definition of the problem.
64 */
65 void Compute_Constitutive_Matrix(CElement *element_container, const CConfig *config) override;
66
67 /*!
68 * \brief Compute the stress tensor.
69 * \param[in,out] element_container - The finite element.
70 * \param[in] config - Definition of the problem.
71 * \param[in] iGauss - Index of Gaussian integration point.
72 */
73 void Compute_Stress_Tensor(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
74};
75
76
77/*!
78 * \class CFEM_NeoHookean_Comp
79 * \brief Constitutive and stress tensors for a Knowles stored-energy function, nearly incompressible.
80 * \ingroup Elasticity_Equations
81 * \author R.Sanchez
82 * \version 8.5.0 "Harrier"
83 */
85
86 su2double trbbar, term1, term2, Ek, Pr; /*!< \brief Variables of the model calculation. */
87 su2double Bk, Nk; /*!< \brief Parameters b and n of the model. */
88
89public:
90 /*!
91 * \brief Constructor of the class.
92 * \param[in] val_nDim - Number of dimensions of the problem.
93 * \param[in] val_nVar - Number of variables of the problem.
94 * \param[in] config - Definition of the particular problem.
95 */
96 CFEM_Knowles_NearInc(unsigned short val_nDim, unsigned short val_nVar, const CConfig *config);
97
98private:
99 /*!
100 * \brief Compute the plane stress term.
101 * \param[in,out] element_container - The finite element.
102 * \param[in] config - Definition of the problem.
103 * \param[in] iGauss - Index of Gaussian integration point.
104 */
105 void Compute_Plane_Stress_Term(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
106
107 /*!
108 * \brief Compute the constitutive matrix.
109 * \param[in,out] element_container - The finite element.
110 * \param[in] config - Definition of the problem.
111 */
112 void Compute_Constitutive_Matrix(CElement *element_container, const CConfig *config) override;
113
114 /*!
115 * \brief Compute the stress tensor.
116 * \param[in,out] element_container - The finite element.
117 * \param[in] config - Definition of the problem.
118 * \param[in] iGauss - Index of Gaussian integration point.
119 */
120 void Compute_Stress_Tensor(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
121
122};
123
124
125/*!
126 * \class CFEM_DielectricElastomer
127 * \brief Class for computing the constitutive and stress tensors for a dielectric elastomer.
128 * \ingroup Elasticity_Equations
129 * \author R.Sanchez
130 * \version 8.5.0 "Harrier"
131 */
133
134public:
135 /*!
136 * \brief Constructor of the class.
137 * \param[in] val_nDim - Number of dimensions of the problem.
138 * \param[in] val_nVar - Number of variables of the problem.
139 * \param[in] config - Definition of the particular problem.
140 */
141 CFEM_DielectricElastomer(unsigned short val_nDim, unsigned short val_nVar, const CConfig *config);
142
143private:
144 /*!
145 * \brief Compute the plane stress term.
146 * \param[in,out] element_container - The finite element.
147 * \param[in] config - Definition of the problem.
148 * \param[in] iGauss - Index of Gaussian integration point.
149 */
150 inline void Compute_Plane_Stress_Term(CElement *element_container, const CConfig *config, unsigned short iGauss) override { };
151
152 /*!
153 * \brief Compute the constitutive matrix.
154 * \param[in,out] element_container - The finite element.
155 * \param[in] config - Definition of the problem.
156 */
157 void Compute_Constitutive_Matrix(CElement *element_container, const CConfig *config) override;
158
159 /*!
160 * \brief Compute the stress tensor.
161 * \param[in,out] element_container - The finite element.
162 * \param[in] config - Definition of the problem.
163 * \param[in] iGauss - Index of Gaussian integration point.
164 */
165 void Compute_Stress_Tensor(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
166
167};
168
169
170/*!
171 * \class CFEM_IdealDE
172 * \brief Class for computing the constitutive and stress tensors for a nearly-incompressible ideal DE.
173 * \ingroup Elasticity_Equations
174 * \author R.Sanchez
175 * \version 8.5.0 "Harrier"
176 */
178
179 su2double trbbar, Eg, Eg23, Ek, Pr; /*!< \brief Variables of the model calculation. */
180
181public:
182 /*!
183 * \brief Constructor of the class.
184 * \param[in] val_nDim - Number of dimensions of the problem.
185 * \param[in] val_nVar - Number of variables of the problem.
186 * \param[in] config - Definition of the particular problem.
187 */
188 CFEM_IdealDE(unsigned short val_nDim, unsigned short val_nVar, const CConfig *config);
189
190private:
191 /*!
192 * \brief Compute the plane stress term.
193 * \param[in,out] element_container - The finite element.
194 * \param[in] config - Definition of the problem.
195 * \param[in] iGauss - Index of Gaussian integration point.
196 */
197 void Compute_Plane_Stress_Term(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
198
199 /*!
200 * \brief Compute the constitutive matrix.
201 * \param[in,out] element_container - The finite element.
202 * \param[in] config - Definition of the problem.
203 */
204 void Compute_Constitutive_Matrix(CElement *element_container, const CConfig *config) override;
205
206 /*!
207 * \brief Compute the stress tensor.
208 * \param[in,out] element_container - The finite element.
209 * \param[in] config - Definition of the problem.
210 * \param[in] iGauss - Index of Gaussian integration point.
211 */
212 void Compute_Stress_Tensor(CElement *element_container, const CConfig *config, unsigned short iGauss) override;
213
214};
Declaration and inlines of the nonlinear elasticity FE numerics class.
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Abstract class for defining finite elements.
Definition CElement.hpp:58
Abstract class for computing the stiffness matrix of a nonlinear elasticity problem....
Definition CFEANonlinearElasticity.hpp:42
Class for computing the constitutive and stress tensors for a dielectric elastomer.
Definition nonlinear_models.hpp:132
Class for computing the constitutive and stress tensors for a nearly-incompressible ideal DE.
Definition nonlinear_models.hpp:177
Definition nonlinear_models.hpp:84
Class for computing the constitutive and stress tensors for a neo-Hookean material model,...
Definition nonlinear_models.hpp:40
passivedouble su2double
Definition code_config.hpp:181