H2Lib  3.0
Data Structures | Macros | Typedefs | Functions
h2matrix.h File Reference
#include <cairo/cairo.h>
#include "amatrix.h"
#include "krylov.h"
#include "block.h"
#include "hmatrix.h"
#include "uniform.h"
#include "clusterbasis.h"
#include "settings.h"

Go to the source code of this file.

Data Structures

struct  _h2matrix
 Representation of $\mathcal{H}^2$-matrices. More...
 
struct  _h2matrixlist
 List of h2matrix objects. More...
 

Typedefs

typedef struct _h2matrix h2matrix
 Representation of an $\mathcal{H}^2$-matrix.
 
typedef h2matrixph2matrix
 Pointer to h2matrix object.
 
typedef const h2matrixpch2matrix
 Pointer to constant h2matrix object.
 
typedef struct _h2matrixlist h2matrixlist
 List of h2matrix objects.
 
typedef h2matrixlistph2matrixlist
 Pointer to h2matrixlist object.
 
typedef const h2matrixlistpch2matrixlist
 Pointer to constant h2matrixlist object.
 
typedef void(* h2matrix_callback_t) (ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, void *data)
 Callback function for h2matrix iterators. More...
 
typedef void(* h2matrixlist_callback_t) (pccluster t, uint tname, uint pardepth, pch2matrixlist hl, void *data)
 Callback function for h2matrixlist iterators. More...
 

Functions

ph2matrix new_h2matrix (pclusterbasis rb, pclusterbasis cb)
 Create a new h2matrix object. More...
 
ph2matrix new_uniform_h2matrix (pclusterbasis rb, pclusterbasis cb)
 Create a new h2matrix object representing a uniform matrix. More...
 
ph2matrix new_full_h2matrix (pclusterbasis rb, pclusterbasis cb)
 Create a new h2matrix object representing a standard dense matrix. More...
 
ph2matrix new_super_h2matrix (pclusterbasis rb, pclusterbasis cb, uint rsons, uint csons)
 Create a new hmatrix object representing a subdivided matrix. More...
 
ph2matrix new_zero_h2matrix (pclusterbasis rb, pclusterbasis cb)
 Create a new h2matrix object representing a zero matrix. More...
 
ph2matrix clonestructure_h2matrix (pch2matrix h2, pclusterbasis rb, pclusterbasis cb)
 Builds a new h2matrix with clusterbasis rb and cb and the block structure of h2. More...
 
ph2matrix clone_h2matrix (pch2matrix h2, pclusterbasis rb, pclusterbasis cb)
 Builds a new h2matrix with clusterbasis rb and cb and the block structure of h2. Copies all coupling matrices $ S_b,\ b \in \mathcal L_{\mathcal I \times \mathcal J}^+$ to the clone. More...
 
void update_h2matrix (ph2matrix h2)
 Complete the initialisation of a h2matrix object. More...
 
void del_h2matrix (ph2matrix h2)
 Delete an h2matrix object. More...
 
void ref_h2matrix (ph2matrix *ptr, ph2matrix h2)
 Set a pointer to an h2matrix object, increase its reference counter, and decrease reference counter of original pointer target. More...
 
void unref_h2matrix (ph2matrix h2)
 Reduce the reference counter of an h2matrix object. More...
 
size_t getsize_h2matrix (pch2matrix h2)
 Get size of a given h2matrix object. More...
 
size_t gettotalsize_h2matrix (pch2matrix h2)
 Get total size of a given h2matrix object, including cluster bases. More...
 
size_t getnearsize_h2matrix (pch2matrix h2)
 Get size of the nearfield part of a given h2matrix object. More...
 
size_t getfarsize_h2matrix (pch2matrix h2)
 Get size of the farfield part of a given h2matrix object. More...
 
void clear_h2matrix (ph2matrix h2)
 Set an h2matrix to zero by clearing all far- and nearfield matrices. More...
 
void scale_h2matrix (field alpha, ph2matrix h2)
 Scale an h2matrix by a factor. More...
 
void random_h2matrix (ph2matrix h2)
 Fill an h2matrix with random coefficients. More...
 
ph2matrix build_from_block_h2matrix (pcblock b, pclusterbasis rb, pclusterbasis cb)
 Build an h2matrix object from a block tree using given cluster bases. More...
 
pblock build_from_h2matrix_block (pch2matrix G)
 Build an block tree from an h2matrix. More...
 
ph2matrixenumerate_h2matrix (ph2matrix h2)
 Enumerate h2matrix according to block tree. More...
 
void iterate_h2matrix (ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrix_callback_t pre, h2matrix_callback_t post, void *data)
 Iterate through all submatrices of an h2matrix. More...
 
void iterate_rowlist_h2matrix (ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrixlist_callback_t pre, h2matrixlist_callback_t post, void *data)
 Iterate through all submatrices of an h2matrix, collecting all row blocks in an h2matrixlist object. More...
 
void iterate_collist_h2matrix (ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrixlist_callback_t pre, h2matrixlist_callback_t post, void *data)
 Iterate through all submatrices of an h2matrix, collecting all column blocks in an h2matrixlist object. More...
 
void iterate_byrow_h2matrix (ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrix_callback_t pre, h2matrix_callback_t post, void *data)
 Iterate through all submatrices of an h2matrix. More...
 
void iterate_bycol_h2matrix (ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrix_callback_t pre, h2matrix_callback_t post, void *data)
 Iterate through all submatrices of an h2matrix. More...
 
void mvm_h2matrix_avector (field alpha, bool h2trans, pch2matrix h2, pcavector x, pavector y)
 Matrix-vector multiplication $y \gets y + \alpha A x$ or $y \gets y + \alpha A^* x$. More...
 
void fastaddeval_h2matrix_avector (field alpha, pch2matrix h2, pavector xt, pavector yt)
 Interaction phase of the matrix-vector multiplication. More...
 
void addeval_h2matrix_avector (field alpha, pch2matrix h2, pcavector x, pavector y)
 Matrix-vector multiplication $y \gets y + \alpha A x$. More...
 
void fastaddevaltrans_h2matrix_avector (field alpha, pch2matrix h2, pavector xt, pavector yt)
 Interaction phase of the adjoint matrix-vector multiplication. More...
 
void addevaltrans_h2matrix_avector (field alpha, pch2matrix h2, pcavector x, pavector y)
 Adjoint matrix-vector multiplication $y \gets y + \alpha A^* x$. More...
 
void addevalsymm_h2matrix_avector (field alpha, pch2matrix h2, pcavector x, pavector y)
 Symmetric matrix-vector multiplication, $y \gets y + \alpha A x$, where $A$ is assumed to be self-adjoint and only its lower triangular part is used. More...
 
void fastaddmul_h2matrix_amatrix_amatrix (field alpha, bool atrans, pch2matrix A, pcamatrix Bt, pamatrix Ct)
 Interaction phase of the h2matrix - amatrix multiplication. More...
 
void addmul_h2matrix_amatrix_amatrix (field alpha, bool atrans, pch2matrix A, bool btrans, pcamatrix B, pamatrix C)
 Matrix multiplication $ C \gets C + \alpha A B $, $ C \gets C + \alpha A^* B $, $ C \gets C + \alpha A B^* $ or $ C \gets C + \alpha A^* B^* $. More...
 
void addmul_amatrix_h2matrix_amatrix (field alpha, bool atrans, pcamatrix A, bool btrans, pch2matrix B, pamatrix C)
 Matrix multiplication $ C \gets C + \alpha A B $, $ C \gets C + \alpha A^* B $, $ C \gets C + \alpha A B^* $ or $ C \gets C + \alpha A^* B^* $. More...
 
void collectdense_h2matrix (pcamatrix a, pcclusterbasis rb, pcclusterbasis cb, pamatrix s)
 Compute $S \gets V_t^* A W_s$. More...
 
void project_amatrix_h2matrix (ph2matrix h2, pcamatrix a)
 Compute the best approximation of a given matrix $A$ with respect to an $\mathcal{H}^2$-matrix space. More...
 
void project_hmatrix_h2matrix (ph2matrix h2, phmatrix h)
 Compute the best approximation of a given matrix $A$ with respect to an $\mathcal{H}^2$-matrix space. More...
 
real norm2_h2matrix (pch2matrix H2)
 Approximate the spectral norm $\|H\|_2$ of a matrix $H$. More...
 
real norm2diff_h2matrix (pch2matrix a, pch2matrix b)
 Approximate the spectral norm $\|A-B\|_2$ of the difference of two matrices $A$ and $B$. More...
 
void write_cdf_h2matrix (pch2matrix G, const char *name)
 Write h2matrix to NetCDF file. More...
 
void write_cdfpart_h2matrix (pch2matrix G, int nc_file, const char *prefix)
 Write h2matrix to part of a NetCDF file. More...
 
ph2matrix read_cdf_h2matrix (const char *name, pclusterbasis rb, pclusterbasis cb)
 Read h2matrix from NetCDF file. More...
 
ph2matrix read_cdfpart_h2matrix (int nc_file, const char *prefix, pclusterbasis rb, pclusterbasis cb)
 Read h2matrix from part of a NetCDF file. More...
 
void write_cdfcomplete_h2matrix (pch2matrix G, const char *name)
 Write h2matrix to NetCDF file, including cluster trees and cluster bases. More...
 
ph2matrix read_cdfcomplete_h2matrix (const char *name)
 Read h2matrix from NetCDF file, including cluster trees and cluster bases. More...
 
void draw_cairo_h2matrix (cairo_t *cr, pch2matrix G, bool storage, uint levels)
 Draw a h2matrix to a cairo surface. More...
 
uint getrows_h2matrix (pch2matrix h2)
 Get the number of rows of an h2matrix $G$. More...
 
uint getcols_h2matrix (pch2matrix h2)
 Get the number of columns of an h2matrix $G$. More...
 

Detailed Description

Author
Steffen Börm