1ebf8cefbSJunchao Zhang static char help[] = "Tests MatConvert from AIJ to MATIS with a block size greater than 1.\n";
2ebf8cefbSJunchao Zhang
3ebf8cefbSJunchao Zhang #include <petscmat.h>
main(int argc,char ** args)4d71ae5a4SJacob Faibussowitsch int main(int argc, char **args)
5d71ae5a4SJacob Faibussowitsch {
6ebf8cefbSJunchao Zhang Mat A, B;
7ebf8cefbSJunchao Zhang char file[PETSC_MAX_PATH_LEN];
8ebf8cefbSJunchao Zhang PetscViewer fd;
9ebf8cefbSJunchao Zhang PetscBool flg, equal;
10ebf8cefbSJunchao Zhang
11327415f7SBarry Smith PetscFunctionBeginUser;
12*c8025a54SPierre Jolivet PetscCall(PetscInitialize(&argc, &args, NULL, help));
13ebf8cefbSJunchao Zhang
14ebf8cefbSJunchao Zhang /* Load an AIJ matrix */
15ebf8cefbSJunchao Zhang PetscCall(PetscOptionsGetString(NULL, NULL, "-f", file, sizeof(file), &flg));
16ebf8cefbSJunchao Zhang PetscCheck(flg, PETSC_COMM_WORLD, PETSC_ERR_USER, "Must indicate binary file with the -f option");
17ebf8cefbSJunchao Zhang PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD, file, FILE_MODE_READ, &fd));
18ebf8cefbSJunchao Zhang PetscCall(MatCreate(PETSC_COMM_WORLD, &A));
19ebf8cefbSJunchao Zhang PetscCall(MatSetFromOptions(A));
20ebf8cefbSJunchao Zhang PetscCall(MatLoad(A, fd));
21ebf8cefbSJunchao Zhang
22ebf8cefbSJunchao Zhang /* Convert it to MATIS */
23ebf8cefbSJunchao Zhang PetscCall(MatConvert(A, MATIS, MAT_INITIAL_MATRIX, &B));
24ebf8cefbSJunchao Zhang
25ebf8cefbSJunchao Zhang /* Check they are equal */
26ebf8cefbSJunchao Zhang PetscCall(MatEqual(A, B, &equal));
27ebf8cefbSJunchao Zhang PetscCheck(equal, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "A and B are not equal");
28ebf8cefbSJunchao Zhang
29ebf8cefbSJunchao Zhang PetscCall(MatDestroy(&A));
30ebf8cefbSJunchao Zhang PetscCall(MatDestroy(&B));
31ebf8cefbSJunchao Zhang PetscCall(PetscViewerDestroy(&fd));
32ebf8cefbSJunchao Zhang PetscCall(PetscFinalize());
33ebf8cefbSJunchao Zhang }
34ebf8cefbSJunchao Zhang
35ebf8cefbSJunchao Zhang /*TEST
36ebf8cefbSJunchao Zhang test:
37ebf8cefbSJunchao Zhang requires: datafilespath !complex double !defined(PETSC_USE_64BIT_INDICES)
38ebf8cefbSJunchao Zhang args: -mat_type aij -matload_block_size {{1 2}} -f ${DATAFILESPATH}/matrices/smallbs2
39ebf8cefbSJunchao Zhang output_file: output/empty.out
40ebf8cefbSJunchao Zhang
41ebf8cefbSJunchao Zhang TEST*/
42