diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C
index 5c589c8f2840245c088844e046f42eab3d1df415..1eb31e15fc38d8a9864042a358597e35c5c77cff 100644
--- a/src/OpenFOAM/db/Time/Time.C
+++ b/src/OpenFOAM/db/Time/Time.C
@@ -129,6 +129,8 @@ void Foam::Time::adjustDeltaT()
             }
         }
     }
+
+    functionObjects_.adjustTimeStep();
 }
 
 
@@ -941,17 +943,25 @@ void Foam::Time::setEndTime(const scalar endTime)
 }
 
 
-void Foam::Time::setDeltaT(const dimensionedScalar& deltaT)
+void Foam::Time::setDeltaT
+(
+    const dimensionedScalar& deltaT,
+    const bool bAdjustDeltaT
+)
 {
-    setDeltaT(deltaT.value());
+    setDeltaT(deltaT.value(), bAdjustDeltaT);
 }
 
 
-void Foam::Time::setDeltaT(const scalar deltaT)
+void Foam::Time::setDeltaT(const scalar deltaT, const bool bAdjustDeltaT)
 {
     deltaT_ = deltaT;
     deltaTchanged_ = true;
-    adjustDeltaT();
+
+    if (bAdjustDeltaT)
+    {
+        adjustDeltaT();
+    }
 }
 
 
diff --git a/src/OpenFOAM/db/Time/Time.H b/src/OpenFOAM/db/Time/Time.H
index 695f666c2e9d08e8a5b3f84023547ef39faee052..0d7c83818f469a18336f4995b6d9eec4a5f5ed07 100644
--- a/src/OpenFOAM/db/Time/Time.H
+++ b/src/OpenFOAM/db/Time/Time.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
@@ -527,10 +527,18 @@ public:
             virtual void setEndTime(const scalar);
 
             //- Reset time step
-            virtual void setDeltaT(const dimensionedScalar&);
+            virtual void setDeltaT
+            (
+                const dimensionedScalar&,
+                const bool adjustDeltaT = true
+            );
 
             //- Reset time step
-            virtual void setDeltaT(const scalar);
+            virtual void setDeltaT
+            (
+                const scalar,
+                const bool adjustDeltaT = true
+            );
 
             //- Set time to sub-cycle for the given number of steps
             virtual TimeState subCycle(const label nSubCycles);
diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C
index 7c6b95ec98034797a6651c7b4655b72af70c4177..019a4f54aab68680f9e6e279a0cd1662109a6bf6 100644
--- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C
+++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C
@@ -40,6 +40,7 @@ void Foam::OutputFilterFunctionObject<OutputFilter>::readDict()
     dict_.readIfPresent("storeFilter", storeFilter_);
     dict_.readIfPresent("timeStart", timeStart_);
     dict_.readIfPresent("timeEnd", timeEnd_);
+    dict_.readIfPresent("nStepsToStartTimeChange", nStepsToStartTimeChange_);
 }
 
 
@@ -214,6 +215,52 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::timeSet()
 }
 
 
+template<class OutputFilter>
+bool Foam::OutputFilterFunctionObject<OutputFilter>::adjustTimeStep()
+{
+    if
+    (
+        active()
+     && outputControl_.outputControl()
+     == outputFilterOutputControl::ocAdjustableTime
+    )
+    {
+        const label  outputTimeIndex = outputControl_.outputTimeLastDump();
+        const scalar writeInterval = outputControl_.writeInterval();
+
+        scalar timeToNextWrite = max
+        (
+            0.0,
+            (outputTimeIndex + 1)*writeInterval
+          - (time_.value() - time_.startTime().value())
+        );
+
+        scalar deltaT = time_.deltaTValue();
+
+        scalar nSteps = timeToNextWrite/deltaT - SMALL;
+
+        // function objects modify deltaT inside nStepsToStartTimeChange range
+        // NOTE: Potential problem if two function objects dump inside the same
+        //interval
+        if (nSteps < nStepsToStartTimeChange_)
+        {
+            label nStepsToNextWrite = label(nSteps) + 1;
+
+            scalar newDeltaT = timeToNextWrite/nStepsToNextWrite;
+
+            //Adjust time step
+            if (newDeltaT < deltaT)
+            {
+                deltaT = max(newDeltaT, 0.2*deltaT);
+                const_cast<Time&>(time_).setDeltaT(deltaT, false);
+            }
+        }
+    }
+
+    return true;
+}
+
+
 template<class OutputFilter>
 bool Foam::OutputFilterFunctionObject<OutputFilter>::read
 (
diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
index 78d1c47be72e11bd10f546f882bebe8f5130cbc2..c9cc34c8cefc6edb5a9944b5b3fe20e5f42fe490 100644
--- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
+++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
@@ -90,6 +90,10 @@ class OutputFilterFunctionObject
             //- De-activation time - defaults to VGREAT
             scalar timeEnd_;
 
+            //- Number of steps before the dumping time in which the deltaT
+            // will start to change (valid for ocAdjustableTime)
+            label nStepsToStartTimeChange_;
+
 
         //- Output controls
         outputFilterOutputControl outputControl_;
@@ -204,6 +208,9 @@ public:
             //- Called when time was set at the end of the Time::operator++
             virtual bool timeSet();
 
+            //- Called at the end of Time::adjustDeltaT() if adjustTime is true
+            virtual bool adjustTimeStep();
+
             //- Read and set the function object if its data have changed
             virtual bool read(const dictionary&);
 
diff --git a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C
index 31e1d920628c04ffa4d1b0ead97bd721c409d699..2cb5bd0cd1916bc545e04a868a22af11a1f57945 100644
--- a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C
+++ b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C
@@ -126,6 +126,12 @@ bool Foam::functionObject::timeSet()
 }
 
 
+bool Foam::functionObject::adjustTimeStep()
+{
+    return false;
+}
+
+
 Foam::autoPtr<Foam::functionObject> Foam::functionObject::iNew::operator()
 (
     const word& name,
diff --git a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H
index 47438c32158da6f63fecab804121d125b31ed83b..ef4e6591fb463dd0140e361b23873f3a9ecd0e6a 100644
--- a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H
+++ b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H
@@ -160,6 +160,9 @@ public:
         //- Called when time was set at the end of the Time::operator++
         virtual bool timeSet();
 
+        //- Called at the end of Time::adjustDeltaT() if adjustTime is true
+        virtual bool adjustTimeStep();
+
         //- Read and set the function object if its data have changed
         virtual bool read(const dictionary&) = 0;
 
diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C
index 1e7553a760fa7b6badfcc12aba329638c0cfaf26..0c44dbbfbd47d478179b523bee447411e4bf67ab 100644
--- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C
+++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C
@@ -211,6 +211,27 @@ bool Foam::functionObjectList::timeSet()
 }
 
 
+bool Foam::functionObjectList::adjustTimeStep()
+{
+    bool ok = true;
+
+    if (execution_)
+    {
+        if (!updated_)
+        {
+            read();
+        }
+
+        forAll(*this, objectI)
+        {
+            ok = operator[](objectI).adjustTimeStep() && ok;
+        }
+    }
+
+    return ok;
+}
+
+
 bool Foam::functionObjectList::read()
 {
     bool ok = true;
diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H
index 4df2c4d263246f66bc70e6fa65b6581d8b6fda5a..126a1f18bbda131ebe08631197a1e959046fee61 100644
--- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H
+++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H
@@ -166,6 +166,9 @@ public:
         //- Called when time was set at the end of the Time::operator++
         virtual bool timeSet();
 
+        //- Called at the end of Time::adjustDeltaT() if adjustTime is true
+        virtual bool adjustTimeStep();
+
         //- Read and set the function objects if their data have changed
         virtual bool read();
 
diff --git a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C
index e282ff8c21575d56d3e1f40c219e1652a98380c2..6865b31fb9e1aada45639df45072efe01a7fdade 100644
--- a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C
+++ b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.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
@@ -24,21 +24,26 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "outputFilterOutputControl.H"
+#include "PstreamReduceOps.H"
 
 // * * * * * * * * * * * * * Static Member Data  * * * * * * * * * * * * * * //
 
 namespace Foam
 {
     template<>
-    const char* NamedEnum<outputFilterOutputControl::outputControls, 2>::
+    const char* NamedEnum<outputFilterOutputControl::outputControls, 6>::
     names[] =
     {
         "timeStep",
-        "outputTime"
+        "outputTime",
+        "adjustableTime",
+        "runTime",
+        "clockTime",
+        "cpuTime"
     };
 }
 
-const Foam::NamedEnum<Foam::outputFilterOutputControl::outputControls, 2>
+const Foam::NamedEnum<Foam::outputFilterOutputControl::outputControls, 6>
     Foam::outputFilterOutputControl::outputControlNames_;
 
 
@@ -53,7 +58,8 @@ Foam::outputFilterOutputControl::outputFilterOutputControl
     time_(t),
     outputControl_(ocTimeStep),
     outputInterval_(0),
-    outputTimeLastDump_(0)
+    outputTimeLastDump_(0),
+    writeInterval_(-1)
 {
     read(dict);
 }
@@ -92,6 +98,15 @@ void Foam::outputFilterOutputControl::read(const dictionary& dict)
             break;
         }
 
+        case ocClockTime:
+        case ocRunTime:
+        case ocCpuTime:
+        case ocAdjustableTime:
+        {
+            writeInterval_ = readScalar(dict.lookup("writeInterval"));
+            break;
+        }
+
         default:
         {
             // do nothing
@@ -125,6 +140,56 @@ bool Foam::outputFilterOutputControl::output()
             break;
         }
 
+        case ocRunTime:
+        case ocAdjustableTime:
+        {
+            label outputIndex = label
+            (
+                (
+                    (time_.value() - time_.startTime().value())
+                  + 0.5*time_.deltaTValue()
+                )
+                / writeInterval_
+            );
+
+            if (outputIndex > outputTimeLastDump_)
+            {
+                outputTimeLastDump_ = outputIndex;
+                return true;
+            }
+            break;
+        }
+
+        case ocCpuTime:
+        {
+            label outputIndex = label
+            (
+                returnReduce(time_.elapsedCpuTime(), maxOp<double>())
+                / writeInterval_
+            );
+            if (outputIndex > outputTimeLastDump_)
+            {
+                outputTimeLastDump_ = outputIndex;
+                return true;
+            }
+            break;
+        }
+
+        case ocClockTime:
+        {
+            label outputIndex = label
+            (
+                returnReduce(label(time_.elapsedClockTime()), maxOp<label>())
+                / writeInterval_
+            );
+            if (outputIndex > outputTimeLastDump_)
+            {
+                outputTimeLastDump_ = outputIndex;
+                return true;
+            }
+            break;
+        }
+
         default:
         {
             // this error should not actually be possible
diff --git a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H
index 4676bbd2a70a7868ad527152d1e2059da816d2bb..e27a2507d21cce6db93b38409ea7d94c1f686ecd 100644
--- a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H
+++ b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.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
@@ -56,8 +56,12 @@ public:
     //- The output control options
     enum outputControls
     {
-        ocTimeStep,   /*!< execution is coupled to the time-step */
-        ocOutputTime  /*!< execution is coupled to the output-time */
+        ocTimeStep,     /*!< execution is coupled to the time-step */
+        ocOutputTime,  /*!< execution is coupled to the output-time */
+        ocAdjustableTime, /*!< Adjust time step for dumping */
+        ocRunTime,        /*!< run time for dumping */
+        ocClockTime,      /*!< clock time for dumping */
+        ocCpuTime        /*!< cpu time for dumping */
     };
 
 
@@ -69,7 +73,7 @@ private:
         const Time& time_;
 
         //- String representation of outputControls enums
-        static const NamedEnum<outputControls, 2> outputControlNames_;
+        static const NamedEnum<outputControls, 6> outputControlNames_;
 
         //- Type of output
         outputControls outputControl_;
@@ -81,6 +85,9 @@ private:
         //- Dumping counter for ocOutputTime
         label outputTimeLastDump_;
 
+        //- Dump each deltaT (adjust Ttime)
+        scalar writeInterval_;
+
 
     // Private Member Functions
 
@@ -114,6 +121,24 @@ public:
 
         //- Flag to indicate whether to output
         bool output();
+
+        //- Return outputControl
+        outputControls outputControl()
+        {
+            return outputControl_;
+        }
+
+        //- Return writeInterval
+        scalar writeInterval()
+        {
+            return writeInterval_;
+        }
+
+        //- Return outputTimeLastDump
+        label outputTimeLastDump()
+        {
+            return outputTimeLastDump_;
+        }
 };
 
 
diff --git a/src/postProcessing/functionObjects/IO/controlDict b/src/postProcessing/functionObjects/IO/controlDict
index 050086a8ebe35a26c2ca3a0ea684c4eafdcf52c2..aed0d13d014bcda4f000a120e78ae01273c4fe88 100644
--- a/src/postProcessing/functionObjects/IO/controlDict
+++ b/src/postProcessing/functionObjects/IO/controlDict
@@ -64,14 +64,24 @@ functions
         // region allowed.
         region wallFilmRegion;
 
-        // Execute upon outputTime
+        // Execute upon options:
+        //  timeStep
+        //  outputTime
+        //  adjustableTime
+        //  runTime
+        //  clockTime
+        //  cpuTime
         outputControl   outputTime;
 
         // Objects (fields or lagrangian fields in any of the clouds)
         // to write every outputTime
         objectNames    (p positions nParticle);
+
         // Write as normal every writeInterval'th outputTime.
-        writeInterval   3;
+        outputInterval  1; // (timeStep, outputTime)
+
+        // Interval of time (sec) to write down(
+        writeInterval   10.5 //(adjustableTime, runTime, clockTime, cpuTime)
     }
 
     dumpObjects
@@ -84,9 +94,24 @@ functions
         // Where to load it from
         functionObjectLibs ("libIOFunctionObjects.so");
 
-        // Execute upon outputTime
+        // Execute upon outputTime:
+        //  timeStep
+        //  outputTime
+        //  adjustableTime
+        //  runTime
+        //  clockTime
+        //  cpuTime
         outputControl   outputTime;
 
+        // Is the object written by this function Object alone
+        exclusiveWriting       true;
+
+         // Interval of time (sec) to write down(
+        writeInterval   10.5 //(adjustableTime, runTime, clockTime, cpuTime)
+
+         // Write as normal every writeInterval'th outputTime.
+        outputInterval  1; // (timeStep, outputTime)
+
         // Objects to write
         objectNames    ();
     }
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
index 6b1733ce02dc4f2b186e0d492a4899212685ce5c..c05abb5b2f4491c194f2644beaa0834dd204dba5 100644
--- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
@@ -46,6 +46,7 @@ Foam::writeRegisteredObject::writeRegisteredObject
 )
 :
     name_(name),
+    exclusiveWriting_(true),
     obr_(obr),
     objectNames_()
 {
@@ -64,6 +65,7 @@ Foam::writeRegisteredObject::~writeRegisteredObject()
 void Foam::writeRegisteredObject::read(const dictionary& dict)
 {
     dict.lookup("objectNames") >> objectNames_;
+    dict.readIfPresent("exclusiveWriting", exclusiveWriting_);
 }
 
 
@@ -96,12 +98,12 @@ void Foam::writeRegisteredObject::write()
                 (
                     obr_.lookupObject<regIOobject>(objectNames_[i])
                 );
-            // Switch off automatic writing to prevent double write
-            obj.writeOpt() = IOobject::NO_WRITE;
 
-            Info<< type() << " " << name_ << " output:" << nl
-                << "    writing object " << obj.name() << nl
-                << endl;
+            if (exclusiveWriting_)
+            {
+                // Switch off automatic writing to prevent double write
+                obj.writeOpt() = IOobject::NO_WRITE;
+            }
 
             obj.write();
         }
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
index 7159fad3fcddbe7ca124d44c4c3b0bbe90f83249..985d210dcf254221530b4208efb34765da815d63 100644
--- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
@@ -28,8 +28,15 @@ Group
     grpIOFunctionObjects
 
 Description
-    This function object takes-over the writing of objects registered to the
-    database.
+    This function object allows specification of different writing frequency
+    of objects registered to the database. It has similar functionality
+    as the main time database through the outputControl setting:
+        timeStep
+        outputTime
+        adjustableTime
+        runTime
+        clockTime
+        cpuTime
 
     Example of function object specification:
     \verbatim
@@ -37,6 +44,7 @@ Description
     {
         type        writeRegisteredObject;
         functionObjectLibs ("libIOFunctionObjects.so");
+        exclusiveWriting     true;
         ...
         objectNames (obj1 obj2);
     }
@@ -47,8 +55,12 @@ Description
         Property     | Description             | Required    | Default value
         type         | type name: writeRegisteredObject | yes |
         objectNames  | objects to write        | yes         |
+        exclusiveWriting    | Takes over object writing | no | yes
     \endtable
 
+    exclusiveWriting disables automatic writing (i.e through database) of the
+    objects to avoid duplicate writing.
+
 SeeAlso
     Foam::functionObject
     Foam::OutputFilterFunctionObject
@@ -89,6 +101,9 @@ protected:
         //- Name of this set of writeRegisteredObject
         word name_;
 
+        //- Takes over the writing from Db
+        bool exclusiveWriting_;
+
         const objectRegistry& obr_;
 
         // Read from dictionary
diff --git a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H
index ce1054c482eb3842869b621bbbe097075a61ee60..a0f0a31215fd74d43d939edcb4dab812d995c13e 100644
--- a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H
+++ b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H
@@ -70,7 +70,7 @@ SourceFiles
 \*---------------------------------------------------------------------------*/
 
 #ifndef compressibleSpalartAllmaras_H
-#define combressibleSpalartAllmaras_H
+#define compressibleSpalartAllmaras_H
 
 #include "RASModel.H"
 #include "wallDist.H"