# Installation#

## Mandatory Packages#

To compile `OpenFDEM`

, you neeed a complier supporting `C++ 17`

and the following packages are required:

`CMake`

(>= version 3.15) - cross-platform build systemC, C++ compiler with Standard Template Library (STL) support,

`C++ 20`

is mandatory`OpenMP`

- a high-performance, freely available package for multi core acceleration`GSL`

- a general software library for numerical computations in applied mathematics and science`Gmsh`

(>= version 4.10) - mesh generation and pre-processing, it is optional and the kernel is implemented in the source code`Eigen`

(>= version 3.4.0) - a scientific matrix computation, it is optional and the headers are included in source code

## Optional Packages#

`CUDA`

- package for GPU parallelization`PETSc`

(>= version 3.13) - portable, extensible toolkit for scientific computation`SLEPc`

- scalable library for eigenvalue problem computations`BLAS/LAPACK`

- optimizes linear algebra kernels`doxygen`

- documentation system for automatic generating reference manual from the source code`Sphinx`

- documentation generator or a tool that translates a set of plain text source files into various output formats, automatically producing cross-references, indices, etc.

## Implicit Static/Non-Linear Solvers#

To use the implicit static or nonlinear solvers, at least one of the following libraries is required:

`PETSc`

- portable, extensible toolkit for scientific computation (if`PETSC`

installed,`LAPACK`

and`BLAS`

can be ignored)`BLAS/LAPACK`

- a standard software library for numerical linear algebra

## For Python interface#

`Python`

- (>=3.8 is recommended)`pybind11`

- a package create Python bindings of existing C++ code

## Post-Processing#

To use the post-processing outputs (optional steps):

`ParaView`

- Parallel visualization application`Tecplot`

- Commerical software for field results

`OpenFDEM`

is flexible and can be run on Windows or Linux-like systems. The released version is for Windows x64.