===== 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 [[http://www.oofem.org/documentation/documentation.html|input data manual]] for description, how to select various solvers. The IML++ can be downloaded from [[http://math.nist.gov/iml++/|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 [[http://www.open-mpi.org/|Open MPI]]. It is a freely available, portable implementation of MPI. *If you would like to use parallel solvers, then [[http://www-unix.mcs.anl.gov/petsc/petsc-as/| 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 [[http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx|Visual Studio 2013]] and, optionally, [[https://software.intel.com/en-us/intel-visual-fortran-compiler-for-windows|Intel Fortran Compiler]] (needed only for [[http://www.netlib.org/scalapack/|ScaLAPACK]]). == Prerequisities == *[[http://www.mpich.org/downloads/|MPICH2]] (unofficial version mantained by Jayesh Krishna, not the Microsoft one) are the advised MPI libraries. *[[https://www.cygwin.com/|Cygwin]] is needed to compile PETSc; ''Python'' must be installed within. *%%Optionally%% you may want to compile SLEPc and/or other packages needed, like [[http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview|ParMETIS]] and [[http://glaros.dtc.umn.edu/gkhome/metis/metis/overview|METIS]] == Configuration of required packages == *First of all, one would have ParMETIS (which requires METIS) and MUMPS as direct solver (see [[http://www.mcs.anl.gov/petsc/documentation/linearsolvertable.html|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 [[http://www.mcs.anl.gov/petsc/documentation/installation.html#windows|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 [[CMakeLists-Windows|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 ([[http://msdn.microsoft.com/en-us/library/6wtdswk0.aspx|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. == Configuration == * Download and install Ckit and Elixir libraries. * Run configuration with "**%%USE_OOFEG%%**" set. * Use **%%CKIT_DIR%%** and **%%ELIXIR_DIR%%** allow to specify location of Ckit and Elixir installation directories, needed by oofeg.