Actual source code: ex253.c

  1: static char help[] = "Tests MatMultHermitianTranspose() for real numbers.\n\n";
  2: #include <petsc.h>

  4: int main(int argc, char **args)
  5: {
  6:   Mat         A, AHT;
  7:   Vec         x, y;
  8:   PetscRandom rand;

 10:   PetscFunctionBeginUser;
 11:   PetscCall(PetscInitialize(&argc, &args, NULL, help));

 13:   PetscCall(MatCreate(PETSC_COMM_WORLD, &A));
 14:   PetscCall(MatSetType(A, MATAIJ));
 15:   PetscCall(MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, 10, 10));
 16:   PetscCall(MatSetFromOptions(A));
 17:   PetscCall(MatSetUp(A));

 19:   PetscCall(MatSetValue(A, 0, 0, 1.0, INSERT_VALUES));
 20:   PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY));
 21:   PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY));

 23:   PetscCall(MatCreateHermitianTranspose(A, &AHT));
 24:   PetscCall(MatCreateVecs(AHT, &x, &y));

 26:   PetscCall(PetscRandomCreate(PETSC_COMM_WORLD, &rand));
 27:   PetscCall(PetscRandomSetFromOptions(rand));
 28:   PetscCall(VecSetRandom(y, rand));
 29:   PetscCall(PetscRandomDestroy(&rand));

 31:   PetscCall(MatMultHermitianTranspose(AHT, y, x));

 33:   PetscCall(VecDestroy(&x));
 34:   PetscCall(VecDestroy(&y));
 35:   PetscCall(MatDestroy(&A));
 36:   PetscCall(MatDestroy(&AHT));
 37:   PetscCall(PetscFinalize());
 38:   return 0;
 39: }

 41: /*TEST

 43:    test:

 45: TEST*/