OpenFOAM: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
{{Draft}}
{{Draft}}
[[Category:Software]]
[[Category:Software]]
; Description: The OpenFOAM (Open Field Operation and Manipulation) CFD Toolbox is a free, open source CFD software package. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to solid dynamics and electromagnetics.
The OpenFOAM (Open Field Operation and Manipulation) CFD Toolbox is a free, open source software package for computational fluid dynamics. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to solid dynamics and electromagnetics.
; Modulefile: <code>openfoam</code>
 
; Documentation: [http://www.openfoam.com OpenFOAM homepage] and [http://www.openfoam.org/docs/user/tutorials.php Tutorials].
===Modulefiles===
; Usage:
<code>module load openfoam</code> will give you a recent version.
: OpenFOAM requires substantial preparation of your environment. In order to run OpenFOAM commands (such as <code>paraFoam</code>, <code>blockMesh</code>, etc), you must load a [[Using modules| modulefile]] followed by sourcing a configuration script.
 
: Here is an example of a serial submission script for OpenFOAM 5.0:
The OpenFOAM development community is divided into two parts:
* The OpenFOAM Foundation Ltd., with web sites [https://openfoam.org/ openfoam.org] and [https://cfd.direct/ cfd.direct]
* OpenCFD Ltd., with web site [https://www.openfoam.com/ openfoam.com]
Up to version 2.3.1, released in December 2014, the release histories appear to be the same. Compute Canada module names after 2.3.1 which begin with "v" are derived from the .com branch; those beginning with a digit are derived from the .org branch (for example, <tt>openfoam/v1712</tt>).
 
See [[Utiliser_des_modules/en| Using modules]] for more on module commands.
 
===Documentation===
[https://www.openfoam.com/documentation/ OpenFOAM.com documentation] and [https://cfd.direct/openfoam/user-guide/ CFD Direct user guide].
 
===Usage===
OpenFOAM requires substantial preparation of your environment. In order to run OpenFOAM commands (such as <code>paraFoam</code>, <code>blockMesh</code>, etc), you must load a [[Using modules| modulefile]] followed by sourcing a configuration script.
 
Here is an example of a serial submission script for OpenFOAM 5.0:
<pre>
<pre>
#!/bin/bash
#!/bin/bash
Line 20: Line 33:
</pre>
</pre>


: Here is an example of a parallel submission script:
Here is an example of a parallel submission script:
<pre>
<pre>
#!/bin/bash
#!/bin/bash
Line 38: Line 51:
</pre>
</pre>


: Mesh preparation (<code>blockMesh</code>) may be fast enough to be done at the command line (see [[Running jobs]]).  The solver (<code>icoFoam</code> and others) is usually the most expensive step and should always be submitted as a Slurm job except in very small test cases or tutorials.
Mesh preparation (<code>blockMesh</code>) may be fast enough to be done at the command line (see [[Running jobs]]).  The solver (<code>icoFoam</code> and others) is usually the most expensive step and should always be submitted as a Slurm job except in very small test cases or tutorials.


; Performance:
===Performance===
: OpenFOAM can emit a lot of debugging information in very frequent small writes (e.g. hundreds per second). This may lead to poor performance on our network file systems. If you are in stable production and don't need the debug output, you can reduce or disable it with:
OpenFOAM can emit a lot of debugging information in very frequent small writes (e.g. hundreds per second). This may lead to poor performance on our network file systems. If you are in stable production and don't need the debug output, you can reduce or disable it with:
<pre>
<pre>
$ mkdir -p $HOME/.OpenFOAM/$WM_PROJECT_VERSION
$ mkdir -p $HOME/.OpenFOAM/$WM_PROJECT_VERSION
$ cp $WM_PROJECT_DIR/etc/controlDict $HOME/.OpenFOAM/$WM_PROJECT_VERSION/
$ cp $WM_PROJECT_DIR/etc/controlDict $HOME/.OpenFOAM/$WM_PROJECT_VERSION/
</pre>
</pre>
: followed by editing the <code>debugSwitches</code> dictionary in <code>$HOME/.OpenFOAM/$WM_PROJECT_VERSION/controlDict</code>, changing flags from values >0 to 0.  ''(Contribution from C. Lane)''
 
Then edit the <code>debugSwitches</code> dictionary in <code>$HOME/.OpenFOAM/$WM_PROJECT_VERSION/controlDict</code>, changing flags from values >0 to 0.  ''(Contribution from C. Lane)''

Revision as of 19:32, 28 March 2018


This article is a draft

This is not a complete article: This is a draft, a work in progress that is intended to be published into an article, which may or may not be ready for inclusion in the main wiki. It should not necessarily be considered factual or authoritative.

The OpenFOAM (Open Field Operation and Manipulation) CFD Toolbox is a free, open source software package for computational fluid dynamics. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to solid dynamics and electromagnetics.

Modulefiles[edit]

module load openfoam will give you a recent version.

The OpenFOAM development community is divided into two parts:

Up to version 2.3.1, released in December 2014, the release histories appear to be the same. Compute Canada module names after 2.3.1 which begin with "v" are derived from the .com branch; those beginning with a digit are derived from the .org branch (for example, openfoam/v1712).

See Using modules for more on module commands.

Documentation[edit]

OpenFOAM.com documentation and CFD Direct user guide.

Usage[edit]

OpenFOAM requires substantial preparation of your environment. In order to run OpenFOAM commands (such as paraFoam, blockMesh, etc), you must load a modulefile followed by sourcing a configuration script.

Here is an example of a serial submission script for OpenFOAM 5.0:

#!/bin/bash
#SBATCH --time=00:01:00
#SBATCH --account=def-someuser

module purge
module load openfoam/5.0
source $FOAM_ETC/bashrc

blockMesh
icoFoam

Here is an example of a parallel submission script:

#!/bin/bash
#SBATCH --account=def-someuser
#SBATCH --ntasks=4               # number of MPI processes
#SBATCH --mem-per-cpu=1024M      # memory; default unit is megabytes
#SBATCH --time=0-00:10           # time (DD-HH:MM)

module purge
module load openfoam/5.0
source $FOAM_ETC/bashrc

decomposePar
blockMesh
setFields
srun interFoam -parallel

Mesh preparation (blockMesh) may be fast enough to be done at the command line (see Running jobs). The solver (icoFoam and others) is usually the most expensive step and should always be submitted as a Slurm job except in very small test cases or tutorials.

Performance[edit]

OpenFOAM can emit a lot of debugging information in very frequent small writes (e.g. hundreds per second). This may lead to poor performance on our network file systems. If you are in stable production and don't need the debug output, you can reduce or disable it with:

$ mkdir -p $HOME/.OpenFOAM/$WM_PROJECT_VERSION
$ cp $WM_PROJECT_DIR/etc/controlDict $HOME/.OpenFOAM/$WM_PROJECT_VERSION/

Then edit the debugSwitches dictionary in $HOME/.OpenFOAM/$WM_PROJECT_VERSION/controlDict, changing flags from values >0 to 0. (Contribution from C. Lane)