KRATOS Multiphysics (“Kratos”) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface
Kratos is a framework for building multi-disciplinary finite element programs. It provides several tools for easy implementation of finite element applications and a common platform providing effortless interaction between them. Kratos has an innovative variable base interface designed to be used at different levels of abstraction and implemented to be very clear and extendible. It also provides an efficient yet flexible data structure which can be used to store any type of data in a type-safe manner. The Python scripting language is used to define the main procedure of Kratos which significantly improves the flexibility of the framework in time of use.
The kernel and application approach is used to reduce the possible conflicts arising between developers of different fields. Also layers are designed to reflect the working space of different people, considering their programming knowledge.
Kratos is Parallelized for Shared Memory Machines (SMMs) and Distributed Memory Machines (DMMs). In the same way it provides tools for its applications to adapt easily their algorithms to these architectures. Its scalability has been verified up to thousands of cores.
If you have not visited the general CIMNE Kratos Website, you can do it to have an overview of the Kratos capabilities.
Kratos is multiplatform and available for Windows, Linux (several distros) and macOS.
Kratos is OpenMP and MPI parallel and scalable up to thousands of cores.
Kratos provides a core which defines the common framework and several application which work like plug-ins that can be extended in diverse fields.
Some potential users of Kratos are:
- Finite Element Developers: These developers are considered to be more expert in FEM, from the physical and mathematical points of view, than C++ programming. For this reason, Kratos provides their requirements without involving them in advanced programming concepts.
- Application Developers: These users are less interested in finite element programming and their programming knowledge may vary from very expert to higher than basic. They may use not only Kratos itself but also any other applications provided by finite element developers, or other application developers. Developers of optimization programs or design tools are the typical users of this kind.
- Package Users Engineers: and designers are other users of Kratos. They use the complete package of Kratos and its applications to model and solve their problem without getting involved in internal programming of this package. For these users Kratos has to provide a flexible external interface to enable them use different features of Kratos without changing its implementation.