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

// Additional libraries
//libs        (SloanRenumber);
//libs        (zoltanRenumber);

// Optional entry: write maps from renumbered back to original mesh
writeMaps   false;

// Optional entry: sort cells on coupled boundaries to last for use with
// e.g. nonBlockingGaussSeidel.
sortCoupledFaceCells false;

// Optional entry: renumber on a block-by-block basis. It uses a
// blockCoeffs dictionary to construct a decompositionMethod to do
// a block subdivision) and then applies the renumberMethod to each
// block in turn. This can be used in large cases to keep the blocks
// fitting in cache with all the cache misses bunched at the end.
// This number is the approximate size of the blocks - this gets converted
// to a number of blocks that is the input to the decomposition method.
//blockSize 1000;

// Optional entry: sort points into internal and boundary points
//orderPoints false;

// Optional entry (experimental) - for block-by-block (blockSize > 0) option:
// - sort intra-region and iter-region faces separately.
//   This will likely lead to non-upper triangular ordering between regions.
//regionFaceOrder false;


method          CuthillMcKee;
//method          RCM;  // == reverseCuthillMcKee;
//method          Sloan;        //<-  libs (zoltanRenumber);
//method          manual;
//method          random;
//method          structured;
//method          spring;
//method          zoltan;       //<-  libs (zoltanRenumber);

//CuthillMcKeeCoeffs
//{
//    // Plain or reverse CuthillMcKee (RCM)
//    reverse     true;
//}

manualCoeffs
{
    // In system directory: new-to-original (i.e. order) labelIOList
    dataFile    "cellMap";
}


// For extruded (i.e. structured in one direction) meshes
structuredCoeffs
{
    // Patches that mesh was extruded from.
    // These determine the starting layer of cells
    patches     (movingWall);

    // Method to renumber the starting layer of cells
    method      random;

    // Renumber in columns (depthFirst) or in layers
    depthFirst  true;

    // Reverse ordering
    reverse     false;
}


springCoeffs
{
    // Maximum jump of cell indices. Is fraction of number of cells
    maxCo       0.01;

    // Limit the amount of movement; the fraction maxCo gets decreased
    // with every iteration
    freezeFraction 0.999;

    // Maximum number of iterations
    maxIter    1000;

    // Enable/disable verbosity
    verbose    true;
}


blockCoeffs
{
    method      scotch;
    //method      hierarchical;
    //hierarchicalCoeffs
    //{
    //    n           (1 2 1);
    //    delta       0.001;
    //    order       xyz;
    //}
}


zoltanCoeffs
{
    ORDER_METHOD    LOCAL_HSFC;
}


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