diff --git a/src/postProcessing/functionObjects/utilities/Make/files b/src/postProcessing/functionObjects/utilities/Make/files
index c632fc6222..5737e2f473 100644
--- a/src/postProcessing/functionObjects/utilities/Make/files
+++ b/src/postProcessing/functionObjects/utilities/Make/files
@@ -1,15 +1,18 @@
codedFunctionObject/codedFunctionObject.C
+dsmcFields/dsmcFields.C
+dsmcFields/dsmcFieldsFunctionObject.C
+
pressureCoefficient/pressureCoefficient.C
pressureCoefficient/pressureCoefficientFunctionObject.C
staticPressure/staticPressure.C
staticPressure/staticPressureFunctionObject.C
-dsmcFields/dsmcFields.C
-dsmcFields/dsmcFieldsFunctionObject.C
-
timeActivatedFileUpdate/timeActivatedFileUpdate.C
timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.C
+yPlusRAS/yPlusRAS.C
+yPlusRAS/yPlusRASFunctionObject.C
+
LIB = $(FOAM_LIBBIN)/libutilityFunctionObjects
diff --git a/src/postProcessing/functionObjects/utilities/Make/options b/src/postProcessing/functionObjects/utilities/Make/options
index 623013bc21..ecc2c0a411 100644
--- a/src/postProcessing/functionObjects/utilities/Make/options
+++ b/src/postProcessing/functionObjects/utilities/Make/options
@@ -3,11 +3,20 @@ EXE_INC = \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/lagrangian/dsmc/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
- -I$(LIB_SRC)/sampling/lnInclude
+ -I$(LIB_SRC)/sampling/lnInclude \
+ -I$(LIB_SRC)/transportModels \
+ -I$(LIB_SRC)/turbulenceModels \
+ -I$(LIB_SRC)/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions \
+ -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions \
+ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude
LIB_LIBS = \
-lfiniteVolume \
-lmeshTools \
-lsampling \
-llagrangian \
- -ldsmc
+ -ldsmc \
+ -lincompressibleTransportModels \
+ -lcompressibleRASModels \
+ -lincompressibleRASModels \
+ -lbasicThermophysicalModels
diff --git a/src/postProcessing/functionObjects/utilities/yPlusRAS/IOyPlusRAS.H b/src/postProcessing/functionObjects/utilities/yPlusRAS/IOyPlusRAS.H
new file mode 100644
index 0000000000..959d3fbf4a
--- /dev/null
+++ b/src/postProcessing/functionObjects/utilities/yPlusRAS/IOyPlusRAS.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 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 .
+
+Typedef
+ Foam::IOyPlusRAS
+
+Description
+ Instance of the generic IOOutputFilter for yPlusRAS.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOyPlusRAS_H
+#define IOyPlusRAS_H
+
+#include "yPlusRAS.H"
+#include "IOOutputFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef IOOutputFilter IOyPlusRAS;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.C b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.C
new file mode 100644
index 0000000000..788d9f19ff
--- /dev/null
+++ b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.C
@@ -0,0 +1,235 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 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 "yPlusRAS.H"
+#include "volFields.H"
+
+#include "incompressible/RAS/RASModel/RASModel.H"
+#include "nutkWallFunction/nutkWallFunctionFvPatchScalarField.H"
+
+#include "compressible/RAS/RASModel/RASModel.H"
+#include "mutkWallFunction/mutkWallFunctionFvPatchScalarField.H"
+
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(Foam::yPlusRAS, 0);
+
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+void Foam::yPlusRAS::calcIncompressibleYPlus
+(
+ const fvMesh& mesh,
+ volScalarField& yPlus
+) const
+{
+ typedef incompressible::RASModels::nutkWallFunctionFvPatchScalarField
+ wallFunctionPatchField;
+
+ const incompressible::RASModel& model =
+ mesh.lookupObject("RASProperties");
+
+ const volScalarField nut(model.nut());
+ const volScalarField::GeometricBoundaryField& nutPatches =
+ nut.boundaryField();
+
+ Info<< type() << " output:" << nl;
+
+ bool foundNutPatch = false;
+ forAll(nutPatches, patchi)
+ {
+ if (isA(nutPatches[patchi]))
+ {
+ foundNutPatch = true;
+
+ const wallFunctionPatchField& nutPw =
+ dynamic_cast(nutPatches[patchi]);
+
+ yPlus.boundaryField()[patchi] = nutPw.yPlus();
+ const scalarField& Yp = yPlus.boundaryField()[patchi];
+
+ Info<< " patch " << nutPw.patch().name()
+ << " y+ : min = " << min(Yp) << ", max = " << max(Yp)
+ << ", average = " << average(Yp) << nl;
+ }
+ }
+
+ if (!foundNutPatch)
+ {
+ Info<< " no " << wallFunctionPatchField::typeName << " patches"
+ << endl;
+ }
+}
+
+
+void Foam::yPlusRAS::calcCompressibleYPlus
+(
+ const fvMesh& mesh,
+ volScalarField& yPlus
+) const
+{
+ typedef compressible::RASModels::mutkWallFunctionFvPatchScalarField
+ wallFunctionPatchField;
+
+ const compressible::RASModel& model =
+ mesh.lookupObject("RASProperties");
+
+ const volScalarField mut(model.mut());
+ const volScalarField::GeometricBoundaryField& mutPatches =
+ mut.boundaryField();
+
+ Info<< type() << " output:" << nl;
+
+ bool foundMutPatch = false;
+ forAll(mutPatches, patchi)
+ {
+ if (isA(mutPatches[patchi]))
+ {
+ foundMutPatch = true;
+
+ const wallFunctionPatchField& mutPw =
+ dynamic_cast(mutPatches[patchi]);
+
+ yPlus.boundaryField()[patchi] = mutPw.yPlus();
+ const scalarField& Yp = yPlus.boundaryField()[patchi];
+
+ Info<< " patch " << mutPw.patch().name()
+ << " y+ : min = " << min(Yp) << ", max = " << max(Yp)
+ << ", average = " << average(Yp) << nl;
+ }
+ }
+
+ if (!foundMutPatch)
+ {
+ Info<< " no " << wallFunctionPatchField::typeName << " patches"
+ << endl;
+ }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::yPlusRAS::yPlusRAS
+(
+ const word& name,
+ const objectRegistry& obr,
+ const dictionary& dict,
+ const bool loadFromFiles
+)
+:
+ name_(name),
+ obr_(obr),
+ active_(true),
+ phiName_("phi")
+{
+ // Check if the available mesh is an fvMesh, otherwise deactivate
+ if (!isA(obr_))
+ {
+ active_ = false;
+ WarningIn
+ (
+ "yPlusRAS::yPlusRAS"
+ "("
+ "const word&, "
+ "const objectRegistry&, "
+ "const dictionary&, "
+ "const bool"
+ ")"
+ ) << "No fvMesh available, deactivating." << nl
+ << endl;
+ }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::yPlusRAS::~yPlusRAS()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+void Foam::yPlusRAS::read(const dictionary& dict)
+{
+ if (active_)
+ {
+ phiName_ = dict.lookupOrDefault("phiName", "phi");
+ }
+}
+
+
+void Foam::yPlusRAS::execute()
+{
+ // Do nothing - only valid on write
+}
+
+
+void Foam::yPlusRAS::end()
+{
+ // Do nothing - only valid on write
+}
+
+
+void Foam::yPlusRAS::write()
+{
+ if (active_)
+ {
+ const surfaceScalarField& phi =
+ obr_.lookupObject(phiName_);
+
+ const fvMesh& mesh = refCast(obr_);
+
+ volScalarField yPlusRAS
+ (
+ IOobject
+ (
+ "yPlusRAS",
+ mesh.time().timeName(),
+ mesh,
+ IOobject::NO_READ
+ ),
+ mesh,
+ dimensionedScalar("0", dimless, 0.0)
+ );
+
+ if (phi.dimensions() == dimMass/dimTime)
+ {
+ calcCompressibleYPlus(mesh, yPlusRAS);
+ }
+ else
+ {
+ calcIncompressibleYPlus(mesh, yPlusRAS);
+ }
+
+ Info<< endl;
+
+ yPlusRAS.write();
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H
new file mode 100644
index 0000000000..5b8a0031cc
--- /dev/null
+++ b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H
@@ -0,0 +1,158 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 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::yPlusRAS
+
+Description
+ Evaluates and outputs turbulence y+ for RAS models. Values written to
+ time folders as field 'yPlusRAS'
+
+SourceFiles
+ yPlusRAS.C
+ IOyPlusRAS.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef yPlusRAS_H
+#define yPlusRAS_H
+
+#include "volFieldsFwd.H"
+#include "pointFieldFwd.H"
+#include "fvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+ Class yPlusRAS Declaration
+\*---------------------------------------------------------------------------*/
+
+class yPlusRAS
+{
+ // Private data
+
+ //- Name of this set of yPlusRAS objects
+ word name_;
+
+ const objectRegistry& obr_;
+
+ //- on/off switch
+ bool active_;
+
+ //- Name of mass/volume flux field (optional, default = phi)
+ word phiName_;
+
+
+ // Private Member Functions
+
+ //- Calculate incompressible form of y+
+ void calcIncompressibleYPlus
+ (
+ const fvMesh& mesh,
+ volScalarField& yPlus
+ ) const;
+
+ //- Calculate compressible form of y+
+ void calcCompressibleYPlus
+ (
+ const fvMesh& mesh,
+ volScalarField& yPlus
+ ) const;
+
+ //- Disallow default bitwise copy construct
+ yPlusRAS(const yPlusRAS&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const yPlusRAS&);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("yPlusRAS");
+
+
+ // Constructors
+
+ //- Construct for given objectRegistry and dictionary.
+ // Allow the possibility to load fields from files
+ yPlusRAS
+ (
+ const word& name,
+ const objectRegistry&,
+ const dictionary&,
+ const bool loadFromFiles = false
+ );
+
+
+ //- Destructor
+ virtual ~yPlusRAS();
+
+
+ // Member Functions
+
+ //- Return name of the set of yPlusRAS
+ virtual const word& name() const
+ {
+ return name_;
+ }
+
+ //- Read the yPlusRAS data
+ virtual void read(const dictionary&);
+
+ //- Execute, currently does nothing
+ virtual void execute();
+
+ //- Execute at the final time-loop, currently does nothing
+ virtual void end();
+
+ //- Calculate the yPlusRAS and write
+ virtual void write();
+
+ //- Update for changes of mesh
+ virtual void updateMesh(const mapPolyMesh&)
+ {}
+
+ //- Update for changes of mesh
+ virtual void movePoints(const pointField&)
+ {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRASFunctionObject.C b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRASFunctionObject.C
new file mode 100644
index 0000000000..77ffceeb84
--- /dev/null
+++ b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRASFunctionObject.C
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 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 "yPlusRASFunctionObject.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineNamedTemplateTypeNameAndDebug(yPlusRASFunctionObject, 0);
+
+ addToRunTimeSelectionTable
+ (
+ functionObject,
+ yPlusRASFunctionObject,
+ dictionary
+ );
+}
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRASFunctionObject.H b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRASFunctionObject.H
new file mode 100644
index 0000000000..99d34c6517
--- /dev/null
+++ b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRASFunctionObject.H
@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 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 .
+
+Typedef
+ Foam::yPlusRASFunctionObject
+
+Description
+ FunctionObject wrapper around yPlusRAS to allow it to be created
+ via the functions entry within controlDict.
+
+SourceFiles
+ yPlusRASFunctionObject.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef yPlusRASFunctionObject_H
+#define yPlusRASFunctionObject_H
+
+#include "yPlusRAS.H"
+#include "OutputFilterFunctionObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef OutputFilterFunctionObject yPlusRASFunctionObject;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //