![]() |
ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
|
This is the main starting page for the technical ryujin class and function documentation. A full usage guide can be found at https://conservation-laws.org/ryujin/
The source code is organized in the following parts. An arrow points from a part of the code to a part it uses. Everything uses the base layer:
At the bottom, the base layer provides SIMD vectorization, data that is mirrored between the host and device memory spaces, and distributed vectors and sparse matrices. The discretization layer builds the mesh, the finite element space, and the precomputed offline data on top of it. The framework connects equations with the discretization: abstract interfaces hide all equation dependent types, concepts specify what an equation has to provide, and typed implementations carry out the hyperbolic update, initial values, and postprocessing for a given hyperbolic and parabolic description. Each of the equations is such a pair of descriptions. Finally, the driver sets up the simulation and runs the time loop, and the output classes write out results. The ryujin executable selects an equation and the dimension at run time.
ryujin is based on discretization approaches and algorithms that have been developed in a number of publications [9] [8] [12] [11] [17] [13] [14] [3] [4]. A complete list of references can be found in the Bibliography.