Foam-Extend
Nesta seção:
Descrição
De acordo com a página do Foam-Extend, o projeto foam-extend é um fork da biblioteca open-source OpenFOAM para Dinâmica de Fluidos Computacional (CFD). É um projeto aberto que integra contribuições de usuários e desenvolvedores, incluindo correções de bugs, melhorias de performance e extensões como suporte a malhas dinâmicas, acoplamento conjugado de transferência de calor e suporte a GPU.
Versões Disponíveis
foam-extend/4.0 (default)
foam-extend/4.1
Submissão de Jobs Seriais
#!/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
# Descompactar arquivo de entrada
unzip cavity.zip
# Executar caso
blockMesh
icoFoam
# Compactar resultados
zip -r cavity_results.zip [0-9]* constant system
Submissão de Jobs Paralelos
#!/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
# Descompactar
unzip motorBike.zip
# Decompor domínio
decomposePar
# Executar em paralelo
mpirun -np $SLURM_NTASKS simpleFoam -parallel
# Reconstruir resultados
reconstructPar
# Compactar resultados
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
# Copiar caso tutorial
cp -r $FOAM_TUTORIALS/icoFoam/cavity cavity
cd cavity
# Gerar malha
blockMesh
# Compactar para uso posterior
zip -r ../cavity.zip 0 constant system
cd ..
Submissão de Jobs com GPU
#!/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
# Versão com suporte a GPU
simpleFoam -gpu
zip -r gpu_results.zip [0-9]* constant system
Job Array para Múltiplos Casos
#!/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 ..
Análise de Resultados
#!/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
# Extrair forças
forces
# Calcular coeficientes
wallShearStress
# Extrair cortes
sample
zip -r postprocessing.zip postProcessing/
Referências
Documentação: https://openfoamwiki.net/index.php/Installation/Linux/foam-extend-4.0
Tutoriais: https://openfoamwiki.net/index.php/Tutorials
Manual do Usuário: https://sourceforge.net/projects/foam-extend/files/foam-extend-4.0/
Ver também
OpenFOAM - Versão principal do OpenFOAM
SU2 - Alternativa para CFD
Processando Simulações - Como submeter jobs