Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / lagrangian / intermediate / submodels / Thermodynamic / InjectionModel / ThermoLookupTableInjection / ThermoLookupTableInjection.H
bloba671c08e7bae9426bf12555152dcedb928a68028
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2008-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
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::ThermoLookupTableInjection
27 Description
28     Particle injection sources read from look-up table. Each row corresponds to
29     an injection site.
31     (
32         (x y z) (u v w) d rho mDot T cp  // injector 1
33         (x y z) (u v w) d rho mDot T cp  // injector 2
34         ...
35         (x y z) (u v w) d rho mDot T cp  // injector N
36     );
38     where:
39         x, y, z = global cartesian co-ordinates [m]
40         u, v, w = global cartesian velocity components [m/s]
41         d       = diameter [m]
42         rho     = density [kg/m3]
43         mDot    = mass flow rate [kg/m3]
44         T       = temperature [K]
45         cp      = specific heat capacity [J/kg/K]
47 SourceFiles
48     ThermoLookupTableInjection.C
50 \*---------------------------------------------------------------------------*/
52 #ifndef ThermoLookupTableInjection_H
53 #define ThermoLookupTableInjection_H
55 #include "InjectionModel.H"
56 #include "kinematicParcelInjectionDataIOList.H"
58 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
60 namespace Foam
63 /*---------------------------------------------------------------------------*\
64                 Class ThermoLookupTableInjection Declaration
65 \*---------------------------------------------------------------------------*/
67 template<class CloudType>
68 class ThermoLookupTableInjection
70     public InjectionModel<CloudType>
72     // Private data
74         //- Name of file containing injector/parcel data
75         const word inputFileName_;
77         //- Injection duration - common to all injection sources
78         const scalar duration_;
80         //- Number of parcels per injector - common to all injection sources
81         const scalar parcelsPerSecond_;
83         //- List of injectors
84         kinematicParcelInjectionDataIOList injectors_;
86         //- List of cell labels corresoponding to injector positions
87         labelList injectorCells_;
89         //- List of tetFace labels corresoponding to injector positions
90         labelList injectorTetFaces_;
92         //- List of tetPt labels corresoponding to injector positions
93         labelList injectorTetPts_;
96 public:
98     //- Runtime type information
99     TypeName("thermoLookupTableInjection");
102     // Constructors
104         //- Construct from dictionary
105         ThermoLookupTableInjection(const dictionary& dict, CloudType& owner);
107         //- Construct copy from owner cloud and injection model
108         ThermoLookupTableInjection
109         (
110             CloudType& owner,
111             const ThermoLookupTableInjection<CloudType>& im
112         );
114         //- Construct and return a clone using supplied owner cloud
115         virtual autoPtr<InjectionModel<CloudType> > clone() const
116         {
117             return autoPtr<InjectionModel<CloudType> >
118             (
119                 new ThermoLookupTableInjection<CloudType>(*this)
120             );
121         }
124     //- Destructor
125     virtual ~ThermoLookupTableInjection();
128     // Member Functions
130         //- Return the end-of-injection time
131         scalar timeEnd() const;
133         //- Number of parcels to introduce relative to SOI
134         virtual label parcelsToInject(const scalar time0, const scalar time1);
136         //- Volume of parcels to introduce relative to SOI
137         virtual scalar volumeToInject(const scalar time0, const scalar time1);
141         // Injection geometry
143             //- Set the injection position and owner cell, tetFace and tetPt
144             virtual void setPositionAndCell
145             (
146                 const label parcelI,
147                 const label nParcels,
148                 const scalar time,
149                 vector& position,
150                 label& cellOwner,
151                 label& tetFaceI,
152                 label& tetPtI
153             );
155             //- Set the parcel properties
156             virtual void setProperties
157             (
158                 const label parcelI,
159                 const label nParcels,
160                 const scalar time,
161                 typename CloudType::parcelType& parcel
162             );
164             //- Flag to identify whether model fully describes the parcel
165             virtual bool fullyDescribed() const
166             {
167                 return true;
168             }
170             //- Return flag to identify whether or not injection of parcelI is
171             //  permitted
172             virtual bool validInjection(const label parcelI);
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
178 } // End namespace Foam
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
182 #ifdef NoRepository
183 #   include "ThermoLookupTableInjection.C"
184 #endif
186 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
188 #endif
190 // ************************************************************************* //