Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / finiteVolume / cfdTools / general / fieldSources / basicSource / actuationDiskSource / actuationDiskSource.H
blob9646a9641fdf607da6ccbc3be7336c8567f14a46
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2011 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
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 the
13     Free Software Foundation; either version 3 of the License, or (at your
14     option) any later version.
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.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::actuationDiskSource
28 Description
29     Actuation disk zone definition.
30     Constant values for momentum source for actuation disk
32     T = 2*rho*A*sqr(Uo)*a*(1-a)
33     U1 = (1 -a)Uo
34     where:
35           A: disk area
36           Uo: upstream velocity
37           a: 1 - Cp/Ct
38           U1: velocity at the disk
40 SourceFiles
41     actuationDiskSource.C
42     actuationDiskSourceTemplates.C
44 \*---------------------------------------------------------------------------*/
46 #ifndef actuationDiskSource_H
47 #define actuationDiskSource_H
49 #include "IOdictionary.H"
50 #include "coordinateSystem.H"
51 #include "coordinateSystems.H"
52 #include "wordList.H"
53 #include "labelList.H"
54 #include "DimensionedField.H"
55 #include "volFieldsFwd.H"
56 #include "fvMatricesFwd.H"
57 #include "basicSource.H"
59 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
61 namespace Foam
64 /*---------------------------------------------------------------------------*\
65                      Class actuationDiskSource Declaration
66 \*---------------------------------------------------------------------------*/
68 class actuationDiskSource
70     public basicSource
72     // Private data
74         //- Sub dictionary with actuationDisk information
75         const dictionary& dict_;
77         //- Disk area normal
78         vector diskDir_;
80         //- Power coefficient
81         scalar Cp_;
83         //- Thrust coefficient
84         scalar Ct_;
86         //- Disk area
87         scalar diskArea_;
90     // Private Member Functions
92         //- Check data
93         void checkData() const;
95         //- Add resistance to the UEqn
96         template<class RhoFieldType>
97         void addActuationDiskAxialInertialResistance
98         (
99             vectorField& Usource,
100             const labelList& cells,
101             const scalarField& V,
102             const RhoFieldType& rho,
103             const vectorField& U
104         ) const;
106         //- Disallow default bitwise copy construct
107         actuationDiskSource(const actuationDiskSource&);
109         //- Disallow default bitwise assignment
110         void operator=(const actuationDiskSource&);
113 public:
115     //- Runtime type information
116     TypeName("actuationDiskSource");
119     // Constructors
121         //- Construct from components
122         actuationDiskSource
123         (
124             const word& name,
125             const dictionary& dict,
126             const fvMesh& mesh
127         );
130     //- Destructor
131     virtual ~actuationDiskSource()
132     {}
135     // Member Functions
137         // Access
139             //- Return Cp
140             scalar Cp() const
141             {
142                 return Cp_;
143             }
145             //- Return Ct
146             scalar Ct() const
147             {
148                 return Ct_;
149             }
151             //- Normal disk direction
152             const vector& diskDir() const
153             {
154                 return diskDir_;
155             }
157             //- Disk area
158             scalar diskArea() const
159             {
160                 return diskArea_;
161             }
164         // Public Functions
166             //-Source term to fvMatrix<vector>
167             virtual void addSu(fvMatrix<vector>& UEqn);
169             //-Source term to fvMatrix<scalar>
170             virtual void addSu(fvMatrix<scalar>& UEqn){}
173         // I-O
175             //- Write data
176             virtual void writeData(Ostream&) const;
178             //- Read dictionary
179             virtual bool read(const dictionary& dict);
183 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
185 } // End namespace Foam
187 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
189 #ifdef NoRepository
190 #   include "actuationDiskSourceTemplates.C"
191 #endif
193 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
195 #endif
197 // ************************************************************************* //