/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  v1812                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/

// Interpolate U to create near-wall UNear
near
{
    // Where to load it from
    libs            ("libfieldFunctionObjects.so");

    type nearWallFields;

    // Output every
    writeControl    writeTime;

    // Calculate every
    executeControl  writeTime;

    // Fields to be sampled. Per field original name and mapped field to
    // create.
    // Note: fields only get updated when writing!
    fields
    (
        (U UNear)
    );

    // Patches/groups to sample (regular expressions)
    patches         (motorBikeGroup);

    // Distance to sample
    distance        0.001;
}

// Use UNear to track along wall
wallBoundedStreamLines
{
    // Where to load it from (if not already in solver)
    libs            ("libfieldFunctionObjects.so");
    type            wallBoundedStreamLine;

    // Output every
    writeControl    writeTime;

    setFormat       vtk; //gnuplot; //xmgr; //raw; //jplot;

    // Velocity field to use for tracking.
    U               UNear;

    // Interpolation method. Default is cellPoint.
    // interpolationScheme pointMVC;

    // Tracked forwards (+U) or backwards (-U)
    trackForward    true;

    interpolationScheme cellPoint;

    // Names of fields to sample. Should contain above velocity field!
    fields (p U k UNear);

    // Steps particles can travel before being removed
    lifeTime        100;

    // Cloud name to use
    cloud           wallBoundedParticleTracks;

    // Seeding method.
    seedSampleSet
    {
        type        patchSeed;

        uniformCoeffs
        {
            axis        x;  //distance;

            start       (0.0035 0.0999 0.0001);
            end         (0.0035 0.0999 0.0099);
            nPoints     20;
        }

        cloudCoeffs
        {
            axis        x;  //distance;
            points      ((0.351516548679288 -0.0116085375585099 1.24));
        }

        patchSeedCoeffs
        {
            patches     (motorBikeGroup);
            axis        x;  //distance;
            maxPoints   20000;
        }
    }
}


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