fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / lagrangian / intermediate / submodels / Reacting / InjectionModel / ReactingLookupTableInjection / ReactingLookupTableInjection.H
blob1f16dffb375839110950af2f7116464d2614ba8e
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 2 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::ReactingLookupTableInjection
28 Description
29     Particle injection sources read from look-up table. Each row corresponds to
30     an injection site.
32     (
33         (x y z) (u v w) d rho mDot T cp (Y0..YN)  // injector 1
34         (x y z) (u v w) d rho mDot T cp (Y0..YN)  // injector 2
35         ...
36         (x y z) (u v w) d rho mDot T cp (Y0..YN)  // injector N
37     );
39     where:
40         x, y, z = global cartesian co-ordinates [m]
41         u, v, w = global cartesian velocity components [m/s]
42         d       = diameter [m]
43         rho     = density [kg/m3]
44         mDot    = mass flow rate [kg/m3]
45         T       = temperature [K]
46         cp      = specific heat capacity [J/kg/K]
47         Y       = list of mass fractions
49 SourceFiles
50     ReactingLookupTableInjection.C
52 \*---------------------------------------------------------------------------*/
54 #ifndef ReactingLookupTableInjection_H
55 #define ReactingLookupTableInjection_H
57 #include "InjectionModel.H"
58 #include "reactingParcelInjectionDataIOList.H"
60 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
62 namespace Foam
65 /*---------------------------------------------------------------------------*\
66                 Class ReactingLookupTableInjection Declaration
67 \*---------------------------------------------------------------------------*/
69 template<class CloudType>
70 class ReactingLookupTableInjection
72     public InjectionModel<CloudType>
74     // Private data
76         //- Name of file containing injector/parcel data
77         const word inputFileName_;
79         //- Injection duration - common to all injection sources
80         const scalar duration_;
82         //- Number of parcels per injector - common to all injection sources
83         const label nParcelsPerSecond_;
85         //- List of injectors
86         reactingParcelInjectionDataIOList injectors_;
88         //- List of injector cells per injector
89         List<label> injectorCells_;
92 protected:
94     // Protected member functions
96         //- Number of parcels to introduce over the time step relative to SOI
97         label parcelsToInject
98         (
99             const scalar time0,
100             const scalar time1
101         ) const;
103         //- Volume of parcels to introduce over the time step relative to SOI
104         scalar volumeToInject
105         (
106             const scalar time0,
107             const scalar time1
108         ) const;
111 public:
113     //- Runtime type information
114     TypeName("ReactingLookupTableInjection");
117     // Constructors
119         //- Construct from dictionary
120         ReactingLookupTableInjection
121         (
122             const dictionary& dict,
123             CloudType& owner
124         );
127     //- Destructor
128     virtual ~ReactingLookupTableInjection();
131     // Member Functions
133         //- Flag to indicate whether model activates injection model
134         bool active() const;
136         //- Return the end-of-injection time
137         scalar timeEnd() const;
140         // Injection geometry
142             //- Set the injection position and owner cell
143             virtual void setPositionAndCell
144             (
145                 const label parcelI,
146                 const label nParcels,
147                 const scalar time,
148                 vector& position,
149                 label& cellOwner
150             );
152             //- Set the parcel properties
153             virtual void setProperties
154             (
155                 const label parcelI,
156                 const label nParcels,
157                 const scalar time,
158                 typename CloudType::parcelType& parcel
159             );
161             //- Flag to identify whether model fully describes the parcel
162             virtual bool fullyDescribed() const;
164             //- Return flag to identify whether or not injection of parcelI is
165             //  permitted
166             virtual bool validInjection(const label parcelI);
170 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 } // End namespace Foam
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
176 #ifdef NoRepository
177 #   include "ReactingLookupTableInjection.C"
178 #endif
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
182 #endif
184 // ************************************************************************* //