Elmer
Elmer is CSC's open source Finite Element multi-physics simulation package. It covers modules for fluid and solid mechanics, acoustics, and electro-magneto dynamics.
Elmer utilizes third-party open source programs for pre- (e.g., Gmsh) and post-processing (e.g., ParaView, Visit). The version installed includes Elmer/Ice solvers needed for glaciological simulations (ice-sheets, glaciers). Elmer utilizes the MPI library for parallel computing with some solvers already having OpenMP parallel threading directives implemented.
Available
| Version | Available modules | Notes |
|---|---|---|
| 26.2.1 | elmerfem/26.2.1 |
Versioned release |
| devel | elmerfem/devel |
Development version |
| Version | Available modules |
|---|---|
| 9.0 | elmer/latest |
License
Elmer is licensed under GPL and (as for the elmersolver.lib) LGPL. It is free for everyone to use.
Usage
On Roihu-CPU, Elmer is available under the module name elmerfem.
To list the available versions, use:
Load the versioned release with:
Alternatively, load the development version with:
For detailed information about a specific version and its dependencies, use:
On LUMI, first enable the CSC software modules:
To list the available Elmer versions, use:
Load the default version with:
This version may be updated. If your simulation uses compiled User Functions, recompile them after an update when necessary.
Example parallel batch script
Basic script for a 1-hour job using a single node and 384 cores in total, where the Elmer input file is myrun.sif.
#!/bin/bash
#SBATCH --time=01:00:00
#SBATCH --job-name=jobname
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
#SBATCH --partition=small
#SBATCH --account=<project>
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=384
export OMP_NUM_THREADS=1
module load elmerfem/26.2.1
# make sure the SIF is in the start-info
echo myrun.sif > ELMERSOLVER_STARTINFO
echo "starting Elmer simulation with SIF file"
cat ELMERSOLVER_STARTINFO
srun ElmerSolver
echo "done"
Basic script for a 1-hour job using 4 nodes and 128 cores in total, where the Elmer input file is myrun.sif.
#!/bin/bash
#SBATCH --time=01:00:00
#SBATCH --job-name=jobname
#SBATCH --output=%x.%j.out
#SBATCH --error=%x.%j.err
#SBATCH --partition=small
#SBATCH --account=<project>
#SBATCH --nodes=4
#SBATCH --ntasks=128
module use /appl/local/csc/modulefiles/
module load elmer/latest
# make sure the SIF is in the start-info
echo myrun.sif > ELMERSOLVER_STARTINFO
echo "starting Elmer simulation with SIF file"
cat ELMERSOLVER_STARTINFO
srun ElmerSolver
echo "done"
Instructions on how to submit and monitor jobs can be found in CSC docs and in LUMI docs.
It can be advantageous to utilize fewer cores per node than available to increase performance in certain Elmer cases. See the example on undersubscribing.