STRUMPACK provides several rank-structured formats for dense matrix approximation. Included are HSS (Hierarchically Semi-Separable), BLR (Block Low Rank), HODLR (Hierarchically Off-Diagonal Low Rank), Butterfly, HODBF (Hierarchically Off-Diagonal Butterfly).
We provide an interface to these different formats through a single class strumpack::structured::StructuredMatrix. See the documentation for this class for more information. Multiple scenarios for construction are supported, such as
Moreover, StructuredMatrix defines several operations, such as
Example usage of this StructuredMatrix class can be found in examples/dense/testStructured.cpp and examples/dense/testStructuredMPI.cpp.
If you require additional functionality, then feel free to reach out and contact us.
The C interface to the StructuredMatrix class can be found in structured/StructuredMatrix.h . An example is available in examples/dense/dstructured.c.
The Fortran interface for the structured matrix functionality is based on the C interface (which is based on the C++ class strumpack::structured::StructuredMatrix), so we refer to the C and C++ interfaces for more detailed information. The Fortran interface can be found in structured/fortran/strumpack_dense.f90 . A Fortran example is available in examples/dense/fstructured.f90.
Note that the HODLR, HODBF, Butterfly and Low Rank formats are implemented using ButterflyPACK, which is written in Fortran. So a Fortran user can directly use ButterflyPACK.
We recommend you use the StructuredMatrix interface. However, the following pages are specific for certain formats:
These are all implemented as sub-classes of the StructuredMatrix class.