This project is archived. Its data is read-only. This project is read-only.
Meshes todo list
- [x] write tests for `Mesh` traverser - [x] rewrite `Traverser` using `ParallelFor` - [x] writer for the XML-based VTK format: see #6 - [x] big mesh refactoring - mesh pointer added to `MeshEntity`, all topology accessors redirected through it to the mesh - storage of points and subentity orientations moved from `MeshEntity` to `Mesh` - removed `MeshEntityIndex` - `MeshEntity` always stores its index as the `GlobalIndexType` - removed entity storage from Mesh - mesh entities can be generated on the fly - some minor related simplifications, mainly in the mesh initializer - remove `entityStorage` from the mesh configuration - [x] `TypeResolver`: `resolveMeshType`, `loadMesh`, `decomposeMesh`: - [x] better detection of the format (currently based on the file name suffix) (solved by the manual override option) - [x] file detection is done twice: once for `resolveMeshType`, then again for `loadMesh` - [x] refactor `MeshFunction` - implement `MeshFunctionView` - [x] implement `tnl-decompose-mesh` (wrapper tool using Metis) - [x] output `.pvtu` file - [x] generate overlaps (ghost cells) for use in `DistributedMesh` - [x] mesh entity tags - we need to store at least boundary and ghost entity tags - use bitfield array similar to VTK - if possible, implement a general interface for user tags (could be stored in the same array, but users would have to respect the boundary and ghost bits) - [x] implement `PVTUReader` - [x] implement `DistributedMesh` - wrapper around `Mesh` - includes local and ghost entities, which are differentiated by a tag - mapping from local to global indices is easy - separate index arrays (or just for ghost entities, if they are ordered after the local entities - then rank offsets is sufficient for local entities) - the local mesh should be worked with using local indices (`getEntity`, `getSubentityIndex`, `getSuperentityIndex` etc.), because mapping from global indices to local indices is not easy (ghost entities may be discontinuous, mapping by rank offsets is impossible) - local index mappings (index arrays for efficient iteration): - `ghosts` - `local` - `ghostNeighbours` (entities which are ghosts on other ranks - for synchronization) - `localInternal` (not ghosts on any ranks) - `boundary` (boundary of the local mesh (including overlaps)) - `interior` (interior of the local mesh (including overlaps)) - local mesh decompositions: `all = local + ghosts`, `local = ghostNeighbours + localInternal`, `all = boundary + interior` - [x] write tests - [x] implement `DistributedMeshSynchronizer` - [x] write tests - [x] implement `forAll`, `forBoundary`, `forInterior` methods like in `NDArray`; also `forLocal`, `forGhost` (lambda function takes just the index, mesh access has to be handled manually)
issue