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

convertToMeters 0.01;  // centimetres.  According to https://cfd.direct/openfoam/user-guide/v8-blockmesh/

#include "../scale";  // gives global N
rx 3.5355339059327373;

arcNx #calc "50 * $N";
arcNy #calc " 30 * $N";

// = // rx #calc "5.0 / Foam::sqrt(2.0)";  // length of short side of rectangular triangle with long side =5

vertices
(
    // F = front (z = 0), B = back   (z = 1)
    // bottom = b, t = top, n = middle (left/right of center of cylinder)
    // l = left, r = right, m = middle (under center of cylinder), s = other square around cylinder corner
    // c = cylinder
    // (0, 0, 0) = center of cylinder in front
    name Fbl (-20 -20 0)
    name Bbl (-20 -20 1)
    name Fbs (20 -20 0)
    name Bbs (20 -20 1)
    name Fbr (200 -20 0)
    name Bbr (200 -20 1)
    name Ftl (-20 21 0)
    name Btl (-20 21 1)
    name Fts (20 21 0)
    name Bts (20 21 1)
    name Ftr (200 21 0)
    name Btr (200 21 1)
    name Fcl (-5 0 0)
    name Bcl (-5 0 1)
    name Fcb (0 -5 0)
    name Bcb (0 -5 1)
    name Fcr (5 0 0)
    name Bcr (5 0 1)
    name Fct (0 5 0)
    name Bct (0 5 1)
    name Fcbl (#calc "-$rx" #calc "-$rx" 0) 
    name Bcbl (#calc "-$rx" #calc "-$rx" 1) 
    name Fcbr ($rx #calc "-$rx" 0)
    name Bcbr ($rx #calc "-$rx" 1)
    name Fctl (#calc "-$rx" $rx 0) 
    name Bctl (#calc "-$rx" $rx 1) 
    name Fctr ($rx $rx 0)
    name Bctr ($rx $rx 1)
    name Fnl (-20 0 0)
    name Bnl (-20 0 1)
    name Fnr (200 0 0)
    name Bnr (200 0 1)
    name Fbm (0 -20 0)
    name Bbm (0 -20 1)
    name Ftm (0 21 0)
    name Btm (0 21 1)
    name Fns (20 0 0)
    name Bns (20 0 1)
    name Fnm (0 0 0)  
    name Bnm (0 0 1)
);

blocks
(
      name arcl hex (Ftl Fbl Fcbl Fctl Btl Bbl Bcbl Bctl) ($arcNx $arcNy 1) simpleGrading (1 1 1)
      name arct hex (Fts Ftl Fctl Fctr Bts Btl Bctl Bctr) ($arcNx $arcNy 1) simpleGrading (1 1 1)
      name arct hex (Fbs Fts Fctr Fcbr Bbs Bts Bctr Bcbr) ($arcNx $arcNy 1) simpleGrading (1 1 1)
      name arct hex (Fbl Fbs Fcbr Fcbl Bbl Bbs Bcbr Bcbl) ($arcNx $arcNy 1) simpleGrading (1 1 1)
      name pipe hex (Fbs Fbr Ftr Fts Bbs Bbr Btr Bts) (#calc "12 * $arcNy" $arcNx 1) simpleGrading (1 1 1)
);

edges
(
    arc Fcbl Fctl (-5 0 0)   // = Fcl
    arc Fctl Fctr (0 5 0)    // = Fct
    arc Fctr Fcbr (5 0 0)    // = Fcr
    arc Fcbr Fcbl (0 -5 0)   // = Fcb
    arc Bcbl Bctl (-5 0 0)   // = Bcl
    arc Bctl Bctr (0 5 0)    // = Bct
    arc Bctr Bcbr (5 0 0)    // = Bcr
    arc Bcbr Bcbl (0 -5 0)   // = Bcb
);

boundary
(
/*
    inlet
    {
        type patch;
        faces
        (
            (Fbl Ftl Bbl Btl)
        );
    }
    outlet
    {
        type patch;
        faces
        (
            (Fbr Ftr Bbr Btr)
        );
    }
    walls
    {
        type wall;
        faces
        (
            (Fbl Fbr Bbl Bbr)
            (Ftl Ftr Btl Btr)
        )
    }
    cylinder
    {
        type wall;
        faces
        (
            (Fcbl Fcbr Bcbl Bcbr)
            (Fcbr Fctr Bcbr Bctr)
            (Fctr Fctl Bctr Bctl)
            (Fctl Fcbl Bctl Bcbl)
        )
    }
    frontAndBack
    {
        type empty;
        faces
        (
            // copied from blocks
            (Ftl Fbl Fcbl Fctl)
            (Btl Bbl Bcbl Bctl)
            (Fts Ftl Fctl Fctr)
            (Bts Btl Bctl Bctr)
            (Fbs Fts Fctr Fcbr)
            (Bbs Bts Bctr Bcbr)
            (Fbl Fbs Fcbr Fcbl)
            (Bbl Bbs Bcbr Bcbl)
            (Fbs Fbr Ftr Fts)
            (Bbs Bbr Btr Bts)
        );
    }
*/
);

mergePatchPairs
(
);

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