diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C
index 20324512ffa339f1a2678deee7811a34af9e4f93..0637dabbd63eda136c04a243222be27039d96193 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C
@@ -375,6 +375,44 @@ int main(int argc, char *argv[])
     // mesh wrapper; does subsetting and decomposition
     vtkMesh vMesh(mesh, cellSetName);
 
+
+    // Scan for all possible lagrangian clouds
+    HashSet<fileName> allCloudDirs;
+    forAll(timeDirs, timeI)
+    {
+        runTime.setTime(timeDirs[timeI], timeI);
+        fileNameList cloudDirs
+        (
+            readDir
+            (
+                runTime.timePath()/regionPrefix/cloud::prefix,
+                fileName::DIRECTORY
+            )
+        );
+        forAll(cloudDirs, i)
+        {
+            IOobjectList sprayObjs
+            (
+                mesh,
+                runTime.timeName(),
+                cloud::prefix/cloudDirs[i]
+            );
+
+            IOobject* positionsPtr = sprayObjs.lookup("positions");
+
+            if (positionsPtr)
+            {
+                if (allCloudDirs.insert(cloudDirs[i]))
+                {
+                    Info<< "At time: " << runTime.timeName()
+                        << " detected cloud directory : " << cloudDirs[i]
+                        << endl;
+                }
+            }
+        }
+    }
+
+
     forAll(timeDirs, timeI)
     {
         runTime.setTime(timeDirs[timeI], timeI);
@@ -926,38 +964,33 @@ int main(int argc, char *argv[])
         //
         //---------------------------------------------------------------------
 
-        fileNameList cloudDirs
-        (
-            readDir
+        forAllConstIter(HashSet<fileName>, allCloudDirs, iter)
+        {
+            const fileName& cloudName = iter.key();
+
+            // Always create the cloud directory.
+            mkDir(fvPath/cloud::prefix/cloudName);
+
+            fileName lagrFileName
             (
-                runTime.timePath()/regionPrefix/cloud::prefix,
-                fileName::DIRECTORY
-            )
-        );
+                fvPath/cloud::prefix/cloudName/cloudName
+              + "_" + timeDesc + ".vtk"
+            );
+
+            Info<< "    Lagrangian: " << lagrFileName << endl;
+
 
-        forAll(cloudDirs, i)
-        {
             IOobjectList sprayObjs
             (
                 mesh,
                 runTime.timeName(),
-                cloud::prefix/cloudDirs[i]
+                cloud::prefix/cloudName
             );
 
             IOobject* positionsPtr = sprayObjs.lookup("positions");
 
             if (positionsPtr)
             {
-                mkDir(fvPath/cloud::prefix/cloudDirs[i]);
-
-                fileName lagrFileName
-                (
-                    fvPath/cloud::prefix/cloudDirs[i]/cloudDirs[i]
-                  + "_" + timeDesc + ".vtk"
-                );
-
-                Info<< "    Lagrangian: " << lagrFileName << endl;
-
                 wordList labelNames(sprayObjs.names(labelIOField::typeName));
                 Info<< "        labels            :";
                 print(Info, labelNames);
@@ -999,18 +1032,19 @@ int main(int argc, char *argv[])
                     vMesh,
                     binary,
                     lagrFileName,
-                    cloudDirs[i]
+                    cloudName,
+                    false
                 );
 
                 // Write number of fields
                 writer.writeParcelHeader
                 (
                     labelNames.size()
-                + scalarNames.size()
-                + vectorNames.size()
-                + sphereNames.size()
-                + symmNames.size()
-                + tensorNames.size()
+                  + scalarNames.size()
+                  + vectorNames.size()
+                  + sphereNames.size()
+                  + symmNames.size()
+                  + tensorNames.size()
                 );
 
                 // Fields
@@ -1021,6 +1055,20 @@ int main(int argc, char *argv[])
                 writer.writeIOField<symmTensor>(symmNames);
                 writer.writeIOField<tensor>(tensorNames);
             }
+            else
+            {
+                lagrangianWriter writer
+                (
+                    vMesh,
+                    binary,
+                    lagrFileName,
+                    cloudName,
+                    true
+                );
+
+                // Write number of fields
+                writer.writeParcelHeader(0);
+            }
         }
     }
 
diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.C
index 5e7a0d9c56cff835ad5a442e75b091677fe3b46a..7f1354c4c41dfa7703ee4fc6c9af0f50218273ac 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.C
@@ -36,7 +36,8 @@ Foam::lagrangianWriter::lagrangianWriter
     const vtkMesh& vMesh,
     const bool binary,
     const fileName& fName,
-    const word& cloudName
+    const word& cloudName,
+    const bool dummyCloud
 )
 :
     vMesh_(vMesh),
@@ -51,19 +52,28 @@ Foam::lagrangianWriter::lagrangianWriter
     writeFuns::writeHeader(os_, binary_, mesh.time().caseName());
     os_ << "DATASET POLYDATA" << std::endl;
 
-    Cloud<passiveParticle> parcels(mesh, cloudName_, false);
+    if (dummyCloud)
+    {
+        nParcels_ = 0;
 
-    nParcels_ = parcels.size();
+        os_ << "POINTS " << nParcels_ << " float" << std::endl;
+    }
+    else
+    {
+        Cloud<passiveParticle> parcels(mesh, cloudName_, false);
 
-    os_ << "POINTS " << parcels.size() << " float" << std::endl;
+        nParcels_ = parcels.size();
 
-    DynamicList<floatScalar> partField(3*parcels.size());
+        os_ << "POINTS " << nParcels_ << " float" << std::endl;
 
-    forAllConstIter(Cloud<passiveParticle>, parcels, elmnt)
-    {
-        writeFuns::insert(elmnt().position(), partField);
+        DynamicList<floatScalar> partField(3*parcels.size());
+
+        forAllConstIter(Cloud<passiveParticle>, parcels, elmnt)
+        {
+            writeFuns::insert(elmnt().position(), partField);
+        }
+        writeFuns::write(os_, binary_, partField);
     }
-    writeFuns::write(os_, binary_, partField);
 }
 
 
diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.H b/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.H
index 22525beec59fddc248496e21d611ec6bcca3262b..673ed709610e115a8695ca007fcc9440e6ce79c5 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.H
+++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/lagrangianWriter.H
@@ -80,7 +80,8 @@ public:
             const vtkMesh&,
             const bool binary,
             const fileName&,
-            const word&
+            const word&,
+            const bool dummyCloud
         );
 
 
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C
index c5c54dab885b4570e79095c08ba134a68f5053c5..71e277d53451ec81717d257ac6bbe51fc70169ca 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C
@@ -165,11 +165,6 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
             continue;
         }
 
-        OStringStream ostr;
-
-        ostr<< edges[edgeI].start() << ":" << edges[edgeI].end() << " - "
-            << edges[edgeI].type();
-
         // search each block
         forAll(blkMesh, blockI)
         {
diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C
index ca7e666153cd21896ad6c8de629821704af1de67..dfcad4257e6b8065461358077ef86b2d6fe0153f 100644
--- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C
+++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C
@@ -91,7 +91,7 @@ void Foam::LUscalarMatrix::solve(Field<Type>& sourceSol) const
             {
                 OPstream::write
                 (
-                    Pstream::blocking,
+                    Pstream::scheduled,
                     slave,
                     reinterpret_cast<const char*>
                     (
@@ -105,7 +105,7 @@ void Foam::LUscalarMatrix::solve(Field<Type>& sourceSol) const
         {
             IPstream::read
             (
-                Pstream::blocking,
+                Pstream::scheduled,
                 Pstream::masterNo(),
                 reinterpret_cast<char*>(sourceSol.begin()),
                 sourceSol.byteSize()