diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index f94219df92..97295969b9 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -426,6 +426,7 @@ $(SRF)/SRFModel/SRFModel/SRFModel.C
$(SRF)/SRFModel/SRFModel/SRFModelNew.C
$(SRF)/SRFModel/rpm/rpm.C
$(SRF)/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C
+$(SRF)/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C
$(SRF)/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.C
fvOptions = $(general)/fvOptions
diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C
new file mode 100644
index 0000000000..17c0dc700f
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.C
@@ -0,0 +1,150 @@
+/*---------------------------------------------------------------------------* \
+ ========= |
+ \\ / 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "SRFWallVelocityFvPatchVectorField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "volFields.H"
+
+#include "SRFModel.H"
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::SRFWallVelocityFvPatchVectorField::SRFWallVelocityFvPatchVectorField
+(
+ const fvPatch& p,
+ const DimensionedField& iF
+)
+:
+ fixedValueFvPatchVectorField(p, iF)
+{}
+
+
+Foam::SRFWallVelocityFvPatchVectorField::SRFWallVelocityFvPatchVectorField
+(
+ const SRFWallVelocityFvPatchVectorField& ptf,
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const fvPatchFieldMapper& mapper
+)
+:
+ fixedValueFvPatchVectorField(ptf, p, iF, mapper)
+{}
+
+
+Foam::SRFWallVelocityFvPatchVectorField::SRFWallVelocityFvPatchVectorField
+(
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const dictionary& dict
+)
+:
+ fixedValueFvPatchVectorField(p, iF)
+{
+ fvPatchVectorField::operator=(vectorField("value", dict, p.size()));
+}
+
+
+Foam::SRFWallVelocityFvPatchVectorField::SRFWallVelocityFvPatchVectorField
+(
+ const SRFWallVelocityFvPatchVectorField& srfvpvf
+)
+:
+ fixedValueFvPatchVectorField(srfvpvf)
+{}
+
+
+Foam::SRFWallVelocityFvPatchVectorField::SRFWallVelocityFvPatchVectorField
+(
+ const SRFWallVelocityFvPatchVectorField& srfvpvf,
+ const DimensionedField& iF
+)
+:
+ fixedValueFvPatchVectorField(srfvpvf, iF)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+void Foam::SRFWallVelocityFvPatchVectorField::autoMap
+(
+ const fvPatchFieldMapper& m
+)
+{
+ vectorField::autoMap(m);
+}
+
+
+void Foam::SRFWallVelocityFvPatchVectorField::rmap
+(
+ const fvPatchVectorField& ptf,
+ const labelList& addr
+)
+{
+ fixedValueFvPatchVectorField::rmap(ptf, addr);
+}
+
+
+void Foam::SRFWallVelocityFvPatchVectorField::updateCoeffs()
+{
+ if (updated())
+ {
+ return;
+ }
+
+ // Get reference to the SRF model
+ const SRF::SRFModel& srf =
+ db().lookupObject("SRFProperties");
+
+ // Determine patch velocity due to SRF
+ const vectorField Up(-srf.velocity(patch().Cf()));
+
+ // Remove the component of Up normal to the wall
+ // just in case it is not exactly circular
+ const vectorField n(patch().nf());
+ vectorField::operator=(Up - n*(n & Up));
+
+ fixedValueFvPatchVectorField::updateCoeffs();
+}
+
+
+void Foam::SRFWallVelocityFvPatchVectorField::write(Ostream& os) const
+{
+ fvPatchVectorField::write(os);
+ writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ makePatchTypeField
+ (
+ fvPatchVectorField,
+ SRFWallVelocityFvPatchVectorField
+ );
+}
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.H b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.H
new file mode 100644
index 0000000000..060898c65e
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFWallVelocityFvPatchVectorField/SRFWallVelocityFvPatchVectorField.H
@@ -0,0 +1,199 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / 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 .
+
+Class
+ Foam::SRFWallVelocityFvPatchVectorField
+
+Group
+ grpWallBoundaryConditions
+
+Description
+ Wall-velocity condition to be used in conjunction with the single rotating
+ frame (SRF) model (see: FOAM::SRFModel)
+
+ The condition applies the appropriate rotation transformation in time and
+ space to determine the local SRF velocity of the wall.
+
+ \f[
+ U_p = - U_{p,srf}
+ \f]
+
+ where
+ \vartable
+ U_p = patch velocity [m/s]
+ U_{p,srf} = SRF velocity
+ \endvartable
+
+ The normal component of \f$ U_p \f$ is removed to ensure 0 wall-flux even
+ if the wall patch faces are irregular.
+
+ \heading Patch usage
+
+ Example of the boundary condition specification:
+ \verbatim
+ myPatch
+ {
+ type SRFWallVelocity;
+ value uniform (0 0 0); // Initial value
+ }
+ \endverbatim
+
+SeeAlso
+ Foam::SRFModel
+ Foam::SRFVelocityFvPatchVectorField
+ Foam::fixedValueFvPatchField
+
+SourceFiles
+ SRFWallVelocityFvPatchVectorField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SRFWallVelocityFvPatchVectorField_H
+#define SRFWallVelocityFvPatchVectorField_H
+
+#include "fvPatchFields.H"
+#include "fixedValueFvPatchFields.H"
+#include "Switch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class SRFWallVelocityFvPatchVectorField Declaration
+\*---------------------------------------------------------------------------*/
+
+class SRFWallVelocityFvPatchVectorField
+:
+ public fixedValueFvPatchVectorField
+{
+
+public:
+
+ //- Runtime type information
+ TypeName("SRFWallVelocity");
+
+
+ // Constructors
+
+ //- Construct from patch and internal field
+ SRFWallVelocityFvPatchVectorField
+ (
+ const fvPatch&,
+ const DimensionedField&
+ );
+
+ //- Construct from patch, internal field and dictionary
+ SRFWallVelocityFvPatchVectorField
+ (
+ const fvPatch&,
+ const DimensionedField&,
+ const dictionary&
+ );
+
+ //- Construct by mapping given SRFWallVelocityFvPatchVectorField
+ // onto a new patch
+ SRFWallVelocityFvPatchVectorField
+ (
+ const SRFWallVelocityFvPatchVectorField&,
+ const fvPatch&,
+ const DimensionedField&,
+ const fvPatchFieldMapper&
+ );
+
+ //- Construct as copy
+ SRFWallVelocityFvPatchVectorField
+ (
+ const SRFWallVelocityFvPatchVectorField&
+ );
+
+ //- Construct and return a clone
+ virtual tmp clone() const
+ {
+ return tmp
+ (
+ new SRFWallVelocityFvPatchVectorField(*this)
+ );
+ }
+
+ //- Construct as copy setting internal field reference
+ SRFWallVelocityFvPatchVectorField
+ (
+ const SRFWallVelocityFvPatchVectorField&,
+ const DimensionedField&
+ );
+
+ //- Construct and return a clone setting internal field reference
+ virtual tmp clone
+ (
+ const DimensionedField& iF
+ ) const
+ {
+ return tmp
+ (
+ new SRFWallVelocityFvPatchVectorField(*this, iF)
+ );
+ }
+
+
+ // Member functions
+
+ // Mapping functions
+
+ //- Map (and resize as needed) from self given a mapping object
+ virtual void autoMap
+ (
+ const fvPatchFieldMapper&
+ );
+
+ //- Reverse map the given fvPatchField onto this fvPatchField
+ virtual void rmap
+ (
+ const fvPatchVectorField&,
+ const labelList&
+ );
+
+
+ // Evaluation functions
+
+ //- Update the coefficients associated with the patch field
+ virtual void updateCoeffs();
+
+
+ // I-O
+
+ //- Write
+ virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //