FreeFOAM The Cross-Platform CFD Toolkit
SRFModel.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 | Copyright (C) 1991-2011 OpenCFD Ltd.
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Namespace
25  Foam::SRF
26 
27 Description
28  Namespace for single rotating frame (SRF) models
29 
30 Class
31  Foam::SRF::SRFModel
32 
33 Description
34  Top level model for single rotating frame
35  - Steady state only - no time derivatives included
36 
37 SourceFiles
38  SRFModel.C
39 
40 \*---------------------------------------------------------------------------*/
41 
42 #ifndef SRFModel_H
43 #define SRFModel_H
44 
45 #include <OpenFOAM/IOdictionary.H>
46 #include <OpenFOAM/autoPtr.H>
48 #include <finiteVolume/fvMesh.H>
49 #include <finiteVolume/volFields.H>
50 #include <OpenFOAM/vectorField.H>
51 
52 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
53 
54 namespace Foam
55 {
56 namespace SRF
57 {
58 
59 /*---------------------------------------------------------------------------*\
60  Class SRFModel Declaration
61 \*---------------------------------------------------------------------------*/
62 
63 class SRFModel
64 :
65  public IOdictionary
66 {
67 
68 protected:
69 
70  // Protected data
71 
72  //- Reference to the relative velocity field
73  const volVectorField& Urel_;
74 
75  //- Reference to the mesh
76  const fvMesh& mesh_;
77 
78  //- Axis of rotation
79  vector axis_;
80 
81  //- SRF model coeficients dictionary
83 
84  //- Angular velocity of the frame (rad/s)
86 
87 
88 private:
89 
90  // Private Member Functions
91 
92  //- Disallow default bitwise copy construct
93  SRFModel(const SRFModel&);
94 
95  //- Disallow default bitwise assignment
96  void operator=(const SRFModel&);
97 
98 
99 public:
100 
101  //- Runtime type information
102  TypeName("SRFModel");
103 
104 
105  // Declare runtime constructor selection table
106 
108  (
109  autoPtr,
110  SRFModel,
111  dictionary,
112  (
113  const volVectorField& Urel
114  ),
115  (Urel)
116  );
117 
118 
119  // Constructors
120 
121  //- Construct from components
122  SRFModel
123  (
124  const word& type,
125  const volVectorField& Urel
126  );
127 
128 
129  // Selectors
130 
131  //- Return a reference to the selected SRF model
132  static autoPtr<SRFModel> New
133  (
134  const volVectorField& Urel
135  );
136 
137 
138  // Destructor
139 
140  virtual ~SRFModel();
141 
142 
143  // Member Functions
144 
145  // Edit
146 
147  //- Read radiationProperties dictionary
148  virtual bool read();
149 
150 
151  // Access
152 
153  //- Return the axis of rotation
154  const vector& axis() const;
155 
156  //- Return the angular velocity field [rad/s]
157  const dimensionedVector& omega() const;
158 
159  //- Return the coriolis force
161 
162  //- Return the centrifugal force
164 
165  //- Source term component for momentum equation
167 
168  //- Return velocity vector from positions
169  vectorField velocity(const vectorField& positions) const;
170 
171  //- Return velocity of SRF for complete mesh
172  tmp<volVectorField> U() const;
173 
174  //- Return absolute velocity for complete mesh
175  tmp<volVectorField> Uabs() const;
176 };
177 
178 
179 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 
181 } // End namespace SRF
182 } // End namespace Foam
183 
184 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
185 
186 #endif
187 
188 // ************************ vim: set sw=4 sts=4 et: ************************ //