1 static char help[] = "Tests MatMultHermitianTranspose() for real numbers.\n\n";
2 #include <petsc.h>
3
main(int argc,char ** args)4 int main(int argc, char **args)
5 {
6 Mat A, AHT;
7 Vec x, y;
8 PetscRandom rand;
9
10 PetscFunctionBeginUser;
11 PetscCall(PetscInitialize(&argc, &args, NULL, help));
12
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));
18
19 PetscCall(MatSetValue(A, 0, 0, 1.0, INSERT_VALUES));
20 PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY));
21 PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY));
22
23 PetscCall(MatCreateHermitianTranspose(A, &AHT));
24 PetscCall(MatCreateVecs(AHT, &x, &y));
25
26 PetscCall(PetscRandomCreate(PETSC_COMM_WORLD, &rand));
27 PetscCall(PetscRandomSetFromOptions(rand));
28 PetscCall(VecSetRandom(y, rand));
29 PetscCall(PetscRandomDestroy(&rand));
30
31 PetscCall(MatMultHermitianTranspose(AHT, y, x));
32
33 PetscCall(VecDestroy(&x));
34 PetscCall(VecDestroy(&y));
35 PetscCall(MatDestroy(&A));
36 PetscCall(MatDestroy(&AHT));
37 PetscCall(PetscFinalize());
38 return 0;
39 }
40
41 /*TEST
42
43 test:
44 output_file: output/empty.out
45
46 TEST*/
47