diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 987729b1a1d2d7d93c916e29596e7067205fec8a..140b92dc89742c5691368060caa6d470dce8e535 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -204,6 +204,7 @@ $(derivedFvPatchFields)/prghPressure/prghPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/prghTotalPressure/prghTotalPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/prghTotalHydrostaticPressure/prghTotalHydrostaticPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/fixedProfile/fixedProfileFvPatchFields.C
+$(derivedFvPatchFields)/plenumPressure/plenumPressureFvPatchScalarField.C
 
 fvsPatchFields = fields/fvsPatchFields
 $(fvsPatchFields)/fvsPatchField/fvsPatchFields.C
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..13c9af6a54f00e705f7b74dbafb0e2a7e90feb5b
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C
@@ -0,0 +1,346 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "plenumPressureFvPatchScalarField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvPatchFieldMapper.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    fixedValueFvPatchScalarField(p, iF),
+    gamma_(1.4),
+    R_(287.04),
+    supplyMassFlowRate_(1.0),
+    supplyTotalTemperature_(300.0),
+    plenumVolume_(1.0),
+    plenumDensity_(1.0),
+    plenumDensityOld_(1.0),
+    plenumTemperature_(300.0),
+    plenumTemperatureOld_(300.0),
+    rho_(1.0),
+    hasRho_(false),
+    inletAreaRatio_(1.0),
+    inletDischargeCoefficient_(1.0),
+    timeScale_(0.0),
+    timeIndex_(-1),
+    phiName_("phi"),
+    UName_("U")
+{}
+
+
+Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    fixedValueFvPatchScalarField(p, iF),
+    gamma_(readScalar(dict.lookup("gamma"))),
+    R_(readScalar(dict.lookup("R"))),
+    supplyMassFlowRate_(readScalar(dict.lookup("supplyMassFlowRate"))),
+    supplyTotalTemperature_
+    (
+        readScalar(dict.lookup("supplyTotalTemperature"))
+    ),
+    plenumVolume_(readScalar(dict.lookup("plenumVolume"))),
+    plenumDensity_(readScalar(dict.lookup("plenumDensity"))),
+    plenumTemperature_(readScalar(dict.lookup("plenumTemperature"))),
+    rho_(1.0),
+    hasRho_(false),
+    inletAreaRatio_(readScalar(dict.lookup("inletAreaRatio"))),
+    inletDischargeCoefficient_
+    (
+        readScalar(dict.lookup("inletDischargeCoefficient"))
+    ),
+    timeScale_(dict.lookupOrDefault<scalar>("timeScale", 0.0)),
+    phiName_(dict.lookupOrDefault<word>("phi", "phi")),
+    UName_(dict.lookupOrDefault<word>("U", "U"))
+{
+    fvPatchScalarField::operator=(scalarField("value", dict, p.size()));
+
+    if (dict.found("rho"))
+    {
+        rho_ = readScalar(dict.lookup("rho"));
+        hasRho_ = true;
+    }
+}
+
+
+Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField
+(
+    const plenumPressureFvPatchScalarField& ptf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    fixedValueFvPatchScalarField(ptf, p, iF, mapper),
+    gamma_(ptf.gamma_),
+    R_(ptf.R_),
+    supplyMassFlowRate_(ptf.supplyMassFlowRate_),
+    supplyTotalTemperature_(ptf.supplyTotalTemperature_),
+    plenumVolume_(ptf.plenumVolume_),
+    plenumDensity_(ptf.plenumDensity_),
+    plenumTemperature_(ptf.plenumTemperature_),
+    rho_(ptf.rho_),
+    hasRho_(ptf.hasRho_),
+    inletAreaRatio_(ptf.inletAreaRatio_),
+    inletDischargeCoefficient_(ptf.inletDischargeCoefficient_),
+    timeScale_(ptf.timeScale_),
+    phiName_(ptf.phiName_),
+    UName_(ptf.UName_)
+{}
+
+
+Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField
+(
+    const plenumPressureFvPatchScalarField& tppsf
+)
+:
+    fixedValueFvPatchScalarField(tppsf),
+    gamma_(tppsf.gamma_),
+    R_(tppsf.R_),
+    supplyMassFlowRate_(tppsf.supplyMassFlowRate_),
+    supplyTotalTemperature_(tppsf.supplyTotalTemperature_),
+    plenumVolume_(tppsf.plenumVolume_),
+    plenumDensity_(tppsf.plenumDensity_),
+    plenumTemperature_(tppsf.plenumTemperature_),
+    rho_(tppsf.rho_),
+    hasRho_(tppsf.hasRho_),
+    inletAreaRatio_(tppsf.inletAreaRatio_),
+    inletDischargeCoefficient_(tppsf.inletDischargeCoefficient_),
+    timeScale_(tppsf.timeScale_),
+    phiName_(tppsf.phiName_),
+    UName_(tppsf.UName_)
+{}
+
+
+Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField
+(
+    const plenumPressureFvPatchScalarField& tppsf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    fixedValueFvPatchScalarField(tppsf, iF),
+    gamma_(tppsf.gamma_),
+    R_(tppsf.R_),
+    supplyMassFlowRate_(tppsf.supplyMassFlowRate_),
+    supplyTotalTemperature_(tppsf.supplyTotalTemperature_),
+    plenumVolume_(tppsf.plenumVolume_),
+    plenumDensity_(tppsf.plenumDensity_),
+    plenumTemperature_(tppsf.plenumTemperature_),
+    rho_(tppsf.rho_),
+    hasRho_(tppsf.hasRho_),
+    inletAreaRatio_(tppsf.inletAreaRatio_),
+    inletDischargeCoefficient_(tppsf.inletDischargeCoefficient_),
+    timeScale_(tppsf.timeScale_),
+    phiName_(tppsf.phiName_),
+    UName_(tppsf.UName_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::plenumPressureFvPatchScalarField::updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    // Patch properties
+    const fvPatchField<scalar>& p = *this;
+    const fvPatchField<scalar>& p_old =
+        db().lookupObject<volScalarField>
+        (
+            dimensionedInternalField().name()
+        ).oldTime().boundaryField()[patch().index()];
+    const fvPatchField<vector>& U =
+        patch().lookupPatchField<volVectorField, vector>(UName_);
+    const fvsPatchField<scalar>& phi =
+        patch().lookupPatchField<surfaceScalarField, scalar>(phiName_);
+
+    // Get the timestep
+    const scalar dt = db().time().deltaTValue();
+
+    // Check if operating at a new time index and update the old-time properties
+    // if so
+    if (timeIndex_ != db().time().timeIndex())
+    {
+        timeIndex_ = db().time().timeIndex();
+        plenumDensityOld_ = plenumDensity_;
+        plenumTemperatureOld_ = plenumTemperature_;
+    }
+
+    // Calculate the current mass flow rate
+    scalar massFlowRate(1.0);
+    if (phi.dimensionedInternalField().dimensions() == dimVelocity*dimArea)
+    {
+        if (hasRho_)
+        {
+            massFlowRate = - gSum(rho_*phi);
+        }
+        else
+        {
+            FatalErrorInFunction
+                << "The density must be specified when using a volumetric flux."
+                << exit(FatalError);
+        }
+    }
+    else if
+    (
+        phi.dimensionedInternalField().dimensions()
+     == dimDensity*dimVelocity*dimArea
+    )
+    {
+        if (hasRho_)
+        {
+            FatalErrorInFunction
+                << "The density must be not specified when using a mass flux."
+                << exit(FatalError);
+        }
+        else
+        {
+            massFlowRate = - gSum(phi);
+        }
+    }
+    else
+    {
+        FatalErrorInFunction
+            << "dimensions of phi are not correct"
+            << "\n    on patch " << patch().name()
+            << " of field " << dimensionedInternalField().name()
+            << " in file " << dimensionedInternalField().objectPath() << nl
+            << exit(FatalError);
+    }
+
+    // Calcaulate the specific heats
+    const scalar cv = R_/(gamma_ - 1), cp = R_*gamma_/(gamma_ - 1);
+
+    // Calculate the new plenum properties
+    plenumDensity_ =
+        plenumDensityOld_
+      + (dt/plenumVolume_)*(supplyMassFlowRate_ - massFlowRate);
+    plenumTemperature_ =
+        plenumTemperatureOld_
+      + (dt/(plenumDensity_*cv*plenumVolume_))
+      * (
+            supplyMassFlowRate_
+           *(cp*supplyTotalTemperature_ - cv*plenumTemperature_)
+          - massFlowRate*R_*plenumTemperature_
+        );
+    const scalar plenumPressure = plenumDensity_*R_*plenumTemperature_;
+
+    // Squared velocity magnitude at exit of channels
+    const scalarField U_e(magSqr(U/inletAreaRatio_));
+
+    // Exit temperature to plenum temperature ratio
+    const scalarField r
+    (
+        1.0 - (gamma_ - 1.0)*U_e/(2.0*gamma_*R_*plenumTemperature_)
+    );
+
+    // Quadratic coefficient (others not needed as b = +1.0 and c = -1.0)
+    const scalarField a
+    (
+        (1.0 - r)/(r*r*inletDischargeCoefficient_*inletDischargeCoefficient_)
+    );
+
+    // Isentropic exit temperature to plenum temperature ratio
+    const scalarField s(2.0/(1.0 + sqrt(1.0 + 4.0*a)));
+
+    // Exit pressure to plenum pressure ratio
+    const scalarField t(pow(s, gamma_/(gamma_ - 1.0)));
+
+    // Limit to prevent outflow
+    const scalarField p_new
+    (
+        (1.0 - pos(phi))*t*plenumPressure + pos(phi)*max(p, plenumPressure)
+    );
+
+    // Relaxation fraction
+    const scalar oneByFraction = timeScale_/dt;
+    const scalar fraction = oneByFraction < 1.0 ? 1.0 : 1.0/oneByFraction;
+
+    // Set the new value
+    operator==((1.0 - fraction)*p_old + fraction*p_new);
+    fixedValueFvPatchScalarField::updateCoeffs();
+}
+
+
+void Foam::plenumPressureFvPatchScalarField::write(Ostream& os) const
+{
+    fvPatchScalarField::write(os);
+    os.writeKeyword("gamma") << gamma_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("R") << R_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("supplyMassFlowRate") << supplyMassFlowRate_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("supplyTotalTemperature") << supplyTotalTemperature_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("plenumVolume") << plenumVolume_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("plenumDensity") << plenumDensity_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("plenumTemperature") << plenumTemperature_
+        << token::END_STATEMENT << nl;
+    if (hasRho_)
+    {
+        os.writeKeyword("rho") << rho_
+            << token::END_STATEMENT << nl;
+    }
+    os.writeKeyword("inletAreaRatio") << inletAreaRatio_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("inletDischargeCoefficient") << inletDischargeCoefficient_
+        << token::END_STATEMENT << nl;
+    writeEntryIfDifferent<scalar>(os, "timeScale", 0.0, timeScale_);
+    writeEntryIfDifferent<word>(os, "phi", "phi", phiName_);
+    writeEntryIfDifferent<word>(os, "U", "U", UName_);
+    writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makePatchTypeField
+    (
+        fvPatchScalarField,
+        plenumPressureFvPatchScalarField
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.H
new file mode 100644
index 0000000000000000000000000000000000000000..c2d5b4f4a7e6f4a27bb90f263a44c22cc2a17c68
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.H
@@ -0,0 +1,271 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::plenumPressureFvPatchScalarField
+
+Group
+    grpInletBoundaryConditions
+
+Description
+    This boundary condition provides a plenum pressure inlet condition. This
+    condition creates a zero-dimensional model of an enclosed volume of gas
+    upstream of the inlet. The pressure that the boundary condition exerts on
+    the inlet boundary is dependent on the thermodynamic state of the upstream
+    volume. The upstream plenum density and temperature are time-stepped along
+    with the rest of the simulation, and momentum is neglected. The plenum is
+    supplied with a user specified mass flow and temperature.
+
+    The result is a boundary condition which blends between a pressure inlet
+    condition condition and a fixed mass flow. The smaller the plenum
+    volume, the quicker the pressure responds to a deviation from the supply
+    mass flow, and the closer the model approximates a fixed mass flow. As
+    the plenum size increases, the model becomes more similar to a specified
+    pressure.
+
+    The expansion from the plenum to the inlet boundary is controlled by an
+    area ratio and a discharge coefficient. The area ratio can be used to
+    represent further acceleration between a sub-grid blockage such as fins.
+    The discharge coefficient represents a fractional deviation from an
+    ideal expansion process.
+
+    This condition is useful for simulating unsteady internal flow problems
+    for which both a mass flow boundary is unrealistic, and a pressure
+    boundary is susceptible to flow reversal. It was developed for use in
+    simulating confined combustion.
+
+    Reference:
+    \verbatim
+        Bainbridge, W. (2013).
+        The Numerical Simulation of Oscillations in Gas Turbine Combustion
+        Chambers,
+        PhD Thesis,
+        Chapter 4, Section 4.3.1.2, 77-80.
+    \endverbatim
+
+    \heading Patch usage
+
+    \table
+        Property        | Description                 | Required | Default value
+        gamma           | ratio of specific heats     | yes      | none
+        R               | specific gas constant       | yes      | none
+        supplyMassFlowRate | flow rate into the plenum | yes     | none
+        supplyTotalTemperature | temperature into the plenum | yes | none
+        plenumVolume    | plenum volume               | yes      | none
+        plenumDensity   | plenum density              | yes      | none
+        plenumTemperature | plenum temperature        | yes      | none
+        U               | velocity field name         | no       | U
+        phi             | flux field name             | no       | phi
+        rho             | inlet density               | no       | none
+        inletAreaRatio  | inlet open fraction         | yes      | none
+        inletDischargeCoefficient | inlet loss coefficient | yes | none
+        timeScale       | relaxation time scale       | yes      | none
+    \endtable
+
+    Example of the boundary condition specification:
+    \verbatim
+    myPatch
+    {
+        type            plenumPressure;
+        gamma           1.4;
+        R               287.04;
+        supplyMassFlowRate 0.0001;
+        supplyTotalTemperature 300;
+        plenumVolume    0.000125;
+        plenumDensity   1.1613;
+        plenumTemperature 300;
+        inletAreaRatio  1.0;
+        inletDischargeCoefficient 0.8;
+        timeScale       1e-4;
+        value           uniform 1e5;
+    }
+    \endverbatim
+
+SourceFiles
+    plenumPressureFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef plenumPressureFvPatchScalarField_H
+#define plenumPressureFvPatchScalarField_H
+
+#include "fixedValueFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class plenumPressureFvPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+class plenumPressureFvPatchScalarField
+:
+    public fixedValueFvPatchScalarField
+{
+    // Private data
+
+        //- Ratio of specific heats
+        scalar gamma_;
+
+        //- Specific gas constant
+        scalar R_;
+
+        //- Mass flow rate supplied to the plenum
+        scalar supplyMassFlowRate_;
+
+        //- Total temperature of the gas supplied to the plenum
+        scalar supplyTotalTemperature_;
+
+        //- The volume of the plenum
+        scalar plenumVolume_;
+
+        //- The mean density of the gas in the plenum
+        scalar plenumDensity_;
+
+        //- The old-time mean density of the gas in the plenum
+        scalar plenumDensityOld_;
+
+        //- The mean temperature of the gas in the plenum
+        scalar plenumTemperature_;
+
+        //- The mean old-time temperature of the gas in the plenum
+        scalar plenumTemperatureOld_;
+
+        //- The constant density used when phi is volumetric
+        scalar rho_;
+
+        //- Whether or not the constant density has been specified
+        bool hasRho_;
+
+        //- The ratio of open area to total area at the inlet
+        //  Allows a grid or mesh to be represented
+        scalar inletAreaRatio_;
+
+        //- The discharge coefficient at the inlet
+        scalar inletDischargeCoefficient_;
+
+        //- The time scale over which changes in pressure are smoothed
+        scalar timeScale_;
+
+        //- The time index used for updating
+        label timeIndex_;
+
+        //- The name of the flux field
+        word phiName_;
+
+        //- The name of the velocity field
+        word UName_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("plenumPressure");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        plenumPressureFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        plenumPressureFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given plenumPressureFvPatchScalarField
+        //  onto a new patch
+        plenumPressureFvPatchScalarField
+        (
+            const plenumPressureFvPatchScalarField&,
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        plenumPressureFvPatchScalarField
+        (
+            const plenumPressureFvPatchScalarField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchScalarField> clone() const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new plenumPressureFvPatchScalarField(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        plenumPressureFvPatchScalarField
+        (
+            const plenumPressureFvPatchScalarField&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchScalarField> clone
+        (
+            const DimensionedField<scalar, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new plenumPressureFvPatchScalarField(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        // Evaluation functions
+
+            //- Update the coefficients associated with the patch field
+            virtual void updateCoeffs();
+
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/T b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..08c022f92f38c2ee8c8ecafd7f22b7742d387bdc
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/T
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 300;
+        value           uniform 300;
+    }
+
+    symmetry
+    {
+        type            symmetry;
+    }
+
+    wall
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+
+    plenum
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/U b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..e2b5d86221249444728aca90bbdb5520e4895ae5
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/U
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            flowRateInletVelocity;
+        phi             phi;
+        rho             rho;
+        massFlowRate    0.0001;
+        value           uniform (0 0 0);
+    }
+
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        inletValue      uniform (0 0 0);
+        value           uniform (0 0 0);
+    }
+
+    symmetry
+    {
+        type            symmetry;
+    }
+
+    wall
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    plenum
+    {
+        type            pressureInletVelocity;
+        phi             phi;
+        rho             rho;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/p b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..e9b41399de39be294b60f13a70ef987d1d84b191
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/p
@@ -0,0 +1,63 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    outlet
+    {
+        type            fixedMean;
+        meanValue       constant 1e5;
+        value           uniform 1e5;
+    }
+
+    symmetry
+    {
+        type            symmetry;
+    }
+
+    wall
+    {
+        type            zeroGradient;
+    }
+
+    plenum
+    {
+        type            plenumPressure;
+        gamma           1.4;
+        R               287.04;
+        supplyMassFlowRate 0.0001;
+        supplyTotalTemperature 300;
+        plenumVolume    0.000125;
+        plenumDensity   1.1613;
+        plenumTemperature 300;
+        inletAreaRatio  1.0;
+        inletDischargeCoefficient 0.8;
+        timeScale       1e-4;
+        value           uniform 1e5;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allclean b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..afc06ff982c0777d9b403f7dd35f319bf094507f
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allclean
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+
+(cd system && rm -f blockMeshDict.caseBlocks blockMeshDict.caseBoundary)
+
+rm -rf resolved modelled pressure.eps
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allrun b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..78bf41821afa9d0e361e0533b5f9a3d507c6bcd5
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allrun
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+cd ${0%/*} || exit 1
+
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+# Run function links the appropriate mesh files and clones the case
+run()
+{
+    (
+        cd system
+        rm -f blockMeshDict.caseBlocks blockMeshDict.caseBoundary
+        ln -s blockMeshDict.${1}Blocks blockMeshDict.caseBlocks
+        ln -s blockMeshDict.${1}Boundary blockMeshDict.caseBoundary
+    )
+
+    cloneCase . ${1}
+
+    (
+        cd ${1}
+        runApplication blockMesh
+        runApplication decomposePar
+        runParallel $(getApplication)
+    )
+}
+
+# Run with a fully resolved plenum
+run resolved
+
+# Run with the plenum modelled by a boundary condition
+run modelled
+
+# Plot a comparison of the pressure in the neck
+cat << EOF | gnuplot -persist
+
+set terminal postscript eps size 5,4 enhanced color
+
+set xlabel "Time (s)"
+set ylabel "Guage pressure in the neck (Pa)"
+
+set output "pressure.eps"
+
+plot \
+    "resolved/postProcessing/probes/0/p" us 1:(\$4-1e5) t "Resolved Plenum" w l, \
+    "modelled/postProcessing/probes/0/p" us 1:(\$4-1e5) t "Modelled Plenum" w l
+
+EOF
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..392e2e045bf30bfbf162b0f531cf855d8a6056b8
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            hePsiThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          eConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cv          712;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.8e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/turbulenceProperties b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c2c3b28a1b4e8f4a2cae55f58bd61f9b1a67b488
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..e4dabbfe23c9ce735e938267e22da5c977145ff3
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict
@@ -0,0 +1,251 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.0025;
+
+vertices
+(
+   (-28 -10 -10)
+   (-28 -10  -5)
+   (-28 -10   5)
+   (-28 -10  10)
+   (-28  -5 -10)
+   (-28  -5  -5)
+   (-28  -5   5)
+   (-28  -5  10)
+   (-28   5 -10)
+   (-28   5  -5)
+   (-28   5   5)
+   (-28   5  10)
+   (-28  10 -10)
+   (-28  10  -5)
+   (-28  10   5)
+   (-28  10  10)
+
+   (-14 -10 -10)
+   (-14 -10  -5)
+   (-14 -10   5)
+   (-14 -10  10)
+   (-14  -5 -10)
+   (-14  -5  -5)
+   (-14  -5   5)
+   (-14  -5  10)
+   (-14   5 -10)
+   (-14   5  -5)
+   (-14   5   5)
+   (-14   5  10)
+   (-14  10 -10)
+   (-14  10  -5)
+   (-14  10   5)
+   (-14  10  10)
+
+   ( -8 -10 -10)
+   ( -8 -10  -5)
+   ( -8 -10   5)
+   ( -8 -10  10)
+   ( -8  -5 -10)
+   ( -8  -5  -5)
+   ( -8  -5   5)
+   ( -8  -5  10)
+   ( -8   5 -10)
+   ( -8   5  -5)
+   ( -8   5   5)
+   ( -8   5  10)
+   ( -8  10 -10)
+   ( -8  10  -5)
+   ( -8  10   5)
+   ( -8  10  10)
+
+   (  0 -10 -10)
+   (  0 -10  -5)
+   (  0 -10   5)
+   (  0 -10  10)
+   (  0  -5 -10)
+   (  0  -5  -5)
+   (  0  -5   5)
+   (  0  -5  10)
+   (  0   5 -10)
+   (  0   5  -5)
+   (  0   5   5)
+   (  0   5  10)
+   (  0  10 -10)
+   (  0  10  -5)
+   (  0  10   5)
+   (  0  10  10)
+
+   (  6 -10 -10)
+   (  6 -10  -5)
+   (  6 -10   5)
+   (  6 -10  10)
+   (  6  -5 -10)
+   (  6  -5  -5)
+   (  6  -5   5)
+   (  6  -5  10)
+   (  6   5 -10)
+   (  6   5  -5)
+   (  6   5   5)
+   (  6   5  10)
+   (  6  10 -10)
+   (  6  10  -5)
+   (  6  10   5)
+   (  6  10  10)
+
+   ( 10 -10 -10)
+   ( 10 -10  -5)
+   ( 10 -10   5)
+   ( 10 -10  10)
+   ( 10  -5 -10)
+   ( 10  -5  -5)
+   ( 10  -5   5)
+   ( 10  -5  10)
+   ( 10   5 -10)
+   ( 10   5  -5)
+   ( 10   5   5)
+   ( 10   5  10)
+   ( 10  10 -10)
+   ( 10  10  -5)
+   ( 10  10   5)
+   ( 10  10  10)
+
+   (-11  -2  -2)
+   (-11  -2   2)
+   (-11   2  -2)
+   (-11   2   2)
+
+   ( -8  -2  -2)
+   ( -8  -2   2)
+   ( -8   2  -2)
+   ( -8   2   2)
+
+   (  0  -2  -2)
+   (  0  -2   2)
+   (  0   2  -2)
+   (  0   2   2)
+
+   (  3  -2  -2)
+   (  3  -2   2)
+   (  3   2  -2)
+   (  3   2   2)
+);
+
+x1  14; x2   6; x3  20; x4   6; x5   4; // X divisions
+yc   6; ys  12; zc $yc; zs $ys;         // Y and Z corner and side divisions
+o    6;                                 // O-grid divisions
+
+blocks
+(
+    #include "blockMeshDict.caseBlocks"
+
+    hex ( 48  52  53  49  64  68  69  65) ($yc $zc $x4) simpleGrading (1 1 1)
+    hex ( 49  53  54  50  65  69  70  66) ($yc $zs $x4) simpleGrading (1 1 1)
+    hex ( 50  54  55  51  66  70  71  67) ($yc $zc $x4) simpleGrading (1 1 1)
+    hex ( 52  56  57  53  68  72  73  69) ($ys $zc $x4) simpleGrading (1 1 1)
+    hex ( 54  58  59  55  70  74  75  71) ($ys $zc $x4) simpleGrading (1 1 1)
+    hex ( 56  60  61  57  72  76  77  73) ($yc $zc $x4) simpleGrading (1 1 1)
+    hex ( 57  61  62  58  73  77  78  74) ($yc $zs $x4) simpleGrading (1 1 1)
+    hex ( 58  62  63  59  74  78  79  75) ($yc $zc $x4) simpleGrading (1 1 1)
+
+    hex ( 64  68  69  65  80  84  85  81) ($yc $zc $x5) simpleGrading (1 1 1)
+    hex ( 65  69  70  66  81  85  86  82) ($yc $zs $x5) simpleGrading (1 1 1)
+    hex ( 66  70  71  67  82  86  87  83) ($yc $zc $x5) simpleGrading (1 1 1)
+    hex ( 68  72  73  69  84  88  89  85) ($ys $zc $x5) simpleGrading (1 1 1)
+    hex ( 69  73  74  70  85  89  90  86) ($ys $zs $x5) simpleGrading (1 1 1)
+    hex ( 70  74  75  71  86  90  91  87) ($ys $zc $x5) simpleGrading (1 1 1)
+    hex ( 72  76  77  73  88  92  93  89) ($yc $zc $x5) simpleGrading (1 1 1)
+    hex ( 73  77  78  74  89  93  94  90) ($yc $zs $x5) simpleGrading (1 1 1)
+    hex ( 74  78  79  75  90  94  95  91) ($yc $zc $x5) simpleGrading (1 1 1)
+
+    hex (100 102 103 101 104 106 107 105) ($ys $zs $x3) simpleGrading (1 1 1)
+    hex (104 106 107 105 108 110 111 109) ($ys $zs $x4) simpleGrading (1 1 1)
+    hex (108 110 111 109 69  73  74  70 ) ($ys $zs $o ) simpleGrading (1 1 1)
+
+    hex ( 53  54  70  69 104 105 109 108) ($zs $x4 $o ) simpleGrading (1 1 1)
+    hex ( 57  53  69  73 106 104 108 110) ($ys $x4 $o ) simpleGrading (1 1 1)
+    hex ( 54  58  74  70 105 107 111 109) ($ys $x4 $o ) simpleGrading (1 1 1)
+    hex ( 58  57  73  74 107 106 110 111) ($zs $x4 $o ) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+defaultPatch
+{
+    name walls;
+    type wall;
+}
+
+boundary
+(
+    #include "blockMeshDict.caseBoundary"
+
+    outlet
+    {
+        type patch;
+        faces
+        (
+            (80 84 85 81)
+            (81 85 86 82)
+            (82 86 87 83)
+            (84 88 89 85)
+            (85 89 90 86)
+            (86 90 91 87)
+            (88 92 93 89)
+            (89 93 94 90)
+            (90 94 95 91)
+        );
+    }
+
+    sides
+    {
+        type symmetry;
+        faces
+        (
+            (48 49 65 64)
+            (49 50 66 65)
+            (50 51 67 66)
+            (48 52 68 64)
+            (52 56 72 68)
+            (56 60 76 72)
+            (51 55 71 67)
+            (55 59 75 71)
+            (59 63 79 75)
+            (60 61 77 76)
+            (61 62 78 77)
+            (62 63 79 78)
+
+            (64 65 81 80)
+            (65 66 82 81)
+            (66 67 83 82)
+            (64 68 84 80)
+            (68 72 88 84)
+            (72 76 92 88)
+            (67 71 87 83)
+            (71 75 91 87)
+            (75 79 95 91)
+            (76 77 93 92)
+            (77 78 94 93)
+            (78 79 95 94)
+        );
+    }
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBlocks b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBlocks
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBoundary b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBoundary
new file mode 100644
index 0000000000000000000000000000000000000000..84976c8ef2d39a63454e0e2df650c9a65ef6e357
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBoundary
@@ -0,0 +1,8 @@
+plenum
+{
+    type patch;
+    faces
+    (
+        (100 102 103 101)
+    );
+}
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBlocks b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBlocks
new file mode 100644
index 0000000000000000000000000000000000000000..1cdaee0c567d53c87bccb883fa01b96f5269c284
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBlocks
@@ -0,0 +1,26 @@
+hex (  0   4   5   1  16  20  21  17) ($yc $zc $x1) simpleGrading (1 1 1)
+hex (  1   5   6   2  17  21  22  18) ($yc $zs $x1) simpleGrading (1 1 1)
+hex (  2   6   7   3  18  22  23  19) ($yc $zc $x1) simpleGrading (1 1 1)
+hex (  4   8   9   5  20  24  25  21) ($ys $zc $x1) simpleGrading (1 1 1)
+hex (  5   9  10   6  21  25  26  22) ($ys $zs $x1) simpleGrading (1 1 1)
+hex (  6  10  11   7  22  26  27  23) ($ys $zc $x1) simpleGrading (1 1 1)
+hex (  8  12  13   9  24  28  29  25) ($yc $zc $x1) simpleGrading (1 1 1)
+hex (  9  13  14  10  25  29  30  26) ($yc $zs $x1) simpleGrading (1 1 1)
+hex ( 10  14  15  11  26  30  31  27) ($yc $zc $x1) simpleGrading (1 1 1)
+
+hex ( 16  20  21  17  32  36  37  33) ($yc $zc $x2) simpleGrading (1 1 1)
+hex ( 17  21  22  18  33  37  38  34) ($yc $zs $x2) simpleGrading (1 1 1)
+hex ( 18  22  23  19  34  38  39  35) ($yc $zc $x2) simpleGrading (1 1 1)
+hex ( 20  24  25  21  36  40  41  37) ($ys $zc $x2) simpleGrading (1 1 1)
+hex ( 22  26  27  23  38  42  43  39) ($ys $zc $x2) simpleGrading (1 1 1)
+hex ( 24  28  29  25  40  44  45  41) ($yc $zc $x2) simpleGrading (1 1 1)
+hex ( 25  29  30  26  41  45  46  42) ($yc $zs $x2) simpleGrading (1 1 1)
+hex ( 26  30  31  27  42  46  47  43) ($yc $zc $x2) simpleGrading (1 1 1)
+
+hex ( 21  25  26  22  96  98  99  97) ($ys $zs $o ) simpleGrading (1 1 1)
+hex ( 96  98  99  97 100 102 103 101) ($ys $zs $x2) simpleGrading (1 1 1)
+
+hex ( 21  22  38  37  96  97 101 100) ($zs $x2 $o ) simpleGrading (1 1 1)
+hex ( 25  21  37  41  98  96 100 102) ($ys $x2 $o ) simpleGrading (1 1 1)
+hex ( 22  26  42  38  97  99 103 101) ($ys $x2 $o ) simpleGrading (1 1 1)
+hex ( 26  25  41  42  99  98 102 103) ($zs $x2 $o ) simpleGrading (1 1 1)
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBoundary b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBoundary
new file mode 100644
index 0000000000000000000000000000000000000000..ee32b443dbe66805e59c319c0925f66f6fcba33f
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBoundary
@@ -0,0 +1,16 @@
+inlet
+{
+    type patch;
+    faces
+    (
+        ( 0  4  5  1)
+        ( 1  5  6  2)
+        ( 2  6  7  3)
+        ( 4  8  9  5)
+        ( 5  9 10  6)
+        ( 6 10 11  7)
+        ( 8 12 13  9)
+        ( 9 13 14 10)
+        (10 14 15 11)
+    );
+}
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/controlDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..6332e42714ca4a71aa059c8a3d4b274d53a0e9f2
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/controlDict
@@ -0,0 +1,73 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     rhoPimpleFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         0.05;
+
+deltaT          1e-4;
+
+writeControl    adjustableRunTime;
+
+writeInterval   1e-2;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable true;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+functions
+{
+    probes
+    {
+        functionObjectLibs ( "libsampling.so" );
+        type probes;
+        name probes;
+        outputControl timeStep;
+        outputInterval 1;
+        fields ( p );
+        probeLocations
+        (
+            ( -0.045  0     0     )
+            ( -0.045  0.020 0     )
+            ( -0.010  0     0     )
+            (  0.0125 0     0     )
+            (  0.0125 0.020 0     )
+        );
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..702df4decde3f6db59fed02c6d657cebf90c8e94
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+method          scotch;
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSchemes b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..6a8292d18718c9a118b08a2e2a3c3dc177ece5ae
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSchemes
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss limitedLinearV 1;
+    div(phi,e)      Gauss limitedLinear 1;
+    div(phi,K)      Gauss limitedLinear 1;
+    div(phiv,p)     Gauss limitedLinear 1;
+    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..4eddb387211b68f540ad69979408dacf480d5255
--- /dev/null
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "(p|rho)"
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-6;
+        relTol          0.01;
+    }
+
+    "(p|rho)Final"
+    {
+        $p;
+        relTol          0;
+    }
+
+    "(U|e|k|nuTilda)"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0.01;
+    }
+
+    "(U|e|k|nuTilda)Final"
+    {
+        $U;
+        relTol          0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor yes;
+    nOuterCorrectors 3;
+    nCorrectors     1;
+    nNonOrthogonalCorrectors 0;
+    rhoMin          0.5;
+    rhoMax          2.0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"  1;
+    }
+}
+
+// ************************************************************************* //