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

application     simpleFoam;

startFrom       latestTime;
//startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         23080;

deltaT          1;

writeControl    timeStep;

writeInterval   1000;

purgeWrite      0;

writeFormat     ascii;

writePrecision  10;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;

functions
{
    #includeFunc residuals(epsilon,k,p,U);

    yPlus
    {
    	type        	yPlus;
    	libs        	("libfieldFunctionObjects.so");

        executeControl  writeTime;
        writeControl    writeTime;
    }

    age
    {
        libs            ("libfieldFunctionObjects.so");
        type            age;

        // Switch to turn on/off the diffusion term
	// The various text representations for a switch value
	// False = 0, True = 1, off = 2, on = 3, no = 4, yes = 5, n = 6, y = 7, f = 8, t = 9, none = 10, any = 11, invalid
	diffusion       off;
	//diffusion       on;

	nCorr		30000;	// The maximum number of correctors (maximum number of simulation steps to reach convergence)
	tolerance	1e-06;	// Solver residual control

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    min(age)artOverallZone	// folder name in post-processing specifying the minimum "age" in overall-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	regionType      all;
	//regionType      cellZone;
	//name            artOverallZone;
	operation       min;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
	writeLocation       true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    max(age)artOverallZone	// folder name in post-processing specifying the maximum "age" in overall-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	regionType      all;
	//regionType      cellZone;
	//name            artOverallZone;
	operation       max;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
	writeLocation       true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    volAverage(age)artOverallZone	// folder name in post-processing specifying the volume average of "age" in overall-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	regionType      all;
	//regionType      cellZone;
	//name            artOverallZone;
    	operation       volAverage;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    max(age)artOuterZone	// folder name in post-processing specifying the maximum "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artOuterZone;
	operation       max;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
	writeLocation       true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    volAverage(age)artOuterZone	// folder name in post-processing specifying the volume average of "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artOuterZone;
    	operation       volAverage;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    max(age)artInnerBottomZone	// folder name in post-processing specifying the maximum "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artInnerBottomZone;
	operation       max;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
	writeLocation       true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    volAverage(age)artInnerBottomZone	// folder name in post-processing specifying the volume average of "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artInnerBottomZone;
    	operation       volAverage;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }


    max(age)artInnerMiddleZone	// folder name in post-processing specifying the maximum "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artInnerMiddleZone;
	operation       max;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
	writeLocation       true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    volAverage(age)artInnerMiddleZone	// folder name in post-processing specifying the volume average of "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artInnerMiddleZone;
    	operation       volAverage;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    max(age)artInnerUpperZone	// folder name in post-processing specifying the maximum "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artInnerUpperZone;
	operation       max;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
	writeLocation       true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

    volAverage(age)artInnerUpperZone	// folder name in post-processing specifying the volume average of "age" in specified-zone
    {
	type            volFieldValue;
	libs            ("libfieldFunctionObjects.so");

	//regionType      all;
	regionType      cellZone;
	name            artInnerUpperZone;
    	operation       volAverage;

	//weightField     alpha1;

	fields
	(
		age
		//p
       		//U
	);

        // Optional (inherited) entries
        enabled             true;	// Switch to turn function object on/off
        log                 true;	// Switch to write log info to standard output
	writeFields         true;
        timeStart           $endTime;
        timeEnd             $endTime;
        executeControl      timeStep;
        //executeControl      writeTime;
        executeInterval     1;
        writeControl        timeStep;
        //writeControl        writeTime;
        writeInterval       1;
    }

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