Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

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

1

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.

2

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.

3

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.

4

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.

5

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.

ipar(16) through ipar(17)

In the Cartesian case, contain the spectrum of the one-dimensional (1D) problem along the x-axis after a call to the ?_commit_Helmholtz_2D/?_commit_Helmholtz_3D routine.

In the spherical case, contains the spectrum of the 1D problem along the φ-axis after a call to the ?_commit_sph_p/?_commit_sph_np routine.

ipar(18) through ipar(19)

In the Cartesian case, contain the spectrum of the 1D problem along the y-axis after a call to the ?_commit_Helmholtz_3D routine. These elements are used only in the 3D case.

In the spherical case, contains the spherical weights after a call to the ?_commit_sph_p/?_commit_sph_np routine.

ipar(20) through ipar(21)

Take the values of the (staggered) sine/cosine in the mesh points:

  • along the x-axis after a call to the ?_commit_Helmholtz_2D/?_commit_Helmholtz_3D routine for a Cartesian solver
  • along the φ-axis after a call to the ?_commit_sph_p/?_commit_sph_np routine for a spherical solver.

ipar(22) through ipar(23)

Take the values of the (staggered) sine/cosine in the mesh points:

  • along the y-axis after a call to the ?_commit_Helmholtz_3D routine for a Cartesian 3D solver
  • along the φ-axis after a call to the ?_commit_sph_p routine for a spherical periodic solver.

These elements are not used in the 2D Cartesian case and in the non-periodic spherical case.

ipar(26) through ipar(27)

Take the values of the (staggered) sine/cosine in the mesh points along the x-axis after a call to the ?_commit_Helmholtz_2D/?_commit_Helmholtz_3D routine. These elements are used only in the periodic Cartesian case.

ipar(28) through ipar(29)-1

Take the values of the (staggered) sine/cosine in the mesh points along the x-axis after a call to the ?_commit_Helmholtz_3D routine. These elements are used only in the periodic 3D Cartesian case.

NOTE:

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