--- yPlusRAS.C	2015-06-23 15:09:20.913501500 +0200
+++ yPlusRAS.c.new	2015-06-23 15:12:33.026454137 +0200
@@ -190,6 +190,12 @@
         "compressible",
         "calculate compressible y+"
     );
+    
+    argList::addBoolOption
+    (
+        "newTimes",
+        "only calculate if not already existent"
+    );
 
     #include "setRootCase.H"
     #include "createTime.H"
@@ -197,6 +203,8 @@
     #include "createNamedMesh.H"
 
     const bool compressible = args.optionFound("compressible");
+    
+    const bool newTimes = args.optionFound("newTimes");
 
     forAll(timeDirs, timeI)
     {
@@ -212,52 +220,56 @@
             Info<< "Writing wall distance to field " << y.name() << nl << endl;
             y.write();
         }
-
-        volScalarField yPlus
+        
+        IOobject yPlusHeader
         (
-            IOobject
-            (
-                "yPlus",
-                runTime.timeName(),
-                mesh,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
-            mesh,
-            dimensionedScalar("yPlus", dimless, 0.0)
-        );
-
-        IOobject UHeader
-        (
-            "U",
+            "yPlus",
             runTime.timeName(),
             mesh,
-            IOobject::MUST_READ,
+            IOobject::READ_IF_PRESENT,
             IOobject::NO_WRITE
         );
-
-        if (UHeader.headerOk())
+        
+        if (newTimes && yPlusHeader.headerOk())
         {
-            Info<< "Reading field U\n" << endl;
-            volVectorField U(UHeader, mesh);
+            Info<< "Skipping this time dir, yPlus already calculated" << endl;
+        }
+        else
+        {
+            volScalarField yPlus(yPlusHeader, mesh, dimensionedScalar("yPlus", dimless, 0.0));
+
+            IOobject UHeader
+            (
+                "U",
+                runTime.timeName(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            );
 
-            if (compressible)
+            if (UHeader.headerOk())
             {
-                calcCompressibleYPlus(mesh, runTime, U, yPlus);
+                Info<< "Reading field U\n" << endl;
+                volVectorField U(UHeader, mesh);
+
+                if (compressible)
+                {
+                    calcCompressibleYPlus(mesh, runTime, U, yPlus);
+                }
+                else
+                {
+                    calcIncompressibleYPlus(mesh, runTime, U, yPlus);
+                }
             }
             else
             {
-                calcIncompressibleYPlus(mesh, runTime, U, yPlus);
+                Info<< "    no U field" << endl;
             }
-        }
-        else
-        {
-            Info<< "    no U field" << endl;
-        }
 
-        Info<< "Writing yPlus to field " << yPlus.name() << nl << endl;
+            Info<< "Writing yPlus to field " << yPlus.name() << nl << endl;
 
-        yPlus.write();
+            yPlus.write();
+        }
     }
 
     Info<< "End\n" << endl;
