Compute the corresponding solution vector and place it in the output array.
C:
dss_solve_real(handle, opt, rRhsValues, nRhs, rSolValues)
dss_solve_complex(handle, opt, cRhsValues, nRhs, cSolValues)
FORTRAN 77:
call dss_solve_real(handle, opt, rRhsValues, nRhs, rSolValues)
call dss_solve_complex(handle, opt, cRhsValues, nRhs, cSolValues)
FORTRAN 90:
outputtext(unified Fortran 90 interface):
call dss_solve(handle, opt, RhsValues, nRhs, SolValues)
outputtext(or FORTRAN 77 like interface):
call dss_solve_real(handle, opt, rRhsValues, nRhs, rSolValues)
call dss_solve_complex(handle, opt, cRhsValues, nRhs, cSolValues)
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 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 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 PARDISO) is performed;
if it is set to MKL_DSS_DIAGONAL_SOLVE, the diagonal substitution (corresponding to phase = 332 in PARDISO) is performed;
if it is set to MKL_DSS_BACKWARD_SOLVE, the backward substitution (corresponding to phase = 333 in PARDISO) is performed.
For more details about using these substitutions for different types of matrices, see the description of the PARDISO solver.
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 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 PARDISO.
Name |
Type |
Description |
---|---|---|
handle |
FORTRAN 77: INTEGER*8 Fortran 90: TYPE (MKL_DSS_HANDLE), INTENT(INOUT) C: _MKL_DSS_HANDLE_t* |
Pointer to the data structure storing intermediate DSS results (MKL_DSS_HANDLE). |
opt |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t const* |
Parameter to pass the DSS options. |
nRhs |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t const* |
Number of the right-hand sides in the linear equation. |
rRhsValues |
FORTRAN 77: REAL*4 or REAL*8 Fortran 90: REAL(KIND=4), INTENT(IN) or REAL(KIND=8), INTENT(IN) C: VOID const* |
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) C: VOID const* |
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. |
Name |
Type |
Description |
---|---|---|
rSolValues |
FORTRAN 77: REAL*4 or REAL*8 Fortran 90: REAL(KIND=4), INTENT(OUT) or REAL(KIND=8), INTENT(OUT) C: VOID const* |
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) C: VOID const* |
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. |