GCC Code Coverage Report


Directory: ./
File: src/pep/interface/dlregispep.c
Date: 2026-03-15 03:56:54
Exec Total Coverage
Lines: 36 36 100.0%
Functions: 3 3 100.0%
Branches: 100 162 61.7%

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 #include <slepc/private/pepimpl.h>
12
13 static PetscBool PEPPackageInitialized = PETSC_FALSE;
14
15 const char *PEPBasisTypes[] = {"MONOMIAL","CHEBYSHEV1","CHEBYSHEV2","LEGENDRE","LAGUERRE","HERMITE","PEPBasis","PEP_BASIS_",NULL};
16 const char *PEPScaleTypes[] = {"NONE","SCALAR","DIAGONAL","BOTH","PEPScale","PEP_SCALE_",NULL};
17 const char *PEPRefineTypes[] = {"NONE","SIMPLE","MULTIPLE","PEPRefine","PEP_REFINE_",NULL};
18 const char *PEPRefineSchemes[] = {"","SCHUR","MBE","EXPLICIT","PEPRefineScheme","PEP_REFINE_SCHEME_",NULL};
19 const char *PEPExtractTypes[] = {"","NONE","NORM","RESIDUAL","STRUCTURED","PEPExtract","PEP_EXTRACT_",NULL};
20 const char *PEPErrorTypes[] = {"ABSOLUTE","RELATIVE","BACKWARD","PEPErrorType","PEP_ERROR_",NULL};
21 const char *const PEPConvergedReasons_Shifted[] = {"","DIVERGED_SYMMETRY_LOST","DIVERGED_BREAKDOWN","DIVERGED_ITS","CONVERGED_ITERATING","CONVERGED_TOL","CONVERGED_USER","PEPConvergedReason","PEP_",NULL};
22 const char *const*PEPConvergedReasons = PEPConvergedReasons_Shifted + 4;
23 const char *PEPJDProjectionTypes[] = {"HARMONIC","ORTHOGONAL","PEPJDProjection","PEP_JD_PROJECTION_",NULL};
24 const char *PEPCISSExtractions[] = {"RITZ","HANKEL","CAA","PEPCISSExtraction","PEP_CISS_EXTRACTION_",NULL};
25
26 /*@C
27 PEPFinalizePackage - This function destroys everything in the SLEPc interface
28 to the `PEP` package. It is called from `SlepcFinalize()`.
29
30 Level: developer
31
32 .seealso: [](ch:pep), `SlepcFinalize()`, `PEPInitializePackage()`
33 @*/
34 1915 PetscErrorCode PEPFinalizePackage(void)
35 {
36
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1915 PetscFunctionBegin;
37
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.
1915 PetscCall(PetscFunctionListDestroy(&PEPList));
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.
1915 PetscCall(PetscFunctionListDestroy(&PEPMonitorList));
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.
1915 PetscCall(PetscFunctionListDestroy(&PEPMonitorCreateList));
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.
1915 PetscCall(PetscFunctionListDestroy(&PEPMonitorDestroyList));
41 1915 PEPPackageInitialized = PETSC_FALSE;
42 1915 PEPRegisterAllCalled = PETSC_FALSE;
43 1915 PEPMonitorRegisterAllCalled = PETSC_FALSE;
44
6/12
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
1915 PetscFunctionReturn(PETSC_SUCCESS);
45 }
46
47 /*@C
48 PEPInitializePackage - This function initializes everything in the `PEP` package.
49 It is called from `PetscDLLibraryRegister_slepcpep()` when using dynamic libraries, and
50 on the first call to `PEPCreate()` when using shared or static libraries.
51
52 Note:
53 This function never needs to be called by SLEPc users.
54
55 Level: developer
56
57 .seealso: [](ch:pep), `PEP`, `SlepcInitialize()`, `PEPFinalizePackage()`
58 @*/
59 24121 PetscErrorCode PEPInitializePackage(void)
60 {
61 24121 char logList[256];
62 24121 PetscBool opt,pkg;
63 24121 PetscClassId classids[1];
64
65
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
24121 PetscFunctionBegin;
66
8/14
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
24121 if (PEPPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
67 1915 PEPPackageInitialized = PETSC_TRUE;
68 /* Register Classes */
69
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.
1915 PetscCall(PetscClassIdRegister("PEP Solver",&PEP_CLASSID));
70 /* Register Constructors */
71
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.
1915 PetscCall(PEPRegisterAll());
72 /* Register Monitors */
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.
1915 PetscCall(PEPMonitorRegisterAll());
74 /* Register Events */
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.
1915 PetscCall(PetscLogEventRegister("PEPSetUp",PEP_CLASSID,&PEP_SetUp));
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.
1915 PetscCall(PetscLogEventRegister("PEPSolve",PEP_CLASSID,&PEP_Solve));
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.
1915 PetscCall(PetscLogEventRegister("PEPRefine",PEP_CLASSID,&PEP_Refine));
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.
1915 PetscCall(PetscLogEventRegister("PEPCISS_SVD",PEP_CLASSID,&PEP_CISS_SVD));
79 /* Process Info */
80 1915 classids[0] = PEP_CLASSID;
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.
1915 PetscCall(PetscInfoProcessClass("pep",1,&classids[0]));
82 /* Process summary exclusions */
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.
1915 PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt));
84
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
1915 if (opt) {
85
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.
40 PetscCall(PetscStrInList("pep",logList,',',&pkg));
86
5/8
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ 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.
40 if (pkg) PetscCall(PetscLogEventDeactivateClass(PEP_CLASSID));
87 }
88 /* Register package finalizer */
89
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.
1915 PetscCall(PetscRegisterFinalize(PEPFinalizePackage));
90
6/12
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
368 PetscFunctionReturn(PETSC_SUCCESS);
91 }
92
93 #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
94 /*
95 PetscDLLibraryRegister - This function is called when the dynamic library
96 it is in is opened.
97
98 This one registers all the PEP methods that are in the basic SLEPc libslepcpep
99 library.
100 */
101 10 SLEPC_EXTERN PetscErrorCode PetscDLLibraryRegister_slepcpep(void)
102 {
103
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
10 PetscFunctionBegin;
104
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.
10 PetscCall(PEPInitializePackage());
105
6/12
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
2 PetscFunctionReturn(PETSC_SUCCESS);
106 }
107 #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
108