dss_solve_real, dss_solve_complex

Compute the corresponding solution vector and place it in the output array.

Syntax

FORTRAN 77:

call dss_solve_real(handle, opt, rRhsValues, nRhs, rSolValues)

call dss_solve_complex(handle, opt, cRhsValues, nRhs, cSolValues)

Fortran 90:

call dss_solve(handle, opt, RhsValues, nRhs, SolValues)

C:

MKL_INT dss_solve_real(_MKL_DSS_HANDLE_t *handle, MKL_INT const *opt, void const *rRhsValues, MKL_INT const *nRhs, void *rSolValues)

MKL_INT dss_solve_complex(_MKL_DSS_HANDLE_t *handle, MKL_INT const *opt, void const *cRhsValues, MKL_INT const *nRhs, void *cSolValues)

Include Files

  • Fortran: mkl.fi
  • Fortran 90: mkl_dss.f90
  • C: mkl.h

Description

For each right-hand side column vector defined in the arrays rRhsValues, cRhsValues, or RhsValues, these routines compute the corresponding solution vector and place it in the arrays rSolValues, cSolValues, or SolValues respectively.

Note

The data type (single or double precision) of all arrays must be in correspondence with precision specified by the parameter opt in the routine dss_create.

The lengths of the right-hand side and solution vectors, nCols and nRows respectively, must be defined in a previous call to dss_define_structure.

By default, both routines perform the full solution step (it corresponds to phase = 33 in Intel MKL PARDISO). The parameter opt enables you to calculate the final solution step-by-step, calling forward and backward substitutions.

If it is set to MKL_DSS_FORWARD_SOLVE, the forward substitution (corresponding to phase = 331 in Intel MKL PARDISO) is performed;

if it is set to MKL_DSS_DIAGONAL_SOLVE, the diagonal substitution (corresponding to phase = 332 in Intel MKL PARDISO) is performed, if possible;

if it is set to MKL_DSS_BACKWARD_SOLVE, the backward substitution (corresponding to phase = 333 in Intel MKL PARDISO) is performed.

For more details about using these substitutions for different types of matrices, see Separate Forward and Backward Substitution in the Intel MKL PARDISO solver description.

This parameter also can control the number of refinement steps that is used on the solution stage: if it is set to MKL_DSS_REFINEMENT_OFF, the maximum number of refinement steps equal to zero, and if it is set to MKL_DSS_REFINEMENT_ON (default value), the maximum number of refinement steps is equal to 2.

MKL_DSS_CONJUGATE_SOLVE option added to the parameter opt enables solving a conjugate transposed system AHX = B based on the factorization of the matrix A. This option is equivalent to the parameter iparm(12)= 1 in Intel MKL PARDISO.

MKL_DSS_TRANSPOSE_SOLVE option added to the parameter opt enables solving a transposed system ATX = B based on the factorization of the matrix A. This option is equivalent to the parameter iparm(12)= 2 in Intel MKL PARDISO.

Input Parameters

handle

FORTRAN 77: INTEGER*8

Fortran 90: TYPE (MKL_DSS_HANDLE), INTENT(INOUT)

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

opt

FORTRAN 77: INTEGER

Fortran 90: INTEGER, INTENT(IN)

Parameter to pass the DSS options.

nRhs

FORTRAN 77: INTEGER

Fortran 90: INTEGER, INTENT(IN)

Number of the right-hand sides in the system of linear equations.

rRhsValues

FORTRAN 77: REAL*4 or

REAL*8

Fortran 90: REAL(KIND=4), INTENT(IN) or

REAL(KIND=8), INTENT(IN)

Array of size nRows * nRhs. Contains real right-hand side vectors. Real data, single or double precision as it is specified by the parameter opt in the routine dss_create.

cRhsValues

FORTRAN 77: COMPLEX*8 or

COMPLEX*16

Fortran 90: COMPLEX(KIND=4), INTENT(IN) or

COMPLEX(KIND=8), INTENT(IN)

Array of size nRows * nRhs. Contains complex right-hand side vectors. Complex data, single or double precision as it is specified by the parameter opt in the routine dss_create.

RhsValues

Fortran 90: REAL(KIND=4), INTENT(IN), or

REAL(KIND=8), INTENT(IN), or

COMPLEX(KIND=4), INTENT(IN), or

COMPLEX(KIND=8), INTENT(IN)

Array of size nRows * nRhs. Contains right-hand side vectors. Real or complex data, single or double precision as it is specified by the parameter opt in the routine dss_create.

Output Parameters

rSolValues

FORTRAN 77: REAL*4 or

REAL*8

Fortran 90: REAL(KIND=4), INTENT(OUT) or

REAL(KIND=8), INTENT(OUT)

Array of size nCols * nRhs. Contains real solution vectors. Real data, single or double precision as it is specified by the parameter opt in the routine dss_create.

cSolValues

FORTRAN 77: COMPLEX*8 or

COMPLEX*16

Fortran 90: COMPLEX(KIND=4), INTENT(OUT) or

COMPLEX(KIND=8), INTENT(OUT)

Array of size nCols * nRhs. Contains complex solution vectors. Complex data, single or double precision as it is specified by the parameter opt in the routine dss_create.

SolValues

Fortran 90: REAL(KIND=4), INTENT(OUT), or

REAL(KIND=8), INTENT(OUT), or

COMPLEX(KIND=4), INTENT(OUT), or

COMPLEX(KIND=8), INTENT(OUT)

Array of size nCols * nRhs. Contains solution vectors. Real or complex data, single or double precision as it is specified by the parameter opt in the routine dss_create.

Return Values

MKL_DSS_SUCCESS

MKL_DSS_STATE_ERR

MKL_DSS_INVALID_OPTION

MKL_DSS_OUT_OF_MEMORY

MKL_DSS_DIAG_ERR

MKL_DSS_FAILURE

MKL_DSS_MSG_LVL_ERR

MKL_DSS_TERM_LVL_ERR

MKL_DSS_OOC_MEM_ERR

MKL_DSS_OOC_OC_ERR

MKL_DSS_OOC_RW_ERR

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