diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 74dd85ebe4..c719265186 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -169,6 +169,7 @@ $(derivedFvPatchFields)/noSlip/noSlipFvPatchVectorField.C
$(derivedFvPatchFields)/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
$(derivedFvPatchFields)/outletInlet/outletInletFvPatchFields.C
$(derivedFvPatchFields)/outletMappedUniformInlet/outletMappedUniformInletFvPatchFields.C
+$(derivedFvPatchFields)/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.C
$(derivedFvPatchFields)/partialSlip/partialSlipFvPatchFields.C
$(derivedFvPatchFields)/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.C
$(derivedFvPatchFields)/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.C
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C
new file mode 100644
index 0000000000..c124fa2cb1
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.C
@@ -0,0 +1,148 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2018 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "fixedMeanOutletInletFvPatchField.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+Foam::fixedMeanOutletInletFvPatchField::fixedMeanOutletInletFvPatchField
+(
+ const fvPatch& p,
+ const DimensionedField& iF
+)
+:
+ outletInletFvPatchField(p, iF),
+ meanValue_()
+{}
+
+
+template
+Foam::fixedMeanOutletInletFvPatchField::fixedMeanOutletInletFvPatchField
+(
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const dictionary& dict
+)
+:
+ outletInletFvPatchField(p, iF),
+ meanValue_(Function1::New("meanValue", dict))
+{
+ this->phiName_ = dict.lookupOrDefault("phi", "phi");
+
+ fvPatchField::operator=
+ (
+ Field("value", dict, p.size())
+ );
+
+ this->refValue() = *this;
+ this->refGrad() = Zero;
+ this->valueFraction() = 0.0;
+}
+
+
+template
+Foam::fixedMeanOutletInletFvPatchField::fixedMeanOutletInletFvPatchField
+(
+ const fixedMeanOutletInletFvPatchField& ptf,
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const fvPatchFieldMapper& mapper
+)
+:
+ outletInletFvPatchField(ptf, p, iF, mapper),
+ meanValue_(ptf.meanValue_.clone())
+{}
+
+
+template
+Foam::fixedMeanOutletInletFvPatchField::fixedMeanOutletInletFvPatchField
+(
+ const fixedMeanOutletInletFvPatchField& ptf
+)
+:
+ outletInletFvPatchField(ptf),
+ meanValue_(ptf.meanValue_.clone())
+{}
+
+
+template
+Foam::fixedMeanOutletInletFvPatchField::fixedMeanOutletInletFvPatchField
+(
+ const fixedMeanOutletInletFvPatchField& ptf,
+ const DimensionedField& iF
+)
+:
+ outletInletFvPatchField(ptf, iF),
+ meanValue_(ptf.meanValue_.clone())
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+void Foam::fixedMeanOutletInletFvPatchField::updateCoeffs()
+{
+ if (this->updated())
+ {
+ return;
+ }
+
+ const scalar t = this->db().time().timeOutputValue();
+ Type meanValue = meanValue_->value(t);
+
+ Field newValues(this->patchInternalField());
+
+ Type meanValuePsi =
+ gSum(this->patch().magSf()*newValues)
+ /gSum(this->patch().magSf());
+
+ if (mag(meanValue) > SMALL && mag(meanValuePsi)/mag(meanValue) > 0.5)
+ {
+ newValues *= mag(meanValue)/mag(meanValuePsi);
+ }
+ else
+ {
+ newValues += (meanValue - meanValuePsi);
+ }
+
+ this->refValue() = newValues;
+
+ outletInletFvPatchField::updateCoeffs();
+}
+
+
+template
+void Foam::fixedMeanOutletInletFvPatchField::write(Ostream& os) const
+{
+ fvPatchField::write(os);
+ meanValue_->writeData(os);
+ this->writeEntry("value", os);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.H
new file mode 100644
index 0000000000..dde74ba24e
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchField.H
@@ -0,0 +1,185 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2018 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 .
+
+Class
+ Foam::fixedMeanOutletInletFvPatchField
+
+Group
+ grpInletBoundaryConditions
+
+Description
+ This boundary condition extrapolates field to the patch using the near-cell
+ values and adjusts the distribution to match the specified, optionally
+ time-varying, mean value. This extrapolated field is applied as a
+ fixedValue for outflow faces but zeroGradient is applied to inflow faces.
+
+ This boundary condition can be applied to pressure when inletOutlet is
+ applied to the velocity so that a zeroGradient condition is applied to the
+ pressure at inflow faces where the velocity is specified to avoid an
+ unphysical over-specification of the set of boundary conditions.
+
+Usage
+ \table
+ Property | Description | Required | Default value
+ meanValue | mean value Function1 | yes |
+ phi | Flux field name | no | phi
+ \endtable
+
+ Example of the boundary condition specification:
+ \verbatim
+
+ {
+ type fixedMeanOutletInlet;
+ meanValue 1.0;
+ }
+ \endverbatim
+
+See also
+ Foam::fixedMeanFvPatchField
+ Foam::outletInletFvPatchField
+ Foam::Function1Types
+
+SourceFiles
+ fixedMeanOutletInletFvPatchField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef fixedMeanOutletInletFvPatchField_H
+#define fixedMeanOutletInletFvPatchField_H
+
+#include "outletInletFvPatchFields.H"
+#include "Function1.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class fixedMeanOutletInletFvPatchField Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class fixedMeanOutletInletFvPatchField
+:
+ public outletInletFvPatchField
+{
+ // Private data
+
+ //- MeanValue value the field is adjusted to maintain
+ autoPtr> meanValue_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("fixedMeanOutletInlet");
+
+
+ // Constructors
+
+ //- Construct from patch and internal field
+ fixedMeanOutletInletFvPatchField
+ (
+ const fvPatch&,
+ const DimensionedField&
+ );
+
+ //- Construct from patch, internal field and dictionary
+ fixedMeanOutletInletFvPatchField
+ (
+ const fvPatch&,
+ const DimensionedField&,
+ const dictionary&
+ );
+
+ //- Construct by mapping given fixedMeanOutletInletFvPatchField
+ // onto a new patch
+ fixedMeanOutletInletFvPatchField
+ (
+ const fixedMeanOutletInletFvPatchField&,
+ const fvPatch&,
+ const DimensionedField&,
+ const fvPatchFieldMapper&
+ );
+
+ //- Construct as copy
+ fixedMeanOutletInletFvPatchField
+ (
+ const fixedMeanOutletInletFvPatchField&
+ );
+
+ //- Construct and return a clone
+ virtual tmp> clone() const
+ {
+ return tmp>
+ (
+ new fixedMeanOutletInletFvPatchField(*this)
+ );
+ }
+
+ //- Construct as copy setting internal field reference
+ fixedMeanOutletInletFvPatchField
+ (
+ const fixedMeanOutletInletFvPatchField&,
+ const DimensionedField&
+ );
+
+ //- Construct and return a clone setting internal field reference
+ virtual tmp> clone
+ (
+ const DimensionedField& iF
+ ) const
+ {
+ return tmp>
+ (
+ new fixedMeanOutletInletFvPatchField(*this, iF)
+ );
+ }
+
+
+ // Member functions
+
+ //- Update the coefficients associated with the patch field
+ virtual void updateCoeffs();
+
+ //- Write
+ virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+ #include "fixedMeanOutletInletFvPatchField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.C
new file mode 100644
index 0000000000..e21f812103
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2018 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "fixedMeanOutletInletFvPatchFields.H"
+#include "volMesh.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+makePatchFields(fixedMeanOutletInlet);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.H
new file mode 100644
index 0000000000..a09df4dbc6
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFields.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2018 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef fixedMeanOutletInletFvPatchFields_H
+#define fixedMeanOutletInletFvPatchFields_H
+
+#include "fixedMeanOutletInletFvPatchField.H"
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeFieldTypedefs(fixedMeanOutletInlet);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFieldsFwd.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFieldsFwd.H
new file mode 100644
index 0000000000..3689e93bc0
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMeanOutletInlet/fixedMeanOutletInletFvPatchFieldsFwd.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2018 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef fixedMeanOutletInletFvPatchFieldsFwd_H
+#define fixedMeanOutletInletFvPatchFieldsFwd_H
+
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template class fixedMeanOutletInletFvPatchField;
+
+makePatchTypeFieldTypedefs(fixedMeanOutletInlet);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //