OOFEM is an object oriented finite element code system. General features include staggered solution procedures, multiple domain concept, full restart support from any saved state, and built in support for parallel processing. Both sparse matrix storage schemes and corrresponding iterative and direct solvers are available.
Its structural module includes many analysis procedures including serial and parallel nonlinear static analyses with direct and indirect control and parallel nonlinear explicit dynamics. Its transport module can solve linear and non-linear stationary and transient heat transfer and coupled heat&mass transfer problems. Its large material library includes models for nonlinear fracture mechanics and rich element libraries are provided. OOFEM interfaces to IML++, PETSc, and VTK.
Here are some key features of "OOFEM":
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.
· 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 and message passing paradigms. 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), 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.
Structural Mechanics module (sm)
· many analysis procedures - linear static, linear dynamic (eigen value analysis, direct integration methods - implicit and explicit), nonlinear static (robust CALM solver), nonlinear dynamic (explicit, parallel version).
· large material library including the state-of-the-art models for nonlinear fracture mechanics of quasibrittle materials and rich element library - see Element Library Manual and Material Model Library Manual.
· adaptive analysis - linear and nonlinear static.
· advanced modeling features - slave DOFs, rigid arms, local coordinate systems 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.
· Built 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
What's New in This Release:
· New installation and compilation procedure implemented. Now uses "targets", representing set of specific settings to produce target executable.
· Targets allow to set up specific compilers, compiler options, include different external libraries, etc. Arbitrary number of targets can be configured and built. In order to compile solver (oofem), its parallel version (poofem) and graphics post-processor (oofeg) you have to set up three different targets. The project directory structure has been altered.
· Implemented generic dynamic load balancing framework for parallel jobs. Most of the time has been devoted to development of framework general structure and corresponding fundamental algorithms. Despite this, this framework is ready to use for nonlinear static computations. Active development is scheduled for upcoming versions in this direction.
· Corrected implementation of orthotropic material, now uses major Poisson's ratios. Improved and enhanced corresponding documentation entry.
· Added implementation of 2D and 3D level set algorithm for tracking evolving interfaces.
· Added b-bar lspace element (lspacebb) for incompressible problems
· Added InputRecord giveField method allowing to read FloatMatrix values directly.
· Added set of new macros allowing to declare enum types and automatically generate function returning string representation of enum value. Implementation is inspired by X-Macros technique, as described in Wikipedia entry on C preprocessor
· Some frequently used enums converted to new style and new string to enum conversions are used in many error reporting sections throughout the modified sources. Also vtk export module uses this technique to tag exported fields using their real names instead of integer numbers.