Skip to content
  • Henry's avatar
    blockMesh: Add support for multi/sectional grading in a block · 7ec17dfd
    Henry authored
    Consider a block describing a channel with two opposite walls.
    Currently in order to grade the mesh towards the walls and have a
    uniform region in the centre the channel would need to be spit into 3
    blocks.  With the new multi/sectional grading this can be achieved in a
    single block e.g.
    
    blocks
    (
        hex (0 1 2 3 4 5 6 7) (20 60 20)
        simpleGrading
        (
            1
            ((0.2 0.3 4) (0.6 0.4 1) (0.2 0.3 0.25))
            1
        )
    );
    
    In this example the block is divided uniformly in the x and z -directions
    and split into three grading sections in the y-direction described by
    three triples:  ((0.2 0.3 4) (0.6 0.4 1) (0.2 0.3 0.25)).  Each of the
    grading sections is described by a triple consisting of the fraction of
    the block, the fraction of the divisions and the grading ratio (size of
    first division/size of last division).  Both the fraction of the block
    and the fraction of the divisions are normalized automatically so they
    can be specified scaled in anyway, e.g. as percentages:
    
    blocks
    (
        hex (0 1 2 3 4 5 6 7) (20 60 20)
        simpleGrading
        (
            1
            ((2 3 4) (6 4 1) (2 3 0.25))
            1
        )
    );
    
    and they need not sum to 1 or 100.
    
    This is very new functionality and not well tested but backward
    compatibility has been well tested so all existing blockMeshDicts should
    parse correctly.
    7ec17dfd