void reactingOneDimRPvol2::solveSpeciesMass() { if (debug) { InfoInFunction << endl; } volScalarField Yt(0.0*Ys_[0]); for (label i=0; i<Ys_.size()-1; i++) { volScalarField& Yi = Ys_[i]; fvScalarMatrix YiEqn ( fvm::ddt(rho_, Yi) + fvc::div(phiPyrolysis_, Yi) == solidChemistry_->RRs(i) ); if (regionMesh().moving()) { surfaceScalarField phiYiRhoMesh ( fvc::interpolate(Yi*rho_)*regionMesh().phi() ); YiEqn += fvc::div(phiYiRhoMesh); } YiEqn.solve(regionMesh().solver("Yi")); Yi.max(0.0); Yt += Yi; } Ys_[Ys_.size() - 1] = 1.0 - Yt; //-Correct density from mixture density forAll(rho_, celli) { scalar rc = 0; forAll(Ys_, i) { rc += Ys_[i][celli]/solidThermo_.composition().rho(i, 1.0e5, 300.0); }
void reactingOneDim21::solveSpeciesMass() { if (debug) { Info<< "reactingOneDim21::solveSpeciesMass()" << endl; } volScalarField Yt(0.0*Ys_[0]); for (label i=0; i<Ys_.size()-1; i++) { volScalarField& Yi = Ys_[i]; fvScalarMatrix YiEqn ( fvm::ddt(rho_, Yi) == solidChemistry_->RRs(i) ); if (regionMesh().moving()) { surfaceScalarField phiYiRhoMesh ( fvc::interpolate(Yi*rho_)*regionMesh().phi() ); YiEqn += fvc::div(phiYiRhoMesh); } YiEqn.solve(regionMesh().solver("Yi")); Yi.max(0.0); Yt += Yi; } Ys_[Ys_.size() - 1] = 1.0 - Yt; }
void Foam::MultiComponentPhaseModel<BasePhaseModel>::correctThermo() { volScalarField Yt ( IOobject ( IOobject::groupName("Yt", this->name()), this->fluid().mesh().time().timeName(), this->fluid().mesh() ), this->fluid().mesh(), dimensionedScalar("zero", dimless, 0) ); PtrList<volScalarField>& Yi = Y(); forAll(Yi, i) { if (i != inertIndex_) { Yt += Yi[i]; } } if (inertIndex_ != -1) { Yi[inertIndex_] = scalar(1) - Yt; Yi[inertIndex_].max(0); } else { forAll(Yi, i) { Yi[i] /= Yt; Yi[i].max(0); } }