Actual source code: ex199.c
1: static char help[] = "Tests the different MatColoring implementations.\n\n";
3: #include <petscmat.h>
5: int main(int argc, char **args)
6: {
7: Mat C;
8: PetscViewer viewer;
9: char file[128];
10: PetscBool flg;
11: MatColoring ctx;
12: ISColoring coloring;
13: PetscMPIInt size;
15: PetscFunctionBeginUser;
16: PetscCall(PetscInitialize(&argc, &args, NULL, help));
17: PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));
19: PetscCall(PetscOptionsGetString(NULL, NULL, "-f", file, sizeof(file), &flg));
20: PetscCheck(flg, PETSC_COMM_WORLD, PETSC_ERR_USER, "Must use -f filename to load sparse matrix");
21: PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD, file, FILE_MODE_READ, &viewer));
22: PetscCall(MatCreate(PETSC_COMM_WORLD, &C));
23: PetscCall(MatLoad(C, viewer));
24: PetscCall(PetscViewerDestroy(&viewer));
26: PetscCall(MatColoringCreate(C, &ctx));
27: PetscCall(MatColoringSetFromOptions(ctx));
28: PetscCall(MatColoringApply(ctx, &coloring));
29: PetscCall(MatColoringTest(ctx, coloring));
30: if (size == 1) {
31: /* jp, power and greedy have bug -- need to be fixed */
32: PetscCall(MatISColoringTest(C, coloring));
33: }
35: /* Free data structures */
36: PetscCall(ISColoringDestroy(&coloring));
37: PetscCall(MatColoringDestroy(&ctx));
38: PetscCall(MatDestroy(&C));
39: PetscCall(PetscFinalize());
40: return 0;
41: }
43: /*TEST
45: test:
46: nsize: {{3}}
47: requires: datafilespath !complex double !defined(PETSC_USE_64BIT_INDICES)
48: args: -f ${DATAFILESPATH}/matrices/arco1 -mat_coloring_type {{ jp power natural greedy}} -mat_coloring_distance {{ 1 2}}
50: test:
51: suffix: 2
52: nsize: {{1 2}}
53: requires: datafilespath !complex double !defined(PETSC_USE_64BIT_INDICES)
54: args: -f ${DATAFILESPATH}/matrices/arco1 -mat_coloring_type {{sl lf id}} -mat_coloring_distance 2
55: output_file: output/ex199_1.out
57: TEST*/