Developer Reference for Intel® oneAPI Math Kernel Library for C

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

dpar and spar

Arrays dpar and spar are the same except in the data precision:

dpar

Holds data needed for double-precision Fast Helmholtz Solver computations.

spar

Holds data needed for single-precision Fast Helmholtz Solver computations.

Because dpar and spar have similar elements in each position, the elements are described together in Table "Elements of the dpar and spar Arrays":

Elements of the dpar and spar Arrays

Index

Description

0

In the Cartesian case, contains the length of the interval along the x-axis right after a call to the ?_init_Helmholtz_2D/?_init_Helmholtz_3D routine or the mesh size hx in the x direction (for details, see Poisson Solver Implementation) after a call to the ?_commit_Helmholtz_2D/?_commit_Helmholtz_3D routine.

In the spherical case, contains the length of the interval along the φ-axis right after a call to the ?_init_sph_p/?_init_sph_np routine or the mesh size hφ in the φ direction (for details, see Poisson Solver Implementation) after a call to the ?_commit_sph_p/?_commit_sph_np routine.

1

In the Cartesian case, contains the length of the interval along the y-axis right after a call to the ?_init_Helmholtz_2D/?_init_Helmholtz_3D routine or the mesh size hy in the y direction (for details, see Poisson Solver Implementation) after a call to the ?_commit_Helmholtz_2D/?_commit_Helmholtz_3D routine.

In the spherical case, contains the length of the interval along the θ-axis right after a call to the ?_init_sph_p/?_init_sph_np routine or the mesh size hθ in the θ direction (for details, see Poisson Solver Implementation) after a call to the ?_commit_sph_p/?_commit_sph_np routine.

2

In the Cartesian case, contains the length of the interval along the z-axis right after a call to the ?_init_Helmholtz_2D/?_init_Helmholtz_3D routine or the mesh size hz in the z direction (for details, see Poisson Solver Implementation) after a call to the ?_commit_Helmholtz_2D/?_commit_Helmholtz_3D routine. In the Cartesian solver, this parameter is used only in the 3D case.

In the spherical solver, contains the coordinate of the leftmost boundary along the θ-axis after a call to the ?_init_sph_p/?_init_sph_np routine.

3

Contains the value of the coefficient q after a call to the ?_init_Helmholtz_2D/?_init_Helmholtz_3D/?_init_sph_p/?_init_sph_np routine.

4

Contains the tolerance parameter after a call to the ?_init_Helmholtz_2D/?_init_Helmholtz_3D/?_init_sph_p/?_init_sph_np routine.

  • In the Cartesian case, this value is used only for the pure Neumann boundary conditions ( BCtype="NNNN" in the 2D case; BCtype="NNNNNN" in the 3D case). This is a special case, because the right-hand side of the problem cannot be arbitrary if the coefficient q is zero. The Poisson Solver verifies that the classical solution exists (up to rounding errors) using this tolerance. In any case, the Poisson Solver computes the normal solution, that is, the solution that has the minimal Euclidean norm of residual. Nevertheless, the ?_Helmholtz_2D/?_Helmholtz_3D routine informs you that the solution may not exist in a classical sense (up to rounding errors).

  • In the spherical case, the value is used for the special case of a periodic problem on the entire sphere. This special case is similar to the Cartesian case with pure Neumann boundary conditions. Here the Poisson Solver computes the normal solution as well. The parameter is also used to detect whether the problem is periodic up to rounding errors.

The default value for this parameter is 1.0E-10 in case of double-precision computations or 1.0E-4 in case of single-precision computations. You can increase the value of the tolerance, for instance, to avoid the warnings that may appear.

NOTE:

You may define the array size depending upon the type of the problem to solve.