fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / lagrangian / intermediate / submodels / Thermodynamic / InjectionModel / ThermoLookupTableInjection / ThermoLookupTableInjection.H
blob942fdbe7c5a14a91376d5b1d77bb5f6bc4152499
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::ThermoLookupTableInjection
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  // injector 1
34         (x y z) (u v w) d rho mDot T cp  // injector 2
35         ...
36         (x y z) (u v w) d rho mDot T cp  // 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]
48 SourceFiles
49     ThermoLookupTableInjection.C
51 \*---------------------------------------------------------------------------*/
53 #ifndef ThermoLookupTableInjection_H
54 #define ThermoLookupTableInjection_H
56 #include "InjectionModel.H"
57 #include "kinematicParcelInjectionDataIOList.H"
59 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
61 namespace Foam
64 /*---------------------------------------------------------------------------*\
65                 Class ThermoLookupTableInjection Declaration
66 \*---------------------------------------------------------------------------*/
68 template<class CloudType>
69 class ThermoLookupTableInjection
71     public InjectionModel<CloudType>
73     // Private data
75         //- Name of file containing injector/parcel data
76         const word inputFileName_;
78         //- Injection duration - common to all injection sources
79         const scalar duration_;
81         //- Number of parcels per injector - common to all injection sources
82         const label nParcelsPerSecond_;
84         //- List of injectors
85         kinematicParcelInjectionDataIOList injectors_;
87         //- List of injector cells per injector
88         List<label> injectorCells_;
91 protected:
93     // Protected member functions
95         //- Number of parcels to introduce over the time step relative to SOI
96         label parcelsToInject
97         (
98             const scalar time0,
99             const scalar time1
100         ) const;
102         //- Volume of parcels to introduce over the time step relative to SOI
103         scalar volumeToInject
104         (
105             const scalar time0,
106             const scalar time1
107         ) const;
110 public:
112     //- Runtime type information
113     TypeName("ThermoLookupTableInjection");
116     // Constructors
118         //- Construct from dictionary
119         ThermoLookupTableInjection
120         (
121             const dictionary& dict,
122             CloudType& owner
123         );
126     //- Destructor
127     virtual ~ThermoLookupTableInjection();
130     // Member Functions
132         //- Flag to indicate whether model activates injection model
133         bool active() const;
135         //- Return the end-of-injection time
136         scalar timeEnd() const;
139         // Injection geometry
141             //- Set the injection position and owner cell
142             virtual void setPositionAndCell
143             (
144                 const label parcelI,
145                 const label nParcels,
146                 const scalar time,
147                 vector& position,
148                 label& cellOwner
149             );
151             //- Set the parcel properties
152             virtual void setProperties
153             (
154                 const label parcelI,
155                 const label nParcels,
156                 const scalar time,
157                 typename CloudType::parcelType& parcel
158             );
160             //- Flag to identify whether model fully describes the parcel
161             virtual bool fullyDescribed() const
162             {
163                 return true;
164             }
166             //- Return flag to identify whether or not injection of parcelI is
167             //  permitted
168             virtual bool validInjection(const label parcelI);
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 } // End namespace Foam
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
178 #ifdef NoRepository
179 #   include "ThermoLookupTableInjection.C"
180 #endif
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 #endif
186 // ************************************************************************* //