diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C index 34ee43bede..b9ffcc9bc4 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C +++ b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C @@ -249,7 +249,7 @@ void Foam::MULES::limiterCorr psiMinn[pfCelli] = min(psiMinn[pfCelli], psiPNf[pFacei]); } } - else + else if (psiPf.fixesValue()) { forAll(phiCorrPf, pFacei) { diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C index 743cb8eae5..675e4a3bd6 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C +++ b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C @@ -195,6 +195,11 @@ void Foam::MULES::limiter MULEScontrols.lookupOrDefault("smoothLimiter", 0) ); + const scalar extremaCoeff + ( + MULEScontrols.lookupOrDefault("extremaCoeff", 0) + ); + const scalarField& psi0 = psi.oldTime(); const labelUList& owner = mesh.owner(); @@ -286,7 +291,7 @@ void Foam::MULES::limiter psiMinn[pfCelli] = min(psiMinn[pfCelli], psiPNf[pFacei]); } } - else + else if (psiPf.fixesValue()) { forAll(phiCorrPf, pFacei) { @@ -316,8 +321,8 @@ void Foam::MULES::limiter } } - psiMaxn = min(psiMaxn, psiMax); - psiMinn = max(psiMinn, psiMin); + psiMaxn = min(psiMaxn + extremaCoeff*(psiMax - psiMin), psiMax); + psiMinn = max(psiMinn - extremaCoeff*(psiMax - psiMin), psiMin); if (smoothLimiter > SMALL) {