thermophysicalPredictor.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2022-2026 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
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.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "XiFluid.H"
27 #include "bXiIgnition.H"
28 
29 #include "fvcDdt.H"
30 #include "fvmDiv.H"
31 #include "fvcSup.H"
32 #include "fvcFlux.H"
33 
34 #include "EulerDdtScheme.H"
35 #include "gaussConvectionScheme.H"
36 #include "upwind.H"
37 
38 #include "CMULES.H"
39 
40 
41 // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
42 
44 {
46 
47  // Progress variable
49 
50  // Unburnt gas density
51  const volScalarField& rhou(thermo_.uThermo().rho());
52 
53  // Calculate flame normal etc.
54  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 
56  volVectorField n("n", fvc::grad(b));
57 
58  volScalarField mgb("mgb", mag(n));
59 
60  const dimensionedScalar dMgb
61  (
62  "dMgb",
63  mgbCoeff_*
64  (b*c*mgb)().weightedAverage(mesh.V())
65  /((b*c)().weightedAverage(mesh.V()) + small)
66  + dimensionedScalar(mgb.dimensions(), small)
67  );
68 
69  // Stabilise mgb for division here and sub-models
70  mgb = max(mgb, dMgb);
71 
72  const surfaceVectorField SfHat(mesh.Sf()/mesh.magSf());
74  nfVec += SfHat*(fvc::snGrad(b) - (SfHat & nfVec));
75  nfVec /= max(mag(nfVec), dMgb);
76  const surfaceScalarField nf("nf", mesh.Sf() & nfVec);
77  n /= mgb;
78 
79  const volScalarField Db(XiModel_->Db());
80 
81  // Turbulent flame speed volumetric flux
82  const surfaceScalarField phivSt("phivSt", fvc::interpolate(Su*Xi)*nf);
83 
84  // Turbulent flame speed mass flux
85  surfaceScalarField phiSt("phiSt", fvc::interpolate(rhou*Su*Xi)*nf);
86 
87  const dimensionedScalar mgbStab(2*dMgb/bMin_/mgbCoeff_);
88 
89  surfaceScalarField phib("phib", phi + phiSt);
90 
92  tmp<surfaceScalarField> tbPhiStUD;
93  tmp<surfaceScalarField> tbLaplacianPhi;
94  tmp<surfaceScalarField> tbLaplacianPhiCorr;
97 
98  // Bounded implicit b predictor
99  {
100  // Construct the bounded upwind interpolator for b
101  const upwind<scalar> bUD(mesh, phib);
102 
103  // Construct the corrected Laplacian
104  fvScalarMatrix bLaplacian(fvm::laplacian(Db, b));
105 
106  // Set the Laplacian correction source to 0
107  bLaplacian.source() = Zero;
108 
109  // Construct the b convection matrix
110  fvScalarMatrix bPhi
111  (
112  fv::gaussConvectionScheme<scalar>(mesh, phib, bUD).fvmDiv(phi, b)
113  );
114 
115  // Construct the b flame propagation matrix
116  fvScalarMatrix bPhiSt
117  (
118  fv::gaussConvectionScheme<scalar>(mesh, phib, bUD).fvmDiv(phiSt, b)
119  );
120 
121  const volScalarField::Internal divPhiSt(fvc::div(phiSt));
122 
123  //- Construct the b source matrix
124  fvScalarMatrix bSource
125  (
126  fvModels().source(rho, b)
127  - fvm::Sp(rhou*Su*Xi*mgbStab*max(bMin_ - b, scalar(0)), b)
128  );
129 
130  // Assemble the bounded b matrix
131  fvScalarMatrix bEqn
132  (
134  + bPhi + bPhiSt
135  - bLaplacian
136  ==
137  bSource
138  + fvm::Sp(divPhiSt, b)
139  );
140 
141  // Solve for b and constrain
142  bEqn.relax();
143  fvConstraints().constrain(bEqn);
144  bEqn.solve();
146 
147  // Set the fluxes for the MULES corrector
148 
149  tbPhiUD = bPhi.flux();
150  tbPhiStUD = bPhiSt.flux();
151 
152  tbLaplacianPhi = -bLaplacian.flux();
153  if (bLaplacian.faceFluxCorrectionPtr())
154  {
155  tbLaplacianPhiCorr = -*bLaplacian.faceFluxCorrectionPtr();
156  }
157 
158  tSu = bSource.Su() + divPhiSt*b;
159  tSp = bSource.Sp();
160  }
161 
162  const volScalarField::Internal& Sp = tSp();
163 
164  const word divbName("div(phi,b)");
165 
166  // Higher-order face interpolate of b
167  const surfaceScalarField bf
168  (
170  (
171  mesh,
172  phib,
173  mesh.schemes().div(divbName)
174  )().interpolate(phib, b)
175  );
176 
177  // Higher-order convection and flame-propagation face-fluxes
178  const surfaceScalarField bPhi(phi*bf);
179  const surfaceScalarField bPhiSt(phiSt*bf);
180 
181  // Higher-order convection and flame-propagation face-flux corrections
182  surfaceScalarField bPhiCorr(bPhi - tbPhiUD());
183  surfaceScalarField bPhiStCorr(bPhiSt - tbPhiStUD());
184 
185  if (tbLaplacianPhiCorr.valid())
186  {
187  bPhiCorr += tbLaplacianPhiCorr();
188  }
189 
190  const MULES::control MULEScontrols(mesh.solution().solverDict(b.name()));
191 
192  // Cache a list of the flux corrections to be limited
193  UPtrList<surfaceScalarField> bPhiCorrs{&bPhiCorr, &bPhiStCorr};
194 
195  // MULES limited bounded explicit b corrector
197  (
198  MULEScontrols,
199  rho,
200  b,
201  tbPhiUD() + tbPhiStUD(),
202  bPhiCorrs,
203  Sp,
204  oneField(),
205  zeroField()
206  );
207 
208  // Recalculate c from b
209  c = scalar(1) - b;
210 
211  // Correct the flame wrinkling
212  XiModel_->correct();
213 
214  // Correct the laminar flame speed
215  SuModel_->correct();
216 
217  // Set the b-equation convection+diffusion flux
218  // for the solution of the unburnt gas energy and species
219  phib = tbPhiUD() + tbLaplacianPhi() + bPhiCorr;
220 
221  // Set the c-equation convection+diffusion flux
222  // for the solution of the burnt gas energy and species
223  const surfaceScalarField phic("phic", phi - phib);
224 
225  // Set the b-equation source term
226  // for the solution of the unburnt and burnt gas energy and species
227  const volScalarField::Internal bSource
228  (
229  "bSource",
230  tSu() + tSp()*b()
231  - fvc::div(tbPhiStUD() + bPhiStCorr)()
232  );
233 
234  // Set the unburnt and burnt gas stabilisation coefficients
235  const volScalarField::Internal bStab(max(bMin_ - b, scalar(0)));
236  const volScalarField::Internal cStab(max(bMin_ - c, scalar(0)));
237 
238  // Solve for the unburnt gas energy and species
239  uSolve(bStab, phib, bSource);
240 
241  // Solve for the burnt gas energy and species
242  bSolve(cStab, phic, bSource);
243 }
244 
245 
247 (
248  const volScalarField::Internal& bStab,
249  const surfaceScalarField& phib,
250  const volScalarField::Internal& bSource
251 )
252 {
253  PtrList<volScalarField>& Yu = thermo_.uThermo().Y();
254 
255  uReaction_->correct();
256 
257  forAll(Yu, i)
258  {
259  volScalarField& Yui = Yu[i];
260 
261  if (uThermo.solveSpecie(i))
262  {
263  uSolve
264  (
265  Yui,
266  Yu.size() > 2 ? "Yi" : Yui.name(),
267  bStab,
268  phib,
269  fvm::Sp(bSource, Yui)
270  );
271  }
272  else
273  {
275  }
276  }
277 
278  thermo_.uThermo().normaliseY();
279 
280  HuSolve(bStab, phib, bSource);
281 }
282 
283 
285 (
286  const volScalarField::Internal& cStab,
287  const surfaceScalarField& phic,
288  const volScalarField::Internal& bSource
289 )
290 {
291  PtrList<volScalarField>& Yb = thermo_.bThermo().Y();
292 
293  if (Yb.size())
294  {
295  bReaction_->correct();
296 
297  const PtrList<volScalarField::Internal> Yp(thermo_.prompt());
298 
299  forAll(Yb, i)
300  {
301  volScalarField& Ybi = Yb[i];
302 
303  if (bThermo.solveSpecie(i))
304  {
305  bSolve
306  (
307  Ybi,
308  Yb.size() > 2 ? "Yi" : Ybi.name(),
309  cStab,
310  phic,
311  fvm::Su(-bSource*Yp[i], Ybi)
312  );
313  }
314  else
315  {
317  }
318  }
319 
320  thermo_.bThermo().normaliseY();
321  }
322 
323  HbSolve(cStab, phic, bSource);
324 }
325 
326 
328 (
329  const volScalarField& bc,
330  const volScalarField::Internal& bcStab,
331  const volScalarField& D,
333 )
334 {
335  // Advective-diffusive stabilisation for b,c -> 0
336  return bcStab*
337  (
340  (
341  mesh,
342  phi,
343  upwind<scalar>(mesh, phi)
344  ).fvmDiv(phi, f)
346  (
349  f
350  )
351  );
352 }
353 
354 
356 (
357  volScalarField& f,
358  const word& fName,
359  const volScalarField& alpha,
360  const volScalarField& bc,
361  const volScalarField::Internal& bcStab,
362  const surfaceScalarField& phibc,
363  const volScalarField& D,
365  const fvScalarMatrix& combustionRate,
366  const reactionModel& reaction
367 )
368 {
369  fvScalarMatrix fEqn
370  (
371  fvm::ddt(bc, rho, f)
372  + fvm::div(phibc, f, "div(" + phibc.name() + ',' + fName + ')')
373 
374  // Advective-diffusive stabilisation for bc -> 0
375  + fvmStab(bc, bcStab, D, f)
376 
377  // Diffusive transport within the unburnt/burnt gas
378  + thermophysicalTransport.divj(f)
379  ==
380  // Combustion source
381  combustionRate
382 
383  // Reaction rate within the unburnt/burnt gas
384  + alpha*reaction.R(f)
385 
386  // Other sources
387  + fvModels().source(bc, rho, f)
388  );
389 
390  fEqn.relax();
391  fvConstraints().constrain(fEqn);
392  fEqn.solve(fName);
394 }
395 
396 
398 (
399  volScalarField& fu,
400  const word& fuName,
401  const volScalarField::Internal& bStab,
402  const surfaceScalarField& phib,
403  const fvScalarMatrix& source
404 )
405 {
406  const volScalarField Du("Du", rho*(momentumTransport.nut() + uThermo.nu()));
407  ubSolve
408  (
409  fu,
410  fuName,
411  thermo_.alphau(),
412  b,
413  bStab,
414  phib,
415  Du,
416  uThermophysicalTransport_(),
417  source,
418  uReaction_()
419  );
420 }
421 
422 
424 (
425  volScalarField& fb,
426  const word& fbName,
427  const volScalarField::Internal& cStab,
428  const surfaceScalarField& phic,
429  const fvScalarMatrix& source
430 )
431 {
432  const volScalarField Db("Db", rho*(momentumTransport.nut() + bThermo.nu()));
433  ubSolve
434  (
435  fb,
436  fbName,
437  thermo_.alphab(),
438  c,
439  cStab,
440  phic,
441  Db,
442  bThermophysicalTransport_(),
443  source,
444  bReaction_()
445  );
446 }
447 
448 
450 (
451  const volScalarField::Internal& bStab,
452  const surfaceScalarField& phib,
453  const volScalarField::Internal& bSource
454 )
455 {
456  volScalarField& hu = thermo_.uThermo().he();
457 
458  const volScalarField::Internal rhoByRhou(thermo_.rho()/uThermo.rho()());
459 
460  const volScalarField Du("Du", rho*(momentumTransport.nut() + uThermo.nu()));
461 
462  fvScalarMatrix HuEqn
463  (
464  fvm::ddt(b, rho, hu) + fvm::div(phib, hu)
465 
466  // Advective-diffusive stabilisation for b -> 0
467  + fvmStab(b, bStab, Du, hu)
468 
469  // Pressure-work
470  + fvc::ddt(b, rho, K) + fvc::div(phib, K)
471  + (b + bStab)*rhoByRhou*pressureWork(-dpdt)
472 
473  // Diffusive transport within the unburnt gas
474  + uThermophysicalTransport_->divq(hu)
475  ==
476  // Combustion source
477  fvm::Sp(bSource, hu)
478 
479  // Other sources
480  + fvModels().source(b, rho, hu)
481  );
482 
483  HuEqn.relax();
484  fvConstraints().constrain(HuEqn);
485  HuEqn.solve();
486  fvConstraints().constrain(hu);
487 }
488 
489 
491 (
492  const volScalarField::Internal& cStab,
493  const surfaceScalarField& phic,
494  const volScalarField::Internal& bSource
495 )
496 {
497  volScalarField& hb = thermo_.bThermo().he();
498 
499  const volScalarField::Internal rhoByRhob(thermo_.rho()/bThermo.rho()());
500 
501  const volScalarField Db("Db", rho*(momentumTransport.nut() + bThermo.nu()));
502 
503  fvScalarMatrix HbEqn
504  (
505  fvm::ddt(c, rho, hb) + fvm::div(phic, hb)
506 
507  // Advective-diffusive stabilisation for b -> 0
508  + fvmStab(c, cStab, Db, hb)
509 
510  // Pressure-work
511  + fvc::ddt(c, rho, K) + fvc::div(phic, K)
512  + (c + cStab)*rhoByRhob*pressureWork(-dpdt)
513 
514  // Diffusive transport within the burnt gas
515  + bThermophysicalTransport_->divq(hb)
516  ==
517  // Combustion source
518  - bSource*(uThermo.he()() + uThermo.hf()()() - bThermo.hf()()())
519 
520  // Other sources
521  + fvModels().source(c, rho, hb)
522  );
523 
524  HbEqn.relax();
525  fvConstraints().constrain(HbEqn);
526  HbEqn.solve();
527  fvConstraints().constrain(hb);
528 }
529 
530 
531 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
532 
534 {
535  const UPtrListDictionary<fv::bXiIgnition> ignitionModels
536  (
537  fvModels().lookupType<fv::bXiIgnition>()
538  );
539 
540  bool ignited = false;
541 
542  forAll(ignitionModels, i)
543  {
544  if (ignitionModels[i].ignited())
545  {
546  ignited = true;
547  break;
548  }
549  }
550 
551  // At the point of ignition initialise the burnt gas
552  // thermophysical properties
553  if (ignited && !ignited_)
554  {
555  ignited_ = ignited;
556 
557  if (thermo_.bThermo().Y().size())
558  {
559  const PtrList<volScalarField::Internal> Yp(thermo_.prompt());
560 
561  // Approximate phic for Ybi boundary condition correction
562  const surfaceScalarField phic("phic", phi);
563 
564  forAll(Yp, i)
565  {
566  thermo_.bThermo().Y(i).internalFieldRef() = Yp[i];
567  thermo_.bThermo().Y(i).correctBoundaryConditions();
568  }
569  }
570 
571  thermo_.bThermo().he() = uThermo.he() + uThermo.hf() - bThermo.hf();
572  thermo_.bThermo().correct();
573  }
574 
575  if (ignited_)
576  {
577  burn();
578  }
579  else
580  {
581  const volScalarField::Internal bStab
582  (
583  IOobject
584  (
585  "bStab",
586  runTime.time().name(),
587  mesh
588  ),
589  mesh,
590  scalar(0)
591  );
592 
593  const surfaceScalarField phib("phib", phi);
594 
595  const volScalarField::Internal bSource
596  (
597  IOobject
598  (
599  "bSource",
600  runTime.time().name(),
601  mesh
602  ),
603  mesh,
605  );
606 
607  uSolve(bStab, phib, bSource);
608  }
609 
610  thermo_.correct();
611 }
612 
613 
614 // ************************************************************************* //
CMULES: Multidimensional universal limiter for explicit corrected implicit solution.
label n
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:449
volScalarField Db("Db", rho *turbulence->nuEff())
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
const dimensionSet & dimensions() const
Return dimensions.
Generic GeometricField class.
void correctBoundaryConditions()
Correct boundary field.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:99
const word & name() const
Return name.
Definition: IOobject.H:307
Templated base class for multiphase thermophysical transport models.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Definition: PtrList.H:75
Template dictionary class which manages the storage associated with it.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Definition: UPtrList.H:66
label size() const
Return the number of elements in the UPtrList.
Definition: UPtrListI.H:29
bool constrain(fvMatrix< Type > &eqn) const
Apply constraints to an equation.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition: fvMatrix.H:118
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
Definition: fvMatrix.C:602
SolverPerformance< Type > solve(const dictionary &)
Solve segregated or coupled returning the solution statistics.
Definition: fvMatrixSolve.C:58
SurfaceField< Type > *& faceFluxCorrectionPtr()
Return pointer to face-flux non-orthogonal correction field.
Definition: fvMatrix.H:332
Field< Type > & source()
Definition: fvMatrix.H:307
tmp< SurfaceField< Type > > flux() const
Return the face-flux field from the matrix.
Definition: fvMatrix.C:963
tmp< volScalarField::Internal > Sp() const
Return the implicit source.
Definition: fvMatrix.C:846
tmp< VolInternalField< Type > > Su() const
Return the explicit source.
Definition: fvMatrix.C:828
const DimensionedField< scalar, fvMesh > & V() const
Return cell volumes.
const fvSchemes & schemes() const
Return the fvSchemes.
Definition: fvMesh.C:1792
const fvSolution & solution() const
Return the fvSolution.
Definition: fvMesh.C:1803
const surfaceVectorField & Sf() const
Return cell face area vectors.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
Finite volume models.
Definition: fvModels.H:69
ITstream & div(const word &name) const
Definition: fvSchemes.C:410
Basic first-order Euler implicit/explicit ddt using only the current and previous time-step values.
virtual tmp< fvMatrix< Type > > fvmDdt(const VolField< Type > &)
Abstract base class for convection schemes.
virtual tmp< SurfaceField< Type > > interpolate(const surfaceScalarField &, const VolField< Type > &) const =0
Basic second-order convection using face-gradients and Gauss' theorem.
tmp< fvMatrix< Type > > fvmDiv(const surfaceScalarField &, const VolField< Type > &) const
static tmp< fvMatrix< Type > > fvmLaplacianUncorrected(const surfaceScalarField &gammaMagSf, const surfaceScalarField &deltaCoeffs, const VolField< Type > &)
A class representing the concept of a field of 1 used to avoid unnecessary manipulations for objects ...
Definition: oneField.H:53
Base class for reaction models.
Definition: reactionModel.H:53
Reaction base-class holding the specie names and coefficients.
Definition: reaction.H:57
virtual tmp< volScalarField > rho() const =0
Density [kg/m^3].
const dictionary & solverDict(const word &name) const
Return the solver controls dictionary for the given field.
Definition: solution.C:238
Foam::fvModels & fvModels() const
Return the fvModels that are created on demand.
Definition: solver.C:103
Foam::fvConstraints & fvConstraints() const
Return the fvConstraints that are created on demand.
Definition: solver.C:114
const fvMesh & mesh
Region mesh.
Definition: solver.H:101
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
const volScalarField & Su
Laminar flame speed.
Definition: XiFluid.H:308
tmp< fvScalarMatrix > fvmStab(const volScalarField &bc, const volScalarField::Internal &bcStab, const volScalarField &D, volScalarField &f)
const volScalarField & b
Reference to the combustion regress variable.
Definition: XiFluid.H:296
void ubSolve(volScalarField &f, const word &fName, const volScalarField &alpha, const volScalarField &bc, const volScalarField::Internal &bcStab, const surfaceScalarField &phibc, const volScalarField &D, const thermophysicalTransportModel &thermophysicalTransport, const fvScalarMatrix &source, const reactionModel &reaction)
Solve for an unburnt or burnt gas property.
scalar mgbCoeff_
|grad(b)| division stabilisation coefficient.
Definition: XiFluid.H:192
void uSolve(const volScalarField::Internal &bStab, const surfaceScalarField &phib, const volScalarField::Internal &bSource)
Solve for the unburnt gas thermophysical state.
const volScalarField & c
Reference to the combustion progress variable.
Definition: XiFluid.H:302
void burn()
Solve the regress variable and Xi equations.
autoPtr< SuModel > SuModel_
Strained laminar flame-speed model.
Definition: XiFluid.H:195
const volScalarField & Xi
Flame wrinkling.
Definition: XiFluid.H:311
autoPtr< XiModel > XiModel_
Flame wrinkling model.
Definition: XiFluid.H:198
void HuSolve(const volScalarField::Internal &bStab, const surfaceScalarField &phib, const volScalarField::Internal &bSource)
Solve the unburnt enthalpy equation.
ubRhoThermo & thermo_
Definition: XiFluid.H:149
void bSolve(const volScalarField::Internal &cStab, const surfaceScalarField &phic, const volScalarField::Internal &bSource)
Solve for the unburnt gas thermophysical state.
scalar bMin_
Minimum b below which a numerical compensation burn-out term.
Definition: XiFluid.H:188
void HbSolve(const volScalarField::Internal &cStab, const surfaceScalarField &phic, const volScalarField::Internal &bSource)
Solve the burnt enthalpy equation.
const surfaceScalarField & phi
Mass-flux field.
const volScalarField & rho
Reference to the continuity density field.
const surfaceScalarField & nonOrthDeltaCoeffs() const
Return reference to non-orthogonal cell-centre difference.
A class for managing temporary objects.
Definition: tmp.H:55
bool valid() const
Is this temporary object valid,.
Definition: tmpI.H:183
const volScalarField & c() const
Progress variable.
Definition: ubRhoThermo.H:111
const uRhoMulticomponentThermo & uThermo() const
Definition: ubRhoThermo.H:135
const volScalarField & b() const
Regress variable.
Definition: ubRhoThermo.H:98
A class for handling words, derived from string.
Definition: word.H:63
A class representing the concept of a field of 0 used to avoid unnecessary manipulations for objects ...
Definition: zeroField.H:53
Foam::fvConstraints & fvConstraints(Foam::fvConstraints::New(mesh))
Foam::fvModels & fvModels(Foam::fvModels::New(mesh))
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
Calculate the first temporal derivative.
Calculate the face-flux of the given field.
Calculate the field for explicit evaluation of implicit and explicit sources.
Calculate the matrix for the divergence of the given field and flux.
volScalarField & b
Definition: createFields.H:27
Info<< "Creating thermophysical transport model\n"<< endl;turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity< RASThermophysicalTransportModel< ThermophysicalTransportModel< compressibleMomentumTransportModel, fluidThermo > >> thermophysicalTransport(turbulence(), thermo, true)
K
Definition: pEqn.H:75
rho
Definition: pEqn.H:1
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
void correct(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &phiCorr, const SpType &Sp)
const dimensionedScalar c
Speed of light in a vacuum.
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
tmp< VolField< Type > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
Definition: fvcDdt.C:45
tmp< VolField< Type > > Sp(const volScalarField &sp, const VolField< Type > &vf)
Definition: fvcSup.C:67
tmp< VolField< typename outerProduct< vector, Type >::type > > grad(const SurfaceField< Type > &ssf)
Definition: fvcGrad.C:46
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
Definition: fvcDiv.C:47
tmp< SurfaceField< Type > > snGrad(const VolField< Type > &vf, const word &name)
Definition: fvcSnGrad.C:45
tmp< fvMatrix< Type > > laplacian(const VolField< Type > &vf, const word &name)
Definition: fvmLaplacian.C:47
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const VolField< Type > &vf, const word &name)
Definition: fvmDiv.C:48
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > Su(const DimensionedField< Type, fvMesh > &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
Definition: fvmDdt.C:46
static const coefficient D("D", dimTemperature, 257.14)
static const zero Zero
Definition: zero.H:97
const dimensionSet & dimTime
Definition: dimensions.C:142
const dimensionSet & dimDensity
Definition: dimensions.C:158
tmp< DimensionedField< scalar, GeoMesh, Field > > mag(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
labelList f(nPoints)