GCC Code Coverage Report


Directory: ./
File: src/eps/tests/test32.c
Date: 2025-10-04 04:19:13
Exec Total Coverage
Lines: 57 57 100.0%
Functions: 1 1 100.0%
Branches: 183 272 67.3%

Line Branch Exec Source
1 /*
2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3 SLEPc - Scalable Library for Eigenvalue Problem Computations
4 Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain
5
6 This file is part of SLEPc.
7 SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9 */
10
11 static char help[] = "Tests a GHEP problem with symmetric matrices.\n\n";
12
13 #include <slepceps.h>
14
15 259 int main(int argc,char **argv)
16 {
17 259 Mat A,B; /* matrices */
18 259 EPS eps; /* eigenproblem solver context */
19 259 ST st;
20 259 KSP ksp;
21 259 PC pc;
22 259 PCType pctype;
23 259 PetscInt N,n=45,m,Istart,Iend,II,i,j;
24 259 PetscBool flag;
25
26
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
259 PetscFunctionBeginUser;
27
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(SlepcInitialize(&argc,&argv,NULL,help));
28
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL));
29
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(PetscOptionsGetInt(NULL,NULL,"-m",&m,&flag));
30
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
259 if (!flag) m=n;
31 259 N = n*m;
32
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(PetscPrintf(PETSC_COMM_WORLD,"\nGeneralized Symmetric Eigenproblem, N=%" PetscInt_FMT " (%" PetscInt_FMT "x%" PetscInt_FMT " grid)\n\n",N,n,m));
33
34 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
35 Compute the matrices that define the eigensystem, Ax=kBx
36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37
38
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatCreate(PETSC_COMM_WORLD,&A));
39
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,N,N));
40
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetFromOptions(A));
41
42
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatCreate(PETSC_COMM_WORLD,&B));
43
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetSizes(B,PETSC_DECIDE,PETSC_DECIDE,N,N));
44
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetFromOptions(B));
45
46
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatGetOwnershipRange(A,&Istart,&Iend));
47
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
38184 for (II=Istart;II<Iend;II++) {
48 37925 i = II/n; j = II-i*n;
49
6/8
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
37925 if (i>0) PetscCall(MatSetValue(A,II,II-n,-1.0,INSERT_VALUES));
50
6/8
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
37925 if (i<m-1) PetscCall(MatSetValue(A,II,II+n,-1.0,INSERT_VALUES));
51
6/8
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
37925 if (j>0) PetscCall(MatSetValue(A,II,II-1,-1.0,INSERT_VALUES));
52
6/8
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
37925 if (j<n-1) PetscCall(MatSetValue(A,II,II+1,-1.0,INSERT_VALUES));
53
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
37925 PetscCall(MatSetValue(A,II,II,4.0,INSERT_VALUES));
54
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
37925 PetscCall(MatSetValue(B,II,II,2.0/PetscLogScalar(II+2),INSERT_VALUES));
55 }
56
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetValue(B,0,1,0.4,INSERT_VALUES));
57
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetValue(B,1,0,0.4,INSERT_VALUES));
58
59
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY));
60
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY));
61
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatAssemblyBegin(B,MAT_FINAL_ASSEMBLY));
62
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatAssemblyEnd(B,MAT_FINAL_ASSEMBLY));
63
64
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetOption(A,MAT_SYMMETRIC,PETSC_TRUE));
65
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetOption(A,MAT_HERMITIAN,PETSC_TRUE));
66
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetOption(B,MAT_SYMMETRIC,PETSC_TRUE));
67
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatSetOption(B,MAT_HERMITIAN,PETSC_TRUE));
68
69 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
70 Create the eigensolver and solve the problem
71 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
72
73
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSCreate(PETSC_COMM_WORLD,&eps));
74
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSSetOperators(eps,A,B));
75
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSSetProblemType(eps,EPS_GHEP));
76
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSSetFromOptions(eps));
77
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSSetUp(eps));
78
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSGetST(eps,&st));
79
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(STGetKSP(st,&ksp));
80
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(KSPGetPC(ksp,&pc));
81
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(PCGetType(pc,&pctype));
82
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(PetscPrintf(PETSC_COMM_WORLD," Using %s for the PC\n",pctype));
83
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSSolve(eps));
84
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSErrorView(eps,EPS_ERROR_BACKWARD,NULL));
85
86
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(EPSDestroy(&eps));
87
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatDestroy(&A));
88
4/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
259 PetscCall(MatDestroy(&B));
89
3/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
259 PetscCall(SlepcFinalize());
90 return 0;
91 }
92
93 /*TEST
94
95 test:
96 suffix: 1
97 args: -n 18 -eps_nev 3 -st_type sinvert -eps_target 1.02
98
99 test:
100 suffix: 2
101 args: -n 18 -eps_type ciss -rg_interval_endpoints 1.0,1.2
102 requires: !single
103
104 testset:
105 nsize: {{1 4}}
106 args: -n 8 -eps_nev 60 -st_pc_type redundant
107 filter: grep -v Using
108 requires: !single
109 output_file: output/test32_3.out
110 test:
111 suffix: 3
112 test:
113 suffix: 3_gnhep
114 args: -eps_gen_non_hermitian
115
116 testset:
117 nsize: {{1 4}}
118 args: -n 8 -eps_nev 64 -st_pc_type redundant
119 filter: grep -v Using
120 requires: !single
121 output_file: output/test32_4.out
122 test:
123 suffix: 4
124 test:
125 suffix: 4_gnhep
126 args: -eps_gen_non_hermitian
127
128 testset:
129 requires: !single
130 args: -eps_tol 1e-10 -st_type sinvert -st_ksp_type preonly -st_pc_type cholesky -eps_interval .8,1.1 -eps_krylovschur_partitions 2
131 output_file: output/test32_5.out
132 nsize: 3
133 filter: grep -v Using
134 test:
135 suffix: 5_redundant
136 args: -st_pc_type redundant -st_redundant_pc_type cholesky
137 test:
138 suffix: 5_mumps
139 requires: mumps !complex
140 args: -st_pc_factor_mat_solver_type mumps -st_mat_mumps_icntl_13 1
141 test:
142 suffix: 5_superlu
143 requires: superlu_dist
144 args: -st_pc_factor_mat_solver_type superlu_dist -st_mat_superlu_dist_rowperm NOROWPERM
145 timeoutfactor: 10
146
147 TEST*/
148