1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright held by original author
7 -------------------------------------------------------------------------------
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
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
29 Templated base class for thermodynamic cloud
31 - Adds to kinematic cloud
38 \*---------------------------------------------------------------------------*/
43 #include "KinematicCloud.H"
44 #include "thermoCloud.H"
45 #include "basicThermo.H"
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 // Forward declaration of classes
54 template<class CloudType>
55 class HeatTransferModel;
57 /*---------------------------------------------------------------------------*\
58 Class ThermoCloud Declaration
59 \*---------------------------------------------------------------------------*/
61 template<class ParcelType>
64 public KinematicCloud<ParcelType>,
67 // Private Member Functions
69 //- Disallow default bitwise copy construct
70 ThermoCloud(const ThermoCloud&);
72 //- Disallow default bitwise assignment
73 void operator=(const ThermoCloud&);
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> > >
97 // Reference to the particle integration schemes
99 //- Temperature integration
100 autoPtr<scalarIntegrationScheme> TIntegrator_;
105 //- Include radiation
111 //- Sensible enthalpy transfer [J/kg]
112 DimensionedField<scalar, volMesh> hsTrans_;
115 // Protected member functions
117 // Cloud evolution functions
133 //- Construct given carrier gas fields
136 const word& cloudName,
137 const volScalarField& rho,
138 const volVectorField& U,
139 const dimensionedVector& g,
141 bool readFields = true
146 virtual ~ThermoCloud();
149 //- Type of parcel the cloud was instantiated for
150 typedef ParcelType parcelType;
157 //- Return the constant properties
158 inline const typename ParcelType::constantProperties&
161 //- Return const access to thermo package
162 inline const basicThermo& carrierThermo() const;
164 //- Return access to thermo package
165 inline basicThermo& carrierThermo();
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;
184 inline bool radiation() const;
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;
212 //- Print cloud information
216 // Cloud evolution functions
218 //- Check parcel properties
219 void checkParcelProperties
222 const scalar lagrangianDt,
223 const bool fullyDescribed
226 //- Reset the spray source terms
227 void resetSourceTerms();
229 //- Evolve the spray (inject, move)
234 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
236 } // End namespace Foam
238 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
240 #include "ThermoCloudI.H"
242 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
245 # include "ThermoCloud.C"
248 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
252 // ************************************************************************* //