63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
Vc = dimensionedVector("zero", dimLength/dimTime, vector(Zero));
|
|
|
|
phiC = phi;
|
|
|
|
forAll(Y, i)
|
|
{
|
|
Vc += diff.D(i) * fvc::grad(Y[i]);
|
|
// Vc -= mu_i * E;
|
|
}
|
|
|
|
forAll(Y, i)
|
|
{
|
|
phiC += linearInterpolate(rho * diff.D(i)) * fvc::snGrad(Y[i]) * mesh.magSf();
|
|
// phiC -= linearInterpolate(rho * mu_i) * snE * mesh.magSf();
|
|
}
|
|
|
|
{
|
|
reaction->correct();
|
|
dQ = reaction->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)
|
|
+ (
|
|
thermo.composition().z(i) != 0
|
|
? fvm::div(phiC + (linearInterpolate(rho*diff.mu(i,T)*E) & mesh.Sf()),
|
|
Yi, "div(phi,Yi_h)")
|
|
: fvm::div(phiC, Yi, "div(phi,Yi_h)")
|
|
)
|
|
- fvm::laplacian(rho * diff.D(i), Yi)
|
|
==
|
|
reaction->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);
|
|
}
|