CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   InterFoam MULES solver (

jaswi December 4, 2007 12:40

Dear OpenFOAM uses and Develop
Dear OpenFOAM uses and Developers

I request the forum users to shed some light on the details of how MULES works. Please share the information if anybody is aware of it.

I looked into the code and this is what it contains:

1) overloaded function templates for
--> explicitSolve - bounds can be supplied as the function argument;

--> explicitSolve01 - for a scalar bounded between 0 and 1;

--> implicitSolve01 - for a scalar bounded between 0 and 1;

and a function template for

--> limiter

InterFoam uses the MULES solver to solve for the volScalarField gamma and calls

MULES::explicitSolve01(gamma, phi, phiGamma).

This eventually calls the function template

void Foam::MULES::explicitSolve
volScalarField& psi,
const surfaceScalarField& phi,
surfaceScalarField& phiPsi,
const SpType& Sp,
const SuType& Su,
const scalar psiMax,
const scalar psiMin

with Sp = zero
Su = zero
psiMax = 1.0
psiMin = 0.0

Could anybody please comment what does template arguments: class SpType, class SuType stand for?

Thanks in advance


joris.hey November 13, 2012 05:36

I think they are representing eventual source terms in the advection equation. There is even this possibility :

void Foam::MULES::explicitSolve  (      const RhoType& rho,      volScalarField& psi,      const surfaceScalarField& phi,    surfaceScalarField& phiPsi,      const SpType& Sp,      const SuType& Su,    const scalar psiMax,      const scalar psiMin  )
with field rho.

How can I call this special MULES function (I need to provide both source terms and rho) ?

I do :


MULES::explicitSolve (oneField (), alpha1 , phi , phiAlpha , volScalarField ("Sp",fvc::div(voidfraction*U)),zeroField (), 1, 0);
But it doesn't compile... What's wrong ?:confused:


akidess November 13, 2012 06:45

Did you look at interPhaseChangeFoam?


joris.hey November 13, 2012 07:49

yeah, I got it. it was because I should have written geometricOnesField() in place of OneField().

Thanks !

santiagomarquezd November 21, 2012 09:56

Hi Jaswinder, how you doing? MULES is an Flux Corrected Transport explicit solver for hyperbolic equations. Its implementation mostly follow the ideas of Zalesak limiter but the \lambda's are calculated iteratively. I'm going to give some details in my thesis soon but that's the basic idea.


All times are GMT -4. The time now is 18:01.