1 tmp<fv::convectionScheme<scalar> > mvConvection
3 fv::convectionScheme<scalar>::New
8 mesh.divScheme("div(phi,ft_b_h_hu)")
12 volScalarField Db("Db", turbulence->muEff());
16 // Calculate the unstrained laminar flame speed
17 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 Su = unstrainedLaminarFlameSpeed()();
20 const volScalarField& Xi = flameWrinkling->Xi();
24 volScalarField c("c", 1.0 - b);
26 // Unburnt gas density
27 // ~~~~~~~~~~~~~~~~~~~
28 volScalarField rhou(thermo.rhou());
30 // Calculate flame normal etc.
31 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33 //volVectorField n(fvc::grad(b));
34 volVectorField n(fvc::reconstruct(fvc::snGrad(b)*mesh.magSf()));
36 volScalarField mgb("mgb", mag(n));
38 dimensionedScalar dMgb("dMgb", mgb.dimensions(), SMALL);
41 volScalarField bc(b*c);
44 (bc*mgb)().weightedAverage(mesh.V())
45 /(bc.weightedAverage(mesh.V()) + SMALL);
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);
59 // Calculate turbulent flame speed flux
60 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61 surfaceScalarField phiSt("phiSt", fvc::interpolate(rhou*StCorr*St)*nf);
63 # include "StCourantNo.H"
65 Db = flameWrinkling->Db();
71 betav*fvm::ddt(rho, b)
72 + mvConvection->fvmDiv(phi, b)
74 - fvm::Sp(fvc::div(phiSt), b)
75 - fvm::laplacian(Db, b)
79 // Add ignition cell contribution to b-equation
80 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
87 Info<< "min(b) = " << min(b).value() << endl;
89 if (composition.contains("ft"))
91 volScalarField& ft = composition.Y("ft");
93 Info<< "Combustion progress = "
94 << 100*(1.0 - b)().weightedAverage(mesh.V()*ft).value() << "%"
99 Info<< "Combustion progress = "
100 << 100*(1.0 - b)().weightedAverage(mesh.V()).value() << "%"
104 // Correct the flame-wrinkling
105 flameWrinkling->correct(mvConvection);