/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  7
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volVectorField;
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{

    outlet
    {
        type            zeroGradient;
    }

    inlet
    {
        type            codedFixedValue;
        value           uniform (0.0 0 0);
        
        name	parabolicVelocity;
        code
        #{
                const vectorField& Cf = patch().Cf();
                const scalar t = this->db().time().value();
                
        	vectorField& field = *this;
        	
        	const scalar c = 0;
        	const scalar r = 0.01;
        	const scalar Umax = 0.29165;
        	const scalar Umin = 0.05;
        	
        	forAll(Cf, faceI)
        	{
        	   
        		const scalar y = Cf[faceI][1];
        		const scalar z = Cf[faceI][2];
        		
        		if(t < 0.425)        	
        		field[faceI] = vector( (Umax*(1.0 - cos(2.0*3.142*t/0.425)) + Umin)*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
        		else if (t < 0.85)
        		field[faceI] = vector( Umin*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
			else if (t < 1.275)
        		field[faceI] = vector( (Umax*(1.0 - cos(2.0*3.142*(t-0.85)/0.425)) + Umin)*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
			else if (t < 1.7)        		
        		field[faceI] = vector( Umin*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
			else if (t < 2.125)
        		field[faceI] = vector( (Umax*(1.0 - cos(2.0*3.142*(t-1.7)/0.425)) + Umin)*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
			else if (t < 2.55)        		
        		field[faceI] = vector( Umin*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);
			else if (t < 2.975)
        		field[faceI] = vector( (Umax*(1.0 - cos(2.0*3.142*(t-2.55)/0.425)) + Umin)*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
			else if (t < 3.4)        		
        		field[faceI] = vector( Umin*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);
			else if (t < 3.825)
        		field[faceI] = vector( (Umax*(1.0 - cos(2.0*3.142*(t-3.4)/0.425)) + Umin)*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);   	
			else       		
        		field[faceI] = vector( Umin*( 1.0 - ( pow(y/r,2)+pow(z/r,2) ) ) , 0, 0);

        	}
        #};        
        
    }
        
    nozzle
    {
        //type            noSlip;
        type            fixedValue;
        value           uniform (0.0 4.0e-8 0);
    }

    sideFront
    {
        type            wedge;
    }
    
    sideBack
    {
        type            wedge;
    }   

    axis
    {
        type            empty;
    }      
}

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