This boundary condition maintains a certain subsonic Mach number at an outlet patch by dynamically adjusting the static outlet pressure. It makes it possible, for example, to simulate the flow in a preturbine engine exhaust manifold, without resolving details of the flow inside the turbine. In general, the flow in a choked nozzle can be non-trivial and expensive to simulate. More...
Public Member Functions | |
TypeName ("outletMachNumberPressure") | |
outletMachNumberPressureFvPatchScalarField (const fvPatch &p, const DimensionedField< scalar, volMesh > &iF) | |
outletMachNumberPressureFvPatchScalarField (const fvPatch &p, const DimensionedField< scalar, volMesh > &iF, const dictionary &dict) | |
outletMachNumberPressureFvPatchScalarField (const outletMachNumberPressureFvPatchScalarField &ptf, const fvPatch &p, const DimensionedField< scalar, volMesh > &iF, const fvPatchFieldMapper &mapper) | |
outletMachNumberPressureFvPatchScalarField (const outletMachNumberPressureFvPatchScalarField &tppsf) | |
virtual tmp< fvPatchScalarField > | clone () const |
outletMachNumberPressureFvPatchScalarField (const outletMachNumberPressureFvPatchScalarField &tppsf, const DimensionedField< scalar, volMesh > &iF) | |
virtual tmp< fvPatchScalarField > | clone (const DimensionedField< scalar, volMesh > &iF) const |
virtual void | updateCoeffs () |
virtual void | write (Ostream &os) const |
This boundary condition maintains a certain subsonic Mach number at an outlet patch by dynamically adjusting the static outlet pressure. It makes it possible, for example, to simulate the flow in a preturbine engine exhaust manifold, without resolving details of the flow inside the turbine. In general, the flow in a choked nozzle can be non-trivial and expensive to simulate.
This formulation is derived from a simple model of the gas flow through a nozzle with fixed geometry. The nozzle flow is assumed to be quasi-steady, 1D, isentropic and compressible.
This gives the following general relationship between pressure ratio and Mach number in any cross section inside the nozzle:
where the constant ratio of heat capacities is . The Mach number in the cross section is
, where
is the speed of sound and V is the uniform velocity in the streamwise direction.
Overall pressure difference across the nozzle is
When , the flow in the nozzle throat becomes choked when
and non-choked otherwise. This implementation is not applicable when
where backflow would occur.
The nozzle model assumption locks the relationship between nozzle cross sectional areas and Mach numbers. For a choked flow it is only the Mach number on the outlet patch, , that needs to be stated in the boundary dictionary.
Care should be taken however to ensure that the entries in the input dictionary and the CFD geometry satisfy the following equation
where compensate for non-uniform outlet profiles,
is geometrical outlet patch area and
is assumed nozzle throat area.
In the non-choked case the outlet patch Mach number is calculated as
The accompanying boundary conditions for velocity should be pressureInletOutletVelocity.
Author: Jens Dahl Kunoy
Reference:
Fox, R.W & McDonald, A. T. (1994). Introduction to Fluid Mechanics (4ed SI). Wiley
Property | Description | Required | Default value |
---|---|---|---|
choked | Defines nozzle conditions | Yes | None |
relax | underrelaxation of static pressure | Yes | 0 |
M | outlet Mach number | Yes (choked) | None |
A1 | Nozzle throat area [m2] | Yes (non-choked) | 0 |
pBack | Pressure downstream of nozzle | Yes (non-choked) | None |
c1 | Correction factor for non-uniform profiles | ||
| No (non-choked) | 0.0 |
Example of the boundary condition specification:
<patchName> { type outletMachNumberPressure; pBack 101325; c1 1; A1 0.008; relax 0.1; choked false; value uniform 200000; }
Definition at line 178 of file outletMachNumberPressureFvPatchScalarField.H.
outletMachNumberPressureFvPatchScalarField | ( | const fvPatch & | p, |
const DimensionedField< scalar, volMesh > & | iF | ||
) |
Definition at line 33 of file outletMachNumberPressureFvPatchScalarField.C.
Referenced by outletMachNumberPressureFvPatchScalarField::clone().
outletMachNumberPressureFvPatchScalarField | ( | const fvPatch & | p, |
const DimensionedField< scalar, volMesh > & | iF, | ||
const dictionary & | dict | ||
) |
Definition at line 53 of file outletMachNumberPressureFvPatchScalarField.C.
outletMachNumberPressureFvPatchScalarField | ( | const outletMachNumberPressureFvPatchScalarField & | ptf, |
const fvPatch & | p, | ||
const DimensionedField< scalar, volMesh > & | iF, | ||
const fvPatchFieldMapper & | mapper | ||
) |
Definition at line 74 of file outletMachNumberPressureFvPatchScalarField.C.
outletMachNumberPressureFvPatchScalarField | ( | const outletMachNumberPressureFvPatchScalarField & | tppsf | ) |
Definition at line 96 of file outletMachNumberPressureFvPatchScalarField.C.
outletMachNumberPressureFvPatchScalarField | ( | const outletMachNumberPressureFvPatchScalarField & | tppsf, |
const DimensionedField< scalar, volMesh > & | iF | ||
) |
Definition at line 115 of file outletMachNumberPressureFvPatchScalarField.C.
TypeName | ( | "outletMachNumberPressure" | ) |
|
inlinevirtual |
Definition at line 252 of file outletMachNumberPressureFvPatchScalarField.H.
References outletMachNumberPressureFvPatchScalarField::outletMachNumberPressureFvPatchScalarField().
|
inlinevirtual |
Definition at line 269 of file outletMachNumberPressureFvPatchScalarField.H.
References outletMachNumberPressureFvPatchScalarField::outletMachNumberPressureFvPatchScalarField().
|
virtual |
Definition at line 135 of file outletMachNumberPressureFvPatchScalarField.C.
References Foam::fieldTypes::area, basicThermo::dictName, Foam::dimArea, Foam::dimDensity, Foam::dimVelocity, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, gamma, basicThermo::gamma(), Foam::gAverage(), Foam::gSum(), M, Foam::mag(), Foam::operator==(), p, Foam::foamVersion::patch, phi, Foam::pow(), rho, Foam::sqr(), Foam::sqrt(), U, and WarningInFunction.
|
virtual |
Definition at line 240 of file outletMachNumberPressureFvPatchScalarField.C.
References os(), fvPatchField::write(), Ostream::writeEntry(), and Ostream::writeEntryIfDifferent().
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.