dss_define_structure

Communicates locations of non-zero elements in the matrix to the solver.

Syntax

call dss_define_structure(handle, opt, rowIndex, nRows, nCols, columns, nNonZeros);

Include Files

  • mkl.fi, mkl_dss.f90

Description

The routine dss_define_structure communicates the locations of the nNonZeros number of non-zero elements in a matrix of nRows * nCols size to the solver.

Note

The Intel MKL DSS software operates only on square matrices, so nRows must be equal to nCols.

To communicate the locations of non-zero elements in the matrix, do the following:

  1. Define the general non-zero structure of the matrix by specifying the value for the options argument opt. You can set the following values for real matrices:

    • MKL_DSS_SYMMETRIC_STRUCTURE

    • MKL_DSS_SYMMETRIC

    • MKL_DSS_NON_SYMMETRIC

    and for complex matrices:

    • MKL_DSS_SYMMETRIC_STRUCTURE_COMPLEX

    • MKL_DSS_SYMMETRIC_COMPLEX

    • MKL_DSS_NON_SYMMETRIC_COMPLEX

      The information about the matrix type must be defined in dss_define_structure.
  2. Provide the actual locations of the non-zeros by means of the arrays rowIndex and columns (see Sparse Matrix Storage Format).

Input Parameters

opt

INTEGER, INTENT(IN)

Parameter to pass the DSS options. The default value for the matrix structure is MKL_DSS_SYMMETRIC.

rowIndex

INTEGER, INTENT(IN)

Array of size nRows+1. Defines the location of non-zero entries in the matrix.

nRows

INTEGER, INTENT(IN)

Number of rows in the matrix.

nCols

INTEGER, INTENT(IN)

Number of columns in the matrix; must be equal to nRows.

columns

INTEGER, INTENT(IN)

Array of size nNonZeros. Defines the column location of non-zero entries in the matrix.

nNonZeros

INTEGER, INTENT(IN)

Number of non-zero elements in the matrix.

Output Parameters

handle

TYPE (MKL_DSS_HANDLE), INTENT(INOUT)

Pointer to the data structure storing internal DSS results (MKL_DSS_HANDLE).

Return Values

MKL_DSS_SUCCESS

MKL_DSS_STATE_ERR

MKL_DSS_INVALID_OPTION

MKL_DSS_STRUCTURE_ERR

MKL_DSS_ROW_ERR

MKL_DSS_COL_ERR

MKL_DSS_NOT_SQUARE

MKL_DSS_TOO_FEW_VALUES

MKL_DSS_TOO_MANY_VALUES

MKL_DSS_OUT_OF_MEMORY

MKL_DSS_MSG_LVL_ERR

MKL_DSS_TERM_LVL_ERR

For more complete information about compiler optimizations, see our Optimization Notice.