Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 10/31/2024
Public
Document Table of Contents

Parameters That Define Boundary Conditions

Poisson Solver routines for the Cartesian solver use the following common parameters to define the boundary conditions.

Parameters to Define Boundary Conditions for the Cartesian Solver

Parameter

Description

bd_ax

double* for d_commit_Helmholtz_2D/d_commit_Helmholtz_3D and d_Helmholtz_2D/d_Helmholtz_3D,

float* for s_commit_Helmholtz_2D/s_commit_Helmholtz_3D and s_Helmholtz_2D/s_Helmholtz_3D.

Contains values of the boundary condition on the leftmost boundary of the domain along the x-axis.

  • 2D problem: the size of the array is ny+1. Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[0] is 'D'): values of the function G(ax, yj), j=0, ..., ny.

    • Neumann boundary condition (value of BCtype[0] is 'N'): values of the function g(ax, yj), j=0, ..., ny.

    The value corresponding to the index j is placed in bd_ax[j].

  • 3D problem: the size of the array is (ny+1)*(nz+1). Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[0] is 'D'): values of the function G(ax, yj, zk), j=0, ..., ny, k=0, ..., nz.

    • Neumann boundary condition (value of BCtype[0] is 'N'): the values of the function g(ax, yj, zk), j=0, ..., ny, k=0, ..., nz.

    The values are packed in the array so that the value corresponding to indices (j, k) is placed in bd_ax[j+k*(ny+1)].

For periodic boundary conditions (the value of BCtype[0] is 'P'), this parameter is not used, so it can accept a dummy pointer.

bd_bx

double* for d_commit_Helmholtz_2D/d_commit_Helmholtz_3D and d_Helmholtz_2D/d_Helmholtz_3D,

float* for s_commit_Helmholtz_2D/s_commit_Helmholtz_3D and s_Helmholtz_2D/s_Helmholtz_3D.

Contains values of the boundary condition on the rightmost boundary of the domain along the x-axis.

  • 2D problem: the size of the array is ny+1. Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[1] is 'D'): values of the function G(bx, yj), j=0, ..., ny.

    • Neumann boundary condition (value of BCtype[1] is 'N'): values of the function g(bx, yj), j=0, ..., ny.

    The value corresponding to the index j is placed in bd_bx[j].

  • 3D problem: the size of the array is (ny+1)*(nz+1). Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[1] is 'D'): values of the function G(bx, yj, zk), j=0, ..., ny, k=0, ..., nz.

    • Neumann boundary condition (value of BCtype[1] is 'N'): values of the function g(bx, yj, zk), j=0, ..., ny, k=0, ..., nz.

    The values are packed in the array so that the value corresponding to indices (j, k) is placed in bd_bx[j+k*(ny+1)].

For periodic boundary conditions (the value of BCtype[1] is 'P'), this parameter is not used, so it can accept a dummy pointer.

bd_ay

double* for d_commit_Helmholtz_2D/d_commit_Helmholtz_3D and d_Helmholtz_2D/d_Helmholtz_3D,

float* for s_commit_Helmholtz_2D/s_commit_Helmholtz_3D and s_Helmholtz_2D/s_Helmholtz_3D.

Contains values of the boundary condition on the leftmost boundary of the domain along the y-axis.

  • 2D problem: the size of the array is nx+1. Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[2] is 'D'): values of the function G(xi, ay), i=0, ..., nx.

    • Neumann boundary condition (value of BCtype[2] is 'N'): values of the function g(xi, ay), i=0, ..., nx.

    The value corresponding to the index i is placed in bd_ay[i].

  • 3D problem: the size of the array is (nx+1)*(nz+1). Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[2] is 'D'): values of the function G(xi,ay, zk), i=0, ..., nx, k=0, ..., nz.

    • Neumann boundary condition (value of BCtype[2] is 'N'): values of the function g(xi,ay, zk), i=0, ..., nx, k=0, ..., nz.

    The values are packed in the array so that the value corresponding to indices (i, k) is placed in bd_ay[i+k*(nx+1)].

For periodic boundary conditions (the value of BCtype[2] is 'P'), this parameter is not used, so it can accept a dummy pointer.

bd_by

double* for d_commit_Helmholtz_2D/d_commit_Helmholtz_3D and d_Helmholtz_2D/d_Helmholtz_3D,

float* for s_commit_Helmholtz_2D/s_commit_Helmholtz_3D and s_Helmholtz_2D/s_Helmholtz_3D.

Contains values of the boundary condition on the rightmost boundary of the domain along the y-axis.

  • 2D problem: the size of the array is nx+1. Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[3] is 'D'): values of the function G(xi, by), i=0, ..., nx.

    • Neumann boundary condition (value of BCtype[3] is 'N'): values of the function g(xi, by), i=0, ..., nx.

    The value corresponding to the index i is placed in bd_by[i].

  • 3D problem: the size of the array is (nx+1)*(nz+1). Its contents depend on the boundary conditions as follows:

    • Dirichlet boundary condition (value of BCtype[3] is 'D'): values of the function G(xi,by, zk), i=0, ..., nx, k=0, ..., nz.

    • Neumann boundary condition (value of BCtype[3] is 'N'): values of the function g(xi,by, zk), i=0, ..., nx, k=0, ..., nz.

    The values are packed in the array so that the value corresponding to indices (i, k) is placed in bd_by[i+k*(nx+1)].

For periodic boundary conditions (the value of BCtype[3] is 'P'), this parameter is not used, so it can accept a dummy pointer.

bd_az

double* for d_commit_Helmholtz_3D and d_Helmholtz_3D,

float* for s_commit_Helmholtz_3D and s_Helmholtz_3D.

Used only by ?_commit_Helmholtz_3D and ?_Helmholtz_3D. Contains values of the boundary condition on the leftmost boundary of the domain along the z-axis.

The size of the array is (nx+1)*(ny+1). Its contents depend on the boundary conditions as follows:

  • Dirichlet boundary condition (value of BCtype[4] is 'D'): values of the function G(xi, yj,az), i=0, ..., nx, j=0, ..., ny.

  • Neumann boundary condition (value of BCtype[4] is 'N'), values of the function g(xi, yj,az), i=0, ..., nx, j=0, ..., ny.

The values are packed in the array so that the value corresponding to indices (i, j) is placed in bd_az[i+j*(nx+1)].

For periodic boundary conditions (the value of BCtype[4] is 'P'), this parameter is not used, so it can accept a dummy pointer.

bd_bz

double* for d_commit_Helmholtz_3D and d_Helmholtz_3D,

float* for s_commit_Helmholtz_3D and s_Helmholtz_3D.

Used only by ?_commit_Helmholtz_3D and ?_Helmholtz_3D. Contains values of the boundary condition on the rightmost boundary of the domain along the z-axis.

The size of the array is (nx+1)*(ny+1). Its contents depend on the boundary conditions as follows:

  • Dirichlet boundary condition (value of BCtype[5] is 'D'): values of the function G(xi, yj,bz), i=0, ..., nx, j=0, ..., ny.

  • Neumann boundary condition (value of BCtype[5] is 'N'): values of the function g(xi, yj,bz), i=0, ..., nx, j=0, ..., ny.

The values are packed in the array so that the value corresponding to indices (i, j) is placed in bd_bz[i+j*(nx+1)].

For periodic boundary conditions (the value of BCtype[5] is 'P'), this parameter is not used, so it can accept a dummy pointer.