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  alphaPhiu_ = 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, alphaPhiu_);
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  (
113  .fvmDiv(phi, b)
114  );
115 
116  // Construct the b flame propagation matrix
117  fvScalarMatrix bPhiSt
118  (
120  .fvmDiv(phiSt, b)
121  );
122 
123  const volScalarField::Internal divPhiSt(fvc::div(phiSt));
124 
125  //- Construct the b source matrix
126  fvScalarMatrix bSource
127  (
128  fvModels().source(rho, b)
129  - fvm::Sp(rhou*Su*Xi*mgbStab*max(bMin_ - b, scalar(0)), b)
130  );
131 
132  // Assemble the bounded b matrix
133  fvScalarMatrix bEqn
134  (
136  + bPhi + bPhiSt
137  - bLaplacian
138  ==
139  bSource
140  + fvm::Sp(divPhiSt, b)
141  );
142 
143  // Solve for b and constrain
144  bEqn.relax();
145  fvConstraints().constrain(bEqn);
146  bEqn.solve();
148 
149  // Set the fluxes for the MULES corrector
150 
151  tbPhiUD = bPhi.flux();
152  tbPhiStUD = bPhiSt.flux();
153 
154  tbLaplacianPhi = -bLaplacian.flux();
155  if (bLaplacian.faceFluxCorrectionPtr())
156  {
157  tbLaplacianPhiCorr = -*bLaplacian.faceFluxCorrectionPtr();
158  }
159 
160  tSu = bSource.Su() + divPhiSt*b;
161  tSp = bSource.Sp();
162  }
163 
164  const volScalarField::Internal& Sp = tSp();
165 
166  const word divbName("div(phi,b)");
167 
168  // Higher-order face interpolate of b
169  const surfaceScalarField bf
170  (
172  (
173  mesh,
174  alphaPhiu_,
175  mesh.schemes().div(divbName)
176  )().interpolate(alphaPhiu_, b)
177  );
178 
179  // Higher-order convection and flame-propagation face-fluxes
180  const surfaceScalarField bPhi(phi*bf);
181  const surfaceScalarField bPhiSt(phiSt*bf);
182 
183  // Higher-order convection and flame-propagation face-flux corrections
184  surfaceScalarField bPhiCorr(bPhi - tbPhiUD());
185  surfaceScalarField bPhiStCorr(bPhiSt - tbPhiStUD());
186 
187  if (tbLaplacianPhiCorr.valid())
188  {
189  bPhiCorr += tbLaplacianPhiCorr();
190  }
191 
192  const MULES::control MULEScontrols(mesh.solution().solverDict(b.name()));
193 
194  // Cache a list of the flux corrections to be limited
195  UPtrList<surfaceScalarField> bPhiCorrs{&bPhiCorr, &bPhiStCorr};
196 
197  // MULES limited bounded explicit b corrector
199  (
200  MULEScontrols,
201  rho,
202  b,
203  tbPhiUD() + tbPhiStUD(),
204  bPhiCorrs,
205  Sp,
206  oneField(),
207  zeroField()
208  );
209 
210  // Recalculate c from b
211  c = scalar(1) - b;
212 
213  // Correct the flame wrinkling
214  XiModel_->correct();
215 
216  // Correct the laminar flame speed
217  SuModel_->correct();
218 
219  // Set the b-equation convection+diffusion flux
220  // for the solution of the unburnt gas energy and species
221  alphaPhiu_ = tbPhiUD() + tbLaplacianPhi() + bPhiCorr;
222 
223  // Set the c-equation convection+diffusion flux
224  // for the solution of the burnt gas energy and species
226 
227  // Set the b-equation source term
228  // for the solution of the unburnt and burnt gas energy and species
229  const volScalarField::Internal bSource
230  (
231  "bSource",
232  tSu() + tSp()*b()
233  - fvc::div(tbPhiStUD() + bPhiStCorr)()
234  );
235 
236  // Set the unburnt and burnt gas stabilisation coefficients
237  const volScalarField::Internal bStab(max(bMin_ - b, scalar(0)));
238  const volScalarField::Internal cStab(max(bMin_ - c, scalar(0)));
239 
240  // Solve for the unburnt gas energy and species
241  uSolve(bStab, bSource);
242 
243  // Solve for the burnt gas energy and species
244  bSolve(cStab, bSource);
245 }
246 
247 
249 (
250  const volScalarField::Internal& bStab,
251  const volScalarField::Internal& bSource
252 )
253 {
254  PtrList<volScalarField>& Yu = thermo_.uThermo().Y();
255 
256  uReaction_->correct();
257 
258  forAll(Yu, i)
259  {
260  volScalarField& Yui = Yu[i];
261 
262  if (uThermo.solveSpecie(i))
263  {
264  uSolve
265  (
266  Yui,
267  Yu.size() > 2 ? "Yi" : Yui.name(),
268  bStab,
269  fvm::Sp(bSource, Yui)
270  );
271  }
272  else
273  {
275  }
276  }
277 
278  thermo_.uThermo().normaliseY();
279 
280  HuSolve(bStab, bSource);
281 }
282 
283 
285 (
286  const volScalarField::Internal& cStab,
287  const volScalarField::Internal& bSource
288 )
289 {
290  PtrList<volScalarField>& Yb = thermo_.bThermo().Y();
291 
292  if (Yb.size())
293  {
294  bReaction_->correct();
295 
296  const PtrList<volScalarField::Internal> Yp(thermo_.prompt());
297 
298  forAll(Yb, i)
299  {
300  volScalarField& Ybi = Yb[i];
301 
302  if (bThermo.solveSpecie(i))
303  {
304  bSolve
305  (
306  Ybi,
307  Yb.size() > 2 ? "Yi" : Ybi.name(),
308  cStab,
309  fvm::Su(-bSource*Yp[i], Ybi)
310  );
311  }
312  else
313  {
315  }
316  }
317 
318  thermo_.bThermo().normaliseY();
319  }
320 
321  HbSolve(cStab, bSource);
322 }
323 
324 
326 (
327  const volScalarField& bc,
328  const volScalarField::Internal& bcStab,
329  const volScalarField& D,
331 )
332 {
333  // Advective-diffusive stabilisation for b,c -> 0
334  return bcStab*
335  (
338  (
339  mesh,
340  phi,
341  upwind<scalar>(mesh, phi)
342  ).fvmDiv(phi, f)
344  (
347  f
348  )
349  );
350 }
351 
352 
354 (
355  volScalarField& f,
356  const word& fName,
357  const volScalarField& alpha,
358  const volScalarField& bc,
359  const volScalarField::Internal& bcStab,
360  const surfaceScalarField& alphaPhiub,
361  const volScalarField& D,
363  const fvScalarMatrix& combustionRate,
364  const reactionModel& reaction
365 )
366 {
367  fvScalarMatrix fEqn
368  (
369  fvm::ddt(bc, rho, f)
370  + fvm::div(alphaPhiub, f, "div(" + alphaPhiub.name() + ',' + fName + ')')
371 
372  // Advective-diffusive stabilisation for bc -> 0
373  + fvmStab(bc, bcStab, D, f)
374 
375  // Diffusive transport within the unburnt/burnt gas
376  + thermophysicalTransport.divj(f)
377  ==
378  // Combustion source
379  combustionRate
380 
381  // Reaction rate within the unburnt/burnt gas
382  + alpha*reaction.R(f)
383 
384  // Other sources
385  + fvModels().source(bc, rho, f)
386  );
387 
388  fEqn.relax();
389  fvConstraints().constrain(fEqn);
390  fEqn.solve(fName);
392 }
393 
394 
396 (
397  volScalarField& fu,
398  const word& fuName,
399  const volScalarField::Internal& bStab,
400  const fvScalarMatrix& source
401 )
402 {
403  const volScalarField Du("Du", rho*(momentumTransport.nut() + uThermo.nu()));
404  ubSolve
405  (
406  fu,
407  fuName,
408  thermo_.alphau(),
409  b,
410  bStab,
411  alphaPhiu_,
412  Du,
413  uThermophysicalTransport_(),
414  source,
415  uReaction_()
416  );
417 }
418 
419 
421 (
422  volScalarField& fb,
423  const word& fbName,
424  const volScalarField::Internal& cStab,
425  const fvScalarMatrix& source
426 )
427 {
428  const volScalarField Db("Db", rho*(momentumTransport.nut() + bThermo.nu()));
429  ubSolve
430  (
431  fb,
432  fbName,
433  thermo_.alphab(),
434  c,
435  cStab,
436  alphaPhib_,
437  Db,
438  bThermophysicalTransport_(),
439  source,
440  bReaction_()
441  );
442 }
443 
444 
446 (
447  const volScalarField::Internal& bStab,
448  const volScalarField::Internal& bSource
449 )
450 {
451  volScalarField& hu = thermo_.uThermo().he();
452 
453  const volScalarField::Internal rhoByRhou(thermo_.rho()/uThermo.rho()());
454 
455  const volScalarField Du("Du", rho*(momentumTransport.nut() + uThermo.nu()));
456 
457  fvScalarMatrix HuEqn
458  (
459  fvm::ddt(b, rho, hu) + fvm::div(alphaPhiu_, hu)
460 
461  // Advective-diffusive stabilisation for b -> 0
462  + fvmStab(b, bStab, Du, hu)
463 
464  // Pressure-work
465  + fvc::ddt(b, rho, K) + fvc::div(alphaPhiu_, K)
466  + (b + bStab)*rhoByRhou*pressureWork(-dpdt)
467 
468  // Diffusive transport within the unburnt gas
469  + uThermophysicalTransport_->divq(hu)
470  ==
471  // Combustion source
472  fvm::Sp(bSource, hu)
473 
474  // Other sources
475  + (
476  buoyancy.valid()
477  ? fvModels().source(b, rho, hu) + b*rho*(U & buoyancy->g)
478  : fvModels().source(b, rho, hu)
479  )
480  );
481 
482  HuEqn.relax();
483  fvConstraints().constrain(HuEqn);
484  HuEqn.solve();
485  fvConstraints().constrain(hu);
486 }
487 
488 
490 (
491  const volScalarField::Internal& cStab,
492  const volScalarField::Internal& bSource
493 )
494 {
495  volScalarField& hb = thermo_.bThermo().he();
496 
497  const volScalarField::Internal rhoByRhob(thermo_.rho()/bThermo.rho()());
498 
499  const volScalarField Db("Db", rho*(momentumTransport.nut() + bThermo.nu()));
500 
501  fvScalarMatrix HbEqn
502  (
503  fvm::ddt(c, rho, hb) + fvm::div(alphaPhib_, hb)
504 
505  // Advective-diffusive stabilisation for b -> 0
506  + fvmStab(c, cStab, Db, hb)
507 
508  // Pressure-work
509  + fvc::ddt(c, rho, K) + fvc::div(alphaPhib_, K)
510  + (c + cStab)*rhoByRhob*pressureWork(-dpdt)
511 
512  // Diffusive transport within the burnt gas
513  + bThermophysicalTransport_->divq(hb)
514  ==
515  // Combustion source
516  - bSource*(uThermo.he()() + uThermo.hf()()() - bThermo.hf()()())
517 
518  // Other sources
519  + (
520  buoyancy.valid()
521  ? fvModels().source(c, rho, hb) + c*rho*(U & buoyancy->g)
522  : fvModels().source(c, rho, hb)
523  )
524  );
525 
526  HbEqn.relax();
527  fvConstraints().constrain(HbEqn);
528  HbEqn.solve();
529  fvConstraints().constrain(hb);
530 }
531 
532 
533 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
534 
536 {
537  const UPtrListDictionary<fv::bXiIgnition> ignitionModels
538  (
539  fvModels().lookupType<fv::bXiIgnition>()
540  );
541 
542  bool ignited = false;
543 
544  forAll(ignitionModels, i)
545  {
546  if (ignitionModels[i].ignited())
547  {
548  ignited = true;
549  break;
550  }
551  }
552 
553  // At the point of ignition initialise the burnt gas
554  // thermophysical properties
555  if (ignited && !ignited_)
556  {
557  ignited_ = ignited;
558 
559  if (thermo_.bThermo().Y().size())
560  {
561  const PtrList<volScalarField::Internal> Yp(thermo_.prompt());
562 
563  forAll(Yp, i)
564  {
565  thermo_.bThermo().Y(i).internalFieldRef() = Yp[i];
566  thermo_.bThermo().Y(i).correctBoundaryConditions();
567  }
568  }
569 
570  thermo_.bThermo().he() = uThermo.he() + uThermo.hf() - bThermo.hf();
571  thermo_.bThermo().correct();
572  }
573 
574  if (ignited_)
575  {
576  burn();
577  }
578  else
579  {
580  const volScalarField::Internal bStab
581  (
582  IOobject
583  (
584  "bStab",
585  runTime.time().name(),
586  mesh
587  ),
588  mesh,
589  scalar(0)
590  );
591 
592  const volScalarField::Internal bSource
593  (
594  IOobject
595  (
596  "bSource",
597  runTime.time().name(),
598  mesh
599  ),
600  mesh,
602  );
603 
604  // Pre-ignition alphaPhiu = phi
605  alphaPhiu_ = phi;
606 
607  // Pre-ignition alphaPhib = 0
608  alphaPhib_ = Zero;
609 
610  uSolve(bStab, bSource);
611  }
612 
613  thermo_.correct();
614 }
615 
616 
617 // ************************************************************************* //
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:1795
const fvSolution & solution() const
Return the fvSolution.
Definition: fvMesh.C:1806
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:305
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:293
surfaceScalarField alphaPhib_
Definition: XiFluid.H:155
void ubSolve(volScalarField &f, const word &fName, const volScalarField &alpha, const volScalarField &bc, const volScalarField::Internal &bcStab, const surfaceScalarField &alphaPhiub, 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:195
const volScalarField & c
Reference to the combustion progress variable.
Definition: XiFluid.H:299
void burn()
Solve the regress variable and Xi equations.
void uSolve(const volScalarField::Internal &bStab, const volScalarField::Internal &bSource)
Solve for the unburnt gas thermophysical state.
autoPtr< SuModel > SuModel_
Strained laminar flame-speed model.
Definition: XiFluid.H:198
const volScalarField & Xi
Flame wrinkling.
Definition: XiFluid.H:308
autoPtr< XiModel > XiModel_
Flame wrinkling model.
Definition: XiFluid.H:201
void bSolve(const volScalarField::Internal &cStab, const volScalarField::Internal &bSource)
Solve for the unburnt gas thermophysical state.
ubRhoThermo & thermo_
Definition: XiFluid.H:149
void HbSolve(const volScalarField::Internal &cStab, const volScalarField::Internal &bSource)
Solve the burnt enthalpy equation.
surfaceScalarField alphaPhiu_
Definition: XiFluid.H:154
void HuSolve(const volScalarField::Internal &bStab, const volScalarField::Internal &bSource)
Solve the unburnt enthalpy equation.
scalar bMin_
Minimum b below which a numerical compensation burn-out term.
Definition: XiFluid.H:191
Buoyancy related data for the Foam::solvers::isothermalFluid solver module when solving buoyant cases...
Definition: buoyancy.H:70
uniformDimensionedVectorField g
Gravitational acceleration.
Definition: buoyancy.H:83
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
U
Definition: pEqn.H:72
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:277
const dimensionSet & dimDensity
Definition: dimensions.C:289
tmp< DimensionedField< scalar, GeoMesh, Field > > mag(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
labelList f(nPoints)