KirchhoffShell.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2019-2021 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::regionFaModels::KirchhoffShell
28 
29 Description
30  Vibration-shell finite-area model.
31 
32 Usage
33  Example of the boundary condition specification:
34  \verbatim
35  <patchName>
36  {
37  // Mandatory entries
38  vibrationShellModel KirchhoffShell;
39  f0 <scalar>;
40  f1 <scalar>;
41  f2 <scalar>;
42 
43  // Inherited entries
44  ...
45  nNonOrthCorr <int>; // read from another dict
46  nSubCycles <int>;
47  }
48  \endverbatim
49 
50  where the entries mean:
51  \table
52  Property | Description | Type | Reqd | Deflt
53  vibrationShellModel | Type name: KirchhoffShell | word | yes | -
54  f0 | Damping coefficient [1/s] | scalar | yes | -
55  f1 | Damping coefficient [1/s] | scalar | yes | -
56  f2 | Damping coefficient [1/s] | scalar | yes | -
57  \endtable
58 
59  The inherited entries are elaborated in:
60  - \link vibrationShellModel.H \endlink
61 
62 SourceFiles
63  KirchhoffShell.C
64 
65 \*---------------------------------------------------------------------------*/
66 
67 #ifndef Foam_regionModels_KirchhoffShell_H
68 #define Foam_regionModels_KirchhoffShell_H
69 
70 #include "volFieldsFwd.H"
71 #include "vibrationShellModel.H"
72 #include "faCFD.H"
73 
74 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
75 
76 namespace Foam
77 {
78 namespace regionModels
79 {
80 
81 /*---------------------------------------------------------------------------*\
82  Class KirchhoffShell Declaration
83 \*---------------------------------------------------------------------------*/
84 
85 class KirchhoffShell
86 :
87  public vibrationShellModel
88 {
89  // Private Data
90 
91  // Source term fields
92 
93  //- External surface source [Pa]
94  const areaScalarField ps_;
95 
96  //- Thickness [m]
97  areaScalarField h_;
98 
99  //- Laplace of the displacement
100  areaScalarField laplaceW_;
101 
102  //- Laplace of the Laplace for the displacement
103  areaScalarField laplace2W_;
104 
105  //- Cache w.oldTime() in sub-cycling
106  areaScalarField w0_;
107 
108  //- Cache w.oldTime.oldTime() in sub-cycling
109  areaScalarField w00_;
111  //- Cache laplaceW.oldTime() in sub-cycling
112  areaScalarField laplaceW0_;
113 
114  //- Cache laplace2.oldTime() in sub-cycling
115  areaScalarField laplace2W0_;
116 
117 
118  // Solution parameters
119 
120  //- Damping coefficients [1/s]
121  const dimensionedScalar f0_;
122  const dimensionedScalar f1_;
123  const dimensionedScalar f2_;
124 
125  //- Number of non orthogonal correctors
126  label nNonOrthCorr_;
127 
128  //- Sub cycles
129  label nSubCycles_;
130 
131 
132  // Private Member Functions
133 
134  //- Initialise Kirchhoff shell model
135  bool init(const dictionary& dict);
136 
137  //- Solve energy equation
138  void solveDisplacement();
139 
140 
141 public:
142 
143  //- Runtime type information
144  TypeName("KirchhoffShell");
145 
146 
147  // Constructors
148 
149  //- Construct from components and dict
151  (
152  const word& modelType,
153  const fvMesh& mesh,
154  const dictionary& dict
155  );
156 
157  //- No copy construct
158  KirchhoffShell(const KirchhoffShell&) = delete;
159 
160  //- No copy assignment
161  void operator=(const KirchhoffShell&) = delete;
162 
163 
164  //- Destructor
165  virtual ~KirchhoffShell() = default;
166 
167 
168  // Member Functions
169 
170  // Fields
171 
172  //- Return stiffness
173  const tmp<areaScalarField> D() const;
174 
175  //- Return density [Kg/m3]
176  const tmp<areaScalarField> rho() const;
177 
178 
179  // Evolution
180 
181  //- Pre-evolve thermal baffle
182  virtual void preEvolveRegion();
183 
184  //- Evolve the thermal baffle
185  virtual void evolveRegion();
186 
187 
188  // IO
189 
190  //- Provide some feedback
191  virtual void info();
192 };
193 
194 
195 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
196 
197 } // End namespace regionModels
198 } // End namespace Foam
199 
200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201 
202 
203 #endif
204 
205 // ************************************************************************* //
TypeName("KirchhoffShell")
Runtime type information.
dictionary dict
const tmp< areaScalarField > D() const
Return stiffness.
Forwards and collection of common volume field types.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
const tmp< areaScalarField > rho() const
Return density [Kg/m3].
dynamicFvMesh & mesh
A class for handling words, derived from Foam::string.
Definition: word.H:63
virtual void preEvolveRegion()
Pre-evolve thermal baffle.
virtual void info()
Provide some feedback.
virtual ~KirchhoffShell()=default
Destructor.
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
A class for managing temporary objects.
Definition: HashPtrTable.H:50
virtual void evolveRegion()
Evolve the thermal baffle.
void operator=(const KirchhoffShell &)=delete
No copy assignment.
KirchhoffShell(const word &modelType, const fvMesh &mesh, const dictionary &dict)
Construct from components and dict.
Namespace for OpenFOAM.