Rate This Document
Findability
Accuracy
Completeness
Readability

KmlIssCgInit?I

Initialize the data structure and associate a provided coefficient matrix with the solution system. The complete matrix in CSR format is used when the CG method for a single node is initialized.

Interface Definition

C interface:

int KmlIssCgInitSI(KmlSolverTask **handle, int n, const float *a, const int *ja, const int *ia);

int KmlIssCgInitDI(KmlSolverTask **handle, int n, const double *a, const int *ja, const int *ia);

Parameters

Parameter

Type

Description

Input/Output

handle

KmlSolverTask **

Solver handle. handle cannot be a null pointer.

Input/Output

n

int

Dimension of matrix A.

Input

a

  • float * in KmlIssCgInitSI
  • double * in KmlIssCgInitDI

Array whose dimension is the quantity of non-zero elements. a[i] is the value of the i-th non-zero element. The lifecycle of this array is the same as that of handle.

Input

ja

int *

Array whose dimension is the quantity of non-zero elements. ja[i] is the column number of the i-th non-zero element. The lifecycle of this array is the same as that of handle.

Input

ia

int *

(n+1)-dimensional array. ia[i] is the index of the first non-zero element in the i-th row in all non-zero elements. The lifecycle of this array is the same as that of handle.

Input

Return Values

Return Value

Type

Description

KMLSS_NO_ERROR

int

The execution is successful.

KMLSS_NULL_ARGUMENT

int

A null argument exists in {handle, a, ja, ia}.

KMLSS_BAD_N

int

The value of parameter n is not a positive integer.

KMLSS_NO_MEMORY

int

The memory is insufficient.

Dependency

#include "kml_iss.h"

Example

C interface:
KmlSolverTask *handle;
int ierr;
int n = 8;  

double a[26] = {1.0, 1.0, 2.0, 9.0, 2.0, 1.0, -3.0, 2.0, 3.0, 2.0, 1.0, 1.0, 9.0, -5.0, 2.0, 6.0, 1.0, -3.0, 1.0, 4.0, 1.0, -5.0, 7.0, 2.0,1.0, 2.0};
int ja[26] = {0, 3, 4, 1, 2, 3, 5, 1, 2, 7, 0, 1, 3, 6, 0, 4, 5, 1, 4, 5, 7, 3, 6, 2, 5, 7};
int ia[9] = {0, 3, 7, 10, 14, 17, 21, 23, 26};

ierr = KmlIssCgInitDI(&handle, n, a, ja, ia);
if (ierr != 0) {
    printf("\nERROR in KmlIssCgInitDI: %d", ierr);
    return 1;
}