CMULES: Add optional control over support for extrema within bounds

This commit is contained in:
Henry
2014-10-13 21:12:10 +01:00
committed by Andrew Heather
parent df9ae1d07f
commit 36662d0e48

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -107,6 +107,7 @@ void Foam::MULES::correct
psiMax, psiMin, psiMax, psiMin,
nLimiterIter nLimiterIter
); );
correct(rDeltaT, rho, psi, phi, phiCorr, Sp, Su); correct(rDeltaT, rho, psi, phi, phiCorr, Sp, Su);
} }
@ -172,6 +173,13 @@ void Foam::MULES::limiterCorr
const fvMesh& mesh = psi.mesh(); const fvMesh& mesh = psi.mesh();
const dictionary& MULEScontrols = mesh.solverDict(psi.name());
scalar extremaCoeff
(
MULEScontrols.lookupOrDefault<scalar>("extremaCoeff", 0.0)
);
const labelUList& owner = mesh.owner(); const labelUList& owner = mesh.owner();
const labelUList& neighb = mesh.neighbour(); const labelUList& neighb = mesh.neighbour();
tmp<volScalarField::DimensionedInternalField> tVsc = mesh.Vsc(); tmp<volScalarField::DimensionedInternalField> tVsc = mesh.Vsc();
@ -283,8 +291,8 @@ void Foam::MULES::limiterCorr
} }
} }
psiMaxn = min(psiMaxn, psiMax); psiMaxn = min(psiMaxn + extremaCoeff*(psiMax - psiMin), psiMax);
psiMinn = max(psiMinn, psiMin); psiMinn = max(psiMinn - extremaCoeff*(psiMax - psiMin), psiMin);
// scalar smooth = 0.5; // scalar smooth = 0.5;
// psiMaxn = min((1.0 - smooth)*psiIf + smooth*psiMaxn, psiMax); // psiMaxn = min((1.0 - smooth)*psiIf + smooth*psiMaxn, psiMax);