diff --git a/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C b/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
index f5f88232d2c1fbd9a7bd8fe6d431a99020b848d6..f765ca86e8a6fa0a21197f412b1466be50bcbffc 100644
--- a/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
+++ b/applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
@@ -25,7 +25,7 @@ Application
     thermoFoam
 
 Description
-    Evolves the thermodynamics on a forzen flow field
+    Evolves the thermodynamics on a frozen flow field
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
index 4bef61c5e4d64d3e055fba69912e42ea0ff9eb8c..e280fdd1b9511d9ba25f6c12dfbca4ed184582bd 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
@@ -614,11 +614,6 @@ int main(int argc, char *argv[])
         "boundBox",
         "simplify the surface using snappyHexMesh starting from a boundBox"
     );
-    Foam::argList::addBoolOption
-    (
-        "writeLevel",
-        "write pointLevel and cellLevel postprocessing files"
-    );
     Foam::argList::addOption
     (
         "patches",
@@ -640,7 +635,6 @@ int main(int argc, char *argv[])
     const bool overwrite = args.optionFound("overwrite");
     const bool checkGeometry = args.optionFound("checkGeometry");
     const bool surfaceSimplify = args.optionFound("surfaceSimplify");
-    const bool writeLevel = args.optionFound("writeLevel");
 
     autoPtr<fvMesh> meshPtr;
 
@@ -852,6 +846,8 @@ int main(int argc, char *argv[])
         autoLayerDriver::debug  = debug;
     }
 
+    const bool writeLevel = meshDict.lookupOrDefault<bool>("writeLevel", false);
+
 
     // Read geometry
     // ~~~~~~~~~~~~~
diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C
index ac9c639c497956968433375dc05fc8123f71c9a3..b3cc2da3e63541d5c2673859a7cdec9305dc18ae 100644
--- a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C
+++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C
@@ -213,25 +213,21 @@ void Foam::doxygenXmlParser::skipForward
 ) const
 {
     // recurse to move forward in 'is' until come across <blockName>
-
-    // fast-forward until we reach a '<'
-    char c;
-    while (is.get(c) && c != '<')
-    {}
-    
     string entryName = "";
-    while (is.get(c) && c  != '>')
-    {
-        entryName = entryName + c;
-    }
+    char c;
 
-    if (entryName == blockName)
-    {
-        return;
-    }
-    else
+    while (is.good() && (entryName != blockName))
     {
-        skipForward(is, blockName);
+        entryName = "";
+
+        // fast-forward until we reach a '<'
+        while (is.get(c) && c != '<')
+        {}
+
+        while (is.get(c) && c  != '>')
+        {
+            entryName = entryName + c;
+        }
     }
 }
 
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C
index 8284a0ddf0f08f75d50ef652f0b3ad5cbd3c33bf..47cd58d2869a340aa756df50b72985f2cf155c54 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C
@@ -39,6 +39,31 @@ using namespace Foam;
 
 // * * * * * * * * * * * * * * * Global Functions  * * * * * * * * * * * * * //
 
+template<class Type>
+tmp<GeometricField<Type, fvPatchField, volMesh> >
+volField
+(
+    const fvMeshSubset& meshSubsetter,
+    const GeometricField<Type, fvPatchField, volMesh>& vf
+)
+{
+    if (meshSubsetter.hasSubMesh())
+    {
+        tmp<GeometricField<Type, fvPatchField, volMesh> > tfld
+        (
+            meshSubsetter.interpolate(vf)
+        );
+        tfld().checkOut();
+        tfld().rename(vf.name());
+        return tfld;
+    }
+    else
+    {
+        return vf;
+    }
+}
+
+
 template<class Type>
 Field<Type> map
 (
@@ -680,7 +705,7 @@ void ensightPointField
 template<class Type>
 void ensightField
 (
-    const IOobject& fieldObject,
+    const GeometricField<Type, fvPatchField, volMesh>& vf,
     const ensightMesh& eMesh,
     const fileName& postProcPath,
     const word& prepend,
@@ -690,14 +715,11 @@ void ensightField
     Ostream& ensightCaseFile
 )
 {
-    // Read field
-    GeometricField<Type, fvPatchField, volMesh> vf(fieldObject, eMesh.mesh());
-
     if (nodeValues)
     {
         tmp<GeometricField<Type, pointPatchField, pointMesh> > pfld
         (
-            volPointInterpolation::New(eMesh.mesh()).interpolate(vf)
+            volPointInterpolation::New(vf.mesh()).interpolate(vf)
         );
         pfld().rename(vf.name());
 
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H
index d1f807cd9750f718675c31879c97a96434764041..b08bece857766b72ba92a6710c70d53a1c37dd09 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,13 +35,24 @@ SourceFiles
 #define ensightField_H
 
 #include "ensightMesh.H"
+#include "fvMeshSubset.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+//- Wrapper to get hold of the field or the subsetted field
+template<class Type>
+Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> >
+volField
+(
+    const Foam::fvMeshSubset&,
+    const Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>& vf
+);
+
+
 template<class Type>
 void ensightField
 (
-    const Foam::IOobject& fieldObject,
+    const Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>& vf,
     const Foam::ensightMesh& eMesh,
     const Foam::fileName& postProcPath,
     const Foam::word& prepend,
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C
index c90e2319e8a0e32b6f2bade5875961284b85bf9e..6fab5a8b3b388e9eae62b85f3574751f488a581c 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C
@@ -57,14 +57,6 @@ void Foam::ensightMesh::correct()
     nFaceZonePrims_ = 0;
     boundaryFaceToBeIncluded_.clear();
 
-    const cellShapeList& cellShapes = mesh_.cellShapes();
-
-    const cellModel& tet = *(cellModeller::lookup("tet"));
-    const cellModel& pyr = *(cellModeller::lookup("pyr"));
-    const cellModel& prism = *(cellModeller::lookup("prism"));
-    const cellModel& wedge = *(cellModeller::lookup("wedge"));
-    const cellModel& hex = *(cellModeller::lookup("hex"));
-
     if (!noPatches_)
     {
         // Patches are output. Check that they're synced.
@@ -111,6 +103,16 @@ void Foam::ensightMesh::correct()
     }
     else
     {
+        const cellShapeList& cellShapes = mesh_.cellShapes();
+
+        const cellModel& tet = *(cellModeller::lookup("tet"));
+        const cellModel& pyr = *(cellModeller::lookup("pyr"));
+        const cellModel& prism = *(cellModeller::lookup("prism"));
+        const cellModel& wedge = *(cellModeller::lookup("wedge"));
+        const cellModel& hex = *(cellModeller::lookup("hex"));
+
+
+
         // Count the shapes
         labelList& tets = meshCellSets_.tets;
         labelList& pyrs = meshCellSets_.pyrs;
@@ -926,8 +928,10 @@ void Foam::ensightMesh::writeAllNSided
 }
 
 
-void Foam::ensightMesh::writeAllInternalPoints
+void Foam::ensightMesh::writeAllPoints
 (
+    const label ensightPartI,
+    const word& ensightPartName,
     const pointField& uniquePoints,
     const label nPoints,
     ensightStream& ensightGeometryFile
@@ -937,49 +941,8 @@ void Foam::ensightMesh::writeAllInternalPoints
 
     if (Pstream::master())
     {
-        ensightGeometryFile.writePartHeader(1);
-        ensightGeometryFile.write("internalMesh");
-        ensightGeometryFile.write("coordinates");
-        ensightGeometryFile.write(nPoints);
-
-        for (direction d=0; d<vector::nComponents; d++)
-        {
-            ensightGeometryFile.write(uniquePoints.component(d));
-
-            for (int slave=1; slave<Pstream::nProcs(); slave++)
-            {
-                IPstream fromSlave(Pstream::scheduled, slave);
-                scalarField pointsComponent(fromSlave);
-                ensightGeometryFile.write(pointsComponent);
-            }
-        }
-    }
-    else
-    {
-        for (direction d=0; d<vector::nComponents; d++)
-        {
-            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
-            toMaster<< uniquePoints.component(d);
-        }
-    }
-}
-
-
-void Foam::ensightMesh::writeAllPatchPoints
-(
-    const label ensightPatchI,
-    const word& patchName,
-    const pointField& uniquePoints,
-    const label nPoints,
-    ensightStream& ensightGeometryFile
-) const
-{
-    barrier();
-
-    if (Pstream::master())
-    {
-        ensightGeometryFile.writePartHeader(ensightPatchI);
-        ensightGeometryFile.write(patchName.c_str());
+        ensightGeometryFile.writePartHeader(ensightPartI);
+        ensightGeometryFile.write(ensightPartName.c_str());
         ensightGeometryFile.write("coordinates");
         ensightGeometryFile.write(nPoints);
 
@@ -998,11 +961,7 @@ void Foam::ensightMesh::writeAllPatchPoints
     {
         for (direction d=0; d<vector::nComponents; d++)
         {
-            OPstream toMaster
-            (
-                Pstream::scheduled,
-                Pstream::masterNo()
-            );
+            OPstream toMaster(Pstream::scheduled, Pstream::masterNo());
             toMaster<< uniquePoints.component(d);
         }
     }
@@ -1076,8 +1035,10 @@ void Foam::ensightMesh::write
 
         const pointField uniquePoints(mesh_.points(), uniquePointMap_);
 
-        writeAllInternalPoints
+        writeAllPoints
         (
+            1,
+            "internalMesh",
             uniquePoints,
             nPoints,
             ensightGeometryFile
@@ -1166,7 +1127,7 @@ void Foam::ensightMesh::write
                     inplaceRenumber(pointToGlobal, patchFaces[i]);
                 }
 
-                writeAllPatchPoints
+                writeAllPoints
                 (
                     ensightPatchI++,
                     patchName,
@@ -1271,7 +1232,7 @@ void Foam::ensightMesh::write
                 inplaceRenumber(pointToGlobal, faceZoneMasterFaces[i]);
             }
 
-            writeAllPatchPoints
+            writeAllPoints
             (
                 ensightPatchI++,
                 faceZoneName,
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H
index ffcbf61d660e1e9dd6c2a740462f1fbaa716136b..35bc2e772a8d11ddaae26291c5f8800dfbc4460b 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -244,17 +244,10 @@ private:
             ensightStream& ensightGeometryFile
         ) const;
 
-        void writeAllInternalPoints
+        void writeAllPoints
         (
-            const pointField& uniquePoints,
-            const label nPoints,
-            ensightStream& ensightGeometryFile
-        ) const;
-
-        void writeAllPatchPoints
-        (
-            label ensightPatchI,
-            const word& patchName,
+            const label ensightPartI,
+            const word& ensightPartName,
             const pointField& uniquePoints,
             const label nPoints,
             ensightStream& ensightGeometryFile
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C
index d50bf96448867f078ac8225d15d7fe0b544d2e85..f7983e4b43678cfa4e3ff5f6b3903602668336b3 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C
@@ -46,6 +46,9 @@ Usage
     \param -faceZones zoneList \n
     Specify faceZones to write, with wildcards
 
+    \param -cellZone zoneName \n
+    Specify single cellZone to write (not lagrangian)
+
 Note
     Parallel support for cloud data is not supported
     - writes to \a EnSight directory to avoid collisions with foamToEnsightParts
@@ -72,6 +75,9 @@ Note
 
 #include "fvc.H"
 
+#include "cellSet.H"
+#include "fvMeshSubset.H"
+
 using namespace Foam;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -128,6 +134,12 @@ int main(int argc, char *argv[])
         "wordReList",
         "specify faceZones to write - eg '( slice \"mfp-.*\" )'."
     );
+    argList::addOption
+    (
+        "cellZone",
+        "word",
+        "specify cellZone to write"
+    );
 
     #include "setRootCase.H"
 
@@ -212,9 +224,28 @@ int main(int argc, char *argv[])
         zonePatterns = wordReList(args.optionLookup("faceZones")());
     }
 
+    word cellZoneName;
+    const bool doCellZone = args.optionReadIfPresent("cellZone", cellZoneName);
+
+    fvMeshSubset meshSubsetter(mesh);
+    if (doCellZone)
+    {
+        Info<< "Converting cellZone " << cellZoneName
+            << " only (puts outside faces into patch "
+            << mesh.boundaryMesh()[0].name()
+            << ")" << endl;
+        const cellZone& cz = mesh.cellZones()[cellZoneName];
+        cellSet c0(mesh, "c0", labelHashSet(cz));
+        meshSubsetter.setLargeCellSubset(c0, 0);
+    }
+
     ensightMesh eMesh
     (
-        mesh,
+        (
+            meshSubsetter.hasSubMesh()
+          ? meshSubsetter.subMesh()
+          : meshSubsetter.baseMesh()
+        ),
         args.optionFound("noPatches"),
         selectedPatches,
         patchPatterns,
@@ -349,6 +380,17 @@ int main(int argc, char *argv[])
         Info<< "Translating time = " << runTime.timeName() << nl;
 
         polyMesh::readUpdateState meshState = mesh.readUpdate();
+        if (timeIndex != 0 && meshSubsetter.hasSubMesh())
+        {
+            Info<< "Converting cellZone " << cellZoneName
+                << " only (puts outside faces into patch "
+                << mesh.boundaryMesh()[0].name()
+                << ")" << endl;
+            const cellZone& cz = mesh.cellZones()[cellZoneName];
+            cellSet c0(mesh, "c0", labelHashSet(cz));
+            meshSubsetter.setLargeCellSubset(c0, 0);
+        }
+
 
         if (meshState != polyMesh::UNCHANGED)
         {
@@ -406,9 +448,10 @@ int main(int argc, char *argv[])
 
                 if (volFieldTypes[i] == volScalarField::typeName)
                 {
+                    volScalarField vf(fieldObject, mesh);
                     ensightField<scalar>
                     (
-                        fieldObject,
+                        volField(meshSubsetter, vf),
                         eMesh,
                         ensightDir,
                         prepend,
@@ -420,9 +463,10 @@ int main(int argc, char *argv[])
                 }
                 else if (volFieldTypes[i] == volVectorField::typeName)
                 {
+                    volVectorField vf(fieldObject, mesh);
                     ensightField<vector>
                     (
-                        fieldObject,
+                        volField(meshSubsetter, vf),
                         eMesh,
                         ensightDir,
                         prepend,
@@ -434,9 +478,10 @@ int main(int argc, char *argv[])
                 }
                 else if (volFieldTypes[i] == volSphericalTensorField::typeName)
                 {
+                    volSphericalTensorField vf(fieldObject, mesh);
                     ensightField<sphericalTensor>
                     (
-                        fieldObject,
+                        volField(meshSubsetter, vf),
                         eMesh,
                         ensightDir,
                         prepend,
@@ -448,9 +493,10 @@ int main(int argc, char *argv[])
                 }
                 else if (volFieldTypes[i] == volSymmTensorField::typeName)
                 {
+                    volSymmTensorField vf(fieldObject, mesh);
                     ensightField<symmTensor>
                     (
-                        fieldObject,
+                        volField(meshSubsetter, vf),
                         eMesh,
                         ensightDir,
                         prepend,
@@ -462,9 +508,10 @@ int main(int argc, char *argv[])
                 }
                 else if (volFieldTypes[i] == volTensorField::typeName)
                 {
+                    volTensorField vf(fieldObject, mesh);
                     ensightField<tensor>
                     (
-                        fieldObject,
+                        volField(meshSubsetter, vf),
                         eMesh,
                         ensightDir,
                         prepend,
diff --git a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C
index 407828e0389db1790da490ef5d54ab148c05b810..58f321297b764acb9e06b86a8119e919c7bc9d68 100644
--- a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C
+++ b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C
@@ -952,8 +952,20 @@ int main(int argc, char *argv[])
 
     forAllConstIter(dictionary, dict, iter)
     {
+        if (!iter().isDict())
+        {
+            continue;
+        }
+
         const dictionary& surfaceDict = iter().dict();
 
+        if (!surfaceDict.found("extractionMethod"))
+        {
+            continue;
+        }
+
+        const word extractionMethod = surfaceDict.lookup("extractionMethod");
+
         const fileName surfFileName = iter().keyword();
         const fileName sFeatFileName = surfFileName.lessExt().name();
 
@@ -971,8 +983,6 @@ int main(int argc, char *argv[])
         const Switch closeness =
             surfaceDict.lookupOrDefault<Switch>("closeness", "off");
 
-        const word extractionMethod = surfaceDict.lookup("extractionMethod");
-
 
         Info<< nl << "Feature line extraction is only valid on closed manifold "
             << "surfaces." << endl;
diff --git a/etc/config/README b/etc/config/README
index 2ad58dda547022578aff318ac6329aad4270a497..b63135f1413ef168bfb6cf0d1041a48a83308e34 100644
--- a/etc/config/README
+++ b/etc/config/README
@@ -30,6 +30,9 @@ sh/csh variants:
 * scotch.sh
   application settings for compiling against scotch
 
+* metis.sh
+  application settings for compiling against metis 5
+
 ---
 
 The config/example directory contains various example configuration files
diff --git a/src/OpenFOAM/db/dictionary/entry/entryIO.C b/src/OpenFOAM/db/dictionary/entry/entryIO.C
index 9dd60fdebf204ab548b265ca646bd950f85b44a0..296def78ed2c321bf031576a94d7fdd285a9c31b 100644
--- a/src/OpenFOAM/db/dictionary/entry/entryIO.C
+++ b/src/OpenFOAM/db/dictionary/entry/entryIO.C
@@ -146,7 +146,7 @@ bool Foam::entry::New(dictionary& parentDict, Istream& is)
                 if (ePtr)
                 {
                     // Read as primitiveEntry
-                    const word newKeyword(ePtr->stream());
+                    const keyType newKeyword(ePtr->stream());
 
                     return parentDict.add
                     (
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.C b/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.C
index 7bb6c1c14a3dcddd7efde9b68f54958c6decfa05..bc5a1e65eaac532fa8cdc300b9612609cab62dcb 100644
--- a/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.C
+++ b/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,6 +37,14 @@ namespace functionEntries
 {
     defineTypeNameAndDebug(calcEntry, 0);
 
+    addToMemberFunctionSelectionTable
+    (
+        functionEntry,
+        calcEntry,
+        execute,
+        dictionaryIstream
+    );
+
     addToMemberFunctionSelectionTable
     (
         functionEntry,
@@ -96,4 +104,48 @@ bool Foam::functionEntries::calcEntry::execute
 }
 
 
+bool Foam::functionEntries::calcEntry::execute
+(
+    dictionary& parentDict,
+    Istream& is
+)
+{
+    Info<< "Using #calcEntry at line " << is.lineNumber()
+        << " in file " <<  parentDict.name() << endl;
+
+    dynamicCode::checkSecurity
+    (
+        "functionEntries::calcEntry::execute(..)",
+        parentDict
+    );
+
+    // Read string
+    string s(is);
+    // Make sure we stop this entry
+    //is.putBack(token(token::END_STATEMENT, is.lineNumber()));
+
+    // Construct codeDict for codeStream
+    // must reference parent for stringOps::expand to work nicely.
+    dictionary codeSubDict;
+    codeSubDict.add("code", "os << (" + s + ");");
+    dictionary codeDict(parentDict, codeSubDict);
+
+    codeStream::streamingFunctionType function = codeStream::getFunction
+    (
+        parentDict,
+        codeDict
+    );
+
+    // use function to write stream
+    OStringStream os(is.format());
+    (*function)(os, parentDict);
+
+    // get the entry from this stream
+    IStringStream resultStream(os.str());
+    parentDict.read(resultStream);
+
+    return true;
+}
+
+
 // ************************************************************************* //
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.H b/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.H
index 9e26072c5f26d12b4cab71f4848d6f20fafc4999..e1083db42a48683f629c25e1fd9b96761404ed33 100644
--- a/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.H
+++ b/src/OpenFOAM/db/dictionary/functionEntries/calcEntry/calcEntry.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -89,6 +89,9 @@ public:
     // Member Functions
 
         //- Execute the functionEntry in a sub-dict context
+        static bool execute(dictionary& parentDict, Istream&);
+
+        //- Execute the functionEntry in a primitiveEntry context
         static bool execute
         (
             const dictionary& parentDict,
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H
index da45cdcb853e281b90a8a6d3ea5f978a51b7cd61..949d481cea7efcaed83c89c4d3a6b2a24d426c40 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,9 +31,9 @@ Description
     This boundary condition provides an oscillating condition in terms of
     amplitude and frequency.
 
-        /f[
+        \f[
             x_p = (1 + a sin(\pi f t))x_{ref} + x_o
-        /f]
+        \f]
 
     where
 
diff --git a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
index 7fd83f41b1f26612b4fe3e7d8c6ede1eebf4f5e6..3059eb5eeac6b1b3fdf5d82ede07742440069aee 100644
--- a/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
@@ -79,7 +79,49 @@ Foam::fvPatchField<Type>::fvPatchField
     updated_(false),
     manipulatedMatrix_(false),
     patchType_(ptf.patchType_)
-{}
+{
+    // For unmapped faces set to internal field value (zero-gradient)
+    if (&iF && iF.size())
+    {
+        Field<Type>& f = *this;
+
+        if
+        (
+            mapper.direct()
+         && &mapper.directAddressing()
+         && mapper.directAddressing().size()
+        )
+        {
+            Field<Type> pif(this->patchInternalField());
+
+            const labelList& mapAddressing = mapper.directAddressing();
+
+            forAll(mapAddressing, i)
+            {
+                if (mapAddressing[i] < 0)
+                {
+                    f[i] = pif[i];
+                }
+            }
+        }
+        else if (!mapper.direct() && mapper.addressing().size())
+        {
+            Field<Type> pif(this->patchInternalField());
+
+            const labelListList& mapAddressing = mapper.addressing();
+
+            forAll(mapAddressing, i)
+            {
+                const labelList& localAddrs = mapAddressing[i];
+
+                if (!localAddrs.size())
+                {
+                    f[i] = pif[i];
+                }
+            }
+        }
+    }
+}
 
 
 template<class Type>
diff --git a/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetInterpolate.C b/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetInterpolate.C
index 7ee0d535779516c77bfc43bb4afdd041cdc32b3b..130b08072a88f22bb315d3cb105329cdd087b6a1 100644
--- a/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetInterpolate.C
+++ b/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetInterpolate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,16 +45,13 @@ tmp<GeometricField<Type, fvPatchField, volMesh> > fvMeshSubset::interpolate
     const labelList& faceMap
 )
 {
-    // Create and map the internal-field values
-    Field<Type> internalField(vf.internalField(), cellMap);
-
-    // Create and map the patch field values
+    // 1. Create the complete field with dummy patch fields
     PtrList<fvPatchField<Type> > patchFields(patchMap.size());
 
     forAll(patchFields, patchI)
     {
         // Set the first one by hand as it corresponds to the
-        // exposed internal faces.  Additional interpolation can be put here
+        // exposed internal faces. Additional interpolation can be put here
         // as necessary.
         if (patchMap[patchI] == -1)
         {
@@ -69,6 +66,49 @@ tmp<GeometricField<Type, fvPatchField, volMesh> > fvMeshSubset::interpolate
             );
         }
         else
+        {
+            patchFields.set
+            (
+                patchI,
+                new calculatedFvPatchField<Type>
+                (
+                    sMesh.boundary()[patchI],
+                    DimensionedField<Type, volMesh>::null()
+                )
+            );
+        }
+    }
+
+    tmp<GeometricField<Type, fvPatchField, volMesh> > tresF
+    (
+        new GeometricField<Type, fvPatchField, volMesh>
+        (
+            IOobject
+            (
+                "subset"+vf.name(),
+                sMesh.time().timeName(),
+                sMesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            sMesh,
+            vf.dimensions(),
+            Field<Type>(vf.internalField(), cellMap),
+            patchFields
+        )
+    );
+    GeometricField<Type, fvPatchField, volMesh>& resF = tresF();
+
+
+    // 2. Change the fvPatchFields to the correct type using a mapper
+    //  constructor (with reference to the now correct internal field)
+
+    typename GeometricField<Type, fvPatchField, volMesh>::
+        GeometricBoundaryField& bf = resF.boundaryField();
+
+    forAll(bf, patchI)
+    {
+        if (patchMap[patchI] != -1)
         {
             // Construct addressing
             const fvPatch& subPatch = sMesh.boundary()[patchI];
@@ -88,49 +128,26 @@ tmp<GeometricField<Type, fvPatchField, volMesh> > fvMeshSubset::interpolate
                 }
                 else
                 {
-                    // Mapped from internal face. Do what? Map from element
-                    // 0 for now.
-                    directAddressing[i] = 0;
+                    // Mapped from internal face. Do what? Leave up to
+                    // fvPatchField
+                    directAddressing[i] = -1;
                 }
             }
 
-            patchFields.set
+            bf.set
             (
                 patchI,
                 fvPatchField<Type>::New
                 (
                     vf.boundaryField()[patchMap[patchI]],
-                    sMesh.boundary()[patchI],
-                    DimensionedField<Type, volMesh>::null(),
+                    subPatch,
+                    resF.dimensionedInternalField(),
                     patchFieldSubset(directAddressing)
                 )
             );
-
-            // What to do with exposed internal faces if put into this patch?
         }
     }
 
-
-    // Create the complete field from the pieces
-    tmp<GeometricField<Type, fvPatchField, volMesh> > tresF
-    (
-        new GeometricField<Type, fvPatchField, volMesh>
-        (
-            IOobject
-            (
-                "subset"+vf.name(),
-                sMesh.time().timeName(),
-                sMesh,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
-            sMesh,
-            vf.dimensions(),
-            internalField,
-            patchFields
-        )
-    );
-
     return tresF;
 }
 
@@ -161,24 +178,13 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > fvMeshSubset::interpolate
     const labelList& faceMap
 )
 {
-    // Create and map the internal-field values
-    Field<Type> internalField
-    (
-        vf.internalField(),
-        SubList<label>
-        (
-            faceMap,
-            sMesh.nInternalFaces()
-        )
-    );
-
-    // Create and map the patch field values
+    // 1. Create the complete field with dummy patch fields
     PtrList<fvsPatchField<Type> > patchFields(patchMap.size());
 
     forAll(patchFields, patchI)
     {
         // Set the first one by hand as it corresponds to the
-        // exposed internal faces.  Additional interpolation can be put here
+        // exposed internal faces. Additional interpolation can be put here
         // as necessary.
         if (patchMap[patchI] == -1)
         {
@@ -193,6 +199,58 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > fvMeshSubset::interpolate
             );
         }
         else
+        {
+            patchFields.set
+            (
+                patchI,
+                new calculatedFvsPatchField<Type>
+                (
+                    sMesh.boundary()[patchI],
+                    DimensionedField<Type, surfaceMesh>::null()
+                )
+            );
+        }
+    }
+
+    // Create the complete field from the pieces
+    tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tresF
+    (
+        new GeometricField<Type, fvsPatchField, surfaceMesh>
+        (
+            IOobject
+            (
+                "subset"+vf.name(),
+                sMesh.time().timeName(),
+                sMesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            sMesh,
+            vf.dimensions(),
+            Field<Type>
+            (
+                vf.internalField(),
+                SubList<label>
+                (
+                    faceMap,
+                    sMesh.nInternalFaces()
+                )
+            ),
+            patchFields
+        )
+    );
+    GeometricField<Type, fvsPatchField, surfaceMesh>& resF = tresF();
+
+
+    // 2. Change the fvsPatchFields to the correct type using a mapper
+    //  constructor (with reference to the now correct internal field)
+
+    typename GeometricField<Type, fvsPatchField, surfaceMesh>::
+        GeometricBoundaryField& bf = resF.boundaryField();
+
+    forAll(bf, patchI)
+    {
+        if (patchMap[patchI] != -1)
         {
             // Construct addressing
             const fvPatch& subPatch = sMesh.boundary()[patchI];
@@ -212,66 +270,54 @@ tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > fvMeshSubset::interpolate
                 }
                 else
                 {
-                    // Mapped from internal face. Do what? Map from element
-                    // 0 for now.
-                    directAddressing[i] = 0;
+                    // Mapped from internal face. Do what? Leave up to
+                    // patchField. This would require also to pass in
+                    // original internal field so for now do as postprocessing
+                    directAddressing[i] = -1;
                 }
             }
 
-            patchFields.set
+            bf.set
             (
                 patchI,
                 fvsPatchField<Type>::New
                 (
                     vf.boundaryField()[patchMap[patchI]],
-                    sMesh.boundary()[patchI],
-                    DimensionedField<Type, surfaceMesh>::null(),
+                    subPatch,
+                    resF.dimensionedInternalField(),
                     patchFieldSubset(directAddressing)
                 )
             );
-        }
-    }
-
 
-    // Map exposed internal faces. Note: Only necessary if exposed faces added
-    // into existing patch but since we don't know that at this point...
-    forAll(patchFields, patchI)
-    {
-        fvsPatchField<Type>& pfld = patchFields[patchI];
 
-        label meshFaceI = pfld.patch().start();
+            // Postprocess patch field for exposed faces
 
-        forAll(pfld, i)
-        {
-            label oldFaceI = faceMap[meshFaceI++];
+            fvsPatchField<Type>& pfld = bf[patchI];
 
-            if (oldFaceI < vf.internalField().size())
+            forAll(pfld, i)
             {
-                pfld[i] = vf.internalField()[oldFaceI];
+                label baseFaceI = faceMap[subPatch.start()+i];
+                if (baseFaceI < vf.internalField().size())
+                {
+                    // Exposed internal face
+                    pfld[i] = vf.internalField()[baseFaceI];
+                }
+                else
+                {
+                    // Exposed face from other patch.
+                    // Only possible in case of a coupled boundary
+                    label patchI = vf.mesh().boundaryMesh().whichPatch
+                    (
+                        baseFaceI
+                    );
+                    const fvPatch& otherPatch = vf.mesh().boundary()[patchI];
+                    label patchFaceI = otherPatch.patch().whichFace(baseFaceI);
+                    pfld[i] = vf.boundaryField()[patchI][patchFaceI];
+                }
             }
         }
     }
 
-    // Create the complete field from the pieces
-    tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tresF
-    (
-        new GeometricField<Type, fvsPatchField, surfaceMesh>
-        (
-            IOobject
-            (
-                "subset"+vf.name(),
-                sMesh.time().timeName(),
-                sMesh,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
-            sMesh,
-            vf.dimensions(),
-            internalField,
-            patchFields
-        )
-    );
-
     return tresF;
 }
 
@@ -344,8 +390,8 @@ fvMeshSubset::interpolate
             const pointPatch& subPatch = sMesh.boundary()[patchI];
             const labelList& subMeshPoints = subPatch.meshPoints();
 
-            // If mapped from outside patch use point 0 for lack of better.
-            labelList directAddressing(subPatch.size(), 0);
+            // If mapped from outside patch leave handling up to patchField
+            labelList directAddressing(subPatch.size(), -1);
 
             forAll(subMeshPoints, localI)
             {
diff --git a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C
index f714be34f4817982bc9041c38405d64d6fa837d0..521cc4d12d008f5f9defa7264549159e2e9fe4b6 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C
+++ b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -64,11 +64,12 @@ Foam::BreakupModel<CloudType>::BreakupModel
 (
     const dictionary& dict,
     CloudType& owner,
-    const word& type
+    const word& type,
+    bool solveOscillationEq
 )
 :
     SubModelBase<CloudType>(owner, dict, typeName, type),
-    solveOscillationEq_(this->coeffDict().lookup("solveOscillationEq")),
+    solveOscillationEq_(solveOscillationEq),
     y0_(0.0),
     yDot0_(0.0),
     TABComega_(0.0),
@@ -77,14 +78,12 @@ Foam::BreakupModel<CloudType>::BreakupModel
 {
     if (solveOscillationEq_)
     {
-        const dictionary TABcoeffsDict(dict.subDict("TABCoeffs"));
-        y0_ = TABcoeffsDict.template lookupOrDefault<scalar>("y0", 0.0);
-        yDot0_ = TABcoeffsDict.template lookupOrDefault<scalar>("yDot0", 0.0);
-        TABComega_ =
-            TABcoeffsDict.template lookupOrDefault<scalar>("Comega", 8.0);
-        TABCmu_ = TABcoeffsDict.template lookupOrDefault<scalar>("Cmu", 10.0);
-        TABWeCrit_ =
-            TABcoeffsDict.template lookupOrDefault<scalar>("WeCrit", 12.0);
+        const dictionary coeffs(dict.subDict("TABCoeffs"));
+        y0_ = coeffs.template lookupOrDefault<scalar>("y0", 0.0);
+        yDot0_ = coeffs.template lookupOrDefault<scalar>("yDot0", 0.0);
+        TABComega_ = coeffs.template lookupOrDefault<scalar>("Comega", 8.0);
+        TABCmu_ = coeffs.template lookupOrDefault<scalar>("Cmu", 10.0);
+        TABWeCrit_ = coeffs.template lookupOrDefault<scalar>("WeCrit", 12.0);
     }
 }
 
diff --git a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H
index e0672ca93899de096fd2508c658a970e9e9c4e8a..e10c56a0f7132db107b081a146c0678d5e6634c1 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H
+++ b/src/lagrangian/spray/submodels/BreakupModel/BreakupModel/BreakupModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -97,7 +97,8 @@ public:
         (
             const dictionary& dict,
             CloudType& owner,
-            const word& type
+            const word& type,
+            bool solveOscillationEq = false
         );
 
         //- Construct copy
diff --git a/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.C b/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.C
index fb4804083132a84e2811d1a50b8ae0bfaa46fa01..dec1e0bae0fb986b7f5248e250870239e8a6c4b9 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.C
+++ b/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,36 +34,21 @@ Foam::ETAB<CloudType>::ETAB
     CloudType& owner
 )
 :
-    BreakupModel<CloudType>(dict, owner, typeName),
-    Cmu_(10.0),
-    Comega_(8.0),
+    BreakupModel<CloudType>(dict, owner, typeName, true),
     k1_(0.2),
     k2_(0.2),
-    WeCrit_(12.0),
     WeTransition_(100.0),
     AWe_(0.0)
 {
     if (!this->defaultCoeffs(true))
     {
-        this->coeffDict().lookup("Cmu") >> Cmu_;
-        this->coeffDict().lookup("Comega") >> Comega_;
         this->coeffDict().lookup("k1") >> k1_;
         this->coeffDict().lookup("k2") >> k2_;
-        this->coeffDict().lookup("WeCrit") >> WeCrit_;
         this->coeffDict().lookup("WeTransition") >> WeTransition_;
     }
 
     scalar k21 = k2_/k1_;
     AWe_ = (k21*sqrt(WeTransition_) - 1.0)/pow4(WeTransition_);
-
-    if (!BreakupModel<CloudType>::solveOscillationEq_)
-    {
-        Info<< "Warning: solveOscillationEq is set to "
-            << BreakupModel<CloudType>::solveOscillationEq_ << nl
-            << " Setting it to true in order for the ETAB model to work."
-            << endl;
-        BreakupModel<CloudType>::solveOscillationEq_ = true;
-    }
 }
 
 
@@ -71,11 +56,8 @@ template<class CloudType>
 Foam::ETAB<CloudType>::ETAB(const ETAB<CloudType>& bum)
 :
     BreakupModel<CloudType>(bum),
-    Cmu_(bum.Cmu_),
-    Comega_(bum.Comega_),
     k1_(bum.k1_),
     k2_(bum.k2_),
-    WeCrit_(bum.WeCrit_),
     WeTransition_(bum.WeTransition_),
     AWe_(bum.AWe_)
 {}
@@ -123,10 +105,10 @@ bool Foam::ETAB<CloudType>::update
     scalar semiMass = nParticle*pow3(d);
 
     // inverse of characteristic viscous damping time
-    scalar rtd = 0.5*Cmu_*mu/(rho*r2);
+    scalar rtd = 0.5*this->TABCmu_*mu/(rho*r2);
 
     // oscillation frequency (squared)
-    scalar omega2 = Comega_*sigma/(rho*r3) - rtd*rtd;
+    scalar omega2 = this->TABComega_*sigma/(rho*r3) - rtd*rtd;
 
     if (omega2 > 0)
     {
@@ -134,7 +116,7 @@ bool Foam::ETAB<CloudType>::update
         scalar romega = 1.0/omega;
 
         scalar We = rhoc*sqr(Urmag)*r/sigma;
-        scalar Wetmp = We/WeCrit_;
+        scalar Wetmp = We/this->TABWeCrit_;
 
         scalar y1 = y - Wetmp;
         scalar y2 = yDot*romega;
diff --git a/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.H b/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.H
index 86d27e934dab871e3e7adec952a14cd3f9c70ca3..9b8b45c04f044d143a0ecbcdaf9b9b2e65fb0208 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.H
+++ b/src/lagrangian/spray/submodels/BreakupModel/ETAB/ETAB.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -71,13 +71,8 @@ private:
 
         // Model constants
 
-            // Cmu_ and Comega_ are the same as in the TAB model
-            scalar Cmu_;
-            scalar Comega_;
-
             scalar k1_;
             scalar k2_;
-            scalar WeCrit_;
             scalar WeTransition_;
             scalar AWe_;
 
diff --git a/src/lagrangian/spray/submodels/BreakupModel/ReitzKHRT/ReitzKHRT.C b/src/lagrangian/spray/submodels/BreakupModel/ReitzKHRT/ReitzKHRT.C
index e714db22dc349b31f99b16a7ed6b846eb0696d8c..7cea4794841d6d4b0ba9f82cb676b2fbd47078fc 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/ReitzKHRT/ReitzKHRT.C
+++ b/src/lagrangian/spray/submodels/BreakupModel/ReitzKHRT/ReitzKHRT.C
@@ -165,8 +165,6 @@ bool Foam::ReitzKHRT<CloudType>::update
     if ((tc > 0) || (lambdaRT < d) )
     {
         tc += dt;
-        scalar multiplier = d/lambdaRT;
-        d = cbrt(d3/multiplier);
     }
 
     // characteristic RT breakup time
diff --git a/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.C b/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.C
index 0fe325fbacff1f9d22ac2fbe9fb01c1625d539d1..817542ad7cf23d354a82c76638b7f9b5c3fdf575 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.C
+++ b/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.C
@@ -34,10 +34,7 @@ Foam::TAB<CloudType>::TAB
     CloudType& owner
 )
 :
-    BreakupModel<CloudType>(dict, owner, typeName),
-    Cmu_(BreakupModel<CloudType>::TABCmu_),
-    Comega_(BreakupModel<CloudType>::TABComega_),
-    WeCrit_(BreakupModel<CloudType>::TABWeCrit_),
+    BreakupModel<CloudType>(dict, owner, typeName, true),
     SMDCalcMethod_(this->coeffDict().lookup("SMDCalculationMethod"))
 {
     // calculate the inverse function of the Rossin-Rammler Distribution
@@ -52,16 +49,6 @@ Foam::TAB<CloudType>::TAB
             (1.0 - exp(-xx)*(1.0 + xx + sqr(xx)/2.0 + pow3(xx)/6.0))*rrd100;
     }
 
-    if (!BreakupModel<CloudType>::solveOscillationEq_)
-    {
-        WarningIn("Foam::TAB<CloudType>::TAB(const dictionary&, CloudType&)")
-            << "solveOscillationEq is set to "
-            << BreakupModel<CloudType>::solveOscillationEq_ << nl
-            << " Setting it to true in order for the TAB model to work."
-            << endl;
-        BreakupModel<CloudType>::solveOscillationEq_ = true;
-    }
-
     if (SMDCalcMethod_ == "method1")
     {
         SMDMethod_ = method1;
@@ -84,9 +71,6 @@ template<class CloudType>
 Foam::TAB<CloudType>::TAB(const TAB<CloudType>& bum)
 :
     BreakupModel<CloudType>(bum),
-    Cmu_(bum.Cmu_),
-    Comega_(bum.Comega_),
-    WeCrit_(bum.WeCrit_),
     SMDCalcMethod_(bum.SMDCalcMethod_)
 {}
 
@@ -135,16 +119,16 @@ bool Foam::TAB<CloudType>::update
     scalar semiMass = nParticle*pow3(d);
 
     // inverse of characteristic viscous damping time
-    scalar rtd = 0.5*Cmu_*mu/(rho*r2);
+    scalar rtd = 0.5*this->TABCmu_*mu/(rho*r2);
 
     // oscillation frequency (squared)
-    scalar omega2 = Comega_*sigma/(rho*r3) - rtd*rtd;
+    scalar omega2 = this->TABComega_*sigma/(rho*r3) - rtd*rtd;
 
     if (omega2 > 0)
     {
         scalar omega = sqrt(omega2);
         scalar We = rhoc*sqr(Urmag)*r/sigma;
-        scalar Wetmp = We/WeCrit_;
+        scalar Wetmp = We/this->TABWeCrit_;
 
         scalar y1 = y - Wetmp;
         scalar y2 = yDot/omega;
diff --git a/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.H b/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.H
index e5c9234666a0b4d8e86929320ba58339e4d92f77..462953f1ee3b30bd388213ba3003dc25fbb9b93f 100644
--- a/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.H
+++ b/src/lagrangian/spray/submodels/BreakupModel/TAB/TAB.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -83,9 +83,6 @@ private:
 
         // Model constants
 
-            scalar Cmu_;
-            scalar Comega_;
-            scalar WeCrit_;
             word SMDCalcMethod_;
             SMDMethods SMDMethod_;
 
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
index 1d9ecc0bc74c645fff772d7ac8392adf8ae38149..cd0ebafc3a431f4934ba2890fdaca693822b3017 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
@@ -2450,17 +2450,17 @@ void Foam::autoLayerDriver::mergePatchFacesUndo
     const dictionary& motionDict
 )
 {
-    scalar minCos =
-        Foam::cos(degToRad(layerParams.featureAngle()));
+    // Clip to 45 degrees
+    scalar planarAngle = min(45.0, layerParams.featureAngle());
+    scalar minCos = Foam::cos(degToRad(planarAngle));
 
-    scalar concaveCos =
-        Foam::cos(degToRad(layerParams.concaveAngle()));
+    scalar concaveCos = Foam::cos(degToRad(layerParams.concaveAngle()));
 
     Info<< nl
         << "Merging all faces of a cell" << nl
         << "---------------------------" << nl
         << "    - which are on the same patch" << nl
-        << "    - which make an angle < " << layerParams.featureAngle()
+        << "    - which make an angle < " << planarAngle
         << " degrees"
         << nl
         << "      (cos:" << minCos << ')' << nl
@@ -2478,7 +2478,7 @@ void Foam::autoLayerDriver::mergePatchFacesUndo
         concaveCos,
         meshRefiner_.meshedPatches(),
         motionDict,
-        labelList(mesh.nFaces() -1)
+        labelList(mesh.nFaces(), -1)
     );
 
     nChanged += meshRefiner_.mergeEdgesUndo(minCos, motionDict);
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
index c710dc653892a68afa8d668569e5b11ae458506d..e2b2989889df4f4daed1214543aee56c61729f68 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
@@ -1849,7 +1849,8 @@ void Foam::autoSnapDriver::doSnap
             {
                 WarningIn("autoSnapDriver::doSnap(..)")
                     << "Did not succesfully snap mesh."
-                    << " Continuing to snap to resolve easy surfaces but the"
+                    << " Continuing to snap to resolve easy" << nl
+                    << "    surfaces but the"
                     << " resulting mesh will not satisfy your quality"
                     << " constraints" << nl << endl;
                 //Info<< "Did not succesfully snap mesh. Giving up."
diff --git a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C
index 48cd4178609f1a8a967f8b97d7179bf2cce74107..66cdfb99adcf29fec7e4167798d60388c0cb5100 100644
--- a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C
+++ b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C
@@ -250,6 +250,17 @@ Foam::tmp<Foam::fvScalarMatrix> Foam::radiation::radiationModel::ST
 const Foam::radiation::absorptionEmissionModel&
 Foam::radiation::radiationModel::absorptionEmission() const
 {
+    if (!absorptionEmission_.valid())
+    {
+        FatalErrorIn
+        (
+            "const Foam::radiation::absorptionEmissionModel&"
+            "Foam::radiation::radiationModel::absorptionEmission() const"
+        )
+            << "Requested radiation absorptionEmission model, but model is "
+            << "not activate" << abort(FatalError);
+    }
+
     return absorptionEmission_();
 }
 
diff --git a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H
index d4c39bd958eacd1e3a2e7b6811bd360bacf6442a..a62821586c7434d491f744749ab00068ae1dcf60 100644
--- a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H
+++ b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H
@@ -231,7 +231,7 @@ public:
                 volScalarField& T
             ) const;
 
-            //- Access to absorptionEmissionModel
+            //- Access to absorptionEmission model
             const absorptionEmissionModel& absorptionEmission() const;
 };
 
diff --git a/src/turbulenceModels/incompressible/RAS/Make/files b/src/turbulenceModels/incompressible/RAS/Make/files
index 1f248358c7c2eec74f03c7ab6e47f4a2988da14a..cd9a9bfdb610ea8412677a276ced67a4e84ac214 100644
--- a/src/turbulenceModels/incompressible/RAS/Make/files
+++ b/src/turbulenceModels/incompressible/RAS/Make/files
@@ -59,7 +59,6 @@ $(v2WallFunctions)/v2WallFunction/v2WallFunctionFvPatchScalarField.C
 derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C
 derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C
 derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.C
-derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
 
 backwardsCompatibility/wallFunctions/backwardsCompatibilityWallFunctions.C
 
diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H
index b94500ae52400f11a320aeb1b3ba81e9c1283680..e01d679f78b588a234301c768703279b12a2e6f3 100644
--- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H
+++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -62,7 +62,7 @@ Description
 
     \table
         Property     | Description             | Required    | Default value
-        z            | vertical co-ordinate [m] | yes        |
+        z            | vertical direction of z-axis | yes    |
         kappa        | Karman's constanat      | no          | 0.41
         Uref         | reference velocity [m/s] | yes        |
         Href         | reference height [m]    | yes         |
@@ -75,7 +75,7 @@ Description
     myPatch
     {
         type            atmBoundaryLayerInletEpsilon;
-        z               1.0;
+        z               (0 1 0);
         kappa           0.41;
         Uref            1.0;
         Href            0.0;
diff --git a/src/turbulenceModels/incompressible/turbulenceModel/Make/files b/src/turbulenceModels/incompressible/turbulenceModel/Make/files
index a44faf2238061d8d092d90c9f80cddd95be6f704..c83a939fae20dd5dd893d353dfe63811d6227edd 100644
--- a/src/turbulenceModels/incompressible/turbulenceModel/Make/files
+++ b/src/turbulenceModels/incompressible/turbulenceModel/Make/files
@@ -1,5 +1,6 @@
 turbulenceModel.C
 laminar/laminar.C
 derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.C
+derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
 
 LIB = $(FOAM_LIBBIN)/libincompressibleTurbulenceModel
diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C b/src/turbulenceModels/incompressible/turbulenceModel/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
similarity index 100%
rename from src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
rename to src/turbulenceModels/incompressible/turbulenceModel/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C
diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H b/src/turbulenceModels/incompressible/turbulenceModel/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H
similarity index 97%
rename from src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H
rename to src/turbulenceModels/incompressible/turbulenceModel/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H
index b37c40a3da6d37849f6653708f08388677f52359..c766c5ad96c2397db7bd92a0ec86a1713c7d1490 100644
--- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H
+++ b/src/turbulenceModels/incompressible/turbulenceModel/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -69,7 +69,7 @@ Description
     \table
         Property     | Description             | Required    | Default value
         n            | flow direction          | yes         |
-        z            | vertical co-ordinate [m] | yes        |
+        z            | vertical direction of z-axis | yes    |
         kappa        | Karman's constanat      | no          | 0.41
         Uref         | reference velocity [m/s] | yes        |
         Href         | reference height [m]    | yes         |
@@ -83,7 +83,7 @@ Description
     {
         type            atmBoundaryLayerInletVelocity;
         n               (0 1 0);
-        z               1.0;
+        z               (0 1 0);
         kappa           0.41;
         Uref            1.0;
         Href            0.0;
@@ -135,7 +135,7 @@ class atmBoundaryLayerInletVelocityFvPatchVectorField
         //- Direction of the z-coordinate
         vector z_;
 
-        //- Surface roughness lenght
+        //- Surface roughness length
         scalarField z0_;
 
         //- Von Karman constant
diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/reactingCloud1Properties b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/reactingCloud1Properties
index 9228607e91ba0aee7e83ad9307dbca98f2794e68..87e8b7ae0ddd1573c2b16fc4b99e2f8a3540b83b 100644
--- a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/reactingCloud1Properties
+++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/reactingCloud1Properties
@@ -63,7 +63,6 @@ constantProperties
 
     epsilon0        1;
     f0              0.5;
-    Pr              0.7;
 
     constantVolume  false;
 }
diff --git a/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/reactingCloud1Properties b/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/reactingCloud1Properties
index 9228607e91ba0aee7e83ad9307dbca98f2794e68..87e8b7ae0ddd1573c2b16fc4b99e2f8a3540b83b 100644
--- a/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/reactingCloud1Properties
+++ b/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/reactingCloud1Properties
@@ -63,7 +63,6 @@ constantProperties
 
     epsilon0        1;
     f0              0.5;
-    Pr              0.7;
 
     constantVolume  false;
 }
diff --git a/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/reactingCloud1Properties b/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/reactingCloud1Properties
index 9228607e91ba0aee7e83ad9307dbca98f2794e68..87e8b7ae0ddd1573c2b16fc4b99e2f8a3540b83b 100644
--- a/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/reactingCloud1Properties
+++ b/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/reactingCloud1Properties
@@ -63,7 +63,6 @@ constantProperties
 
     epsilon0        1;
     f0              0.5;
-    Pr              0.7;
 
     constantVolume  false;
 }