/*--------------------------------*- C++ -*----------------------------------*\
  Guide 15 - monitoring functions (generated by add_monitors.py)
\*---------------------------------------------------------------------------*/
FoamFile
{
    format      ascii;
    class       dictionary;
    location    "system";
    object      functions;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Initial residuals of every SIMPLE iteration -> postProcessing/residuals
#includeFunc residuals(p, U, k, epsilon)

// Forces and moments about the axis (CofR on the axis). rhoInf converts the
// kinematic pressure and stresses to N and N m. 2-D slab: depth 0.01 m.
#includeFunc forcesIncompressible(name=rotorForces, patches=(rotor), rhoInf=1000, CofR=(0 0 0), pitchAxis=(0 1 0))
#includeFunc forcesIncompressible(name=statorForces, patches=(stator), rhoInf=1000, CofR=(0 0 0), pitchAxis=(0 1 0))

// Stress work on the rotating walls (kinematic: multiply by rho for W),
// same construction as the official simpleRushtonMRF tutorial
#includeFunc power
rotorPower
{
    type            surfaceFieldValue;
    libs            ("libfieldFunctionObjects.so");
    log             no;
    writeFields     no;
    patch           rotor;
    operation       sum;
    fields          (stressUSf);
    writeControl    writeTime;
}

// Probes at 22.5 deg, between rotor blades (0, 90, 180, 270 deg) and stator
// blades (45, 135, 225, 315 deg): r = 0.03 (rotor zone), 0.055 (rotor gap),
// 0.065 (stator gap), 0.085 m (stator zone), mid-plane z = 0
#includeFunc probes(name=vesselProbes, points=((0.027716 0.011480 0) (0.050813 0.021047 0) (0.060052 0.024874 0) (0.078530 0.032528 0)), fields=(U p k))

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