bEqn.H
Go to the documentation of this file.
1tmp<fv::convectionScheme<scalar>> mvConvection
2(
3 fv::convectionScheme<scalar>::New
4 (
5 mesh,
6 fields,
7 phi,
8 mesh.divScheme("div(phi,ft_b_ha_hau)")
9 )
10);
11
12volScalarField Db("Db", turbulence->muEff());
13
14if (ign.ignited())
15{
16 // Calculate the unstrained laminar flame speed
17 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19
20 const volScalarField& Xi = flameWrinkling->Xi();
21
22 // progress variable
23 // ~~~~~~~~~~~~~~~~~
24 volScalarField c("c", 1.0 - b);
25
26 // Unburnt gas density
27 // ~~~~~~~~~~~~~~~~~~~
28 volScalarField rhou(thermo.rhou());
29
30 // Calculate flame normal etc.
31 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
33 //volVectorField n(fvc::grad(b));
34 volVectorField n(fvc::reconstruct(fvc::snGrad(b)*mesh.magSf()));
35
36 volScalarField mgb("mgb", mag(n));
37
38 dimensionedScalar dMgb("dMgb", mgb.dimensions(), SMALL);
39
40 {
41 volScalarField bc(b*c);
42
43 dMgb += 1.0e-3*
44 (bc*mgb)().weightedAverage(mesh.V())
45 /(bc.weightedAverage(mesh.V()) + SMALL);
46 }
47
48 mgb += dMgb;
49
50 surfaceVectorField Sfhat(mesh.Sf()/mesh.magSf());
51 surfaceVectorField nfVec(fvc::interpolate(n));
52 nfVec += Sfhat*(fvc::snGrad(b) - (Sfhat & nfVec));
53 nfVec /= (mag(nfVec) + dMgb);
54 surfaceScalarField nf("nf", mesh.Sf() & nfVec);
55 n /= mgb;
56
57 #include "StCorr.H"
58
59 // Calculate turbulent flame speed flux
60 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61 surfaceScalarField phiSt("phiSt", fvc::interpolate(rhou*StCorr*St)*nf);
62
63 #include "StCourantNo.H"
64
65 Db = flameWrinkling->Db();
66
67 // Create b equation
68 // ~~~~~~~~~~~~~~~~~
69 fvScalarMatrix bEqn
70 (
71 betav*fvm::ddt(rho, b)
72 + mvConvection->fvmDiv(phi, b)
73 + fvm::div(phiSt, b)
74 - fvm::Sp(fvc::div(phiSt), b)
75 - fvm::laplacian(Db, b)
76 ==
78 );
79
80
81 // Add ignition cell contribution to b-equation
82 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83 #include "ignite.H"
84
85 // Solve for b
86 // ~~~~~~~~~~~
87 bEqn.relax();
88
89 fvOptions.constrain(bEqn);
90
91 bEqn.solve();
92
93 fvOptions.correct(b);
94
95 Info<< "min(b) = " << min(b).value() << endl;
96
97 if (composition.contains("ft"))
98 {
99 volScalarField& ft = composition.Y("ft");
100
101 Info<< "Combustion progress = "
102 << 100*(1.0 - b)().weightedAverage(mesh.V()*ft).value() << "%"
103 << endl;
104 }
105 else
106 {
107 Info<< "Combustion progress = "
108 << 100*(1.0 - b)().weightedAverage(mesh.V()).value() << "%"
109 << endl;
110 }
111
112 // Correct the flame-wrinkling
114
115 St = Xi*Su;
116}
tmp< fv::convectionScheme< scalar > > mvConvection(fv::convectionScheme< scalar >::New(mesh, fields, phi, mesh.divScheme("div(phi,ft_b_ha_hau)")))
volScalarField Db("Db", turbulence->muEff())
dimensionedScalar StCorr("StCorr", dimless, 1.0)
Calculates and outputs the mean and maximum Courant Numbers.
label n
fv::options & fvOptions
surfaceScalarField & phi
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
basicSpecieMixture & composition
dynamicFvMesh & mesh
compressible::turbulenceModel & turbulence
zeroField Su
Definition: alphaSuSp.H:1
const volScalarField & betav
autoPtr< XiModel > flameWrinkling
Create the flame-wrinkling model.
Definition: createFields.H:175
Info<< "Creating the unstrained laminar flame speed\n"<< endl;autoPtr< laminarFlameSpeed > unstrainedLaminarFlameSpeed(laminarFlameSpeed::New(thermo))
volScalarField & b
Definition: createFields.H:27
multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
Definition: createFields.H:97