eReactingFoam-4.x/YEqn.H
ignis d55116bfa4 diffusivityModel is compiled to a seperate libarary.
added laminarReactingFoam for cases without electric field.
2018-10-02 20:57:35 +09:00

67 lines
1.3 KiB
C

Vc = dimensionedVector("zero", dimLength/dimTime, U[0]*0.0);
phiC = dimensionedScalar("zero", dimDensity*dimVelocity*dimArea, 0.0);
forAll(Y, i)
{
Vc += diff.D(i) * fvc::grad(Y[i]);
}
forAll(Y, i)
{
phiC += linearInterpolate(rho * diff.D(i)) * fvc::snGrad(Y[i]) * mesh.magSf();
}
tmp<fv::convectionScheme<scalar>> mvConvection
(
fv::convectionScheme<scalar>::New
(
mesh,
fields,
phi + phiC,
mesh.divScheme("div(phi,Yi_h)")
)
);
{
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)
+ mvConvection->fvmDiv(phi + phiC, Yi)
- 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);
}