// -*- C++ -*-

// Averaging of volume fields or fields on an externally loaded surface.
//
// fields [required]
//     The fields and the specification for the type of averaging needed.
//
// The 'execute' control triggers the averaging.
// The 'output/write' control is optional.
//
// The averaging can be optionally restart in two ways:
//
//   periodicRestart / restartPeriod:
//     - reset at defined intervals
//
//   restartTime:
//     - a 'one-shot' reset at a particular time
//
settings_avg
{
    type            fieldAverage;
    libs            ("libfieldFunctionObjects.so");
    log             on;
    enabled         true;

    executeControl  timeStep;
    writeControl    outputTime;
    writeInterval   1;

    // restart behaviour
    resetOnStartUp  true;
    resetOnOutput   false;
    // periodicRestart true;
    // restartPeriod   0.002;

    // Use the same values for all entries
    meanOnly
    {
        mean        on;
        prime2Mean  off;
        base        time;
    }

    fields
    (
        rho
        {
            $meanOnly;
        }

        U
        {
            $meanOnly;
        }

        tracer0
        {
            $meanOnly;
        }
    );
}


//   restartTime:
//     - a 'one-shot' reset at a particular time
//
// fields [required]
//     Pairs of fields to use for calculating the deviation.
//     The fields must already exist on the surfaces.
//
// weightField [optional]
//     A scalar or vector field for weighting.
//
// postOperation [optional]
//     Modify the results by particular operations.
//     (none | sqrt)
//     The sqrt operation is useful when determining RMS values.
//
// The 'output/write' control triggers the calculation.
settings_stats
{
    type            surfaceFieldValue;
    libs            ("libfieldFunctionObjects.so");
    log             on;
    enabled         true;

    writeControl    timeStep;
    writeInterval   1;

    writeFields     false;
    surfaceFormat   vtk;
    // writeArea       true;

    // resetOnStartUp  true;
    // resetOnOutput   false;
    // periodicRestart true;
    // restartPeriod   0.0005;
}


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