Developer Reference for Intel® oneAPI Math Kernel Library for C
dss_solve_real , dss_solve_complex
Compute the corresponding solution vector and place it in the output array.
Syntax
MKL_INTdss_solve_real ( _MKL_DSS_HANDLE_t *handle , MKL_INT const *opt , void const *rRhsValues , MKL_INT const *nRhs , void *rSolValues )
MKL_INTdss_solve_complex ( _MKL_DSS_HANDLE_t *handle , MKL_INT const *opt , void const *cRhsValues , MKL_INT const *nRhs , void *cSolValues )
Include Files
mkl.h
Description
dss_solve_real dss_solve_complex dss_solve 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.
The lengths of the right-hand side and solution vectors, nRows and nCols 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® oneAPI Math Kernel Library (oneMKL) 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® oneAPI Math Kernel Library (oneMKL) PARDISO) is performed;
if it is set to MKL_DSS_DIAGONAL_SOLVE , the diagonal substitution (corresponding to phase = 332 in Intel® oneAPI Math Kernel Library (oneMKL) PARDISO) is performed, if possible;
if it is set to MKL_DSS_BACKWARD_SOLVE , the backward substitution (corresponding to phase = 333 in Intel® oneAPI Math Kernel Library (oneMKL) PARDISO) is performed.
For more details about using these substitutions for different types of matrices, see Separate Forward and Backward Substitution in the Intel® oneAPI Math Kernel Library (oneMKL) 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 A:code:`H`X = B based on the factorization of the matrix A . This option is equivalent to the parameter iparm(12) / iparm[11]= 1 in Intel® oneAPI Math Kernel Library (oneMKL) PARDISO.
MKL_DSS_TRANSPOSE_SOLVE option added to the parameter opt enables solving a transposed system A:code:`T`X = B based on the factorization of the matrix A . This option is equivalent to the parameter iparm(12) / iparm[11]= 2 in Intel® oneAPI Math Kernel Library (oneMKL) PARDISO.
Input Parameters
- handle
-
TYPE (MKL_DSS_HANDLE) , INTENT(INOUT) Pointer to the data structure storing internal DSS results ( MKL_DSS_HANDLE ).
- opt
-
INTEGER , INTENT(IN) Parameter to pass the DSS options.
- nRhs
-
INTEGER , INTENT(IN) Number of the right-hand sides in the system of linear equations.
- rRhsValues
-
REAL*8 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
-
COMPLEX*16 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
-
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
-
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
-
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
-
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