compressibleInterFoam family: Corrected transonic option

Resolves bug-report https://bugs.openfoam.org/view.php?id=2785
This commit is contained in:
Henry Weller
2017-12-09 21:03:59 +00:00
parent c88f7a7891
commit 862fa9e106
9 changed files with 93 additions and 70 deletions

View File

@ -31,27 +31,43 @@
if (pimple.transonic()) if (pimple.transonic())
{ {
#include "rhofs.H"
surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi); surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi);
surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi); surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi);
p_rghEqnComp1 = p_rghEqnComp1 =
fvc::ddt(rho1) + fvc::div(phi, rho1) - fvc::Sp(fvc::div(phi), rho1) pos(alpha1)
+ correction *(
( (
psi1*fvm::ddt(p_rgh) fvc::ddt(alpha1, rho1) + fvc::div(alphaPhi1*rho1f)
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) - (fvOptions(alpha1, mixture.thermo1().rho())&rho1)
)/rho1
- fvc::ddt(alpha1) - fvc::div(alphaPhi1)
+ (alpha1/rho1)
*correction
(
psi1*fvm::ddt(p_rgh)
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
)
); );
deleteDemandDrivenData(p_rghEqnComp1.ref().faceFluxCorrectionPtr());
p_rghEqnComp1.ref().relax(); p_rghEqnComp1.ref().relax();
p_rghEqnComp2 = p_rghEqnComp2 =
fvc::ddt(rho2) + fvc::div(phi, rho2) - fvc::Sp(fvc::div(phi), rho2) pos(alpha2)
+ correction *(
( (
psi2*fvm::ddt(p_rgh) fvc::ddt(alpha2, rho2) + fvc::div(alphaPhi2*rho2f)
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) - (fvOptions(alpha2, mixture.thermo2().rho())&rho2)
); )/rho2
deleteDemandDrivenData(p_rghEqnComp2.ref().faceFluxCorrectionPtr()); - fvc::ddt(alpha2) - fvc::div(alphaPhi2)
+ (alpha2/rho2)
*correction
(
psi2*fvm::ddt(p_rgh)
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
)
);
p_rghEqnComp2.ref().relax(); p_rghEqnComp2.ref().relax();
} }
else else

View File

@ -28,27 +28,43 @@
if (pimple.transonic()) if (pimple.transonic())
{ {
#include "rhofs.H"
surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi); surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi);
surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi); surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi);
p_rghEqnComp1 = p_rghEqnComp1 =
fvc::ddt(rho1) + fvc::div(phi, rho1) - fvc::Sp(fvc::div(phi), rho1) pos(alpha1)
+ correction *(
( (
psi1*fvm::ddt(p_rgh) fvc::ddt(alpha1, rho1) + fvc::div(alphaPhi1*rho1f)
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) - (fvOptions(alpha1, mixture.thermo1().rho())&rho1)
)/rho1
- fvc::ddt(alpha1) - fvc::div(alphaPhi1)
+ (alpha1/rho1)
*correction
(
psi1*fvm::ddt(p_rgh)
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
)
); );
deleteDemandDrivenData(p_rghEqnComp1.ref().faceFluxCorrectionPtr());
p_rghEqnComp1.ref().relax(); p_rghEqnComp1.ref().relax();
p_rghEqnComp2 = p_rghEqnComp2 =
fvc::ddt(rho2) + fvc::div(phi, rho2) - fvc::Sp(fvc::div(phi), rho2) pos(alpha2)
+ correction *(
( (
psi2*fvm::ddt(p_rgh) fvc::ddt(alpha2, rho2) + fvc::div(alphaPhi2*rho2f)
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) - (fvOptions(alpha2, mixture.thermo2().rho())&rho2)
); )/rho2
deleteDemandDrivenData(p_rghEqnComp2.ref().faceFluxCorrectionPtr()); - fvc::ddt(alpha2) - fvc::div(alphaPhi2)
+ (alpha2/rho2)
*correction
(
psi2*fvm::ddt(p_rgh)
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
)
);
p_rghEqnComp2.ref().relax(); p_rghEqnComp2.ref().relax();
} }
else else

View File

@ -28,27 +28,43 @@
if (pimple.transonic()) if (pimple.transonic())
{ {
#include "rhofs.H"
surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi); surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi);
surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi); surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi);
p_rghEqnComp1 = p_rghEqnComp1 =
fvc::ddt(rho1) + fvc::div(phi, rho1) - fvc::Sp(fvc::div(phi), rho1) pos(alpha1)
+ correction *(
( (
psi1*fvm::ddt(p_rgh) fvc::ddt(alpha1, rho1) + fvc::div(alphaPhi1*rho1f)
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) - (fvOptions(alpha1, mixture.thermo1().rho())&rho1)
)/rho1
- fvc::ddt(alpha1) - fvc::div(alphaPhi1)
+ (alpha1/rho1)
*correction
(
psi1*fvm::ddt(p_rgh)
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
)
); );
deleteDemandDrivenData(p_rghEqnComp1.ref().faceFluxCorrectionPtr());
p_rghEqnComp1.ref().relax(); p_rghEqnComp1.ref().relax();
p_rghEqnComp2 = p_rghEqnComp2 =
fvc::ddt(rho2) + fvc::div(phi, rho2) - fvc::Sp(fvc::div(phi), rho2) pos(alpha2)
+ correction *(
( (
psi2*fvm::ddt(p_rgh) fvc::ddt(alpha2, rho2) + fvc::div(alphaPhi2*rho2f)
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) - (fvOptions(alpha2, mixture.thermo2().rho())&rho2)
); )/rho2
deleteDemandDrivenData(p_rghEqnComp2.ref().faceFluxCorrectionPtr()); - fvc::ddt(alpha2) - fvc::div(alphaPhi2)
+ (alpha2/rho2)
*correction
(
psi2*fvm::ddt(p_rgh)
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
)
);
p_rghEqnComp2.ref().relax(); p_rghEqnComp2.ref().relax();
} }
else else

View File

@ -331,10 +331,6 @@ while (pimple.correct())
).ptr() ).ptr()
); );
deleteDemandDrivenData
(
pEqnComps[phasei].faceFluxCorrectionPtr()
);
pEqnComps[phasei].relax(); pEqnComps[phasei].relax();
} }
else else

View File

@ -255,7 +255,6 @@ while (pimple.correct())
) )
); );
deleteDemandDrivenData(pEqnComp1.ref().faceFluxCorrectionPtr());
pEqnComp1.ref().relax(); pEqnComp1.ref().relax();
} }
else else
@ -297,7 +296,6 @@ while (pimple.correct())
) )
); );
deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr());
pEqnComp2.ref().relax(); pEqnComp2.ref().relax();
} }
else else

View File

@ -241,7 +241,6 @@ while (pimple.correct())
) )
); );
deleteDemandDrivenData(pEqnComp1.ref().faceFluxCorrectionPtr());
pEqnComp1.ref().relax(); pEqnComp1.ref().relax();
} }
else else
@ -283,7 +282,6 @@ while (pimple.correct())
) )
); );
deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr());
pEqnComp2.ref().relax(); pEqnComp2.ref().relax();
} }
else else

View File

@ -262,7 +262,6 @@ while (pimple.correct())
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
) )
); );
deleteDemandDrivenData(pEqnComp1.ref().faceFluxCorrectionPtr());
pEqnComp1.ref().relax(); pEqnComp1.ref().relax();
pEqnComp2 = pEqnComp2 =
@ -278,7 +277,6 @@ while (pimple.correct())
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
) )
); );
deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr());
pEqnComp2.ref().relax(); pEqnComp2.ref().relax();
} }
else else

View File

@ -243,7 +243,6 @@ while (pimple.correct())
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
) )
); );
deleteDemandDrivenData(pEqnComp1.ref().faceFluxCorrectionPtr());
pEqnComp1.ref().relax(); pEqnComp1.ref().relax();
pEqnComp2 = pEqnComp2 =
@ -259,7 +258,6 @@ while (pimple.correct())
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
) )
); );
deleteDemandDrivenData(pEqnComp2.ref().faceFluxCorrectionPtr());
pEqnComp2.ref().relax(); pEqnComp2.ref().relax();
} }
else else

View File

@ -1384,14 +1384,9 @@ Foam::tmp<Foam::fvMatrix<Type>> Foam::correction
{ {
tmp<Foam::fvMatrix<Type>> tAcorr = A - (A & A.psi()); tmp<Foam::fvMatrix<Type>> tAcorr = A - (A & A.psi());
if // Delete the faceFluxCorrection from the correction matrix
( // as it does not have a clear meaning or purpose
(A.hasUpper() || A.hasLower()) deleteDemandDrivenData(tAcorr.ref().faceFluxCorrectionPtr());
&& A.psi().mesh().fluxRequired(A.psi().name())
)
{
tAcorr().faceFluxCorrectionPtr() = (-A.flux()).ptr();
}
return tAcorr; return tAcorr;
} }
@ -1405,17 +1400,9 @@ Foam::tmp<Foam::fvMatrix<Type>> Foam::correction
{ {
tmp<Foam::fvMatrix<Type>> tAcorr = tA - (tA() & tA().psi()); tmp<Foam::fvMatrix<Type>> tAcorr = tA - (tA() & tA().psi());
// Note the matrix coefficients are still that of matrix A // Delete the faceFluxCorrection from the correction matrix
const fvMatrix<Type>& A = tAcorr(); // as it does not have a clear meaning or purpose
deleteDemandDrivenData(tAcorr.ref().faceFluxCorrectionPtr());
if
(
(A.hasUpper() || A.hasLower())
&& A.psi().mesh().fluxRequired(A.psi().name())
)
{
tAcorr.ref().faceFluxCorrectionPtr() = (-A.flux()).ptr();
}
return tAcorr; return tAcorr;
} }