# OOFEM wiki

### Site Tools

installing_optional

## IML

IML++ is a C++ templated library of modern iterative methods for solving both symmetric and nonsymmetric linear systems of equations. OOFEM provides the interface to this library, which enables to use iterative, single-processor solvers. See input data manual for description, how to select various solvers. The IML++ can be downloaded from project website. Installation instructions:

• Run configuration with USE_IML

## Parallel oofem

Parallel support in oofem allows to efficiently exploit the power of parallel computers. The parallel model is based on domain decomposition and message passing paradigms. This allows to use parallel version on a distributed memory systems, shared memory systems, and workstation clusters.

##### Prerequisities
• Parallel version requires MPI library to be installed on your system. If you do not have any, you can use Open MPI. It is a freely available, portable implementation of MPI.
• If you would like to use parallel solvers, then PETSc toolkit is required. Follow installation instructions on PETSc pages to download and install this toolkit.
• Without PETSc, only parallel explicit dynamics analysis will be available (still requires MPI).
##### Configuration
• Run configuration with “USE_PARALLEL” set.
• Use PETSC_DIR and PETSC_ARCH to specify your PETSc installation.

### Parallel version for Windows

This is intended for who uses Visual Studio 2013 and, optionally, Intel Fortran Compiler (needed only for ScaLAPACK).

##### Prerequisities
• MPICH2 (unofficial version mantained by Jayesh Krishna, not the Microsoft one) are the advised MPI libraries.
• Cygwin is needed to compile PETSc; Python must be installed within.
• Optionally you may want to compile SLEPc and/or other packages needed, like ParMETIS and METIS
##### Configuration of required packages
• First of all, one would have ParMETIS (which requires METIS) and MUMPS as direct solver (see here), which requires PETSc compiled with ScaLAPACK.
• METIS and ParMETIS can be installed with VS2013 and CMake using a standard procedure.
• Follow the instructions for PETSc installation under Windows and Cygwin. You must start Cygwin within a VS command prompt to have all path to the MS compilers defined.
• Be sure to have ONLY one mpiexec.exe (the one from MPICH2 package) in your path (note that VS2013, ifort and Cygwin have their copy of mpiexec.exe - rename them before to proceed)
• A good configuration command for PETSc is:
./configure --with-cc='win32fe cl' --with-fc='win32fe ifort' --with-cxx='win32fe cl' --download-fblaslapack --with-debugging=0 --download-mumps --with-mpi-dir="/cygdrive/c/MPICH2" --with-shared-libraries=0 --with-mpiexec='mpiexec --localonly' --useThreads=0 --download-scalapack --with-parmetis-include=/home/user/parmetis-4.0.3/include --with-parmetis-lib="/home/user/libs/parmetis.lib /home/user/libs/metis.lib" --with-metis-include="/home/user/metis-5.1.0/include" --with-metis-lib=/home/user/libs/metis.lib

This command will configure PETSc package:

• to be compiled with MS cl and Intel ifort, interfaced with win32fe
• with debugging flag deactivated (for speed of execution)
• with the following additional packages: MUMPS, METIS, ParMETIS, ScaLAPACK, BLAS-LAPACK

Follow on-screen instructions to finish compilation and performing tests.

##### Configuration
• Replace the main CMakeLists.txt with this file.
• Run configuration with “USE_PARALLEL” set.
• Use PETSC_DIR (arch-mswin-c-opt) and PETSC_ARCH (arch-mswin-c-opt) to specify your PETSc installation.
• Set METIS_DIR and PARMETIS_DIR to the appropriate paths. USE_SHARED_LIB must be unchecked.
• Configure, generate and open the solution in VS2013. In the Linker Options for the oofem project, add C:\Program Files (x86)\Intel\ComposerXE-2011\compiler\lib\ia32 (or the equivalent in your system) as additional directory and exclude LIBCMT.lib from linking to prevent errors (see here).
• Compile. Test your oofem.exe with
mpiexec -n N oofem -p -f inputdeck.in

where N is the number of threads involved (you must have an input deck for each thread, named inputdeck.in.0, inputdeck.in.1 and so on).

## OOFEG

OOFEG is graphical postprocessor provided with oofem. It requires X-windows libraries to be installed on the system, so it is more or less limited to unix platforms. The capabilities of OOFEG are limited in 3D visualization, therefore the recommended way for end users interested in 3D analyses is to use oofem capability to export data in VTK format and use third-party, freely available tools such as mayavi or paraview to visualize results. Another advantage is, that these tools are multiplatform and OPEN-GL based, so that they are available on both unix and windows and can fully explore the potential of your graphics hardware.

If you decide to use oofeg, ELIXIR and Ckit libraries, written by Petr Krysl (http://www.multires.caltech.edu/~pkrysl/), need to be installed. The version of Elixir to be used with OOFEM is likely to be not compatible with the original version maintained by the Petr Krysl. The compatible Elixir version is available at oofem download page (http://www.oofem.org/en/download/download.html). The Ckit library can be obtained at the same location.