Skip to content
Snippets Groups Projects
openfoam.md 6.3 KiB
Newer Older
Lukáš Krupčík's avatar
Lukáš Krupčík committed
OpenFOAM
Lukáš Krupčík's avatar
Lukáš Krupčík committed
========

Lukáš Krupčík's avatar
Lukáš Krupčík committed
##A free, open source CFD software package
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Introduction
Lukáš Krupčík's avatar
Lukáš Krupčík committed
----------------
OpenFOAM is a free, open source CFD software package developed by [**OpenCFD Ltd**](http://www.openfoam.com/about) at [**ESI Group**](http://www.esi-group.com/) and distributed by the [**OpenFOAM Foundation **](http://www.openfoam.org/). It has a large user base across most areas of engineering and science, from both commercial and academic organisations.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Homepage: <http://www.openfoam.com/>
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
###Installed version
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Currently, several version compiled by GCC/ICC compilers in single/double precision with several version of openmpi are available on Anselm.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

For example syntax of available OpenFOAM module is:

&lt; openfoam/2.2.1-icc-openmpi1.6.5-DP &gt;

Lukáš Krupčík's avatar
Lukáš Krupčík committed
this means openfoam version 2.2.1 compiled by ICC compiler with openmpi1.6.5 in double precision.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Naming convection of the installed versions is following:

openfoam/&lt;>VERSION>&gt;-&lt;>COMPILER<span>&gt;-&lt;</span><span>openmpiVERSION</span><span>&gt;-&lt;</span><span>PRECISION</span><span>&gt;</span>

Lukáš Krupčík's avatar
Lukáš Krupčík committed
-   &lt;VERSION>&gt; - version of openfoam
-   &lt;COMPILER&gt; - version of used compiler
-   &lt;openmpiVERSION&gt; - version of used openmpi/impi
-   &lt;PRECISION&gt; - DP/SP – double/single precision
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
###Available OpenFOAM modules
Lukáš Krupčík's avatar
Lukáš Krupčík committed

To check available modules use

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ module avail
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
In /opt/modules/modulefiles/engineering you can see installed engineering softwares:
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    ------------------------------------ /opt/modules/modulefiles/engineering -------------------------------------------------------------
    ansys/14.5.x               matlab/R2013a-COM                                openfoam/2.2.1-icc-impi4.1.1.036-DP
    comsol/43b-COM             matlab/R2013a-EDU                                openfoam/2.2.1-icc-openmpi1.6.5-DP
    comsol/43b-EDU             openfoam/2.2.1-gcc481-openmpi1.6.5-DP            paraview/4.0.1-gcc481-bullxmpi1.2.4.1-osmesa10.0
    lsdyna/7.x.x               openfoam/2.2.1-gcc481-openmpi1.6.5-SP
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

For information how to use modules please [look here](../environment-and-modules/ "Environment and Modules ").
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Getting Started
Lukáš Krupčík's avatar
Lukáš Krupčík committed
-------------------

To create OpenFOAM environment on ANSELM give the commands:

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ module load openfoam/2.2.1-icc-openmpi1.6.5-DP

    $ source $FOAM_BASHRC
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

!!! Note "Note"
	Please load correct module with your requirements “compiler - GCC/ICC, precision - DP/SP”.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Create a project directory within the $HOME/OpenFOAM directory named >&lt;USER&gt;-&lt;OFversion&gt; and create a directory named run within it, e.g. by typing:
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ mkdir -p $FOAM_RUN
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Project directory is now available by typing:

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ cd /home/<USER>/OpenFOAM/<USER>-<OFversion>/run
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

&lt;OFversion&gt; - for example &lt;2.2.1&gt;

or

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ cd $FOAM_RUN
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Copy the tutorial examples directory in the OpenFOAM distribution to the run directory:
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ cp -r $FOAM_TUTORIALS $FOAM_RUN
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Now you can run the first case for example incompressible laminar flow in a cavity.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Running Serial Applications
Lukáš Krupčík's avatar
Lukáš Krupčík committed
-------------------------------

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Create a Bash script >test.sh
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    #!/bin/bash
    module load openfoam/2.2.1-icc-openmpi1.6.5-DP
    source $FOAM_BASHRC

    # source to run functions
    . $WM_PROJECT_DIR/bin/tools/RunFunctions

    cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity

    runApplication blockMesh
    runApplication icoFoam
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Job submission

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16,walltime=03:00:00 test.sh
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
For information about job submission please [look here](../resource-allocation-and-job-execution/job-submission-and-execution/ "Job submission").
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Running applications in parallel
Lukáš Krupčík's avatar
Lukáš Krupčík committed
-------------------------------------------------
Lukáš Krupčík's avatar
Lukáš Krupčík committed
Run the second case for example external incompressible turbulent flow - case - motorBike.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
First we must run serial application bockMesh and decomposePar for preparation of parallel computation.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

!!! Note "Note"
	Create a Bash scrip test.sh:
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    #!/bin/bash
    module load openfoam/2.2.1-icc-openmpi1.6.5-DP
    source $FOAM_BASHRC

    # source to run functions
    . $WM_PROJECT_DIR/bin/tools/RunFunctions

    cd $FOAM_RUN/tutorials/incompressible/simpleFoam/motorBike

    runApplication blockMesh
    runApplication decomposePar
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Job submission

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16,walltime=03:00:00 test.sh
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
This job create simple block mesh and domain decomposition. Check your decomposition, and submit parallel computation:
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
!!! Note "Note"
	Create a PBS script testParallel.pbs:
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    #!/bin/bash
    #PBS -N motorBike
    #PBS -l select=2:ncpus=16
    #PBS -l walltime=01:00:00
    #PBS -q qprod
    #PBS -A OPEN-0-0

    module load openfoam/2.2.1-icc-openmpi1.6.5-DP
    source $FOAM_BASHRC

    cd $FOAM_RUN/tutorials/incompressible/simpleFoam/motorBike

    nproc = 32

    mpirun -hostfile ${PBS_NODEFILE} -np $nproc snappyHexMesh -overwrite -parallel | tee snappyHexMesh.log

    mpirun -hostfile ${PBS_NODEFILE} -np $nproc potentialFoam -noFunctionObject-writep -parallel | tee potentialFoam.log

Lukáš Krupčík's avatar
Lukáš Krupčík committed
    mpirun -hostfile ${PBS_NODEFILE} -np $nproc simpleFoam -parallel | tee simpleFoam.log
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

nproc – number of subdomains

Job submission

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ qsub testParallel.pbs
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Compile your own solver
Lukáš Krupčík's avatar
Lukáš Krupčík committed
----------------------------------------

Initialize OpenFOAM environment before compiling your solver

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ module load openfoam/2.2.1-icc-openmpi1.6.5-DP
    $ source $FOAM_BASHRC
    $ cd $FOAM_RUN/
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Create directory applications/solvers in user directory

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ mkdir -p applications/solvers
    $ cd applications/solvers
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Copy icoFoam solver’s source files

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ cp -r $FOAM_SOLVERS/incompressible/icoFoam/ My_icoFoam
    $ cd My_icoFoam
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Rename icoFoam.C to My_icoFOAM.C

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ mv icoFoam.C My_icoFoam.C
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Edit >*files* file in *Make* directory:

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    icoFoam.C
    EXE = $(FOAM_APPBIN)/icoFoam
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

and change to:

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
    My_icoFoam.C
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    EXE = $(FOAM_USER_APPBIN)/My_icoFoam
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

In directory My_icoFoam give the compilation command:

Lukáš Krupčík's avatar
Lukáš Krupčík committed
```bash
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    $ wmake
Lukáš Krupčík's avatar
Lukáš Krupčík committed
```
Lukáš Krupčík's avatar
Lukáš Krupčík committed

------------------------------------------------------------------------
Lukáš Krupčík's avatar
Lukáš Krupčík committed
 **Have a fun with OpenFOAM :)**