bitpit is a C++ library for scientific High Performance Computing. Within bitpit different modules factorize the typical effort which is needed to derived a real-life application code.
Efforts is dedicated to handle different types of computational meshes, their runtime adaptation and data transfer for parallel applications.
The bitpit::utils namespace provides miscellaneous functions for the bitpit framework
The communications module provides methods for parallel communications.
LA providesi methods for small dense linear systems stored as std::vector<std::vector> or std::array<std::array>
The RBF module handles Radial Basis Function Interpolation/Parameterization with a large set of nodes.
CG module provides methods for computational geometry.
PABLO is a stand-alone module which provides a parallel linear octree/quadtree. bitpit::ParaTree provides connectivity/adjecency information only, whereas bitpit::PabloUniform provides aditionally all geometrical information for an Octree within and rectangular domain. Message passing paradigm is transparent to the user since PABLO has embedded MPI calls. By this way, the user can easily perform data communications and dynamic load-balance by calling straightforward high level methods.
PABLO allows adaptive mesh refinement by generating non-conforming grid with hanging nodes. Additional features available in PABLO are: 2:1 balancing between octants and a easy way to generate and store intersections between octants.
bitpit::PatchKernel is the base mesh container of bitpit. Basic elements like bitpit::Vertex, bitpit::Interface and bitpit::Cell are defined here, together with bitpit::Adaption which is used for dynamic mesh adaptation. It provides a homogenous interface class to all types of meshes and two specialized derived classes, bitpit::SurfaceKernel and bitpit::VolumeKernel, for surface and volume meshes.
bitpit::SurfUnstructured is the principal container for surface segmentations and has methods in order to read/write surface triangulations.
bitpit::VolCartesian, bitpit::VolOctree & bitpit::VolUnstructured are the derived voume meshes ifor 2D and 3D in bitpit. They share the common interface through bitpit::VolumeKernel but each grid provides specific optimized methods.