xref: /petsc/src/mat/tests/ex255.c (revision 327415f76d85372a4417cf1aaa14db707d4d6c04)
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>
4ebf8cefbSJunchao Zhang int main(int argc,char **args)
5ebf8cefbSJunchao Zhang {
6ebf8cefbSJunchao Zhang   Mat            A,B;
7ebf8cefbSJunchao Zhang   char           file[PETSC_MAX_PATH_LEN];
8ebf8cefbSJunchao Zhang   PetscViewer    fd;
9ebf8cefbSJunchao Zhang   PetscBool      flg,equal;
10ebf8cefbSJunchao Zhang 
11*327415f7SBarry Smith   PetscFunctionBeginUser;
12ebf8cefbSJunchao Zhang   PetscCall(PetscInitialize(&argc,&args,(char*)0,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*/
42ebf8cefbSJunchao Zhang 
43