/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  v2006                                 |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Time-accurate URANS phase. Continues the converged / limit-cycle steady
// simpleFoam solution. application, endTime, deltaT, maxCo, maxDeltaT and
// writeInterval are patched at runtime by _activate_urans_phase().

libs            (OpenFOAM fieldFunctionObjects);

application     pimpleFoam;

startFrom       latestTime;

startTime       0;

stopAt          endTime;

endTime         100;          // patched: latestSteadyTime + urans_max_time

deltaT          1e-3;         // patched: initial seed only; adjustTimeStep + maxCo govern the step

adjustTimeStep  yes;
maxCo           1;           
maxDeltaT       1;         

writeControl    adjustableRunTime;
writeInterval   0.01;           // patched (time units)

purgeWrite      160; // 4 s

writeFormat     ascii;

writePrecision  8;

writeCompression on;

timeFormat      general;

timePrecision   8;

runTimeModifiable true;

functions
{
    // Forces. On the URANS restart this opens a NEW folder named after the
    // restart time: postProcessing/forces/<restartTime>/coefficient.dat
    #include "forceCoeffs"
    #include "FOyPlus"
    #include "FOwallShearStress"
    #include "Vorticity"         

    // Time-averaged fields for Cp/Cf. base time -> time-weighted (adaptive dt);
    // restartOnRestart true -> averaging starts fresh at the URANS restart.
    fieldAverage
    {
        type            fieldAverage;
        libs            (fieldFunctionObjects);

        restartOnRestart    true;
        restartOnOutput     false;

        executeControl      timeStep;
        executeInterval     1;
        writeControl        writeTime;

        fields
        (
            U               { mean on; prime2Mean off; base time; }
            vorticity       { mean on; prime2Mean off; base time; }
            p               { mean on; prime2Mean off; base time; }
            nut             { mean on; prime2Mean off; base time; }
            wallShearStress { mean on; prime2Mean off; base time; }
        );
    }
}

// ************************************************************************* //
