ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / finiteVolume / cfdTools / general / fieldSources / basicSource / actuationDiskSource / actuationDiskSource.H
blob8b54ac08710686b5f43e3555abbd07685f62ddb7
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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
73 protected:
75     // Protected data
77         //- Sub dictionary with actuationDisk information
78         const dictionary& dict_;
80         //- Disk area normal
81         vector diskDir_;
83         //- Power coefficient
84         scalar Cp_;
86         //- Thrust coefficient
87         scalar Ct_;
89         //- Disk area
90         scalar diskArea_;
93 private:
95     // Private Member Functions
97         //- Check data
98         void checkData() const;
100         //- Add resistance to the UEqn
101         template<class RhoFieldType>
102         void addActuationDiskAxialInertialResistance
103         (
104             vectorField& Usource,
105             const labelList& cells,
106             const scalarField& V,
107             const RhoFieldType& rho,
108             const vectorField& U
109         ) const;
111         //- Disallow default bitwise copy construct
112         actuationDiskSource(const actuationDiskSource&);
114         //- Disallow default bitwise assignment
115         void operator=(const actuationDiskSource&);
118 public:
120     //- Runtime type information
121     TypeName("actuationDiskSource");
124     // Constructors
126         //- Construct from components
127         actuationDiskSource
128         (
129             const word& name,
130             const word& modelType,
131             const dictionary& dict,
132             const fvMesh& mesh
133         );
136     //- Destructor
137     virtual ~actuationDiskSource()
138     {}
141     // Member Functions
143         // Access
145             //- Return Cp
146             scalar Cp() const
147             {
148                 return Cp_;
149             }
151             //- Return Ct
152             scalar Ct() const
153             {
154                 return Ct_;
155             }
157             //- Normal disk direction
158             const vector& diskDir() const
159             {
160                 return diskDir_;
161             }
163             //- Disk area
164             scalar diskArea() const
165             {
166                 return diskArea_;
167             }
170         // Public Functions
172             //-Source term to fvMatrix<vector>
173             virtual void addSu(fvMatrix<vector>& UEqn);
175             //-Source term to fvMatrix<scalar>
176             virtual void addSu(fvMatrix<scalar>& UEqn){}
179         // I-O
181             //- Write data
182             virtual void writeData(Ostream&) const;
184             //- Read dictionary
185             virtual bool read(const dictionary& dict);
189 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
191 } // End namespace Foam
193 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
195 #ifdef NoRepository
196 #   include "actuationDiskSourceTemplates.C"
197 #endif
199 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201 #endif
203 // ************************************************************************* //