H2Lib  3.0
Data Fields
_kernelbem2d Struct Reference

Substructure containing callback functions to different types of kernel evaluations. More...

#include <bem2d.h>

Data Fields

void(* fundamental )(const real(*X)[2], const real(*Y)[2], pamatrix V)
 Evaluate the fundamental solution at given point sets X and Y More...
 
void(* dny_fundamental )(const real(*X)[2], const real(*Y)[2], const real(*NY)[2], 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 )(const real(*X)[2], const real(*NX)[2], const real(*Y)[2], const real(*NY)[2], 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)[2], pcbem2d bem, pamatrix A)
 Integrate the kernel function within the 1st component. More...
 
void(* kernel_col )(const uint *idx, const real(*Z)[2], pcbem2d bem, pamatrix B)
 Integrate the kernel function within the 2nd component. More...
 
void(* dnz_kernel_row )(const uint *idx, const real(*Z)[2], const real(*NZ)[2], pcbem2d 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)[2], const real(*NZ)[2], pcbem2d 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)[2], pcbem2d bem, pamatrix A)
 Integrate the fundamental solution within the 1st component. More...
 
void(* fundamental_col )(const uint *idx, const real(*Z)[2], pcbem2d bem, pamatrix B)
 Integrate the fundamental solution within the 2nd component. More...
 
void(* dnz_fundamental_row )(const uint *idx, const real(*Z)[2], const real(*NZ)[2], pcbem2d 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)[2], const real(*NZ)[2], pcbem2d 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, pcavector px, pcavector py, pcbem2d bem, pamatrix V)
 Integrate the Lagrange polynomials or their derivatives within the 1st component. More...
 
void(* lagrange_col )(const uint *idx, pcavector px, pcavector py, pcbem2d bem, pamatrix W)
 Integrate the Lagrange polynomials or their derivatives within the 2nd component. More...
 

Detailed Description

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:

\[ g : \mathbb R^2 \times \mathbb R^2 \to \mathbb K \]

In many application the field $ \mathbb K $ will just be the field of the real number $ \mathbb R $ , as in the laplace-problem. But it can also be the complex field $ \mathbb C $ as in the helmholtz-equation or a vector valued function as in the lame-problem.

Field Documentation

void(* dnx_dny_fundamental) (const real(*X)[2], const real(*NX)[2], const real(*Y)[2], const real(*NY)[2], 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 $ g $ corresponding to $ x $ and $ y $ at points $ x_i, y_j \in \mathbb R^2 $ and store the result into matrix V at position $ V_{ij} $ .

Parameters
XAn array of 2D-vectors. X[i][0] will be the first component of the i-th vector. Analogously X[i][1] will be the second component of the i-th vector. The length of this array is determined by V->rows .
NXAn array of normal vectors correspoding to the vectors defined by X and are stored in the same way as X and Y.
YAn array of 2D-vectors. Y[i][0] will be the first component of the i-th vector. Analogously Y[i][1] will be the second component of the i-th vector. The length of this array is determined by V->cols .
NYAn array of normal vectors correspoding to the vectors defined by Y and are stored in the same way as X and Y.
VV will contain the results of the kernel evaluations. It applies

\[ V_{ij} = \frac{\partial^2 g}{\partial n_x \partial n_y}(\vec x_i, \vec y_j) . \]

void(* dny_fundamental) (const real(*X)[2], const real(*Y)[2], const real(*NY)[2], 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 $ g $ corresponding to $ y $ at points $ x_i, y_j \in \mathbb R^2 $ and store the result into matrix V at position $ V_{ij} $ .

Parameters
XAn array of 2D-vectors. X[i][0] will be the first component of the i-th vector. Analogously X[i][1] will be the second component of the i-th vector. The length of this array is determined by V->rows .
YAn array of 2D-vectors. Y[i][0] will be the first component of the i-th vector. Analogously Y[i][1] will be the second component of the i-th vector. The length of this array is determined by V->cols .
NYAn array of normal vectors correspoding to the vectors defined by Y and are stored in the same way as X and Y.
VV will contain the results of the kernel evaluations. It applies

\[ V_{ij} = \frac{\partial g}{\partial n_y}(\vec x_i, \vec y_j) . \]

void(* dnz_fundamental_col) (const uint *idx, const real(*Z)[2], const real(*NZ)[2], pcbem2d 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

\[ \int_\Gamma \frac{\partial g}{\partial n_z} (\vec z, \vec y) \, \psi(\vec y) \, \mathrm d \vec y \]

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{B->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by B->cols .
NZAn array Normal vectors corresponding to the vectors Z.
bemBEM-object containing additional information for computation of the matrix entries.
BB will contain the results of the integral evaluations. It applies

\[ B_{ij} = \int_\Gamma \frac{\partial g}{\partial n_z} (\vec z_j, \vec y) \, \psi_i(\vec y) \, \mathrm d \vec y . \]

void(* dnz_fundamental_row) (const uint *idx, const real(*Z)[2], const real(*NZ)[2], pcbem2d 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

\[ \int_\Gamma \varphi(\vec x) \, \frac{\partial g}{\partial n_z} (\vec x, \vec z) \, \mathrm d \vec x \]

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{A->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by A->cols .
NZAn array Normal vectors corresponding to the vectors Z.
bemBEM-object containing additional information for computation of the matrix entries.
AA will contain the results of the integral evaluations. It applies

\[ A_{ij} = \int_\Gamma \varphi_i(\vec x) \, \frac{\partial g}{\partial n_z} (\vec x, \vec z_j) \, \mathrm d \vec x . \]

void(* dnz_kernel_col) (const uint *idx, const real(*Z)[2], const real(*NZ)[2], pcbem2d 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

\[ \int_\Gamma \frac{\partial \gamma}{\partial n_z} (\vec z, \vec y) \, \psi(\vec y) \, \mathrm d \vec y \]

with $ \gamma $ being a kernel function depending on a specific integral operator. In case of the single layer potential it applies $ \gamma = g $ . But in case of the double layer potential e.g. it applies $ \gamma = \frac{\partial g}{\partial n_y} $ .

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{B->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by B->cols .
NZAn array Normal vectors corresponding to the vectors Z.
bemBEM-object containing additional information for computation of the matrix entries.
BB will contain the results of the integral evaluations. It applies

\[ B_{ij} = \int_\Gamma \frac{\partial \gamma}{\partial n_z} (\vec z_j, \vec y) \, \psi_i(\vec y) \, \mathrm d \vec y . \]

void(* dnz_kernel_row) (const uint *idx, const real(*Z)[2], const real(*NZ)[2], pcbem2d 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

\[ \int_\Gamma \varphi(\vec x) \, \frac{\partial \gamma}{\partial n_z} (\vec x, \vec z) \, \mathrm d \vec x \]

with $ \gamma $ being a kernel function depending on a specific integral operator. In case of the single layer potential it applies $ \gamma = g $ . But in case of the double layer potential e.g. it applies $ \gamma = \frac{\partial g}{\partial n_y} $ .

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{A->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by A->cols .
NZAn array Normal vectors corresponding to the vectors Z.
bemBEM-object containing additional information for computation of the matrix entries.
AA will contain the results of the integral evaluations. It applies

\[ A_{ij} = \int_\Gamma \varphi_i(\vec x) \, \frac{\partial \gamma}{\partial n_z} (\vec x, \vec z_j) \, \mathrm d \vec x . \]

void(* fundamental) (const real(*X)[2], const real(*Y)[2], pamatrix V)

Evaluate the fundamental solution at given point sets X and Y

This callback will evaluate the fundamental solution $ g $ at points $ x_i, y_j \in \mathbb R^2 $ and store the result into matrix V at position $ V_{ij} $ .

Parameters
XAn array of 2D-vectors. X[i][0] will be the first component of the i-th vector. Analogous X[i][1] will be the second component of the i-th vector. The length of this array is determined by V->rows .
YAn array of 2D-vectors. Y[i][0] will be the first component of the i-th vector. Analogous Y[i][1] will be the second component of the i-th vector. The length of this array is determined by V->cols .
VV will contain the results of the kernel evaluations. It applies

\[ V_{ij} = g(\vec x_i, \vec y_j) . \]

void(* fundamental_col) (const uint *idx, const real(*Z)[2], pcbem2d bem, pamatrix B)

Integrate the fundamental solution within the 2nd component.

This callback will evaluate the integral

\[ \int_\Gamma g(\vec z, \vec y) \, \psi(\vec y) \, \mathrm d \vec y \]

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{B->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by B->cols .
bemBEM-object containing additional information for computation of the matrix entries.
BB will contain the results of the integral evaluations. It applies

\[ B_{ij} = \int_\Gamma g(\vec z_j, \vec y) \, \psi_i(\vec y) \, \mathrm d \vec y . \]

void(* fundamental_row) (const uint *idx, const real(*Z)[2], pcbem2d bem, pamatrix A)

Integrate the fundamental solution within the 1st component.

This callback will evaluate the integral

\[ \int_\Gamma \varphi(\vec x) \, g(\vec x, \vec z) \, \mathrm d \vec x \]

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{A->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by A->cols .
bemBEM-object containing additional information for computation of the matrix entries.
AA will contain the results of the integral evaluations. It applies

\[ A_{ij} = \int_\Gamma \varphi_i(\vec x) \, g(\vec x, \vec z_j) \, \mathrm d \vec x . \]

void(* kernel_col) (const uint *idx, const real(*Z)[2], pcbem2d bem, pamatrix B)

Integrate the kernel function within the 2nd component.

This callback will evaluate the integral

\[ \int_\Gamma \gamma(\vec z, \vec y) \, \psi(\vec y) \, \mathrm d \vec y \]

with $ \gamma $ being a kernel function depending on a specific integral operator. In case of the single layer potential it applies $ \gamma = g $ . But in case of the double layer potential e.g. it applies $ \gamma = \frac{\partial g}{\partial n_y} $ .

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{B->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by B->cols .
bemBEM-object containing additional information for computation of the matrix entries.
BB will contain the results of the integral evaluations. It applies

\[ B_{ij} = \int_\Gamma \gamma(\vec z_j, \vec y) \, \psi_i(\vec y) \, \mathrm d \vec y . \]

void(* kernel_row) (const uint *idx, const real(*Z)[2], pcbem2d bem, pamatrix A)

Integrate the kernel function within the 1st component.

This callback will evaluate the integral

\[ \int_\Gamma \varphi(\vec x) \, \gamma(\vec x, \vec z) \, \mathrm d \vec x \]

with $ \gamma $ being a kernel function depending on a specific integral operator. In case of the single layer potential it applies $ \gamma = g $ . But in case of the double layer potential e.g. it applies $ \gamma = \frac{\partial g}{\partial n_y} $ .

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{A->rows} -1 $ instead.
ZAn array of 2D-vectors. Z[i][0] will be the first component of the i-th vector. Analogously Z[i][1] will be the second component of the i-th vector. The length of this array is determined by A->cols .
bemBEM-object containing additional information for computation of the matrix entries.
AA will contain the results of the integral evaluations. It applies

\[ A_{ij} = \int_\Gamma \varphi_i(\vec x) \, \gamma(\vec x, \vec z_j) \, \mathrm d \vec x . \]

void(* lagrange_col) (const uint *idx, pcavector px, pcavector py, pcbem2d bem, pamatrix W)

Integrate the Lagrange polynomials or their derivatives within the 2nd component.

This callback will evaluate the integral

\[ \int_\Gamma \mathcal L(\vec y) \, \psi(\vec y) \, \mathrm d \vec y \]

with $ \mathcal L $ being a Lagrange polynomial or its derivative.

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{W->rows} -1 $ instead.
pxA Vector of type avector that contains interpolation points in x-direction.
pyA Vector of type avector that contains interpolation points in y-direction.
bemBEM-object containing additional information for computation of the matrix entries.
WW will contain the results of the integral evaluations. It applies

\[ W_{ij} = \int_\Gamma \mathcal L_j(\vec y) \, \psi_i(\vec y) \, \mathrm d \vec y . \]

The index $ j $ is computed in a tensor way. Having $ m_x $ Points in x-direction and $ m_y $ Points in y-direction, then using the $ j_x $ -th and the the $ j_y $ -th point will result in matrix index $ j = j_x + j_y \cdot m_x $ .
void(* lagrange_row) (const uint *idx, pcavector px, pcavector py, pcbem2d bem, pamatrix V)

Integrate the Lagrange polynomials or their derivatives within the 1st component.

This callback will evaluate the integral

\[ \int_\Gamma \varphi(\vec x) \, \mathcal L(\vec x) \, \mathrm d \vec x \]

with $ \mathcal L $ being a Lagrange polynomial or its derivative.

Parameters
idxThis 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 $ 0, 1, \ldots , \texttt{V->rows} -1 $ instead.
pxA Vector of type avector that contains interpolation points in x-direction.
pyA Vector of type avector that contains interpolation points in y-direction.
bemBEM-object containing additional information for computation of the matrix entries.
VV will contain the results of the integral evaluations. It applies

\[ V_{ij} = \int_\Gamma \varphi_i(\vec x) \, \mathcal L_j(\vec x) \, \mathrm d \vec x . \]

The index $ j $ is computed in a tensor way. Having $ m_x $ Points in x-direction and $ m_y $ Points in y-direction, then using the $ j_x $ -th and the $ j_y $ -th point will result in matrix index $ j = j_x + j_y \cdot m_x $ .

The documentation for this struct was generated from the following file: