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

// This application/dictionary controls:
// - optional: create new patches from boundary faces (either given as
//   a set of patches or as a faceSet)
// - always: order faces on coupled patches such that they are opposite. This
//   is done for all coupled faces, not just for any patches created.
// - optional: synchronise points on coupled patches.
// - always: remove zero-sized (non-coupled) patches (that were not added)

// 1. Create cyclic:
// - specify where the faces should come from
// - specify the type of cyclic. If a rotational specify the rotationAxis
//   and centre to make matching easier
// - always create both halves in one invocation with correct 'neighbourPatch'
//   setting.
// - optionally pointSync true to guarantee points to line up.

// 2. Correct incorrect cyclic:
// This will usually fail upon loading:
//  "face 0 area does not match neighbour 2 by 0.0100005%"
//  " -- possible face ordering problem."
// - in polyMesh/boundary file:
//      - loosen matchTolerance of all cyclics to get case to load
//      - or change patch type from 'cyclic' to 'patch'
//        and regenerate cyclic as above

// Do a synchronisation of coupled points after creation of any patches.
// Note: this does not work with points that are on multiple coupled patches
//       with transformations (i.e. cyclics).
pointSync false;

// Patches to create.
patches
(
    {
        name perleft;
        patchInfo
        {
          //  type patch;
		type cyclic;
	   //  transform translational;
		//separation (0 0 0.2);
           neighbourPatch perright;
       		
        }

        constructFrom patches;
        patches (auto1);

    }
    {
        name perright;
        patchInfo
        {
        //type patch;    
	type cyclic;
	//transform translational;
	//separation (0 0 -0.2);		
        neighbourPatch perleft;
        }

        constructFrom patches;
        patches (auto9);  
    }



  {
        name perfrontup;
        patchInfo
        {
        //type patch;   
	type cyclic;
	//transform translational;
	//separationVector (0 1 0);	
        neighbourPatch perfrontdown;
       
        }

        constructFrom patches;
        patches (auto6);

    }
    {
        name perfrontdown;
        patchInfo
        {
	//type patch;
           type cyclic;
	//transform translational;
	//separationVector (0 1 0);		
           neighbourPatch perfrontup;
        }

        constructFrom patches;
        patches (auto0);  
    }




    {
        name perrearup;
        patchInfo
        {
       // type patch;    
	type cyclic;
	//transform translational;
	//separation (0 0.55 0);	
            neighbourPatch perreardown;
       
        }

        constructFrom patches;
        patches (auto8);

    }
    {
        name perreardown;
        patchInfo
        {
 	//type patch;
           type cyclic;
	//transform translational;
	//separation (0 -0.55 0);
         neighbourPatch perrearup;
        }

        constructFrom patches;
        patches (auto4);  
    }

        {
        name INLET;
        patchInfo
        {
            type patch;       
        }
        constructFrom patches;
        patches (auto2);
        }

      {
        name OUTLET;
        patchInfo
        {
            type patch;       
        }
        constructFrom patches;
        patches (auto5);
        }
        {
        name WALLUP;
        patchInfo
        {
            type wall;       
        }
        constructFrom patches;
        patches (auto7);
        }
      {
        name WALLDOWN;
        patchInfo
        {
            type wall;       
        }
        constructFrom patches;
        patches (auto3);
     }

);

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