The aim of OOFEM project is to develop efficient and robust tool for FEM computations as well as to provide modular and extensible environment for future development.

The aim of this document is to provide the introduction to the OOFEM principles and internal structure. However, it is not intended to contain the detailed description of the whole package. Interested readers should follow the OOFEM library reference manual1 for more detailed reference. This hypertext reference manual is generated automatically from the source code and it represents always up to date source of information. It contains a class hierarchy browser, an alphabetical list of all components and a detailed hypertext description of all library components, including all classes and their attributes and services.

The OOFEM comes divided into two basic parts - a library and a distribution. The library (called OOFEMlib) is the core part of the OOFEM, containing the basic collection of classes. These classes are problem independent and they provide the common definitions and support to all FEM problems. The distribution part contains the rest - modules representing the problem dependent parts.

The OOFEM package is written in C++ (see, for example [11], for reference). This document contains many examples and listings of a parts of the source code. Therefore, the ideal reader should be familiar with C++ programming language. However, any reader with an object-oriented background should follow this document, since the examples are written in a form, which is easy to read and understand.

Borek Patzak 2018-01-02