Skip to content
Snippets Groups Projects
Commit 4bb7f08e authored by Henry Weller's avatar Henry Weller
Browse files

constrainPressure: Updated to use the more efficient patch-based MRF::relative function

parent 618bf48a
No related branches found
No related tags found
No related merge requests found
...@@ -43,51 +43,38 @@ void Foam::constrainPressure ...@@ -43,51 +43,38 @@ void Foam::constrainPressure
) )
{ {
const fvMesh& mesh = p.mesh(); const fvMesh& mesh = p.mesh();
volScalarField::GeometricBoundaryField& pBf = p.boundaryField();
bool hasFixedFluxBCs = false; volScalarField::GeometricBoundaryField& pBf = p.boundaryField();
forAll(pBf, patchi)
{
if (isA<fixedFluxPressureFvPatchScalarField>(pBf[patchi]))
{
hasFixedFluxBCs = true;
break;
}
}
if (hasFixedFluxBCs) const volVectorField::GeometricBoundaryField& UBf = U.boundaryField();
{
const surfaceScalarField::GeometricBoundaryField& phiHbyABf = const surfaceScalarField::GeometricBoundaryField& phiHbyABf =
phiHbyA.boundaryField(); phiHbyA.boundaryField();
const typename RAUType::GeometricBoundaryField& rhorAUBf = const typename RAUType::GeometricBoundaryField& rhorAUBf =
rhorAU.boundaryField(); rhorAU.boundaryField();
const surfaceVectorField::GeometricBoundaryField& SfBf =
mesh.Sf().boundaryField();
const surfaceScalarField::GeometricBoundaryField& magSfBf = const surfaceScalarField::GeometricBoundaryField& magSfBf =
mesh.magSf().boundaryField(); mesh.magSf().boundaryField();
// Pre-compute tho relative flux for all patches: currently MRFZone does
// not support computing the relative flux for individual patches
FieldField<fvsPatchField, scalar> phiRelBf
(
MRF.relative(mesh.Sf().boundaryField() & U.boundaryField())
);
forAll(pBf, patchi) forAll(pBf, patchi)
{ {
if (isA<fixedFluxPressureFvPatchScalarField>(pBf[patchi])) if (isA<fixedFluxPressureFvPatchScalarField>(pBf[patchi]))
{ {
refCast<fixedFluxPressureFvPatchScalarField>(pBf[patchi]) refCast<fixedFluxPressureFvPatchScalarField>
.updateCoeffs (
pBf[patchi]
).updateCoeffs
( (
( (
phiHbyABf[patchi] phiHbyABf[patchi]
- rho.boundaryField()[patchi]*phiRelBf[patchi] - rho.boundaryField()[patchi]
*MRF.relative(SfBf[patchi] & UBf[patchi], patchi)
) )
/(magSfBf[patchi]*rhorAUBf[patchi]) /(magSfBf[patchi]*rhorAUBf[patchi])
); );
} }
} }
} }
}
template<class RAUType> template<class RAUType>
......
...@@ -68,6 +68,13 @@ public: ...@@ -68,6 +68,13 @@ public:
{ {
return U; return U;
} }
//- Return the argument unchanged
template<class Type>
inline const Type& relative(const Type& U, const label patchi) const
{
return U;
}
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment