Overview of the modules

tools

Depends on: none.

Miscellaneous independent tools, used by most of the other modules. Especially optional_imports and deprecation_handling are used all over the place without being explicitly referenced as a dependency in the present page.

matrices

Depends on: none.

This module contains data structures to represent matrices as block matrices, block Toeplitz matrices (stored sparsely in memory) and low-rank matrices. All block matrices can nested to build hierarchical matrices.

These matrices representations are advanced features that are not used by default by Capytaine. In the future, this module could be extracted as an indendant library to make Capytaine a bit leaner.

meshes

Depends on: none.

This module contains classes describing the mesh of a floating body. Several variants, including collections of meshes and symmetric meshes are also available. Most of this module comes from the meshmagick package by François Rongère. It also contains some tools to generate meshes of simple geometrical shapes.

bodies

Depends on: meshes.

This module contains a class describing a floating body, that is the reunion of a mesh and some degrees of freedom, as well as some more optional data.

green_functions

Depends on: tools.

This module contains the routine to evaluate the Green function.

bem

Depends on: meshes, bodies, matrices, green_functions, io.xarray and tools.

The module is the core of the code. It contains the routines to assemble the matrices and solve the BEM problem.

io.xarray

Depends on: bem.

This submodule contains the code used to read and write the xarray datasets that are the standard output of the code. It is interlaced with capytaine.bem and might be merged with it in the future.

post_pro

Depends on: meshes, bodies, bem, io.xarray.

This module contains various tools for the post-processing of the results of the BEM problem.

io

Depends on: meshes, bodies, bem.

This module contains various tools for inputs and outputs of the code.

ui

Depends on most of the other modules.

This modules contains the code handling the user interfaces: the display of the outputs in the terminal using Rich, the command line interface and the 3D visualisations of the meshes with VTK.