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

actions
(
   
    // First select all faces from the topWall patch
    {
        name    topFaces;
        type    faceSet;
        action  new;
        source  patchToFace;
        patch   "topWall";
    }

    // Create inlet face set using cylinderAnnulus selection
    {
        name    inletFaces;
        type    faceSet;
        action  new;
        source  cylinderAnnulusToFace;
        p1      (0.02 0 -0.0001);  // Just below top surface
        p2      (0.02 0 0.0001);   // Just above top surface
        radius  0.01752;
        innerRadius 0;
    }

    // Filter inlet faces to only keep those on topWall
    {
        name    inletFaces;
        type    faceSet;
        action  subset;
        source  faceToFace;
        set     topFaces;
    }

    // Create outlet face set using cylinderAnnulus selection
    {
        name    outletFaces;
        type    faceSet;
        action  new;
        source  cylinderAnnulusToFace;
        p1      (-0.02 0 -0.0001); // Just below top surface
        p2      (-0.02 0 0.0001);  // Just above top surface
        radius  0.01752;
        innerRadius 0;
    }

    // Filter outlet faces to only keep those on topWall
    {
        name    outletFaces;
        type    faceSet;
        action  subset;
        source  faceToFace;
        set     topFaces;
    }

    // Convert face sets to face zones
    {
        name    inletZone;
        type    faceZoneSet;
        action  new;
        source  setToFaceZone;
        faceSet inletFaces;  // Explicitly specify the faceSet source
    }

    {
        name    outletZone;
        type    faceZoneSet;
        action  new;
        source  setToFaceZone;
        faceSet outletFaces;  // Explicitly specify the faceSet source
    }

);

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