ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / lagrangian / dieselSpray / injector / definedInjector / definedInjector.H
blob21f4e0bebdca2ea1cd0c2e8737ac6f1fba4cd399
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::definedInjector
27 Description
28     User specified MFR vs time and velocity vs time
30 SourceFiles
31     definedInjectorI.H
32     definedInjector.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef definedInjector_H
37 #define definedInjector_H
39 #include "injectorType.H"
40 #include "vector.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                       Class definedInjector Declaration
49 \*---------------------------------------------------------------------------*/
51 class definedInjector
53     public injectorType
56 private:
58     // Private data
60         typedef VectorSpace<Vector<scalar>, scalar, 2> pair;
62         dictionary propsDict_;
64         vector position_;
65         vector direction_;
66         scalar d_;
67         scalar mass_;
68         scalar T_;
69         label nParcels_;
70         scalarField X_;
71         List<pair> massFlowRateProfile_;
72         List<pair> velocityProfile_;
73         List<pair> injectionPressureProfile_;
74         List<pair> CdProfile_;
75         List<pair> TProfile_;
76         scalar averageParcelMass_;
78         bool pressureIndependentVelocity_;
80         //- two orthogonal vectors that are also orthogonal
81         //  to the injection direction
82         vector tangentialInjectionVector1_, tangentialInjectionVector2_;
85     // Private Member Functions
87         //- Disallow default bitwise copy construct
88         definedInjector(const definedInjector&);
90         //- Disallow default bitwise assignment
91         void operator=(const definedInjector&);
93         //- Create two vectors orthonoal to each other
94         //  and the injection vector
95         void setTangentialVectors();
97         //- Return the fraction of the total injected liquid
98         scalar fractionOfInjection(const scalar time) const;
100         //- Return the instantaneous injection velocity
101         scalar injectionVelocity(const scalar) const;
104 public:
106     //- Runtime type information
107     TypeName("definedInjector");
110     // Constructors
112         //- Construct from components
113         definedInjector(const Time& t, const dictionary& dict);
116     //- Destructor
117     virtual ~definedInjector();
120     // Member Functions
122         //- Return number of particles to inject
123         label nParcelsToInject
124         (
125             const scalar t0,
126             const scalar t1
127         ) const;
129         //- Return the injection position
130         const vector position(const label n) const;
132         //- Return the injection position
133         vector position
134         (
135             const label n,
136             const scalar time,
137             const bool twoD,
138             const scalar angleOfWedge,
139             const vector& axisOfSymmetry,
140             const vector& axisOfWedge,
141             const vector& axisOfWedgeNormal,
142             cachedRandom& rndGen
143         ) const;
145         //- Return the number of holes
146         label nHoles() const;
148         //- Return the injector diameter
149         scalar d() const;
151         //- Return the injection direction
152         const vector& direction
153         (
154             const label i,
155             const scalar time
156         ) const;
158         //- Return the mass of the injected particle
159         scalar mass
160         (
161             const scalar t0,
162             const scalar t1,
163             const bool twoD,
164             const scalar angleOfWedge
165         ) const;
167         //- Return the mass injected by the injector
168         scalar mass() const;
170         //- Return the fuel mass fractions of the injected particle
171         const scalarField& X() const;
173         //- Return the temperature profile of the injected particle
174         List<pair> T() const;
176         //- Return the temperature of the injected particle
177         scalar T(const scalar time) const;
179         //- Return the start-of-injection time
180         scalar tsoi() const;
182         //- Return the end-of-injection time
183         scalar teoi() const;
185         //- Return the injected liquid mass
186         scalar injectedMass(const scalar t) const;
188         List<pair> massFlowRateProfile() const
189         {
190             return massFlowRateProfile_;
191         }
193         scalar massFlowRate(const scalar time) const;
195         List<pair> injectionPressureProfile() const
196         {
197             return injectionPressureProfile_;
198         }
200         scalar injectionPressure(const scalar time) const;
202         List<pair> velocityProfile() const
203         {
204             return velocityProfile_;
205         }
207         scalar velocity(const scalar time) const;
209         List<pair> CdProfile() const
210         {
211             return CdProfile_;
212         }
214         scalar Cd(const scalar time) const;
216         vector tan1(const label n) const;
217         vector tan2(const label n) const;
219         void correctProfiles
220         (
221             const liquidMixtureProperties& fuel,
222             const scalar referencePressure
223         );
225         bool pressureIndependentVelocity() const
226         {
227             return pressureIndependentVelocity_;
228         }
232 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
234 } // End namespace Foam
236 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
238 #endif
240 // ************************************************************************* //