compressibleInterFoam: Completed LTS and semi-implicit MULES support

Now the interFoam and compressibleInterFoam families of solvers use the same
alphaEqn formulation and supporting all of the MULES options without
code-duplication.

The semi-implicit MULES support allows running with significantly larger
time-steps but this does reduce the interface sharpness.
This commit is contained in:
Henry Weller
2017-02-09 17:31:57 +00:00
parent 1aec2695f1
commit 1c8a0bdcb3
37 changed files with 251 additions and 167 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -66,6 +66,10 @@ public:
inline scalar operator[](const label) const;
inline zeroField field() const;
inline zeroField operator()() const;
inline zeroField operator-() const;
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -39,4 +39,80 @@ inline Foam::zeroField Foam::zeroField::field() const
}
inline Foam::zeroField Foam::zeroField::operator()() const
{
return zeroField();
}
inline Foam::zeroField Foam::zeroField::operator-() const
{
return zeroField();
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
inline const zeroField operator+(const zeroField&, const zeroField&)
{
return zeroField();
}
template<class Type>
inline const Type& operator+(const Type& t, const zeroField&)
{
return t;
}
template<class Type>
inline const Type& operator+(const zeroField&, const Type& t)
{
return t;
}
inline const zeroField operator-(const zeroField&, const zeroField&)
{
return zeroField();
}
template<class Type>
inline const Type& operator-(const Type& t, const zeroField&)
{
return t;
}
template<class Type>
inline Type operator-(const zeroField&, const Type& t)
{
return -t;
}
template<class Type>
inline zeroField operator*(const Type& t, const zeroField&)
{
return zeroField();
}
template<class Type>
inline zeroField operator*(const zeroField&, const Type& t)
{
return zeroField();
}
template<class Type>
inline zeroField operator/(const zeroField&, const Type& t)
{
return zeroField();
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -72,6 +72,8 @@ public:
inline zeroField field() const;
inline zeroField operator()() const;
inline zeroField oldTime() const;
inline zeroFieldField boundaryField() const;
@ -84,7 +86,7 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "geometricZeroFieldI.H"
#include "geometricZeroFieldI.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -42,6 +42,11 @@ inline Foam::zeroField Foam::geometricZeroField::field() const
return zeroField();
}
inline Foam::zeroField Foam::geometricZeroField::operator()() const
{
return zeroField();
}
inline Foam::zeroField Foam::geometricZeroField::oldTime() const
{
return zeroField();