fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / lagrangian / intermediate / clouds / Templates / ThermoCloud / ThermoCloud.H
blobc128bef26f6d935c4674eafbaeeac88d7608ee03
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::ThermoCloud
28 Description
29     Templated base class for thermodynamic cloud
31     - Adds to kinematic cloud
32       - Heat transfer
34 SourceFiles
35     ThermoCloudI.H
36     ThermoCloud.C
38 \*---------------------------------------------------------------------------*/
40 #ifndef ThermoCloud_H
41 #define ThermoCloud_H
43 #include "KinematicCloud.H"
44 #include "thermoCloud.H"
45 #include "basicThermo.H"
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 namespace Foam
52 // Forward declaration of classes
54 template<class CloudType>
55 class HeatTransferModel;
57 /*---------------------------------------------------------------------------*\
58                         Class ThermoCloud Declaration
59 \*---------------------------------------------------------------------------*/
61 template<class ParcelType>
62 class ThermoCloud
64     public KinematicCloud<ParcelType>,
65     public thermoCloud
67     // Private Member Functions
69         //- Disallow default bitwise copy construct
70         ThermoCloud(const ThermoCloud&);
72         //- Disallow default bitwise assignment
73         void operator=(const ThermoCloud&);
76 protected:
78     // Protected data
80         //- Thermo parcel constant properties
81         typename ParcelType::constantProperties constProps_;
84         // References to the carrier gas fields
86             //- Thermodynamics package (basic)
87             basicThermo& carrierThermo_;
90         // References to the cloud sub-models
92             //- Heat transfer model
93             autoPtr<HeatTransferModel<ThermoCloud<ParcelType> > >
94                 heatTransferModel_;
97         // Reference to the particle integration schemes
99             //- Temperature integration
100             autoPtr<scalarIntegrationScheme> TIntegrator_;
103         // Modelling options
105             //- Include radiation
106             Switch radiation_;
109         // Sources
111             //- Sensible enthalpy transfer [J/kg]
112             DimensionedField<scalar, volMesh> hsTrans_;
115     // Protected member functions
117         // Cloud evolution functions
119             //- Pre-evolve
120             void preEvolve();
122             //- Evolve the cloud
123             void evolveCloud();
125             //- Post-evolve
126             void postEvolve();
129 public:
131     // Constructors
133         //- Construct given carrier gas fields
134         ThermoCloud
135         (
136             const word& cloudName,
137             const volScalarField& rho,
138             const volVectorField& U,
139             const dimensionedVector& g,
140             basicThermo& thermo,
141             bool readFields = true
142         );
145     //- Destructor
146     virtual ~ThermoCloud();
149     //- Type of parcel the cloud was instantiated for
150     typedef ParcelType parcelType;
153     // Member Functions
155         // Access
157             //- Return the constant properties
158             inline const typename ParcelType::constantProperties&
159                 constProps() const;
161             //- Return const access to thermo package
162             inline const basicThermo& carrierThermo() const;
164             //- Return access to thermo package
165             inline basicThermo& carrierThermo();
168             // Sub-models
170                 //- Return reference to heat transfer model
171                 inline const HeatTransferModel<ThermoCloud<ParcelType> >&
172                     heatTransfer() const;
175             // Integration schemes
177                 //-Return reference to velocity integration
178                 inline const scalarIntegrationScheme& TIntegrator() const;
181             // Modelling options
183                  //- Radiation flag
184                 inline bool radiation() const;
187             // Sources
189                 // Enthalpy
191                     //- Sensible enthalpy transfer [J/kg]
192                     inline DimensionedField<scalar, volMesh>& hsTrans();
194                     //- Return enthalpy source [J/kg/m3/s]
195                     inline tmp<DimensionedField<scalar, volMesh> > Sh() const;
198                 // Radiation - overrides thermoCloud virtual abstract members
200                     //- Return tmp equivalent particulate emission
201                     inline tmp<volScalarField> Ep() const;
203                     //- Return tmp equivalent particulate absorption
204                     inline tmp<volScalarField> ap() const;
206                     //- Return tmp equivalent particulate scattering factor
207                     inline tmp<volScalarField> sigmap() const;
210         // Check
212             //- Print cloud information
213             void info() const;
216         // Cloud evolution functions
218             //- Check parcel properties
219             void checkParcelProperties
220             (
221                 ParcelType& parcel,
222                 const scalar lagrangianDt,
223                 const bool fullyDescribed
224             );
226             //- Reset the spray source terms
227             void resetSourceTerms();
229             //- Evolve the spray (inject, move)
230             void evolve();
234 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
236 } // End namespace Foam
238 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
240 #include "ThermoCloudI.H"
242 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
244 #ifdef NoRepository
245 #   include "ThermoCloud.C"
246 #endif
248 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
250 #endif
252 // ************************************************************************* //