ug4 is a simulation framework, targeted at the solution of differential equations on unstructured hybrid grids in 1, 2 and 3 dimensions on systems reaching from laptops to massively parallel systems. ug4 is written in C++, striving for a flexible, yet fast and robust simulation environment.
ug4 has been written and is still developed at the Goethe Center for Scientific Computing at the University of Frankfurt, Germany (http://www.g-csc.de).
https://github.com/UG4/ugcore gives a quick overview on how to obtain and to install ug4. Several example applications are described and tools for pre- and postprocessing are linked.
Features of ug4 are:
- Fast and efficient numerical solvers for serial and parallel environments.
- A flexible discretization module, allowing to freely couple equations, input and output parameters, even on scripting level.
- An efficient extensible grid manager supporting distributed adaptive hybrid multigrids in 1, 2 and 3 dimensions. Supported element types are vertices, edges, triangles, quadrilaterals, tetrahedra, hexahedra, prisms and pyramids.
- A flexible algebra independent from grid and discretization designed to swap the core functions to support double/single precision, systems of equations and GPGPUs. A flexible Sparse Matrix with the ability to change the structure and do efficient computations at any time allowing easy integration of very flexible discretization strategies and numerical procedures.
- A parallelization layer based on MPI which allows efficient communication on distributed hierarchical graphs. Scalability has been shown for up to 256ki processes — more to come...
- Efficient parallel solvers: Iterative Solvers, Preconditioners, Geometric and Algebraic Multgrid, Sparse LU Decomposition and more.
- ug4 extends the lua scripting language, which allows to control the entire simulation from powerful and easily readable scripts. A plugin for the popular development editor framework eclipse supports provides syntax highlighting, checking and code completion.
- Through the Visual Reflection Library users can run and control an entire simulation through a modern graphical interface.
- ug4 also features an interactive shell with auto-completion, which can be used in addition to scripts to have even more control over the run of a simulation.
- A Plugin system allows users to extend ug4 without having to dive into the specifics of ug4's implementation. Plugins can export functions and classes, which are then immediately available in ug4's script and in the Visual Reflection Library.
- ug4 is backed up by several powerful tools like ProMesh (meshing software), the ConnectionViewer (used to inspect matrix connections), or the integrated profiler (Shiny extended by output and analyzation tools).
- Simulation results can be stored and interpreted by widely spread visualization toolkits like the VTK based ParaView.
- ug4 is a cross-platform tool and supports Linux, MacOSX and Microsoft Windows.