Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / lagrangian / intermediate / clouds / Templates / ThermoCloud / ThermoCloudTemplate.C
bloba18895f2f3d4176673bd7ef8e5f629847e7a93b7
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "ThermoCloudTemplate.H"
27 #include "interpolationCellPoint.H"
28 #include "ThermoParcel.H"
30 #include "HeatTransferModel.H"
32 // * * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * //
34 template<class ParcelType>
35 void Foam::ThermoCloud<ParcelType>::preEvolve()
37     KinematicCloud<ParcelType>::preEvolve();
41 template<class ParcelType>
42 void Foam::ThermoCloud<ParcelType>::evolveCloud()
44     const volScalarField& T = carrierThermo_.T();
45     const volScalarField cp = carrierThermo_.Cp();
47     autoPtr<interpolation<scalar> > rhoInterp = interpolation<scalar>::New
48     (
49         this->interpolationSchemes(),
50         this->rho()
51     );
53     autoPtr<interpolation<vector> > UInterp = interpolation<vector>::New
54     (
55         this->interpolationSchemes(),
56         this->U()
57     );
59     autoPtr<interpolation<scalar> > muInterp = interpolation<scalar>::New
60     (
61         this->interpolationSchemes(),
62         this->mu()
63     );
65     autoPtr<interpolation<scalar> > TInterp = interpolation<scalar>::New
66     (
67         this->interpolationSchemes(),
68         T
69     );
71     autoPtr<interpolation<scalar> > cpInterp = interpolation<scalar>::New
72     (
73         this->interpolationSchemes(),
74         cp
75     );
77     typename ParcelType::trackData td
78     (
79         *this,
80         constProps_,
81         rhoInterp(),
82         UInterp(),
83         muInterp(),
84         TInterp(),
85         cpInterp(),
86         this->g().value()
87     );
89     this->injection().inject(td);
91     if (this->coupled())
92     {
93         resetSourceTerms();
94     }
96     Cloud<ParcelType>::move(td);
100 template<class ParcelType>
101 void Foam::ThermoCloud<ParcelType>::postEvolve()
103     KinematicCloud<ParcelType>::postEvolve();
107 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
109 template<class ParcelType>
110 Foam::ThermoCloud<ParcelType>::ThermoCloud
112     const word& cloudName,
113     const volScalarField& rho,
114     const volVectorField& U,
115     const dimensionedVector& g,
116     basicThermo& thermo,
117     bool readFields
120     KinematicCloud<ParcelType>
121     (
122         cloudName,
123         rho,
124         U,
125         thermo.mu(),
126         g,
127         false
128     ),
129     thermoCloud(),
130     constProps_(this->particleProperties()),
131     carrierThermo_(thermo),
132     heatTransferModel_
133     (
134         HeatTransferModel<ThermoCloud<ParcelType> >::New
135         (
136             this->particleProperties(),
137             *this
138         )
139     ),
140     TIntegrator_
141     (
142         scalarIntegrationScheme::New
143         (
144             "T",
145             this->particleProperties().subDict("integrationSchemes")
146         )
147     ),
148     radiation_(this->particleProperties().lookup("radiation")),
149     hsTrans_
150     (
151         IOobject
152         (
153             this->name() + "hsTrans",
154             this->db().time().timeName(),
155             this->db(),
156             IOobject::NO_READ,
157             IOobject::NO_WRITE,
158             false
159         ),
160         this->mesh(),
161         dimensionedScalar("zero", dimEnergy, 0.0)
162     )
164     if (readFields)
165     {
166         ParcelType::readFields(*this);
167     }
171 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
173 template<class ParcelType>
174 Foam::ThermoCloud<ParcelType>::~ThermoCloud()
178 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
180 template<class ParcelType>
181 void Foam::ThermoCloud<ParcelType>::checkParcelProperties
183     ParcelType& parcel,
184     const scalar lagrangianDt,
185     const bool fullyDescribed
188     KinematicCloud<ParcelType>::checkParcelProperties
189     (
190         parcel,
191         lagrangianDt,
192         fullyDescribed
193     );
195     if (!fullyDescribed)
196     {
197         parcel.T() = constProps_.T0();
198         parcel.cp() = constProps_.cp0();
199     }
203 template<class ParcelType>
204 void Foam::ThermoCloud<ParcelType>::resetSourceTerms()
206     KinematicCloud<ParcelType>::resetSourceTerms();
207     hsTrans_.field() = 0.0;
211 template<class ParcelType>
212 void Foam::ThermoCloud<ParcelType>::evolve()
214     if (this->active())
215     {
216         preEvolve();
218         evolveCloud();
220         postEvolve();
222         info();
223         Info<< endl;
224     }
228 template<class ParcelType>
229 void Foam::ThermoCloud<ParcelType>::info() const
231     KinematicCloud<ParcelType>::info();
235 // ************************************************************************* //