Foam-Extend
In this section:
Description
According to the page of Foam-Extend, the foam-extend project is a fork of the open-source OpenFOAM library for Computational Fluid Dynamics (CFD). It is an open project integrating contributions from users and developers, including bug fixes, performance improvements, and extensions such as dynamic mesh support, conjugate heat transfer coupling, and GPU support.
Available Versions
foam-extend/4.0 (default)
foam-extend/4.1
Serial Job Submission
#!/bin/bash
#SBATCH -J foam_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G
export INPUT="cavity.zip"
export OUTPUT="cavity_results.zip"
module load foam-extend
job-nanny ./run_serial.sh
#!/bin/bash
# Decompress input file
unzip cavity.zip
# Run case
blockMesh
icoFoam
# Compress results
zip -r cavity_results.zip [0-9]* constant system
Parallel Job Submission
#!/bin/bash
#SBATCH -J foam_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 48:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="motorBike.zip"
export OUTPUT="motorBike_results.zip"
module load foam-extend
job-nanny ./run_parallel.sh
#!/bin/bash
# Decompress
unzip motorBike.zip
# Decompose domain
decomposePar
# Run in parallel
mpirun -np $SLURM_NTASKS simpleFoam -parallel
# Reconstruct results
reconstructPar
# Compress results
zip -r motorBike_results.zip [0-9]* constant system
Exemplo de Caso: Cavidade
#!/bin/bash
#SBATCH -J prepare_cavity
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 00:30:00
#SBATCH --mem=2G
export INPUT=""
export OUTPUT="cavity.zip"
module load foam-extend
# Copy tutorial case
cp -r $FOAM_TUTORIALS/icoFoam/cavity cavity
cd cavity
# Generate mesh
blockMesh
# Compress for later use
zip -r ../cavity.zip 0 constant system
cd ..
GPU Job Submission
#!/bin/bash
#SBATCH -J foam_gpu
#SBATCH -p gpu
#SBATCH --gres=gpu:1
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=16G
export INPUT="gpu_case.zip"
export OUTPUT="gpu_results.zip"
module load foam-extend
job-nanny ./run_gpu.sh
#!/bin/bash
unzip gpu_case.zip
# Version with GPU support
simpleFoam -gpu
zip -r gpu_results.zip [0-9]* constant system
Job Array for Multiple Cases
#!/bin/bash
#SBATCH -J foam_array
#SBATCH --array=1-5
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 48:00:00
#SBATCH --mem-per-cpu=2G
CASES=(
"cavity"
"motorBike"
"damBreak"
"pitzDaily"
"airFoil"
)
CASE=${CASES[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="${CASE}.zip"
export OUTPUT="${CASE}_results.zip"
module load foam-extend
unzip ${CASE}.zip
cd ${CASE}
decomposePar
mpirun -np $SLURM_NTASKS simpleFoam -parallel
reconstructPar
zip -r ../${CASE}_results.zip [0-9]* constant system
cd ..
Results Analysis
#!/bin/bash
#SBATCH -J foam_post
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=4G
export INPUT="results.zip"
export OUTPUT="postprocessing/"
module load foam-extend
job-nanny ./postprocess.sh
#!/bin/bash
unzip results.zip
# Extract forças
forces
# Calculate coeficientes
wallShearStress
# Extract cortes
sample
zip -r postprocessing.zip postProcessing/
References
Documentation: https://openfoamwiki.net/index.php/Installation/Linux/foam-extend-4.0
Tutorials: https://openfoamwiki.net/index.php/Tutorials
Manual do Usuário: https://sourceforge.net/projects/foam-extend/files/foam-extend-4.0/
See also
OpenFOAM - Main OpenFOAM version
SU2 - Alternative for CFD
Running Simulations - How to submit jobs