TNL is a collection of building blocks that facilitate the development of efficient numerical solvers. It is implemented in C++ using modern programming paradigms in order to provide flexible and user friendly interface. TNL provides native support for modern hardware architectures such as multicore CPUs, GPUs, and distributed systems, which can be managed via a unified interface. Visit the main TNL web page for details.
TNL provides several optional components:
- TNL header files in the src/TNL directory.
- Various pre-processing and post-processing tools in the src/Tools directory.
- Various utilities implemented in Python in the src/Python directory. Additionally, Python bindings for the C++ code are provided in the separate PyTNL repository.
- Examples of various numerical solvers in the src/Examples directory.
- Benchmarks in the src/Benchmarks directory.
These components can be individually enabled or disabled and installed by a
convenient install script. See the Installation section in
the documentation for details.
See the full documentation for information about:
and other documented topics.
The TNL project welcomes and encourages participation by everyone. While most of the work for TNL involves programming in principle, we value and encourage contributions even from people proficient in other, non-technical areas.
This section provides several ideas how both new and experienced TNL users can contribute to the project. Note that this is not an exhaustive list.
- Join the code development. Our GitLab issues tracker contains many ideas for new features, or you may bring your own. The contributing guidelines describe the standards for code contributions.
- Help with testing and reporting problems. Testing is an integral part of agile software development which refines the code development. Constructive critique is always welcome.
- Improve and extend the documentation. Even small changes such as improving grammar or fixing typos are very appreciated.
- Share your experience with TNL. Have you used TNL in your own project? Please be open and share your experience to help others in similar fields to get familiar with TNL. If you could not utilize TNL as smoothly as possible, feel free to submit a feature request.
Before contributing, please get accustomed with the code of conduct.
If you use TNL in your scientific projects, please cite the following papers in your publications:
- T. Oberhuber, J. Klinkovský, R. Fučík, TNL: Numerical library for modern parallel architectures, Acta Polytechnica 61.SI (2021), 122-134.
- J. Klinkovský, T. Oberhuber, R. Fučík, V. Žabka, Configurable open-source data structure for distributed conforming unstructured homogeneous meshes with GPU support, ACM Transactions on Mathematical Software, 2022, 48(3), 1-33.
See the list of team members on our website. The overview of contributions can be viewed on GitLab.
Template Numerical Library is provided under the terms of the MIT License.