6

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

Mesh creation script

The whole process of the generation of the mesh can be automatized with the aid of a simple script. An example is below. The final mesh is shown in the figure crossref 2.

#!/bin/bash
# --------------------------------------------------------------------------- #
#   ==   ===  ==                                                              #
#  ||   ||=  || ))  support s. r. o.  2014                                    #
#   ==        ==                                                              #
# --------------------------------------------------------------------------- #

# Change to the root directory of the case first. It is assumed that the
# location of this script is the root case.
#
cd ${0%/*} || exit 1

# Number of processes. This number will be written to "system/decomposeParDict".
# This will not override already existing environment variable.
if [[ $NPROCESS == "" ]]; then
    # Either use fixed number of cores ...
#     NPROCESS=4
    # ... or use all cores of a single-processor machine.
    NPROCESS=$(sed -n "s/cpu cores[\t :]*\([0-9]\+\)/\1/p" /proc/cpuinfo | sort -u)
fi

# Check version of OpenFOAM. The mesh is being created in OpenFOAM 2.2,
#
if [[ $(echo $WM_PROJECT_VERSION | cut -c1-3) != "2.2" ]]; then
    echo "Use OpenFOAM 2.2 with this example script, please."
    exit
fi

rm -f log.all

echo
echo " Creating mesh using $NPROCESS threads"
echo

cd mesh-inflow
echo "  1. inflow tube"
sed -i "s/numberOfSubdomains \+[0-9]\+;/numberOfSubdomains $NPROCESS;/g" system/decomposeParDict
rm -rf 1 2 processor*
echo "     * blockMesh"
blockMesh | tee -a ../log.all > log.blockMesh
echo "     * decomposePar"
decomposePar | tee -a ../log.all > log.decomposePar
echo "     * snappyHexMesh"
mpirun -np $NPROCESS snappyHexMesh -parallel | tee -a ../log.all > log.snappyHexMesh
echo "     * reconstructParMesh"
reconstructParMesh -latestTime | tee -a ../log.all > log.reconstructParMesh
rm -rf processor*
cd ..
echo

cd mesh-wheel
echo "  2. wheel"
sed -i "s/numberOfSubdomains \+[0-9]\+;/numberOfSubdomains $NPROCESS;/g" system/decomposeParDict
rm -rf 1 2 processor*
echo "     * blockMesh"
blockMesh | tee -a ../log.all > log.blockMesh
echo "     * decomposePar"
decomposePar | tee -a ../log.all > log.decomposePar
echo "     * snappyHexMesh"
mpirun -np $NPROCESS snappyHexMesh -parallel | tee -a ../log.all > log.snappyHexMesh
echo "     * reconstructParMesh"
reconstructParMesh -latestTime | tee -a ../log.all > log.reconstructParMesh
echo "     * topoSet"
topoSet | tee -a ../log.all > topoSet
rm -rf processor*
cd ..
echo

cd mesh-volute
echo "  3. volute and outflow"
sed -i "s/numberOfSubdomains \+[0-9]\+;/numberOfSubdomains $NPROCESS;/g" system/decomposeParDict
rm -rf 1 2 processor*
echo "     * blockMesh"
blockMesh | tee -a ../log.all > log.blockMesh
echo "     * decomposePar"
decomposePar | tee -a ../log.all > log.decomposePar
echo "     * snappyHexMesh"
mpirun -np $NPROCESS snappyHexMesh -parallel | tee -a ../log.all > log.snappyHexMesh
echo "     * reconstructParMesh"
reconstructParMesh -latestTime | tee -a ../log.all > log.reconstructParMesh
rm -rf processor*
cd ..
echo

cd mesh-whole
echo "  4. complete mesh"
rm -rf 1 2 3
cd constant
rm -rf polyMesh
echo "     * copying inflow part"
cp -R ../../mesh-inflow/2/polyMesh .
cd ..
echo "     * merging wheel part"
mergeMeshes . ../mesh-wheel | tee -a ../log.all > log.mergeMeshes
echo "     * merging volute part"
mergeMeshes . ../mesh-volute | tee -a ../log.all >> log.mergeMeshes
echo "     * renaming patches"
createPatch | tee -a ../log.all > log.createPatch
echo "     * checking mesh"
checkMesh -latestTime | tee -a ../log.all > log.checkMesh
grep "cells:" log.checkMesh
cd ..
echo

echo " Done."
echo
fan mesh all

Figure: View of the whole mesh of the fan.