27
OpenFOAM Workshop Computational Fluid Dynamics – Special Interest Group Giulio Vita, Bruño Fraga University of Birmingham, 26 th Feb 2020

OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

OpenFOAM WorkshopComputational Fluid Dynamics – Special Interest Group

Giulio Vita, Bruño Fraga

University of Birmingham, 26th Feb 2020

Page 2: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Outline• Definition of problem

• Working with a new Solver

• BlueBEAR and CFD solvers

• Numerical Simulation with OpenFOAM• Domain definition

• Domain discretisation

• Equation discretisation (numerical method)

• Fluid Properties

• Initial Conditions

• Boundary Conditions

• Solution

• Results Analysis with OpenFOAM and ParaView

• Q&A and Feedback: How can we help? The CFD-SIG of UoB

Page 3: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Definition of Problem• Backward facing step

• Inflow velocity: 12 m/s

• Incompressible, viscous fluid, nu = 1.5e-5 (air)

• Buoyancy neglected: no need to specify gravity

• Single phase flow

• Steady simulation (for the moment)

Inlet Velocity

Outlet Pressure

Wall

Wall

2D geometry

Page 4: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Working with a new solver• 2 main sources for failure

• Solver Choice: Code not capable to do what we need to do!

• User Capability: We do not know how to do it with the solver of choice!

• Benchmarking• Previous problem solved having similar geometry, physics, conditions

• Validation & Training• Benchmark to validate solver of choice (is it able to solve my problem?)

• Benchmark to train the user to implement the solver

Page 5: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

BlueBEAR and CFD solvers• Massive use of resources due to CFD simulations: CARE & PATIENCE

• Preparation of (multiple) scripts: instructions to be run by the HPC

• Work in serial or parallel

• Commenting commands – log & error files

Page 6: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

BlueBEAR and CFD solvers• Hands-on: writing a script for the OpenFOAM workshop

• 20 processors

• over 1 Haswell node

• using 120GB of RAM

• bbshort job queue (for inexpensive jobs and debugging-testing)

• for the maximum allowed time 0:10:0 for this queue

• Specify to send email when job starts, fails or ends

• Specify to write error message in separate file

• Settings requested by OpenFOAM (set of computation directory etc etc)

• Load the software

• All the commands you want to execute

• DO NOT RUN JOBS IN THE LOGIN NODES!

Page 7: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

OpenFOAM software

• 3 versions of the software• OpenFOAM – www.openfoam.org – currently patch released v.7 (Sep 2019)

• OpenFOAMplus – www.openfoam.com – currently released v1912 (Dec 2019)

• OpenFOAMextended - https://sourceforge.net/projects/foam-extend/

• Versions installed in bluebear• https://bear-apps.bham.ac.uk/

• https://bear-apps.bham.ac.uk/applications/OpenFOAM/

Page 8: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Getting Started: Ancillary softwares

• Putty• SSH client to navigate the blueBEAR linux environment

• Set Putty correctly

• Enable X11 forwarding (to open GUI softwares from blueBEAR)

• WinSCP• FTP software to input data from windows into blueBEAR

• Also good as GUI to visualise and edit text files

• Exceed• To operate any GUI software from blueBEAR

Page 9: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Numerical Simulation with OpenFOAM

• Domain definition (geometry from CAD software)

• Domain discretisation (either in OpenFOAM or from MESH software)

• Equation discretisation (numerical method)

• Fluid Properties

• Initial Conditions

• Boundary Conditions

• Solution

• Each step corresponds to a text file in the OpenFOAM directory

• Hands on: let’s create our directory!

Page 10: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

OpenFOAM Directory• /yourHomePageDirectory/case

• 0/

• U

• p

• k

• epsilon

• constant/

• polyMesh/

• boundary

• …

• transportProperties

• turbulenceProperties

• system/

• controlDict

• fvSchemes

• fvSolution

• decomposeParDict

Page 11: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

OpenFOAM Directory• /yourHomePageDirectory/case

• 0/

• U

• p

• k

• epsilon

• constant/

• polyMesh/

• boundary

• …

• transportProperties

• turbulenceProperties

• system/

• controlDict

• fvSchemes

• fvSolution

• decomposeParDict

0/ directory - initial and boundary conditions for every variablein this case U p k and epsilon

constant/ directorymesh, physical and turbulence model properties

system/ directoryfinite volume algorithm – simulation controls – parallel solution

• Further directories may be created by OpenFOAM depending on solution, results etc

Page 12: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Copy the tutorial directory

• Load OpenFOAM software on the login node (only small commands)> module load bluebear

> module load bear-apps/2019b

> module load OpenFOAM/v1912-foss-2019b

> source ${FOAM_BASH}

• View and navigate $FOAM_TUTORIALS directory to choose tutorial> ls $FOAM_TUTORIALS

• Copy tutorial into case directory (simpleFoam solver for RANS)> cp –r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .

• Rename tutorial into case directory> ls

> mv pitzDaily/ case/

Page 13: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

The 0/ directory

• Go into 0/ directory (only small commands)> cd 0/

> ls

epsilon f k nut nuTilda omega p U v2

• Edit epsilon k p U with text editor> gedit epsilon (if exceed is running)

> nano epsilon (pre-built text editor in Linux)

> open case directory on winSCP (FTP client for windows – if preinstalled)

Page 14: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

OpenFOAM dictionaries

• Dictionary: text file with instructions composed by

• header/*--------------------------------*- C++ -*----------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox || \\ / O peration | Version: v1912 || \\ / A nd | Website: www.openfoam.com || \\/ M anipulation | |\*---------------------------------------------------------------------------*/

• descriptionFoamFile{

version 2.0;format ascii;class volScalarField;location "0";object epsilon;

}// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

Page 15: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

OpenFOAM dictionaries• Instructionsdimensions [0 2 -3 0 0 0 0];

internalField uniform 14.855;

boundaryField

{

inlet

{

type fixedValue;

value uniform 14.855;

}

outlet

{

type zeroGradient;

}

upperWall

{

type epsilonWallFunction;

value uniform 14.855;

}

lowerWall

{

type epsilonWallFunction;

value uniform 14.855;

}

frontAndBack

{

type empty;

}

}

[ M L T K etc..]

Initial conditions for volume field

Boundary and Initial conditions for surfaces

Leibniz boundary condition for outlet velocity

Wall function

2D geometry

Page 16: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

The constant/ directory

• Go into constant/ directory> cd ../constant/

> ls

transportProperties turbulenceProperties

• transportProperties defines fluid properties• Newtonian fluid kinematic viscosity (OpenFOAM incompressible)

• turbulenceProperties defines turbulence model properties• K-epsilon – k-omega SST – model constants are all specified here

• Mesh is stored in the polyMesh/ directory> cd polyMesh/

No polyMesh directory means mesh has not been generated yet

Page 17: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Mesh Generation (blockMesh)• Mesh generation can be done in several ways

• blockMesh utility provided in OpenFOAM (as in this case, simple geometry)> cd ../system

> ls

blockMeshDict controlDict fvSchemes fvSolution streamlines

• snappyHexMesh utility also provided in OpenFOAM (more complex geometries)

• Generate the mesh externally (Fluent etc) and then import it into OpenFOAM, e.g.:> fluentMeshToFoam

• Mesh generation using the blockMesh utility

• View blockMesh Dictionary> gedit blockMeshDict

• Generate mesh inputting utility> blockMesh

> blockMesh > log.block (better option)

• Check Mesh Quality> checkMesh > log.check

Page 18: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Mesh visualisation

• OpenFOAM utility to run Paraview (if exceed is running…)> paraFoam

• Or export the mesh into another format e.g. Fluent or Ensight> foamMeshToFluent > log.fluent

> foamToEnsight –constant > log.ensight (alternatively)

Page 19: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

The system/ directory

• Go into system/ directory> cd ../system/

> ls

blockMeshDict controlDict fvSchemes fvSolution streamlines

• Manage all numerical aspects of your simulation

• controlDict controls all solver settings• iterations/time steps, libraries, sampling etc…

• fvSchemes controls the Finite Volume schemes• gradient, laplacian, divergence etc – central difference, upwind etc

• fvSolution controls the solution algorithms for the linear system• CholeskyGauss, DILU triangulation – simple algorithm settings

• streamlines is a specific instruction for additional utilities• In this case generation of streamlines – sampling – probing – etc…

Page 20: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

The banana method• Tricky to know and keep in mind all possible settings

• Editing fvSchemes and fvSolution dictionaries> gedit fvSchemes

• Substitute any entry with the keyword (the instruction) banana> cd ../

> simpleFoam > log.simple (very small case -> never the case, use a script to debug!)

> gedit log.simple

--> FOAM FATAL IO ERROR:

Unknown convection type banana

Valid convection types :

2(Gauss bounded)

• Use OpenFOAM errors to navigate the software options and…

… never question the banana method!

Page 21: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Set your solver for simulation

• Fix back the fvSchemes dictionary and open fvSolution> gedit fvSolution

• Solution algorithms for U p k epsilon

• Settings for the solver (simple algorithm in this case)SIMPLE

{

nNonOrthogonalCorrectors 0;

consistent yes;

residualControl

{

p 1e-2;

U 1e-3;

"(k|epsilon|omega|f|v2)" 1e-3;

}

• nNonOrthogonalCorrectors helps convergence for (really) bad meshes • residualControl sets the residual limit to be reached after the software reaches numerical convergence

Page 22: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Set your solver for simulation• Open controlDictapplication simpleFoam;

startFrom startTime;

startTime 0;

stopAt endTime;

endTime 2000;

deltaT 1;

writeControl timeStep;

writeInterval 100;

purgeWrite 0;

writeFormat ascii;

writePrecision 6;

writeCompression off;

timeFormat general;

timePrecision 6;

runTimeModifiable true;

functions

{

#includeFunc streamlines

}

• Algorithm to be used (not necessary, from an old version of OpenFOAM)

• Where solver starts – from initial time or resume calculations from previous timestep?

• Entry needed only if startTime is specified for startFrom

• When solver stops – if convergence is reached set in fvSolution solver stops before

• in this case time is not a physical time, but is the number of iterations

• 1 for steady simulations – any number for transient simulations

• Instructions to write results

• How many writeControl intervals are results written?

• How many results file to keep (last 10 files)

• Alternatively binary – keep ascii if you want to read dictionaries with a text editor

• Entries can be modified while the software is running (more complex simulations)

• Functions are extra commands executed while solving

• In this case streamlines dictionary (alternatively streamlines content can be copied here)

Page 23: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Submit your job in bluebear with a script• Create new script file in case/ directory

> gedit runCase (easy name preferrably)

• Set scheduler and queue (qos) to submit your job to (bbshort or bbdefault)#!/bin/bash#SBATCH --qos bbshort

• Set up the node usage (usually 50000-10000 cells per processor) Different possibilities in BlueBEAR

• Sandybridge nodes (2015)> #SBATCH --constraint sandybridge> #SBATCH --ntasks 16> #SBATCH --nodes 1> #SBATCH –mem-per-cpu 1850

• Broadwell nodes (2017)> #SBATCH --constraint haswell> #SBATCH --ntasks 20> #SBATCH --nodes 1> #SBATCH --mem 120G

• CascadeLake nodes (2019)> #SBATCH --constraint cascadelake> #SBATCH --ntasks 40> #SBATCH --nodes 1> #SBATCH --mem 180G

• Name your simulation for reference> #SBATCH --job-name OpenFOAMcase

• Give your simulation a time limit> #SBATCH --time 0:10:0 (10 mins max time for bbshort – 10 days max time for bbdefault)

• Additional settings for this training> #SBATCH --reservation=OpenFOAM

> #SBATCH --account=ghumraak-bluebear-training

Page 24: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Submit your job in bluebear with a script

• Tell OpenFOAM what to do• Load blueBEAR environment

> module purge

> module load bluebear

> module load bear-apps/2019b

• Load OpenFOAM> module load OpenFOAM/v1912-foss-2019b

> source ${FOAM_BASH}

• List OpenFOAM commands to run within a script> blockMesh > log.block

> checkMesh > log.check

> simpleFoam > log.simple (serial simulation)> foamToEnsight > log.ensight

• Convergence history> foamLog log.simple > log.log

Page 25: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Ansys interoperability

• The University of Birmingham has a Campus licence for Ansys

• OpenFOAM works quite well combined with ansys• Meshing with IcemCFD or Fluent or Ansys Meshing

> fluentMeshToFoam mesh.msh > log.mesh

• Post-processing with Fluent or CFX> foamMeshToFluent > log.meshfluent

> foamDataToFluent > log.fluent (requires a foamDataToFluentDict)

• Best option is Ensight (not available as standard, but available on request, difficult to use)> foamToEnsight > log.ensight

• Alternatively many formats are available (Tecplot, vtk, etc)> foamToTecplot360 > log.tecplot

> foamToVtk > log.vtk

• ParaView is the OpenFOAM built-in option (difficult to use)> paraFoam (if exceed is running)

Page 26: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

Aspects not covered by this presentation

• Parallel Computing• decomposeParDict dictionary in system/ directory• mpirun utility to run your simulation (instead of simpleFoam utility)

• Meshing with blockMesh (more details in https://cfd.direct/openfoam/user-guide/v6-blockmesh/)

• Meshing with snappyHexMesh (more details in https://cfd.direct/openfoam/user-guide/v6-snappyhexmesh/)

• Post-processing within OpenFOAM using paraView (can be installed on personal pc https://mysoftware.bham.ac.uk/default.aspx more info on https://cfd.direct/openfoam/user-guide/v6-paraview/)

• For ansys interoperability: map your home BEAR folder in Windows https://intranet.birmingham.ac.uk/it/teams/infrastructure/research/bear/HowTo/HowToRDS.aspx

Page 27: OpenFOAM WorkshopCopy the tutorial directory •Load OpenFOAM software on the login node (only small commands)> module load bluebear > module load bear-apps/2019b > module load OpenFOAM/v1912-foss-2019b

How are you getting on?

• The CFD-SIG is here to help

• Any questions about the OpenFOAM training?

• Any questions about your simulations?

• Would advanced OpenFOAM training be useful?

Thanks for participating!

[email protected]

[email protected]