H2Lib
3.0

Substructure containing callback functions to different types of kernel evaluations. More...
#include <bem3d.h>
Data Fields  
void(*  fundamental )(pcbem3d bem, const real(*X)[3], const real(*Y)[3], pamatrix V) 
Evaluate the fundamental solution at given point sets X and Y . More...  
void(*  fundamental_wave )(pcbem3d bem, const real(*X)[3], const real(*Y)[3], pcreal dir, pamatrix V) 
Evaluate the modified fundamental solution in direction at given point sets X and Y . More...  
void(*  dny_fundamental )(pcbem3d bem, const real(*X)[3], const real(*Y)[3], const real(*NY)[3], pamatrix V) 
Evaluate the normal derivative of the fundamental solution in respect to the 2nd component at given point sets X and Y More...  
void(*  dnx_dny_fundamental )(pcbem3d bem, const real(*X)[3], const real(*NX)[3], const real(*Y)[3], const real(*NY)[3], pamatrix V) 
Evaluate the normal derivatives of the fundamental solution in respect to the 1st and 2nd component at given point sets X and Y More...  
void(*  kernel_row )(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix A) 
Integrate the kernel function within the 1st component. More...  
void(*  kernel_col )(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix B) 
Integrate the kernel function within the 2nd component. More...  
void(*  dnz_kernel_row )(const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix A) 
Integrate the normal derivative of the kernel function with respect to the 2nd component within the 1st component. More...  
void(*  dnz_kernel_col )(const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix B) 
Integrate the normal derivative of the kernel function with respect to the 1st component within the 2nd component. More...  
void(*  fundamental_row )(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix A) 
Integrate the fundamental solution within the 1st component. More...  
void(*  fundamental_col )(const uint *idx, const real(*Z)[3], pcbem3d bem, pamatrix B) 
Integrate the fundamental solution within the 2nd component. More...  
void(*  dnz_fundamental_row )(const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix A) 
Integrate the normal derivative of the fundamental solution with respect to the 2nd component within the 1st component. More...  
void(*  dnz_fundamental_col )(const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix B) 
Integrate the normal derivative of the fundamental solution with respect to the 1st component within the 2nd component. More...  
void(*  lagrange_row )(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V) 
Integrate the Lagrange polynomials or their derivatives within the 1st component. More...  
void(*  lagrange_wave_row )(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V) 
Integrate the modified Lagrange polynomials in direction or their derivatives within the 1st component. More...  
void(*  lagrange_col )(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix W) 
Integrate the Lagrange polynomials or their derivatives within the 2nd component. More...  
void(*  lagrange_wave_col )(const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix W) 
Integrate the modified Lagrange polynomials in direction or their derivatives within the 2nd component. More...  
Substructure containing callback functions to different types of kernel evaluations.
This struct consists of a set of callback function, that will evaluate the kernel, its derivatives or integrals over the kernel and / or its derivatives. Of course they depend on an appropriate problem to be solved. The kernel function will be a function of the following form:
In many application the field will just be the field of the real number , as in the laplaceproblem. But it can also be the complex field as in the helmholtzequation or a vector valued function as in the lameproblem.
void(* dnx_dny_fundamental) (pcbem3d bem, const real(*X)[3], const real(*NX)[3], const real(*Y)[3], const real(*NY)[3], pamatrix V) 
Evaluate the normal derivatives of the fundamental solution in respect to the 1st and 2nd component at given point sets X
and Y
This callback will evaluate the normal derivatives of the fundamental solution corresponding to and at points and store the result into matrix V at position .
bem  BEMobject containing additional information for computation of the matrix entries. 
X  An array of 3Dvectors. X[i][0] will be the first component of the ith vector. Analogously X[i][1] will be the second component of the ith vector. The length of this array is determined by V>rows . 
NX  An array of normal vectors correspoding to the vectors defined by X and are stored in the same way as X and Y. 
Y  An array of 3Dvectors. Y[i][0] will be the first component of the ith vector. Analogously Y[i][1] will be the second component of the ith vector. The length of this array is determined by V>cols . 
NY  An array of normal vectors correspoding to the vectors defined by Y and are stored in the same way as X and Y. 
V  V will contain the results of the kernel evaluations. It applies

void(* dny_fundamental) (pcbem3d bem, const real(*X)[3], const real(*Y)[3], const real(*NY)[3], pamatrix V) 
Evaluate the normal derivative of the fundamental solution in respect to the 2nd component at given point sets X
and Y
This callback will evaluate the normal derivatives of the fundamental solution corresponding to at points and store the result into matrix V at position .
bem  BEMobject containing additional information for computation of the matrix entries. 
X  An array of 3Dvectors. X[i][0] will be the first component of the ith vector. Analogously X[i][1] will be the second component of the ith vector. The length of this array is determined by V>rows . 
Y  An array of 3Dvectors. Y[i][0] will be the first component of the ith vector. Analogously Y[i][1] will be the second component of the ith vector. The length of this array is determined by V>cols . 
NY  An array of normal vectors correspoding to the vectors defined by Y and are stored in the same way as X and Y. 
V  V will contain the results of the kernel evaluations. It applies

void(* dnz_fundamental_col) (const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix B) 
Integrate the normal derivative of the fundamental solution with respect to the 1st component within the 2nd component.
This callback will evaluate the integral
idx  This array describes the permutation of the degrees of freedom. Its length is determined by B>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by B>cols . 
NZ  An array Normal vectors corresponding to the vectors Z. 
bem  BEMobject containing additional information for computation of the matrix entries. 
B  B will contain the results of the integral evaluations. It applies

void(* dnz_fundamental_row) (const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix A) 
Integrate the normal derivative of the fundamental solution with respect to the 2nd component within the 1st component.
This callback will evaluate the integral
idx  This array describes the permutation of the degrees of freedom. Its length is determined by A>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by A>cols . 
NZ  An array Normal vectors corresponding to the vectors Z. 
bem  BEMobject containing additional information for computation of the matrix entries. 
A  A will contain the results of the integral evaluations. It applies

void(* dnz_kernel_col) (const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix B) 
Integrate the normal derivative of the kernel function with respect to the 1st component within the 2nd component.
This callback will evaluate the integral
with being a kernel function depending on a specific integral operator. In case of the single layer potential it applies . But in case of the double layer potential e.g. it applies .
idx  This array describes the permutation of the degrees of freedom. Its length is determined by B>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by B>cols . 
NZ  An array Normal vectors corresponding to the vectors Z. 
bem  BEMobject containing additional information for computation of the matrix entries. 
B  B will contain the results of the integral evaluations. It applies

void(* dnz_kernel_row) (const uint *idx, const real(*Z)[3], const real(*NZ)[3], pcbem3d bem, pamatrix A) 
Integrate the normal derivative of the kernel function with respect to the 2nd component within the 1st component.
This callback will evaluate the integral
with being a kernel function depending on a specific integral operator. In case of the single layer potential it applies . But in case of the double layer potential e.g. it applies .
idx  This array describes the permutation of the degrees of freedom. Its length is determined by A>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by A>cols . 
NZ  An array Normal vectors corresponding to the vectors Z. 
bem  BEMobject containing additional information for computation of the matrix entries. 
A  A will contain the results of the integral evaluations. It applies

Evaluate the fundamental solution at given point sets X
and Y
.
This callback will evaluate the fundamental solution at points and store the result into matrix V at position .
bem  BEMobject containing additional information for computation of the matrix entries. 
X  An array of 3Dvectors. X[i][0] will be the first component of the ith vector. Analogous X[i][1] will be the second component of the ith vector. The length of this array is determined by V>rows . 
Y  An array of 3Dvectors. Y[i][0] will be the first component of the ith vector. Analogous Y[i][1] will be the second component of the ith vector. The length of this array is determined by V>cols . 
V  V will contain the results of the kernel evaluations. It applies

Integrate the fundamental solution within the 2nd component.
This callback will evaluate the integral
idx  This array describes the permutation of the degrees of freedom. Its length is determined by B>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by B>cols . 
bem  BEMobject containing additional information for computation of the matrix entries. 
B  B will contain the results of the integral evaluations. It applies

Integrate the fundamental solution within the 1st component.
This callback will evaluate the integral
idx  This array describes the permutation of the degrees of freedom. Its length is determined by A>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by A>cols . 
bem  BEMobject containing additional information for computation of the matrix entries. 
A  A will contain the results of the integral evaluations. It applies

void(* fundamental_wave) (pcbem3d bem, const real(*X)[3], const real(*Y)[3], pcreal dir, pamatrix V) 
Evaluate the modified fundamental solution in direction at given point sets X
and Y
.
This callback will evaluate the modified fundamental solution with direction at points and store the result into matrix V at position .
bem  BEMobject containing additional information for computation of the matrix entries. 
X  An array of 3Dvectors. X[i][0] will be the first component of the ith vector. Analogous X[i][1] will be the second component of the ith vector. The length of this array is determined by V>rows . 
Y  An array of 3Dvectors. Y[i][0] will be the first component of the ith vector. Analogous Y[i][1] will be the second component of the ith vector. The length of this array is determined by V>cols . 
dir  Direction in which the modified fundamental solution should be evaluated. 
V  V will contain the results of the kernel evaluations. It applies

Integrate the kernel function within the 2nd component.
This callback will evaluate the integral
with being a kernel function depending on a specific integral operator. In case of the single layer potential it applies . But in case of the double layer potential e.g. it applies .
idx  This array describes the permutation of the degrees of freedom. Its length is determined by B>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by B>cols . 
bem  BEMobject containing additional information for computation of the matrix entries. 
B  B will contain the results of the integral evaluations. It applies

Integrate the kernel function within the 1st component.
This callback will evaluate the integral
with being a kernel function depending on a specific integral operator. In case of the single layer potential it applies . But in case of the double layer potential e.g. it applies .
idx  This array describes the permutation of the degrees of freedom. Its length is determined by A>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
Z  An array of 3Dvectors. Z[i][0] will be the first component of the ith vector. Analogously Z[i][1] will be the second component of the ith vector. The length of this array is determined by A>cols . 
bem  BEMobject containing additional information for computation of the matrix entries. 
A  A will contain the results of the integral evaluations. It applies

void(* lagrange_col) (const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix W) 
Integrate the Lagrange polynomials or their derivatives within the 2nd component.
This callback will evaluate the integral
with being a Lagrange polynomial or its derivative.
idx  This array describes the permutation of the degrees of freedom. Its length is determined by W>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
px  A Vector of type avector that contains interpolation points in xdirection. 
py  A Vector of type avector that contains interpolation points in ydirection. 
pz  A Vector of type avector that contains interpolation points in zdirection. 
bem  BEMobject containing additional information for computation of the matrix entries. 
W  W will contain the results of the integral evaluations. It applies The index is computed in a tensor way. Having Points in xdirection, Points in ydirection and Points in zdirection, then using the th, the th and the th point will result in matrix index . 
void(* lagrange_row) (const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcbem3d bem, pamatrix V) 
Integrate the Lagrange polynomials or their derivatives within the 1st component.
This callback will evaluate the integral
with being a Lagrange polynomial or its derivative.
idx  This array describes the permutation of the degrees of freedom. Its length is determined by V>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
px  A Vector of type avector that contains interpolation points in xdirection. 
py  A Vector of type avector that contains interpolation points in ydirection. 
pz  A Vector of type avector that contains interpolation points in zdirection. 
bem  BEMobject containing additional information for computation of the matrix entries. 
V  V will contain the results of the integral evaluations. It applies The index is computed in a tensor way. Having Points in xdirection, Points in ydirection and Points in zdirection, then using the th, the th and the th point will result in matrix index . 
void(* lagrange_wave_col) (const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix W) 
Integrate the modified Lagrange polynomials in direction or their derivatives within the 2nd component.
This callback will evaluate the integral
with being a Lagrange polynomial or its derivative.
idx  This array describes the permutation of the degrees of freedom. Its length is determined by W>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
px  A Vector of type avector that contains interpolation points in xdirection. 
py  A Vector of type avector that contains interpolation points in ydirection. 
pz  A Vector of type avector that contains interpolation points in zdirection. 
dir  Direction in which the modified Lagrange polynomials should be evaluated. 
bem  BEMobject containing additional information for computation of the matrix entries. 
W  W will contain the results of the integral evaluations. It applies The index is computed in a tensor way. Having Points in xdirection, Points in ydirection and Points in zdirection, then using the th, the th and the th point will result in matrix index . 
void(* lagrange_wave_row) (const uint *idx, pcrealavector px, pcrealavector py, pcrealavector pz, pcreal dir, pcbem3d bem, pamatrix V) 
Integrate the modified Lagrange polynomials in direction or their derivatives within the 1st component.
This callback will evaluate the integral
with being a Lagrange polynomial or its derivative.
idx  This array describes the permutation of the degrees of freedom. Its length is determined by V>rows . In case idx == NULL it is assumed the degrees of freedom are instead. 
px  A Vector of type avector that contains interpolation points in xdirection. 
py  A Vector of type avector that contains interpolation points in ydirection. 
pz  A Vector of type avector that contains interpolation points in zdirection. 
dir  Direction in which the modified Lagrange polynomials should be evaluated. 
bem  BEMobject containing additional information for computation of the matrix entries. 
V  V will contain the results of the integral evaluations. It applies The index is computed in a tensor way. Having Points in xdirection, Points in ydirection and Points in zdirection, then using the th, the th and the th point will result in matrix index . 