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*/