xref: /petsc/src/mat/tests/ex253.c (revision 609caa7c8c030312b00807b4f015fd827bb80932)
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