5. PARDISO Emulator - IPardiso

This object provides an emulation of the interface to the Intel MKL PARDISO direct sparse solver. This interface is provided to facilitate the use of VfsTools solvers within applications which are familiar with the PARDISO direct solver interface. The IPardiso interface is thread safe unlike MKL PARDISO. It is possible to have any number of independent interfaces running on separate threads. Currently only the 64 bit integer interface is supported and is made explicit by the addition of 64 to the end of all function names. The IPardiso interface is not a typically structured CEETRON SAM object. The MKL PARDISO interface provides for an array of 64 pointers which act as an opaque “object”. The IPardiso emulator will therefore be referred to as an object. The methods associated with a IPardiso object are the following.

  • Operations

    • vfs_IPardisoinit() - Initialize default 32 bit integer parameters

    • vfs_IPardiso() - Solve 32 bit integer version of sparse system

    • vfs_IPardisoinit64() - Initialize default 64 bit integer parameters

    • vfs_IPardiso64() - Solve 64 bitinteger version of sparse system

The IPardiso object is meant to emulate the interface to the 32 and 64 bit versionof Intel MKL Pardiso. Currently the functions pardisoinit and pardiso and pardiso_64 are emulated, please refer to Intel MKL PARDISO documentation. The vfs_IPardisoinit64() function needs to be used to initialize variables for vfs_IPardiso64(). The matrix types supported include all structurally symmetric matrices real, Hermitian or generally complex, definite and indefinite. Structurally non-symmetric matrices are not supported.

5.1. Function Descriptions

The currently available IPardiso functions are described in detail in this section.

void vfs_IPardiso64(void *pt[], Vlong *maxfct, Vlong *mnum, Vlong *mtype, Vlong *phase, Vlong *neq, const void *a, Vlong rowIndex[], Vlong columns[], Vlong perm[], Vlong *nrhs, Vlong iparam[], Vlong *msglvl, void *b, void *x, Vlong *error)

Calculate solution of sparse system.

This function emulates the pardiso_64 function Note that the integer data types for vfs_IPardiso() are Vint rather than Vlong.

  • pt – Array of 64 pointers

  • maxfct – Maximum number of factors. Must be 1.

  • mnum – Matrix number. Must be 1.

  • mtype – Matrix type. 1,2,-2,3,4,-4,6 supported.

  • phase

  • error[out] The error indicator.

void vfs_IPardiso(void *pt[], Vint *maxfct, Vint *mnum, Vint *mtype, Vint *phase, Vint *neq, const void *a, Vint rowIndex[], Vint columns[], Vint perm[], Vint *nrhs, Vint iparam[], Vint *msglvl, void *b, void *x, Vint *ier)

Calculate solution of sparse system.

See vfs_IPardiso64()

void vfs_IPardisoInit64(void *pt[], Vlong *mtype, Vlong iparm[])

Initialize default 64 bit version parameters.

This function emulates the pardisoinit function. Note that the integer data types for vfs_IPardisoinit() are Vint rather than Vlong.

  • pt – Array of 64 pointers

  • mtype – Matrix type

  • iparm[out] Array of 64 parameters initialized

void vfs_IPardisoInit(void *pt[], Vint *mtype, Vint iparm[])

Initialize default 64 bit version parameters.

See vfs_IPardisoInit64()