The open source CFD toolbox
outletMachNumberPressureFvPatchScalarField Class Reference

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...

Inheritance diagram for outletMachNumberPressureFvPatchScalarField:
[legend]
Collaboration diagram for outletMachNumberPressureFvPatchScalarField:
[legend]

## Public Member Functions

TypeName ("outletMachNumberPressure")
Runtime type information. More...

outletMachNumberPressureFvPatchScalarField (const fvPatch &p, const DimensionedField< scalar, volMesh > &iF)
Construct from patch and internal field. More...

outletMachNumberPressureFvPatchScalarField (const fvPatch &p, const DimensionedField< scalar, volMesh > &iF, const dictionary &dict)
Construct from patch, internal field and dictionary. More...

outletMachNumberPressureFvPatchScalarField (const outletMachNumberPressureFvPatchScalarField &ptf, const fvPatch &p, const DimensionedField< scalar, volMesh > &iF, const fvPatchFieldMapper &mapper)

outletMachNumberPressureFvPatchScalarField (const outletMachNumberPressureFvPatchScalarField &tppsf)
Construct as copy. More...

virtual tmp< fvPatchScalarFieldclone () const
Construct and return a clone. More...

outletMachNumberPressureFvPatchScalarField (const outletMachNumberPressureFvPatchScalarField &tppsf, const DimensionedField< scalar, volMesh > &iF)
Construct as copy setting internal field reference. More...

virtual tmp< fvPatchScalarFieldclone (const DimensionedField< scalar, volMesh > &iF) const
Construct and return a clone setting internal field reference. More...

virtual void updateCoeffs ()
Update the coefficients associated with the patch field. More...

virtual void write (Ostream &os) const
Write. More...

## Detailed Description

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:

$\frac{p_{tot}}{p}=\left[ 1+ \frac{k-1}{2}\;M^2 \right]^{\frac{k}{k-1}}$

where the constant ratio of heat capacities is $$k=c_p/c_v$$. The Mach number in the cross section is $$M=V/c$$, where $$c$$ is the speed of sound and V is the uniform velocity in the streamwise direction.

Overall pressure difference across the nozzle is

$r = pBack/p_{tot}$

When $$k=1.4$$, the flow in the nozzle throat becomes choked when $$r<0.5$$ and non-choked otherwise. This implementation is not applicable when $$r>=1$$ 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, $$M_{outlet}$$, 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

$c1\frac{A_{outlet}}{A_1}=\frac{1}{M_{outlet}}\left[\frac{1+\frac{k-1}{2} M_{outlet}^2}{1+\frac{k-1}{2}}\right]^{\frac{k+1}{2(k-1)}}$

where $$c1$$ compensate for non-uniform outlet profiles, $$A_{outlet}$$ is geometrical outlet patch area and $$A_1$$ is assumed nozzle throat area.

In the non-choked case the outlet patch Mach number is calculated as

$M_{outlet} = \frac{A_1} {c1\;A_{outlet}} \sqrt{\frac{2}{k-1}\left[r^\frac{2}{k}-r^\frac{k+1}{k} \right]}$

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

Usage
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;
}
Source files

Definition at line 182 of file outletMachNumberPressureFvPatchScalarField.H.

## ◆ outletMachNumberPressureFvPatchScalarField() [1/5]

 outletMachNumberPressureFvPatchScalarField ( const fvPatch & p, const DimensionedField< scalar, volMesh > & iF )

Construct from patch and internal field.

Definition at line 40 of file outletMachNumberPressureFvPatchScalarField.C.

Referenced by outletMachNumberPressureFvPatchScalarField::clone().

Here is the caller graph for this function:

## ◆ outletMachNumberPressureFvPatchScalarField() [2/5]

 outletMachNumberPressureFvPatchScalarField ( const fvPatch & p, const DimensionedField< scalar, volMesh > & iF, const dictionary & dict )

Construct from patch, internal field and dictionary.

Definition at line 60 of file outletMachNumberPressureFvPatchScalarField.C.

## ◆ outletMachNumberPressureFvPatchScalarField() [3/5]

 outletMachNumberPressureFvPatchScalarField ( const outletMachNumberPressureFvPatchScalarField & ptf, const fvPatch & p, const DimensionedField< scalar, volMesh > & iF, const fvPatchFieldMapper & mapper )

Construct by mapping given outletMachNumberPressureFvPatchScalarField onto a new patch

Definition at line 81 of file outletMachNumberPressureFvPatchScalarField.C.

## ◆ outletMachNumberPressureFvPatchScalarField() [4/5]

 outletMachNumberPressureFvPatchScalarField ( const outletMachNumberPressureFvPatchScalarField & tppsf )

Construct as copy.

Definition at line 103 of file outletMachNumberPressureFvPatchScalarField.C.

## ◆ outletMachNumberPressureFvPatchScalarField() [5/5]

 outletMachNumberPressureFvPatchScalarField ( const outletMachNumberPressureFvPatchScalarField & tppsf, const DimensionedField< scalar, volMesh > & iF )

Construct as copy setting internal field reference.

Definition at line 122 of file outletMachNumberPressureFvPatchScalarField.C.

## ◆ TypeName()

 TypeName ( "outletMachNumberPressure" )

Runtime type information.

## ◆ clone() [1/2]

 virtual tmp clone ( ) const
inlinevirtual

Construct and return a clone.

Definition at line 256 of file outletMachNumberPressureFvPatchScalarField.H.

Here is the call graph for this function:

## ◆ clone() [2/2]

 virtual tmp clone ( const DimensionedField< scalar, volMesh > & iF ) const
inlinevirtual

Construct and return a clone setting internal field reference.

Definition at line 273 of file outletMachNumberPressureFvPatchScalarField.H.

Here is the call graph for this function:

## ◆ updateCoeffs()

 void updateCoeffs ( )
virtual

Update the coefficients associated with the patch field.

Definition at line 142 of file outletMachNumberPressureFvPatchScalarField.C.

Here is the call graph for this function:

## ◆ write()

 void write ( Ostream & os ) const
virtual

Write.

Definition at line 247 of file outletMachNumberPressureFvPatchScalarField.C.

Here is the call graph for this function:

The documentation for this class was generated from the following files: