# ?_init_sph_p/?_init_sph_np

Initializes basic data structures of the Fast periodic and non-periodic Helmholtz Solver on a sphere.

## Syntax

void d_init_sph_p(double* ap, double* at, double* bp, double* bt, int* np, int* nt, double* q, int* ipar, double* dpar, int* stat);

void s_init_sph_np(float* ap, float* at, float* bp, float* bt, int* np, int* nt, float* q, int* ipar, float* spar, int* stat);

void d_init_sph_np(double* ap, double* at, double* bp, double* bt, int* np, int* nt, double* q, int* ipar, double* dpar, int* stat);

void s_init_sph_np(float* ap, float* at, float* bp, float* bt, int* np, int* nt, float* q, int* ipar, float* spar, int* stat);

## Input Parameters

ap | double* for d_init_sph_p/d_init_sph_np, float* for s_init_sph_p/s_init_sph_np. The coordinate (angle) of the leftmost boundary of the domain along φ-axis.
bp | double* for d_init_sph_p/d_init_sph_np, float* for s_init_sph_p/s_init_sph_np. The coordinate (angle) of the rightmost boundary of the domain along φ-axis.
at | double* for d_init_sph_p/d_init_sph_np, float* for s_init_sph_p/s_init_sph_np. The coordinate (angle) of the leftmost boundary of the domain along θ-axis.
bt | double* for d_init_sph_p/d_init_sph_np, float* for s_init_sph_p/s_init_sph_np. The coordinate (angle) of the rightmost boundary of the domain along θ-axis.
np | int*. The number of mesh intervals along φ-axis. Must be even in the periodic case.
nt | int*. The number of mesh intervals along θ-axis.
q | double* for d_init_sph_p/d_init_sph_np, float* for s_init_sph_p/s_init_sph_np. The constant Helmholtz coefficient. Note that to solve Poisson problem, you should set the value of q to 0.

## Output Parameters

ipar | int array of size 128. Contains integer data to be used by Fast Helmholtz Solver on a sphere (for details, refer to Common Parameters).
dpar | double array of size 5*np/2+nt+10. Contains double-precision data to be used by Fast Helmholtz Solver on a sphere (for details, refer to Common Parameters).
spar | float array of size 5*np/2+nt+10. Contains single-precision data to be used by Fast Helmholtz Solver on a sphere (for details, refer to Common Parameters).
stat | int*. Routine completion status, which is also written to ipar[0]. The status should be 0 to proceed to other PL routines.

## Description

The routines ?_init_sph_p/?_init_sph_np are called to initialize basic data structures for Poisson Library computations of the appropriate precision. All routines invoked after a call to a ?_init_Helmholtz_2D/?_init_Helmholtz_3D routine use values of the ipar, dpar and spar array parameters returned by the routine. Detailed description of the array parameters can be found in Common Parameters.

### Warning

Data structures initialized and created by periodic/non-periodic flavors of the routine cannot be used by non-periodic/periodic flavors of any PL routines for Helmholtz Solver on a sphere, respectively.

You can skip calling this routine in your code. However, see Caveat on Parameter Modifications before doing so.

## Return Values

stat= 0 | The routine successfully completed the task. In general, to proceed with computations, the routine should complete with this stat value.
stat= -99999 | The routine failed to complete the task because of fatal error.

Parent topic: PL Routines for the Spherical Solver