Actual source code: ex322.c

  1: static char help[] = "Tests MatCopy() from MATDENSE into a matrix of another type.\n\n";

  3: #include <petscmat.h>

  5: int main(int argc, char **args)
  6: {
  7:   Mat       A, B;
  8:   char      type[256] = MATAIJ;
  9:   PetscBool equal;

 11:   PetscFunctionBeginUser;
 12:   PetscCall(PetscInitialize(&argc, &args, NULL, help));
 13:   PetscCall(PetscOptionsGetString(NULL, NULL, "-type", type, sizeof(type), NULL));
 14:   PetscCall(MatCreateDense(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE, 6, 6, NULL, &A));
 15:   PetscCall(MatSetRandom(A, NULL));
 16:   PetscCall(MatConvert(A, type, MAT_INITIAL_MATRIX, &B));
 17:   PetscCall(MatZeroEntries(B));
 18:   PetscCall(MatCopy(A, B, SAME_NONZERO_PATTERN));
 19:   PetscCall(MatMultEqual(A, B, 3, &equal));
 20:   PetscCheck(equal, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "MatCopy() produced incorrect values");
 21:   PetscCall(MatDestroy(&B));
 22:   PetscCall(MatDestroy(&A));
 23:   PetscCall(PetscFinalize());
 24:   return 0;
 25: }

 27: /*TEST

 29:    test:
 30:       nsize: 2
 31:       args: -type aij
 32:       output_file: output/empty.out

 34: TEST*/