ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / lagrangian / dieselSpray / injector / multiHoleInjector / multiHoleInjector.H
blob14c899d1990ba77949a75a702c72f1a329291ba9
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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::multiHoleInjector
27 Description
28     The unit injector
30 SourceFiles
31     multiHoleInjectorI.H
32     multiHoleInjector.C
33     multiHoleInjectorIO.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef multiHoleInjector_H
38 #define multiHoleInjector_H
40 #include "injectorType.H"
41 #include "vector.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                      Class multiHoleInjector Declaration
50 \*---------------------------------------------------------------------------*/
52 class multiHoleInjector
54     public injectorType
57 private:
59     typedef VectorSpace<Vector<scalar>, scalar, 2> pair;
61     // Private data
63         dictionary propsDict_;
65         vector centerPosition_;
66         scalar xyAngle_;
67         scalar zAngle_;
68         label nHoles_;
69         scalar umbrellaAngle_;
70         scalar nozzleTipDiameter_;
71         List<scalar> angleSpacing_;
72         scalar d_;
73         scalar Cd_;
74         scalar mass_;
75         label nParcels_;
76         scalarField X_;
77         List<pair> massFlowRateProfile_;
78         List<pair> velocityProfile_;
79         List<pair> injectionPressureProfile_;
80         List<pair> CdProfile_;
81         List<pair> TProfile_;
82         scalar averageParcelMass_;
83         List<vector> direction_;
84         List<vector> position_;
86         bool pressureIndependentVelocity_;
88         //- two orthogonal vectors that are also orthogonal
89         //  to the injection direction
90         List<vector> tangentialInjectionVector1_, tangentialInjectionVector2_;
93     // Private Member Functions
95         //- Disallow default bitwise copy construct
96         multiHoleInjector(const multiHoleInjector&);
98         //- Disallow default bitwise assignment
99         void operator=(const multiHoleInjector&);
101         //- Create two vectors orthonoal to each other
102         //  and the injection vector
103         void setTangentialVectors();
105         //- Return the fraction of the total injected liquid
106         scalar fractionOfInjection(const scalar time) const;
109 public:
111     //- Runtime type information
112     TypeName("multiHoleInjector");
115     // Constructors
117         //- Construct from components
118         multiHoleInjector
119         (
120             const Time& t,
121             const dictionary& dict
122         );
125     //- Destructor
126     virtual ~multiHoleInjector();
129     // Member Functions
131         //- Return number of particles to inject
132         label nParcelsToInject
133         (
134             const scalar t0,
135             const scalar t1
136         ) const;
138         //- Return the injection position
139         const vector position(const label n) const;
141         //- Return the injection position
142         vector position
143         (
144             const label n,
145             const scalar time,
146             const bool twoD,
147             const scalar angleOfWedge,
148             const vector& axisOfSymmetry,
149             const vector& axisOfWedge,
150             const vector& axisOfWedgeNormal,
151             cachedRandom& rndGen
152         ) const;
154         //- Return the number of holes
155         label nHoles() const;
157         //- Return the injector diameter
158         scalar d() const;
160         //- Return the injection direction
161         const vector& direction
162         (
163             const label i,
164             const scalar time
165         ) const;
167         //- Return the mass of the injected particle
168         scalar mass
169         (
170             const scalar t0,
171             const scalar t1,
172             const bool twoD,
173             const scalar angleOfWedge
174         ) const;
176         //- Return the mass injected by the injector
177         scalar mass() const;
179         //- Return the fuel mass fractions of the injected particle
180         const scalarField& X() const;
182         //- Return the temperature profile of the injected particle
183         List<pair> T() const;
185         //- Return the temperature of the injected particle
186         scalar T(const scalar time) const;
188         //- Return the start-of-injection time
189         scalar tsoi() const;
191         //- Return the end-of-injection time
192         scalar teoi() const;
194         //- Return the injected liquid mass
195         scalar injectedMass(const scalar t) const;
197         List<pair> massFlowRateProfile() const
198         {
199             return massFlowRateProfile_;
200         }
202         scalar massFlowRate(const scalar time) const;
204         List<pair> injectionPressureProfile() const
205         {
206             return injectionPressureProfile_;
207         }
209         scalar injectionPressure(const scalar time) const;
211         List<pair> velocityProfile() const
212         {
213             return velocityProfile_;
214         }
216         scalar velocity(const scalar time) const;
218         List<pair> CdProfile() const;
219         scalar Cd(const scalar time) const;
221         vector tan1(const label n) const;
222         vector tan2(const label n) const;
224         void correctProfiles
225         (
226             const liquidMixtureProperties& fuel,
227             const scalar referencePressure
228         );
230         bool pressureIndependentVelocity() const
231         {
232             return pressureIndependentVelocity_;
233         }
237 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
239 } // End namespace Foam
241 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
243 #endif
245 // ************************************************************************* //