twoPhaseEulerFoam: rationalize handling of fixed-flux BC update

This commit is contained in:
Henry
2015-05-09 23:45:15 +01:00
parent 227f3a33f5
commit bfb726aba3
6 changed files with 39 additions and 44 deletions

View File

@ -91,27 +91,9 @@ while (pimple.correct())
// Update continuity errors due to temperature changes
#include "correctContErrs.H"
// Correct flux BCs to be consistent with the velocity BCs
forAll(mesh.boundary(), patchi)
{
if (isA<fixedValueFvsPatchScalarField>(phi1.boundaryField()[patchi]))
{
phi1.boundaryField()[patchi] ==
mrfZones.relative
(
mesh.Sf().boundaryField() & U1.boundaryField()
)()[patchi];
}
if (isA<fixedValueFvsPatchScalarField>(phi2.boundaryField()[patchi]))
{
phi2.boundaryField()[patchi] ==
mrfZones.relative
(
mesh.Sf().boundaryField() & U2.boundaryField()
)()[patchi];
}
}
// Correct fixed-flux BCs to be consistent with the velocity BCs
mrfZones.correctBoundaryFlux(U1, phi1);
mrfZones.correctBoundaryFlux(U2, phi2);
volVectorField HbyA1
(

View File

@ -99,26 +99,8 @@ while (pimple.correct())
surfaceScalarField rhof2(fvc::interpolate(rho2));
// Correct fixed-flux BCs to be consistent with the velocity BCs
forAll(mesh.boundary(), patchi)
{
if (isA<fixedValueFvsPatchScalarField>(phi1.boundaryField()[patchi]))
{
phi1.boundaryField()[patchi] ==
mrfZones.relative
(
mesh.Sf().boundaryField() & U1.boundaryField()
)()[patchi];
}
if (isA<fixedValueFvsPatchScalarField>(phi2.boundaryField()[patchi]))
{
phi2.boundaryField()[patchi] ==
mrfZones.relative
(
mesh.Sf().boundaryField() & U2.boundaryField()
)()[patchi];
}
}
mrfZones.correctBoundaryFlux(U1, phi1);
mrfZones.correctBoundaryFlux(U2, phi2);
surfaceScalarField alpharAUf1
(

View File

@ -526,7 +526,6 @@ void Foam::MRFZone::correctBoundaryVelocity(volVectorField& U) const
{
const vector Omega = this->Omega();
// Included patches
forAll(includedFaces_, patchi)
{

View File

@ -246,7 +246,7 @@ public:
surfaceScalarField& phi
) const;
//- Correct the boundary velocity for the roation of the MRF region
//- Correct the boundary velocity for the rotation of the MRF region
void correctBoundaryVelocity(volVectorField& U) const;

View File

@ -25,6 +25,7 @@ License
#include "MRFZoneList.H"
#include "volFields.H"
#include "fixedValueFvsPatchFields.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@ -310,6 +311,30 @@ void Foam::MRFZoneList::correctBoundaryVelocity(volVectorField& U) const
}
void Foam::MRFZoneList::correctBoundaryFlux
(
const volVectorField& U,
surfaceScalarField& phi
) const
{
FieldField<fvsPatchField, scalar> phibf
(
relative(mesh_.Sf().boundaryField() & U.boundaryField())
);
forAll(mesh_.boundary(), patchi)
{
if
(
isA<fixedValueFvsPatchScalarField>(phi.boundaryField()[patchi])
)
{
phi.boundaryField()[patchi] == phibf[patchi];
}
}
}
// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
Foam::Ostream& Foam::operator<<

View File

@ -160,9 +160,16 @@ public:
surfaceScalarField& phi
) const;
//- Correct the boundary velocity for the roation of the MRF region
//- Correct the boundary velocity for the rotation of the MRF region
void correctBoundaryVelocity(volVectorField& U) const;
//- Correct the boundary flux for the rotation of the MRF region
void correctBoundaryFlux
(
const volVectorField& U,
surfaceScalarField& phi
) const;
// I-O