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

application     simpleFoam;

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         10000;

deltaT          1;

writeControl    timeStep;

writeInterval   1000;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;


functions
{  


total_pressure
{
    // Mandatory entries (unmodifiable)
    type            pressure;
    libs            (fieldFunctionObjects);

    // Mandatory entries (runtime modifiable)
    mode            total; 
    
    // Optional entries (runtime modifiable)
    p               p;
    U               U;
    rho             rhoInf;
    rhoInf          1060;  // density of blood
    pRef            0.0;
    hydroStaticMode none;
    executeControl  timeStep;
    executeInterval 1;
    writeControl    timeStep;
    writeInterval   1000; 
    UInf            (0.1 0 0);
}

static_pressure
{
    // Mandatory entries (unmodifiable)
    type            pressure;
    libs            (fieldFunctionObjects);

    // Mandatory entries (runtime modifiable)
    mode            static; 
    
    // Optional entries (runtime modifiable)
    p               p;
    U               U;
    rho             rhoInf;
    rhoInf          1060;  // density of blood
    pRef            0.0;
    hydroStaticMode none;
    executeControl  timeStep;
    executeInterval 1;
    writeControl    timeStep;
    writeInterval   1000; 
    UInf            (0.1 0 0);
}


// functions used to measure velocity field at plane x = a

// x = 0
l_0
    {
        type sets;
        libs (“libsampling.so”);
        writeControl timeStep;
        outputInterval 1000;
        writeInterval  10000;
        interpolationScheme cellPatchConstrained;
        setFormat csv;

    sets
    (
        data
            {
            type face;
            axis y;
            start (0 0.00025 0);
              end (0 -0.00025 0);            
            }
    );
       fields (U nu);
        
}

// x = 0.0075

l_0.0075
    {
        type sets;
        libs (“libsampling.so”);
        writeControl timeStep;
        outputInterval 1000;
        writeInterval  10000;
        interpolationScheme cellPatchConstrained;
        setFormat csv;

    sets
    (
        data
            {
            type face;
            axis y;
            start (0.0075 0.00025 0);
              end (0.0075 -0.00025 0);            
            }
    );
        fields (U nu);
        
    }
    
       
   
// x = 0.015
    
l_0.015
    {
        type sets;
        libs(“libsampling.so”);
        writeControl timeStep;
        outputInterval 1000;
        writeInterval  10000;
        interpolationScheme cellPatchConstrained;
        setFormat csv;

    sets
    (
        data
            {
            type face;
            axis y;
            start (0.015 0.00025 0);
              end (0.015 -0.00025 0);            
            }
    );
        fields (U nu);
        
    }
    
    
// Area Average Values over SURFACE

inlet
    {
        // Mandatory entries (unmodifiable)
        type            surfaceFieldValue;
        libs            (fieldFunctionObjects);
        setFormat csv;
    
        // Mandatory entries (runtime modifiable)
        fields          (U p);
        operation       areaAverage;
        regionType      patch;
        name            inlet;
        
        // Optional entries (runtime modifiable)
        weightField     none;
        scaleFactor     1.0;
        writeArea       true;
        surfaceFormat   none;

        writeFields     true;
        writePrecision  8;
        writeToFile     true;
        useUserTime     true;
        region          region0;
        enabled         true;
        log             true;
        endTime         10000;          // Specify the desired end time
        deltaT          1;              // Specify the time step size
        writeControl    timeStep;       // Write results at each time step
        writeInterval   1000;            // Write results every time step

     }

outlet
    {        
        // Mandatory entries (unmodifiable)
        type            surfaceFieldValue;
        libs            (fieldFunctionObjects);
        setFormat csv;
    
        // Mandatory entries (runtime modifiable)
        fields          (U p );
        operation       areaAverage;
        regionType      patch;
        name            outlet;
        
        // Optional entries (runtime modifiable)
        weightField     none;
        scaleFactor     1.0;
        writeArea       true;
        surfaceFormat   none;

        writeFields     true;
        writePrecision  8;
        writeToFile     true;
        useUserTime     true;
        region          region0;
        enabled         true;
        log             true;
        endTime         10000;          // Specify the desired end time
        deltaT          1;              // Specify the time step size
        writeControl    timeStep;       // Write results at each time step
        writeInterval   1000;            // Write results every time step

    }
    
    
// Planes for Area Averaged Pressure
    
P_0
    {
       // Mandatory entries (unmodifiable)
        type            surfaceFieldValue;
        libs            (fieldFunctionObjects);
    
        // Mandatory entries (runtime modifiable)
        fields          (p static(p) total(p));
        operation       areaAverage;
        regionType      sampledSurface;
        name            Mean;
        setFormat csv;
        
        sampledSurfaceDict
        {
            type            plane;
            planeType       embeddedPoints;
            embeddedPointsDict            
          {
	    point1          (0 0.00025 0);
            point2          (0 0.00025 5e-05);
            point3          (0 -0.00025  0);
          }
       }
       
        // Optional entries (runtime modifiable)
        postOperation   none;
        weightField     alpha1;
        scaleFactor     1.0;
        writeArea      	true;
        surfaceFormat   none;
    
        // Optional (inherited) entries
        writeFields     false;
        scalingFactor   1.0;
        writePrecision  8;
        writeToFile     true;
        useUserTime     true;
        region          region0;
        enabled         true;
        log             true;
        timeStart       0;
        timeEnd         10000;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   1000; 
  }

P_0.005
    {
        type            surfaceFieldValue;
        libs            (fieldFunctionObjects);
        fields          (p static(p) total(p));
        operation       areaAverage;
        regionType      sampledSurface;
        name            Mean;
        setFormat csv;
        
        sampledSurfaceDict
        {
            type            plane;
            planeType       embeddedPoints;
            embeddedPointsDict            
          {
	    point1          (0.005 0.00025 0);
            point2          (0.005 0.00025 5e-05);
            point3          (0.005 -0.00025 0);
          }
       }
       
        postOperation   none;
        weightField     alpha1;
        scaleFactor     1.0;
        writeArea       true;
        surfaceFormat   none;    
        writeFields     false;
        scalingFactor   1.0;
        writePrecision  8;
        writeToFile     true;
        useUserTime     true;
        region          region0;
        enabled         true;
        log             true;
        timeStart       0;
        timeEnd         10000;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   1000; 
  }


P_0.010
    {
        type            surfaceFieldValue;
        libs            (fieldFunctionObjects);
        fields          (p static(p) total(p));
        operation       areaAverage;
        regionType      sampledSurface;
        name            Mean;
        setFormat csv;
        
        sampledSurfaceDict
        {
            type            plane;
            planeType       embeddedPoints;
            embeddedPointsDict            
          {
	    point1          (0.010 0.00025 0);
            point2          (0.010 0.00025 5e-05);
            point3          (0.010 -0.00025 0);
          }
       }
       
        postOperation   none;
        weightField     alpha1;
        scaleFactor     1.0;
        writeArea       true;
        surfaceFormat   none;    
        writeFields     false;
        scalingFactor   1.0;
        writePrecision  8;
        writeToFile     true;
        useUserTime     true;
        region          region0;
        enabled         true;
        log             true;
        timeStart       0;
        timeEnd         10000;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   1000; 
  }

 
P_0.015
    {
        type            surfaceFieldValue;
        libs            (fieldFunctionObjects);
        fields          (p static(p) total(p));
        operation       areaAverage;
        regionType      sampledSurface;
        name            Mean;
        setFormat csv;
        
        sampledSurfaceDict
        {
            type            plane;
            planeType       embeddedPoints;
            embeddedPointsDict            
          {
	    point1          (0.015 0.00025 0);
            point2          (0.015 0.00025 5e-05);
            point3          (0.015 -0.00025 0);
          }
       }
       
        postOperation   none;
        weightField     alpha1;
        scaleFactor     1.0;
        writeArea       true;
        surfaceFormat   none;    
        writeFields     false;
        scalingFactor   1.0;
        writePrecision  8;
        writeToFile     true;
        useUserTime     true;
        region          region0;
        enabled         true;
        log             true;
        timeStart       0;
        timeEnd         10000;
        executeControl  timeStep;
        executeInterval 1;
        writeControl    timeStep;
        writeInterval   1000; 
    }
    
    } 
    
// ************************************************************************* //

