211 const real *ny,
void *data);
234 typedef void (*kernel_simd_func3d)(
const vreal *x,
const vreal *y,
235 const vreal *nx,
const vreal *ny,
void *data, vreal *res_re, vreal *res_im);
237 typedef void (*kernel_simd_wave_func3d)(
const vreal *x,
const vreal *y,
238 const vreal *nx,
const vreal *ny,
pcreal dir,
void *data, vreal *res_re,
976 void (*dnz_kernel_row)(
const uint *idx,
const real (*Z)[3],
1010 void (*dnz_kernel_col)(
const uint *idx,
const real (*Z)[3],
1093 void (*dnz_fundamental_row)(
const uint *idx,
const real (*Z)[3],
1123 void (*dnz_fundamental_col)(
const uint *idx,
const real (*Z)[3],
1528 assemble_cc_simd_near_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1529 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1563 assemble_cc_simd_far_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1564 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1596 assemble_cl_simd_near_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1597 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1632 assemble_cl_simd_far_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1633 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1665 assemble_lc_simd_near_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1666 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1701 assemble_lc_simd_far_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1702 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1733 assemble_ll_simd_near_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1734 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1768 assemble_ll_simd_far_bem3d(
const uint * ridx,
const uint * cidx,
pcbem3d bem,
1769 bool ntrans,
pamatrix N, kernel_simd_func3d kernel);
1869 fill_row_simd_c_bem3d(
const uint * idx,
const real (*Z)[3],
pcbem3d bem,
1870 pamatrix V, kernel_simd_func3d kernel);
1904 fill_col_simd_c_bem3d(
const uint * idx,
const real (*Z)[3],
pcbem3d bem,
1905 pamatrix V, kernel_simd_func3d kernel);
2001 fill_dnz_row_simd_c_bem3d(
const uint * idx,
const real (*Z)[3],
2038 fill_dnz_col_simd_c_bem3d(
const uint * idx,
const real (*Z)[3],
2142 bool coarsen,
real accur_coarsen);
field(* boundary_func3d)(const real *x, const real *n, void *data)
Definition: bem3d.h:197
pamatrix build_bem3d_amatrix(pccluster row, pccluster col, void *data)
For a block defined by row and col this function will compute the full submatrix and return an amatri...
real normL2_l_bem3d(pbem3d bem, pavector x)
Compute the -norm of some given function in terms of a piecewise linear basis .
Substructure containing callback functions to different types of kernel evaluations.
Definition: bem3d.h:768
void assemble_bem3d_dh2matrix_ortho_row_dclusterbasis(pcbem3d bem, pdclusterbasis rb, pdclusteroperator ro)
Function for filling a directional row cluster basis with orthogonal matrices.
void assemblehiercomp_bem3d_h2matrix(pbem3d bem, pblock b, ph2matrix G)
Fills an h2matrix with a predefined approximation technique using hierarchical recompression.
void setup_hmatrix_aprx_hca_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, real accur)
Approximate matrix block with hybrid cross approximation using Interpolation and ACA with full pivoti...
const kernelbem3d * pckernelbem3d
Definition: bem3d.h:132
pbem3d new_bem3d(pcsurface3d gr, basisfunctionbem3d row_basis, basisfunctionbem3d col_basis)
Main constructor for bem3d objects.
void setup_hmatrix_aprx_greenhybrid_row_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, uint l, real delta, real accur, quadpoints3d quadpoints)
creating hmatrix approximation using green's method with row cluster connected with recompression tec...
void assemble_lc_far_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise linear basis functions for Tes...
void projectL2_bem3d_c_avector(pbem3d bem, boundary_func3d f, pavector w, void *data)
Computes the -projection of a given function using piecewise constant basis functions over the bounda...
void setup_hmatrix_aprx_green_col_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, uint l, real delta, quadpoints3d quadpoints)
creating hmatrix approximation using green's method with column cluster .
void assemble_bem3d_dh2matrix_row_dclusterbasis(pcbem3d bem, pdclusterbasis rb)
This function computes the matrix entries for the nested dclusterbasis .
Enum value to represent piecewise linear basis functions.
Definition: bem3d.h:175
Definition: realavector.h:48
void integrate_bem3d_c_avector(pbem3d bem, boundary_func3d f, pavector w, void *data)
Computes the integral of a given function using piecewise constant basis functions over the boundary ...
void integrate_bem3d_l_avector(pbem3d bem, boundary_func3d f, pavector w, void *data)
Computes the integral of a given function using piecewise linear basis functions over the boundary of...
tri_list * ptri_list
Definition: bem3d.h:260
pvert_list new_vert_list(pvert_list next)
Create a new list to store a number of vertex indices.
basisfunctionbem3d col_basis
Type of basis function for dirichlet-data.
Definition: bem3d.h:317
void(* nearfield_far)(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N)
Computes nearfield entries of Galkerin matrices for disjoint clusters.
Definition: bem3d.h:405
void setup_hmatrix_aprx_inter_col_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m)
This function initializes the bem3d object for approximating a matrix with tensorinterpolation within...
void(* farfield_u)(uint rname, uint cname, uint bname, pcbem3d bem)
Computes coupling matrix for uniform matrices.
Definition: bem3d.h:453
pkernelbem3d kernels
A collection of callback functions for different types of kernel evaluations.
Definition: bem3d.h:748
void assemble_bem3d_lagrange_l_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V)
This function will integrate Lagrange polynomials on the boundary domain using linear basis function ...
void setup_dh2matrix_aprx_inter_bem3d(pbem3d bem, pcdclusterbasis rb, pcdclusterbasis cb, pcdblock tree, uint m)
Initialize the bem3d object for an interpolation based -matrix approximation.
void fill_wave_bem3d(pcbem3d bem, const real(*X)[3], const real(*Y)[3], const real(*NX)[3], const real(*NY)[3], pamatrix V, pcreal dir, kernel_wave_func3d kernel)
Evaluate a modified kernel function at some points and for some direction .
void(* transfer_col)(uint cname, pcbem3d bem)
Computes the transfer matrices for a cluster .
Definition: bem3d.h:652
pclustergeometry build_bem3d_clustergeometry(pcbem3d bem, uint **idx, basisfunctionbem3d basis)
Creates a clustergeometry object for a BEM-Problem using the type of basis functions specified by bas...
void fill_dnz_col_c_bem3d(const uint *idx, const real(*Z)[3], const real(*N)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a normal derivative of a kernel function with respect to on the bounda...
void assemble_bem3d_lagrange_wave_c_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V)
This function will integrate modified Lagrange polynomials on the boundary domain using piecewise con...
void build_bem3d_curl_sparsematrix(pcbem3d bem, psparsematrix *C0, psparsematrix *C1, psparsematrix *C2)
Set up the surface curl operator.
struct _parbem3d parbem3d
Definition: bem3d.h:107
void assemble_ll_near_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise linear basis functions for bot...
void assemble_bem3d_lagrange_c_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V)
This function will integrate Lagrange polynomials on the boundary domain using piecewise constant bas...
Simple singly connected list to efficiently store a list of vertices.
Definition: bem3d.h:1323
void assemble_bem3d_amatrix(pbem3d bem, pamatrix G)
Assemble a dense matrix for some boundary integral operator given by bem.
Representation of -matrices.
Definition: h2matrix.h:48
field(* kernel_wave_func3d)(const real *x, const real *y, const real *nx, const real *ny, pcreal dir, void *data)
Evaluate a modified fundamental solution or its normal derivatives at points x and y...
Definition: bem3d.h:230
real * mass
Mass-matrix of reference basis functions.
Definition: bem3d.h:327
void projectL2_bem3d_l_avector(pbem3d bem, boundary_func3d f, pavector w, void *data)
Computes the -projection of a given function using linear basis functions over the boundary of a doma...
basisfunctionbem3d row_basis
Type of basis function for neumann-data.
Definition: bem3d.h:312
void setup_hmatrix_aprx_greenhybrid_mixed_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, uint l, real delta, real accur, quadpoints3d quadpoints)
creating hmatrix approximation using green's method with row or column cluster connected with recompr...
void assemble_cc_far_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise constant basis functions for b...
Representation of -matrices.
Definition: hmatrix.h:49
void assemble_bem3d_dh2matrix_recomp_both_dclusterbasis(pcbem3d bem, pdclusterbasis rb, pdclusteroperator bro, pdclusterbasis cb, pdclusteroperator bco, pcdblock broot)
Function for filling both directional cluster bases with orthogonal matrices.
Representation of a cluster basis.
Definition: clusterbasis.h:40
void assemble_ll_far_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise linear basis functions for bot...
void assemble_bem3d_lagrange_amatrix(const real(*X)[3], pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V)
This function will evaluate the Lagrange polynomials in a given point set X and store the results in ...
void fill_bem3d(pcbem3d bem, const real(*X)[3], const real(*Y)[3], const real(*NX)[3], const real(*NY)[3], pamatrix V, kernel_func3d kernel)
Evaluate a kernel function at some points and .
unsigned uint
Unsigned integer type.
Definition: settings.h:70
void fill_col_l_bem3d(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a kernel function on the boundary domain in the second argument using p...
void assemble_bem3d_dn_lagrange_l_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V)
This function will integrate the normal derivatives of the Lagrange polynomials on the boundary domai...
pcsurface3d gr
Polyedric 3 dimensional surface mesh.
Definition: bem3d.h:297
void(* quadpoints3d)(pcbem3d bem, const real bmin[3], const real bmax[3], const real delta, real(**Z)[3], real(**N)[3])
Callback function type for parameterizations.
Definition: bem3d.h:153
void assemble_bem3d_h2matrix(pbem3d bem, ph2matrix G)
Fills a h2matrix with a predefined approximation technique.
ptri_list new_tri_list(ptri_list next)
Create a new list to store a number of triangles indices.
void setup_h2matrix_recomp_bem3d(pbem3d bem, bool hiercomp, real accur_hiercomp)
Enables hierarchical recompression for hmatrices.
void assemble_lc_near_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise linear basis functions for Tes...
bem3d * pbem3d
Definition: bem3d.h:79
double _Complex field
Field type.
Definition: settings.h:171
ptri_list next
Pointer to the next _tri_list element.
Definition: bem3d.h:1313
void(* transfer_row)(uint rname, pcbem3d bem)
Computes the transfer matrices for a cluster .
Definition: bem3d.h:573
pvert_list next
Pointer to the next _vert_list element.
Definition: bem3d.h:1327
pparbem3d par
Some helpers to make parallel computations possible.
Definition: bem3d.h:730
Representation of a clustergeometry object.
Definition: clustergeometry.h:45
void assemble_bem3d_dn_lagrange_wave_c_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V)
This function will integrate the normal derivatives of the modified Lagrange polynomials on the bound...
void assemble_bem3d_dn_lagrange_c_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V)
This function will integrate the normal derivatives of the Lagrange polynomials on the boundary domai...
void assemble_bem3d_dh2matrix_ortho_col_dclusterbasis(pcbem3d bem, pdclusterbasis cb, pdclusteroperator co)
Function for filling a directional column cluster basis with orthogonal matrices. ...
void setup_h2matrix_aprx_inter_bem3d(pbem3d bem, pcclusterbasis rb, pcclusterbasis cb, pcblock tree, uint m)
Initialize the bem3d object for approximating a h2matrix with tensorinterpolation.
vert_list * pvert_list
Definition: bem3d.h:270
_basisfunctionbem3d
Possible types of basis functions.
Definition: bem3d.h:163
Tree structure representing a -matrix.
Definition: dh2matrix.h:50
Dummy value, should never be used.
Definition: bem3d.h:167
parbem3d * pparbem3d
Definition: bem3d.h:111
void fill_dnz_row_c_bem3d(const uint *idx, const real(*Z)[3], const real(*N)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a normal derivative of a kernel function with respect to on the bounda...
psingquad2d sq
Quadrature rules used within BEM computation.
Definition: bem3d.h:307
void(* transfer_wave_row)(uint rname, pcbem3d bem)
Computes the transfer matrices for a cluster and directions . The father cluster is using the wave...
Definition: bem3d.h:599
void setup_vertex_to_triangle_map_bem3d(pbem3d bem)
initializes the field bem->v2t when using linear basis functions
real normL2_c_bem3d(pbem3d bem, pavector x)
Compute the -norm of some given function in terms of a piecewise constant basis .
Representation of a directional cluster operator.
Definition: dclusteroperator.h:33
void setup_hmatrix_aprx_green_mixed_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, uint l, real delta, quadpoints3d quadpoints)
creating hmatrix approximation using green's method with one of row or column cluster ...
simple singly linked list to store unsigned inter values.
Definition: bem3d.h:1290
real normL2diff_c_bem3d(pbem3d bem, pavector x, boundary_func3d f, void *data)
Compute the difference norm of some given function in terms of a piecewise constant basis and some...
This struct collects all type of quadrature formulas needed by the computation of matrix entries with...
Definition: singquad2d.h:38
void setup_hmatrix_aprx_inter_row_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m)
This function initializes the bem3d object for approximating a matrix with tensorinterpolation within...
field(* kernel_func3d)(const real *x, const real *y, const real *nx, const real *ny, void *data)
Evaluate a fundamental solution or its normal derivatives at points x and y.
Definition: bem3d.h:210
void fill_row_l_bem3d(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a kernel function on the boundary domain in the first argument using pi...
Directional block tree.
Definition: dblock.h:45
void(* transfer_wave_wave_col)(uint cname, pcbem3d bem)
Computes the transfer matrices for a cluster and directions . Both, the father cluster and sons a...
Definition: bem3d.h:712
uint t
Index of a the triangle to be stored.
Definition: bem3d.h:1306
void fill_col_c_bem3d(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a kernel function on the boundary domain in the second argument using p...
Enum value to represent piecewise constant basis functions.
Definition: bem3d.h:171
void assemble_bem3d_lagrange_wave_l_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V)
This function will integrate modified Lagrange polynomials on the boundary domain using linear basis ...
void assemble_bem3d_farfield_dh2matrix(pbem3d bem, pdh2matrix G)
Fills a dh2matrix with a predefined approximation technique.
Define different strategies used by various truncation and compression algorithms for hmatrices and h...
Definition: truncation.h:43
void assemble_cl_near_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise constant basis functions for T...
void assemble_bem3d_farfield_hmatrix(pbem3d bem, pblock b, phmatrix G)
Fills the farfield blocks of a hmatrix with a predefined approximation technique. ...
Simple singly connected list to efficiently store a list of triangles.
Definition: bem3d.h:1304
field alpha
Boundary integral operator + mass matrix.
Definition: bem3d.h:332
void(* transfer_wave_col)(uint cname, pcbem3d bem)
Computes the transfer matrices for a cluster and directions . The father cluster is using the wave...
Definition: bem3d.h:678
void assemblecoarsen_bem3d_hmatrix(pbem3d bem, pblock b, phmatrix G)
Fills a hmatrix with a predefined approximation technique using coarsening strategy.
void fill_dnz_col_l_bem3d(const uint *idx, const real(*Z)[3], const real(*N)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a normal derivative of a kernel function with respect to on the bounda...
void fill_row_c_bem3d(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a kernel function on the boundary domain in the first argument using pi...
void(* farfield_wave_u)(uint rname, uint cname, uint bname, pcbem3d bem)
Computes coupling matrix for duniform matrices for some direction .
Definition: bem3d.h:477
void(* transfer_wave_wave_row)(uint rname, pcbem3d bem)
Computes the transfer matrices for a cluster and directions . Both, the father cluster and sons a...
Definition: bem3d.h:633
void setup_dh2matrix_aprx_inter_recomp_bem3d(pbem3d bem, pcdclusterbasis rb, pcdclusterbasis cb, pcdblock tree, uint m, ptruncmode tm, real eps)
Initialize the bem3d object for an interpolation based -matrix approximation with orthogonal directio...
Representation of a triangle surface mesh.
Definition: surface3d.h:45
pclustergeometry build_bem3d_const_clustergeometry(pcbem3d bem, uint **idx)
Creates a clustergeometry object for a BEM-Problem using piecewise constant basis functions...
void assemble_bem3d_farfield_h2matrix(pbem3d bem, ph2matrix G)
Fills a h2matrix with a predefined approximation technique.
void assemble_bem3d_lagrange_wave_amatrix(const real(*X)[3], pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V)
This function will evaluate the modified Lagrange polynomials in a given point set X and store the re...
uint data
Data element to be stored. here the number of a triangle.
Definition: bem3d.h:1292
void assemble_bem3d_nearfield_h2matrix(pbem3d bem, ph2matrix G)
Fills the nearfield part of a h2matrix.
pcluster build_bem3d_cluster(pcbem3d bem, uint clf, basisfunctionbem3d basis)
Creates a clustertree for specified basis functions.
#define HEADER_PREFIX
Prefix for function declarations.
Definition: settings.h:43
double real
real floating point type.
Definition: settings.h:97
void assemble_bem3d_h2matrix_row_clusterbasis(pcbem3d bem, pclusterbasis rb)
This function computes the matrix entries for the nested clusterbasis .
void del_vert_list(pvert_list vl)
Recursively deletes a vert_list.
void setup_hmatrix_aprx_greenhybrid_col_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, uint l, real delta, real accur, quadpoints3d quadpoints)
creating hmatrix approximation using green's method with column cluster connected with recompression ...
void(* leaf_col)(uint cname, pcbem3d bem)
Computes the the matrix for a leaf cluster .
Definition: bem3d.h:534
void(* leaf_wave_row)(uint rname, pcbem3d bem)
Computes the the matrix for a leaf cluster and a direction .
Definition: bem3d.h:515
kernelbem3d * pkernelbem3d
Definition: bem3d.h:127
field kernel_const
A constant factor extracted from the kernel function to speed up quadrature.
Definition: bem3d.h:344
pclustergeometry build_bem3d_linear_clustergeometry(pcbem3d bem, uint **idx)
Creates a clustergeometry object for a BEM-Problem using linear basis functions.
pvert_list vl
a List of vertices whose basis functions are connected with this triangle and are needed within the c...
Definition: bem3d.h:1311
void(* farfield_rk)(pccluster rc, uint rname, pccluster cc, uint cname, pcbem3d bem, prkmatrix R)
Computes rank-k-approximations of a given block.
Definition: bem3d.h:428
enum _basisfunctionbem3d basisfunctionbem3d
Definition: bem3d.h:181
void assemble_bem3d_dn_lagrange_wave_l_amatrix(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V)
This function will integrate the normal derivatives of the modified Lagrange polynomials on the bound...
void assemble_bem3d_h2matrix_col_clusterbasis(pcbem3d bem, pclusterbasis cb)
This function computes the matrix entries for the nested clusterbasis .
void assemble_bem3d_dh2matrix(pbem3d bem, pdh2matrix G)
Fills a dh2matrix with a predefined approximation technique.
void assemble_cl_far_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise constant basis functions for T...
void assemble_bem3d_hmatrix(pbem3d bem, pblock b, phmatrix G)
Fills a hmatrix with a predefined approximation technique.
void setup_h2matrix_aprx_greenhybrid_bem3d(pbem3d bem, pcclusterbasis rb, pcclusterbasis cb, pcblock tree, uint m, uint l, real delta, real accur, quadpoints3d quadpoints)
Initialize the bem3d object for approximating a h2matrix with green's method and ACA based recompress...
uint v
Index of the vertex to be stored.
Definition: bem3d.h:1325
Representation of block trees.
Definition: block.h:48
plistnode * v2t
This field describes the mapping from the vertices of a geometry to the triangles they belong to...
Definition: bem3d.h:356
void(* leaf_row)(uint rname, pcbem3d bem)
Computes the the matrix for a leaf cluster .
Definition: bem3d.h:496
void setup_hmatrix_aprx_green_row_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m, uint l, real delta, quadpoints3d quadpoints)
creating hmatrix approximation using green's method with row cluster .
void del_tri_list(ptri_list tl)
Recursively deletes a tri_list.
Representation of cluster trees.
Definition: cluster.h:40
prkmatrix build_bem3d_rkmatrix(pccluster row, pccluster col, void *data)
For a block defined by row and col this function will build a rank-k-approximation and return the rkm...
void(* nearfield)(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N)
Computes nearfield entries of Galerkin matrices.
Definition: bem3d.h:380
Representation of a low-rank matrix in factorized form .
Definition: rkmatrix.h:36
void del_bem3d(pbem3d bem)
Destructor for bem3d objects.
void setup_hmatrix_recomp_bem3d(pbem3d bem, bool recomp, real accur_recomp, bool coarsen, real accur_coarsen)
Initialize the bem object for on the fly recompression techniques.
real normL2_bem3d(pbem3d bem, boundary_func3d f, void *data)
Compute the -norm of some given function f.
const bem3d * pcbem3d
Definition: bem3d.h:83
Main container object for computation of BEM related matrices and vectors.
Definition: bem3d.h:290
void setup_h2matrix_aprx_greenhybrid_ortho_bem3d(pbem3d bem, pcclusterbasis rb, pcclusterbasis cb, pcblock tree, uint m, uint l, real delta, real accur, quadpoints3d quadpoints)
Initialize the bem3d object for approximating a h2matrix with green's method and ACA based recompress...
Representation of a sparse matrix in compressed row format.
Definition: sparsematrix.h:42
void assemble_cc_near_bem3d(const uint *ridx, const uint *cidx, pcbem3d bem, bool ntrans, pamatrix N, kernel_func3d kernel)
Compute general entries of a boundary integral operator with piecewise constant basis functions for b...
Representation of a matrix as an array in column-major order.
Definition: amatrix.h:43
void setup_dh2matrix_aprx_inter_ortho_bem3d(pbem3d bem, pcdclusterbasis rb, pcdclusterbasis cb, pcdblock tree, uint m)
Initialize the bem3d object for an interpolation based -matrix approximation with orthogonal directio...
void assemble_bem3d_dh2matrix_col_dclusterbasis(pcbem3d bem, pdclusterbasis cb)
This function computes the matrix entries for the nested dclusterbasis .
void fill_dnz_row_l_bem3d(const uint *idx, const real(*Z)[3], const real(*N)[3], pcbem3d bem, pamatrix V, kernel_func3d kernel)
This function will integrate a normal derivative of a kernel function with respect to on the bounda...
const parbem3d * pcparbem3d
Definition: bem3d.h:115
void(* leaf_wave_col)(uint cname, pcbem3d bem)
Computes the the matrix for a leaf cluster and a direction .
Definition: bem3d.h:554
void setup_hmatrix_aprx_inter_mixed_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, uint m)
This function initializes the bem3d object for approximating a matrix with tensorinterpolation within...
void build_bem3d_cube_quadpoints(pcbem3d bem, const real a[3], const real b[3], const real delta, real(**Z)[3], real(**N)[3])
Generating quadrature points, weights and normal vectors on a cube parameterization.
aprxbem3d * paprxbem3d
Definition: bem3d.h:96
void assemble_bem3d_nearfield_hmatrix(pbem3d bem, pblock b, phmatrix G)
Fills the nearfield blocks of a hmatrix.
paprxbem3d aprx
A collection of necessary data structures for approximating matrices with various techniques...
Definition: bem3d.h:721
struct _aprxbem3d aprxbem3d
Definition: bem3d.h:92
void assemble_bem3d_nearfield_dh2matrix(pbem3d bem, pdh2matrix G)
Fills the nearfield part of a dh2matrix.
plistnode next
Pointer to the next _listnode element.
Definition: bem3d.h:1294
void setup_hmatrix_aprx_aca_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, real accur)
Approximate matrix block with ACA using full pivoting.
Representation of a directional cluster basis.
Definition: dclusterbasis.h:45
const aprxbem3d * pcaprxbem3d
Definition: bem3d.h:100
field k
Wavenumber for Helmholtz type problems, possibly complex valued.
Definition: bem3d.h:338
listnode * plistnode
Definition: bem3d.h:250
real normL2diff_l_bem3d(pbem3d bem, pavector x, boundary_func3d f, void *data)
Compute the difference norm of some given function in terms of a piecewise linear basis and some o...
void setup_hmatrix_aprx_paca_bem3d(pbem3d bem, pccluster rc, pccluster cc, pcblock tree, real accur)
Approximate matrix block with ACA using partial pivoting.
const real * pcreal
Pointer to constant real array.
Definition: settings.h:148