OpenFOAM/v2006+

  • Installation date: 16/02/2021
  • URL: http://openfoam.com/
  • Apolo version: Apolo
  • License: General Public Licence

Dependencies

  • GNU GCC >= 7.4.0
  • Boost >= 1.67.0
  • cmake >= 3.7.1
  • OpenMPI >= 3.1.5

Installation

  1. First download the tar from the main page

    cd /share/apps/openfoam/v2006/gcc-7.4.0/OpenFOAM-v2006
    wget https://sourceforge.net/projects/openfoamplus/files/v2006/OpenFOAM-v2006.tgz
    wget https://sourceforge.net/projects/openfoamplus/files/v2006/ThirdParty-v2006.tgz
    tar xf OpenFOAM-v2006.tgz
    tar xf ThirdParty-v2006.tgz
    
  2. Load the dependencies’ modules:

    module load gcc/7.4.0 openmpi/3.1.5_intel-19.0.4 boost/1.67.0_gcc-5.4.0 cmake/3.7.1
    
  3. Edit the following archives:

    /share/apps/openfoam/v2006/gcc-7.4.0/OpenFOAM-v2006/etc/bashrc

    ...
    export WM_COMPILER_TYPE=system
    ...
    export WM_COMPILER=Gcc74
    ...
    export WM_MPLIB=SYSTEMOPENMPI
    ...
    projectDir=/share/apps/openfoam/v2006/gcc-7.4.0/OpenFOAM-v2006
    ...
    

    /share/apps/openfoam/v2006/gcc-7.4.0/OpenFOAM-v2006/etc/config.sh/CGAL

    ...
    boost_version=boost-system
    ...
    export BOOST_ARCH_PATH=/share/apps/boost/1.67.0/gcc-5.4.0
    ...
    
  4. Load compilation environment:

    source /share/apps/openfoam/v2006/gcc-7.4.0/OpenFOAM-v2006/etc/bashrc
    cd ThirdParty-v2006
    module load boost/1.67.0_gcc-5.4.0_openmpi-1.10.7
    module load cmake/3.7.1
    
  5. Edit archives:

    /share/apps/openfoam/v2006/gcc-7.4.0/ThirdParty-v2006/makeCGAL

     ...
            if _foamIsNone "$gmpPACKAGE" || _foamIsNone "$mpfrPACKAGE"
        then
            GMP_ARCH_PATH=none
            MPFR_ARCH_PATH=none
        elif _foamIsSystem "$gmpPACKAGE" || _foamIsSystem "$mpfrPACKAGE"
        then
            # May really be system, but could also by a central installation
            # Ensure everything is accurately recorded. Resolve paths etc.
    
            if [ -d "$GMP_ARCH_PATH" ]
            then
                if GMP_ARCH_PATH=$(cd "$GMP_ARCH_PATH" 2>/dev/null && pwd -P)
                then
                    gmpPACKAGE="${GMP_ARCH_PATH##*/}"
                else
                    echo "ERROR: bad path for GMP_ARCH_PATH"
                    echo "stopping build"
                    exit 1
                fi
            else
                GMP_ARCH_PATH=/share/apps/gmp/6.1.1/
            fi
    
            if [ -d "$MPFR_ARCH_PATH" ]
            then
                if MPFR_ARCH_PATH=$(cd "$MPFR_ARCH_PATH" 2>/dev/null && pwd -P)
                then
                    mpfrPACKAGE="${MPFR_ARCH_PATH##*/}"
                else
                    echo "ERROR: bad path for MPFR_ARCH_PATH"
                    echo "stopping build"
                    exit 1
                fi
            else
                MPFR_ARCH_PATH=/share/apps/mpfr/3.1.5/
            fi
        else
            GMP_ARCH_PATH=/share/apps/gmp/6.1.1/
            MPFR_ARCH_PATH=/share/apps/mpfr/3.1.5/
        fi
    
    ...
    
    sudo ln -s /share/apps/gmp/6.1.1/lib /share/apps/gmp/6.1.1/lib64
    sudo ln -s /share/apps/mpfr/3.1.5/lib /share/apps/mpfr/3.1.5/lib64
    
  6. compile cgal

    ./makeCGAL
    
  7. OpenFoam installation

    cd ../OpenFOAM-v2006
    ./Allwmake
    

Slurm template

#!/bin/sh

#SBATCH --partition=bigmem
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=24
#SBATCH --time=14-00
#SBATCH --job-name=OpenFOAM_1
#SBATCH -o result_%N_%j.out
#SBATCH -e result_%N_%j.err
#SBATCH --mail-type=ALL
#SBATCH --mail-user=dtobone@eafit.edu.co

# Don't share environment variables
export SBATCH_EXPORT=NONE
export OMP_NUM_THREADS=1
# Debug OpenFOAM
#export FOAM_ABORT=1

# R U in cronos or apolo2?
if [[ "${SLURM_SUBMIT_HOST}" != "apolo.eafit.edu.co" ]]; then
## OpenFOAM-v1712 - Cronos Configuration
    echo "No estoy en apolo"
    module load openmpi/3.1.5_intel-19.0.4
    module load fftw/3.3.7_gcc-5.5.0
    module load boost/1.66.0_gcc-5.5.0
    source /share/apps/openfoam/v2006/gcc-7.4.0/OpenFOAM-v2006/etc/bashrc
else
## OpenFOAM-v1612 - Apolo Configuration
    echo "Estoy en Apolo"
    module load boost/1.67.0_gcc-5.4.0_openmpi-1.10.7
    source /share/apps/openfoam/v1712/gcc-5.4.0/OpenFOAM-v1712/etc/bashrc > /dev/null 2>&1
fi


# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions

#------------------------------------------------------------------------------
#     BORRAR Y ORGANIZAR LOS ARCHIVOS INICILES PARA LA SIMULACIÓN
#------------------------------------------------------------------------------

rm -rf processor*                               #Borra carpetas procesadores
rm -rf file log.pimpleFoam                      #Borra archivos de simulaciones pasadas
rm -rf file log.snappyHexMesh                   #Borra archivos de simulaciones pasadas
rm -rf file log.renumberMesh                    #Borra archivos de simulaciones pasadas

#------------------------------------------------------------------------------
#     PASOS PREVIOS - MALLADO - VERIFICACIÓN
#------------------------------------------------------------------------------

mv 0 0.org                                  #Mueve los datos para que no se dañe al hacer la malla
mkdir 0                                     #Crea una carpeta de 0 falsa
cd constant/triSurface                      #Entra donde estan los archivos stl para la malla
surfaceTransformPoints -scale '(0.001 0.001 0.001)' vane_mm.stl vane_m.stl #Escala la malla
cd ..                                       #Se devuelve a la carpeta constant
cd ..                                       #Se devuelve a la carpeta de la simulación
blockMesh                                   #Crea la malla base, o geometria de referencia
surfaceFeatureExtract                       #Extrae las superficies de los stl para la malla
decomposePar                                #Parte las instancias para los procesos en paralelo
srun snappyHexMesh -parallel -overwrite     #Crea la malla en paralelo
reconstructParMesh -constant                #Unifica la malla en la carpeta constant
rm -rf processor*                           #Borra carpetas procesadores
rm -rf 0                                    #Borra la carpeta 0 falsa
mv 0.org 0                                  #Trae de vuela la carpeta original 0
checkMesh -allTopology -allGeometry         #Verifica la calidad de la malla

#------------------------------------------------------------------------------
#     PROCESO DE SIMULACIÓN Y UNIFICACIÓN DE RESULTADOS
#------------------------------------------------------------------------------

decomposePar                                #Parte las instancias para los procesos en paralelo
srun renumberMesh -overwrite                #Reescribe la malla de forma que sea mas estable a la hora de la simulación
srun `getApplication` -parallel             #Inicia el proceso de cálculo
reconstructPar                              #Reconstruye los resultados en las carpetas del tiempo

#------------------------------------------------------------------------------
#     BORRADO Y LIMPIEZA DE ARCHIVOS QUE NO SON NECESARIOS
#------------------------------------------------------------------------------

rm -rf processor*                           #Borra carpetas procesadores
. $WM_PROJECT_DIR/bin/tools/CleanFunctions  # Source tutorial clean functions

#------------------------------------------------------------------------------
#     FIN DE LA SIMULACIÓN
#------------------------------------------------------------------------------