Loading...
Searching...
No Matches
bitpit

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.

Basic modules

common common

The bitpit::utils namespace provides miscellaneous functions for the bitpit framework

operators

  • + - * / operators for the std::vector and std::array classes
  • basic mathematic functions like dotProduct crossProduct norm abs ... for the std::vector and std::array classes
  • << >> operators and display functions for the std::vector and std::array classes

containers

  • bitpit::PiercedVector is a container which allows the cancellation and insertion on the fly of elements.
  • bitpit::CollapsedArray2D & bitpit::CollapsedVector2D are 2D linearized vectors which avoid the overhead of the vector infrastructures.
  • bitpit::IBinaryStream & bitpit::OBinaryStream allow to copy chunks of memory

communications

The communications module provides methods for parallel communications.

Input Output (IO)

  • bitpit::genericIO is a namespace which contains basic routines to read/write in ASCII or BINARY
  • bitpit::DGFObj class and bitpit::dgf namespace for reading and writing Dune Grid Format files
  • bitpit::STLObj class and bitpit::stl namespace for reading and writing Stereo Litography files
  • bitpit::VTK classes and bitpit::vtk namespace for reading and writing Visualization ToolKit files
  • bitpit::Log classes and bitpit::log namespace for unified and coordinated output throughout all modules

Linear Algebra (LA)

LA providesi methods for small dense linear systems stored as std::vector<std::vector> or std::array<std::array>

  • creation of basic matrices, like identity and diagonal matrices
  • basic matrix operations like transpose and matrix multiplication
  • solution

Radial Basis Functions manipulator (RBF)

The RBF module handles Radial Basis Function Interpolation/Parameterization with a large set of nodes.

Sort algorithms (SA)

Computational Geometry (CG)

CG module provides methods for computational geometry.

Mesh modules

PArallel Balanced Linear Octree (PABLO)

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.

Patch kernel

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.

Unstructured surface patch

bitpit::SurfUnstructured is the principal container for surface segmentations and has methods in order to read/write surface triangulations.

Cartesian/Octree/Unstructured volume patch

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.

--- layout: doxygen_footer ---