mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-12-28 03:37:59 +00:00
94 lines
1.9 KiB
C
94 lines
1.9 KiB
C
tmp<fv::convectionScheme<scalar> > mvConvection
|
|
(
|
|
fv::convectionScheme<scalar>::New
|
|
(
|
|
mesh,
|
|
fields,
|
|
phi,
|
|
mesh.divScheme("div(phi,Yi_h)")
|
|
)
|
|
);
|
|
{
|
|
radiation->correct();
|
|
combustion->correct();
|
|
dQ = combustion->dQ();
|
|
label inertIndex = -1;
|
|
volScalarField Yt(0.0*Y[0]);
|
|
|
|
forAll(Y, i)
|
|
{
|
|
if (Y[i].name() != inertSpecie)
|
|
{
|
|
volScalarField& Yi = Y[i];
|
|
|
|
fvScalarMatrix YiEqn
|
|
(
|
|
fvm::ddt(rho, Yi)
|
|
+ mvConvection->fvmDiv(phi, Yi)
|
|
- fvm::laplacian(turbulence->alphaEff(), Yi)
|
|
==
|
|
parcels.SYi(i, Yi)
|
|
+ surfaceFilm.Srho(i)
|
|
+ combustion->R(Yi)
|
|
+ fvOptions(rho, Yi)
|
|
);
|
|
|
|
YiEqn.relax();
|
|
|
|
fvOptions.constrain(YiEqn);
|
|
|
|
YiEqn.solve(mesh.solver("Yi"));
|
|
|
|
fvOptions.correct(Yi);
|
|
|
|
Yi.max(0.0);
|
|
Yt += Yi;
|
|
}
|
|
else
|
|
{
|
|
inertIndex = i;
|
|
}
|
|
}
|
|
|
|
Y[inertIndex] = scalar(1) - Yt;
|
|
Y[inertIndex].max(0.0);
|
|
|
|
volScalarField& he = thermo.he();
|
|
|
|
fvScalarMatrix EEqn
|
|
(
|
|
fvm::ddt(rho, he) + mvConvection->fvmDiv(phi, he)
|
|
+ fvc::ddt(rho, K) + fvc::div(phi, K)
|
|
+ (
|
|
he.name() == "e"
|
|
? fvc::div
|
|
(
|
|
fvc::absolute(phi/fvc::interpolate(rho), U),
|
|
p,
|
|
"div(phiv,p)"
|
|
)
|
|
: -dpdt
|
|
)
|
|
- fvm::laplacian(turbulence->alphaEff(), he)
|
|
==
|
|
combustion->Sh()
|
|
+ radiation->Sh(thermo)
|
|
+ parcels.Sh(he)
|
|
+ surfaceFilm.Sh()
|
|
+ fvOptions(rho, he)
|
|
);
|
|
|
|
EEqn.relax();
|
|
|
|
fvOptions.constrain(EEqn);
|
|
|
|
EEqn.solve();
|
|
|
|
fvOptions.correct(he);
|
|
|
|
thermo.correct();
|
|
|
|
Info<< "min/max(T) = "
|
|
<< min(T).value() << ", " << max(T).value() << endl;
|
|
}
|