ParCSR Object Interface

group ParCSR Object Interface

Interface for ParCSR matrices and vectors.

This is an interface for matrices and vectors with object type HYPRE_PARCSR.

ParCSR Matrices

typedef struct hypre_ParCSRMatrix_struct *HYPRE_ParCSRMatrix

The matrix object.

ParCSR matrices use a parallel compressed-sparse-row (CSR) storage format that consists of a diagonal CSR matrix for intra-processor couplings and an off-diagonal CSR matrix for inter-processor couplings.

HYPRE_Int HYPRE_ParCSRMatrixCreate(MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int num_cols_offd, HYPRE_Int num_nonzeros_diag, HYPRE_Int num_nonzeros_offd, HYPRE_ParCSRMatrix *matrix)

Create a matrix object.

More info here about arguments…

HYPRE_Int HYPRE_ParCSRMatrixDestroy(HYPRE_ParCSRMatrix matrix)

Destroy a matrix object.

HYPRE_Int HYPRE_ParCSRMatrixInitialize(HYPRE_ParCSRMatrix matrix)

Prepare a matrix object for setting coefficient values.

HYPRE_Int HYPRE_ParCSRMatrixRead(MPI_Comm comm, const char *file_name, HYPRE_ParCSRMatrix *matrix)

Read a matrix from file.

HYPRE_Int HYPRE_ParCSRMatrixPrint(HYPRE_ParCSRMatrix matrix, const char *file_name)

Print a matrix to file.

ParCSR Vectors

typedef struct hypre_ParVector_struct *HYPRE_ParVector

The vector object.

A Par vector is an array storage format compatible with ParCSR matrices.

HYPRE_Int HYPRE_ParVectorCreate(MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector)

Create a vector object.

HYPRE_Int HYPRE_ParVectorDestroy(HYPRE_ParVector vector)

Destroy a vector object.

HYPRE_Int HYPRE_ParVectorInitialize(HYPRE_ParVector vector)

Prepare a vector object for setting coefficient values.

HYPRE_Int HYPRE_ParVectorRead(MPI_Comm comm, const char *file_name, HYPRE_ParVector *vector)

Read a vector from file.

HYPRE_Int HYPRE_ParVectorPrint(HYPRE_ParVector vector, const char *file_name)

Print a vector to file.

Basic Matrix/vector routines

HYPRE_Int HYPRE_ParVectorCopy(HYPRE_ParVector x, HYPRE_ParVector y)

Copy vector x into y ( \(y \leftarrow x\)).

HYPRE_Int HYPRE_ParVectorScale(HYPRE_Complex value, HYPRE_ParVector x)

Scale a vector by alpha ( \(y \leftarrow \alpha y\)).

HYPRE_Int HYPRE_ParVectorAxpy(HYPRE_Complex alpha, HYPRE_ParVector x, HYPRE_ParVector y)

Compute \(y = y + \alpha x\).

HYPRE_Int HYPRE_ParVectorInnerProd(HYPRE_ParVector x, HYPRE_ParVector y, HYPRE_Real *result)

Compute result, the inner product of vectors x and y.

HYPRE_Int HYPRE_ParCSRMatrixMatvec(HYPRE_Complex alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, HYPRE_Complex beta, HYPRE_ParVector y)

Compute a matrix-vector product \(y = \alpha A x + \beta y\).

HYPRE_Int HYPRE_ParCSRMatrixMatvecT(HYPRE_Complex alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, HYPRE_Complex beta, HYPRE_ParVector y)

Compute a transpose matrix-vector product \(y = \alpha A^T x + \beta y\).

HYPRE_Int HYPRE_ParCSRMatrixMatmat(HYPRE_ParCSRMatrix A, HYPRE_ParCSRMatrix B, HYPRE_ParCSRMatrix *C)

Matrix-matrix multiply.