Actual source code: ex81.c

  1: static char help[] = "Test different KSP and Mat prefixes.\n\n";

  3: #include <petscksp.h>

  5: int main(int argc, char **args)
  6: {
  7:   KSP ksp;
  8:   PC  pc;
  9:   Mat A, B, C;

 12:   PetscInitialize(&argc, &args, (char *)0, help);
 13:   MatCreateConstantDiagonal(PETSC_COMM_WORLD, 2, 2, PETSC_DECIDE, PETSC_DECIDE, 1.0, &A);
 14:   MatConvert(A, MATAIJ, MAT_INPLACE_MATRIX, &A);
 15:   MatDuplicate(A, MAT_COPY_VALUES, &B);
 16:   MatDuplicate(A, MAT_COPY_VALUES, &C);
 17:   KSPCreate(PETSC_COMM_WORLD, &ksp);
 18:   MatSetOptionsPrefix(A, "alpha_");
 19:   KSPSetOperators(ksp, A, A);
 20:   KSPSetOptionsPrefix(ksp, "beta_");
 21:   KSPSetFromOptions(ksp);
 22:   KSPGetPC(ksp, &pc);
 23:   PCSetUp(pc);
 24:   PCSetUpOnBlocks(pc);
 25:   PCView(pc, PETSC_VIEWER_STDOUT_WORLD);
 26:   MatSetOptionsPrefix(C, "gamma_");
 27:   KSPSetOperators(ksp, C, C);
 28:   PCSetUp(pc);
 29:   PCSetUpOnBlocks(pc);
 30:   PCView(pc, PETSC_VIEWER_STDOUT_WORLD);
 31:   KSPDestroy(&ksp);
 32:   MatDestroy(&C);
 33:   MatDestroy(&B);
 34:   MatDestroy(&A);
 35:   PetscFinalize();
 36:   return 0;
 37: }

 39: /*TEST

 41:    test:
 42:       nsize: 2
 43:       requires: mumps
 44:       args: -beta_pc_type lu -beta_pc_factor_mat_solver_type mumps -beta_mat_mumps_icntl_14 30

 46:    test:
 47:       nsize: 2
 48:       suffix: 2
 49:       requires: mumps
 50:       args: -beta_pc_type asm -beta_sub_pc_factor_mat_solver_type mumps -beta_sub_mat_mumps_icntl_14 30 -beta_sub_pc_type lu

 52: TEST*/