Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
DLR-AMR
GitHub Repository: DLR-AMR/t8code
Path: blob/main/doc/source/index.rst
900 views
.. 
  This file is part of t8code.
  t8code is a C library to manage a collection (a forest) of multiple
  connected adaptive space-trees of general element classes in parallel.
.. 
  Copyright (C) 2015 the developers
.. 
  t8code is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
.. 
  t8code is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
.. 
  You should have received a copy of the GNU General Public License
  along with t8code; if not, write to the Free Software Foundation, Inc.,
  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Welcome to t8code's documentation!
==================================
This is the documentation for t8code version |version|.

Author
======
    Johannes Holke, David Knapp, Lukas Dreyer, Niklas Böing, Sandro Elsweijer, Ioannis Lilikakis, Veli Ünlü, Carsten Burstedde, Johannes Markert et. al. 

Copyright
=========
    GNU General Public License version 2 (or, at your option, any later version)
 
t8code (spoken as "tetcode") is a C/C++ library to manage parallel adaptive meshes with various element types. t8code uses a collection (a forest) of multiple connected adaptive space-trees in parallel and scales to at least one million MPI ranks and over 1 Trillion mesh elements. 
 
t8code is intended to be used as a thirdparty library for numerical simulation codes or any other applications that require meshes.
 
The best place to start learning about t8code is the `Wiki <https://github.com/DLR-AMR/t8code/wiki>`_, especially the `Installation Guide <https://github.com/DLR-AMR/t8code/wiki/Installation>`_ and the `Tutorials <https://github.com/DLR-AMR/t8code/wiki/Tutorial---Overview>`_.

You find the source code to t8code on `github <https://github.com/DLR-AMR/t8code>`_.

t8code supports the following element types (also different types in the same mesh):

- 0D: vertices
- 1D: lines
- 2D: quadrilaterals and triangles
- 3D: hexahedra, tetrahedra, prisms, and pyramids (currently in development).

Among others, t8code offers the following functionalities:

- Create distributed adaptive meshes over complex domain geometries
- Adapt meshes according to user given refinement/coarsening criteria
- Establish a 2:1 balance
- (Re-)partition a mesh (and associated data) among MPI ranks
- Manage ghost (halo) elements and data
- Hierarchical search in the mesh

t8code uses space-filling curves (SFCs) to manage the adaptive refinement and efficiently store the mesh elements and associated data. A modular approach makes it possible to exchange the underlying SFC without changing the high-level algorithms. Thus, we can use and compare different refinement schemes and users can implement their own refinement rules if so desired.

Currently, 

- lines use a 1D Morton curve with 1:2 refinement
- quadrilaterals/hexahedra are inherited from the p4est submodule, using the Morton curve 1:4, 1:8 refinement; 
- triangles/tetrahedra are implemented using the Tetrahedral Morton curve, 1:4, 1:8 refinement;
- prisms are implemented using the triangular TM curve and a line curve, 1:8 refinement.
- pyramids are implemented via a pyramidal Morton code.
- The code supports hybrid meshes including any of the above element types (of the same dimension).

You find more information on t8code in the `t8code Wiki <https://github.com/DLR-AMR/t8code/wiki>`_.

.. toctree::
   :maxdepth: 3
   :caption: Contents:

   api/library_root