- Object oriented architecture
- Modular & extensible FEM kernel (OOFEMlib)
- fully extensible - The kernel is extensible in any “direction”. The possibility of adding new element type, new material model with any type and number of internal history parameters, new boundary conditions, numerical algorithms or analysis modules, as well as ability to add and manage arbitrary degrees of freedom is matter of course.
- python interface - The python bindings are provided allowing to set up the problem, query the results and even visualize them using VTK from Python script. For advanced users, there is even possibility to develop own elements, material models and other components in Python.
- independent problem formulation, numerical solution and data storage - The kernel provides the independent abstractions for analysis, general numerical method and data storage (sparse matrices). The component mapping concept allows to formulate problem and numerical method independently and allows to use any suitable numerical method for problem solution without changes. This concept is further enhanced by abstract sparse matrix interface, allowing to formulate numerical method independently on sparse matrix implementation.
- full restart support - The kernel supports full restart from any previously saved state.
- staggered analysis - allows to group basic problems together and to transfer and share the solution fields between basic subproblems. The general design allows to use different discretizations for the basic subproblems.
- parallel processing support - based on domain decomposition, message passing paradigms, and dynamic load balancing engine. Many analyses can be run in parallel and very good performance scalability can be obtained on various platforms. Message passing concept is highly portable across many platforms (including massively parallel computers, shared memory systems and workstation clusters), For developers, general classes for efficient inter domain communication are provided built over the abstract general layer for message passing libraries. Build in high-level support for dynamic load balancing.
- efficient sparse solvers - direct as well as iterative solvers are available. Direct solvers include symmetric and unsymmetric skyline solver and sparse direct solver, iterative solvers support many sparse storage formats and come with several preconditioners. Interfaces to third party linear solver libraries are available, including IML, PETSc (serial and parallel), PARDISO, SuperLu and SPOOLES.
- adaptive analysis support - multiple domain concept. Support for error estimation with various remeshing criteria, support for primary unknown and internal variables mapping. Fast spatial localization algorithms based on tree techniques are available.
- eXtented Finite Element (XFEM) support - built in representations for global enrichment functions, their geometry description, and generalized integration rules provide generic support for implementing XFEM based solution algorithms.
- Iso-Geometric Analysis (IGA) support - built in support for IGA analysis, with B-spline and NURBS interpolation classes. Pilot implementation for plane stress and 3d elesticity available
- Structural Mechanics module (sm)
- many analysis procedures - linear static, linear dynamic (eigene value analysis, direct integration methods - implicit and explicit), nonlinear static (robust CALM solver), nonlinear dynamic (explicit, parallel version).
- adaptive analysis - linear and nonlinear static.
- advanced modeling features - slave DOFs, rigid arms, local coordinate systems, element activation/deactivation and many more.
- parallel analysis - explicit nonlinear dynamics utilizing the Domain Decomposition Method, linear and nonlinear static (requires PETSC).
- profile optimization.
- Transport problem module (tm)
- analysis procedures: stationary and transient (linear and nonlinear) heat transfer and coupled heat&mass transfer problems.
- element library: axisymmetric, two and three dimensional elements, see Element Library Manual.
- staggered simultaneous solution of heat transfer analysis and mechanical analysis, where temperature field generated by heat transfer analysis can be used in mechanical analysis as temperature loading.
- Fluid dynamic problem module (fm)
- analysis procedures: transient incompressible flow - CBS semi-implicit algorithm and transient solver with SUPG/PSPG stabilization. The later supports incompressible analysis of two immiscible fluids on a fixed domain (also suitable for free surface flows) using 2D VOF based interface tracking algorithm.
- element library: linear equal order velocity and pressure approximation triangle, see Element Library Manual.
- Build in X-windows postprocessor.
- Export to VTK format is supported, allowing to use VTK based visualization tools (such as MayaVi or ParaView) for postprocessing on different platforms
- Interface to mesh generators (T3d and Targe2), UNV import tool (unv2oofem)
- Interface to sparse linear and eigenvalue solver libraries (currently PETSc, SLEPc, IML, PARDISo, SuperLu and SPOOLES)
- Python interface allowing the scripting and extension from Python
- Portability (C++)
OOFEM interfaces to the following external software:
- T3d(Daniel Rypl's 3d mesh generator)
- Targe2 (Petr Krysl's 2d mesh generator)
- IML++ (template library for numerical iterative methods)
- SPOOLES sparse direct solver.
- PETSC - Portable, Extensible Toolkit for Scientific Computation.
- SLEPc - Scalable Library for Eigenvalue Problem Computations.
- ParMETIS - Parallel Graph Partitioning and Fill-reducing Matrix Ordering
- MayaVi - a free, easy to use scientific data visualizer
- ParaView: Parallel Visualization Application
These are all optional packages and do not need to be installed to use OOFEM.
(since January, 2023)
en/features.txt · Last modified: 2021/05/05 10:55 by bp