6

Next: Wheel mesh Up: Mesh Generation using snappyHexMesh Previous: Background mesh   Contents   Index

Mesh motion

The unsteady (transient) case can be run from the initial values of fields given in the settings for zero time (next section) or from results of a steady-state computation. The usage of converged steady-state simulation to initialize the transient case can be generally advised, because it will noticeably speed up the convergence of the unsteady (transient) simulation. For this reason we give here listings of settings for both MRF method (steady-state) and SBM method (transient).

The steady-state method MRF (multiple reference frame) uses the file system/fvOptions:

MRF1
{
    type            MRFSource;
    active          true;
    selectionMode   cellZone;
    cellZone        rotorMRFZone;

    MRFSourceCoeffs
    {
        nonRotatingPatches
        (
                wheel_inlet_2_ami
                wheel_outlet_1_ami
        );

        origin      (0 0 0);
        axis        (0 0 1);
        omega           209;
    }
}

bound_T
{
    type            temperatureLimitsConstraint;
    selectionMode   all;
    active          true; 
    temperatureLimitsConstraintCoeffs
    {
        Tmin     250;
        Tmax     400;
    }
}

It contains two sections, of which only the first one is concerned with rotation. The second one (bound_T) is just a constraint for temperature that will inhibit wild changes in temperature in the beginning of the simulation. In the present setting it will bound temperature to the interval img311 K. The first section (MRF1) will create a new MRF zone – the rotating part of the mesh – from the cell zone “rotorMRFZone”. We have created the cell zone for wheel using topoSet in the section crossref 2.

 

The unsteady (transient) method SBM (solid body motion) uses the file constant/dynamicMeshDict:

dynamicFvMesh      solidBodyMotionFvMesh;

solidBodyMotionFvMeshCoeffs
{
    solidBodyMotionFunction     rotatingMotion;
    cellZone                    rotorMRFZone;
        
    rotatingMotionCoeffs
    {
        origin       (0 0 0);
        axis         (0 0 1);
        omega            209;
    }
}

The keywords origin and axis specify the axis of rotation, the keyword omega the angular frequency of rotation. There are more motion functions in OpenFOAM; here we use rotatingMotion that will rotate the cells of rotorMRFZone. For other motion functions list the appropriate directory of the source:

# cd $FOAM_SRC/dynamicFvMesh
# ls solidBodyMotionFvMesh/solidBodyMotionFunctions
Solid body motion engine transforms the mesh on every iteration by moving points selected by the cell zone. It also recalculates the fluxes, so that the flow fields are compatible with the new wall positions etc.