GCC Code Coverage Report


Directory: ./
File: src/eps/interface/dlregiseps.c
Date: 2026-10-02 04:19:29
Exec Total Coverage
Lines: 35 35 100.0%
Functions: 3 3 100.0%
Branches: 97 156 62.2%

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/epsimpl.h>
12
13 static PetscBool EPSPackageInitialized = PETSC_FALSE;
14
15 const char *EPSBalanceTypes[] = {"NONE","ONESIDE","TWOSIDE","USER","EPSBalance","EPS_BALANCE_",NULL};
16 const char *EPSErrorTypes[] = {"ABSOLUTE","RELATIVE","BACKWARD","EPSErrorType","EPS_ERROR_",NULL};
17 const char *EPSPowerShiftTypes[] = {"CONSTANT","RAYLEIGH","WILKINSON","EPSPowerShiftType","EPS_POWER_SHIFT_",NULL};
18 const char *EPSKrylovSchurBSETypes[] = {"SHAO","GRUNING","PROJECTEDBSE","EPSKrylovSchurBSEType","EPS_KRYLOVSCHUR_BSE_",NULL};
19 const char *EPSKrylovSchurLREPTypes[] = {"TENG","ZHONG","EPSKrylovSchurLREPType","EPS_KRYLOVSCHUR_LREP_",NULL};
20 const char *EPSLanczosReorthogTypes[] = {"LOCAL","FULL","SELECTIVE","PERIODIC","PARTIAL","DELAYED","EPSLanczosReorthogType","EPS_LANCZOS_REORTHOG_",NULL};
21 const char *EPSPRIMMEMethods[] = {"","DYNAMIC","DEFAULT_MIN_TIME","DEFAULT_MIN_MATVECS","ARNOLDI","GD","GD_PLUSK","GD_OLSEN_PLUSK","JD_OLSEN_PLUSK","RQI","JDQR","JDQMR","JDQMR_ETOL","SUBSPACE_ITERATION","LOBPCG_ORTHOBASIS","LOBPCG_ORTHOBASISW","EPSPRIMMEMethod","EPS_PRIMME_",NULL};
22 const char *EPSCISSQuadRules[] = {"(not set yet)","TRAPEZOIDAL","CHEBYSHEV","EPSCISSQuadRule","EPS_CISS_QUADRULE_",NULL};
23 const char *EPSCISSExtractions[] = {"RITZ","HANKEL","EPSCISSExtraction","EPS_CISS_EXTRACTION_",NULL};
24 const char *EPSCISSStrategies[] = {"(not set yet)","USEST","SPLIT","MULTISHIFT","EPSCISSStrategy","EPS_CISS_STRATEGY_",NULL};
25 const char *EPSEVSLDOSMethods[] = {"KPM","LANCZOS","EPSEVSLDOSMethod","EPS_EVSL_DOS_",NULL};
26 const char *EPSEVSLDampings[] = {"NONE","JACKSON","SIGMA","EPSEVSLDamping","EPS_EVSL_DAMPING_",NULL};
27 const char *const EPSConvergedReasons_Shifted[] = {"","DIVERGED_SYMMETRY_LOST","DIVERGED_BREAKDOWN","DIVERGED_ITS","CONVERGED_ITERATING","CONVERGED_TOL","CONVERGED_USER","EPSConvergedReason","EPS_",NULL};
28 const char *const*EPSConvergedReasons = EPSConvergedReasons_Shifted + 4;
29
30 /*@
31 EPSFinalizePackage - This function destroys everything in the SLEPc interface
32 to the `EPS` package. It is called from `SlepcFinalize()`.
33
34 Level: developer
35
36 .seealso: [](ch:eps), `SlepcFinalize()`, `EPSInitializePackage()`
37 @*/
38 6982 PetscErrorCode EPSFinalizePackage(void)
39 {
40
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
6982 PetscFunctionBegin;
41
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.
6982 PetscCall(PetscFunctionListDestroy(&EPSList));
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.
6982 PetscCall(PetscFunctionListDestroy(&EPSMonitorList));
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.
6982 PetscCall(PetscFunctionListDestroy(&EPSMonitorCreateList));
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.
6982 PetscCall(PetscFunctionListDestroy(&EPSMonitorDestroyList));
45 6982 EPSPackageInitialized = PETSC_FALSE;
46 6982 EPSRegisterAllCalled = PETSC_FALSE;
47 6982 EPSMonitorRegisterAllCalled = PETSC_FALSE;
48
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.
6982 PetscFunctionReturn(PETSC_SUCCESS);
49 }
50
51 /*@
52 EPSInitializePackage - This function initializes everything in the `EPS` package.
53 It is called from `PetscDLLibraryRegister_slepceps()` when using dynamic libraries, and
54 on the first call to `EPSCreate()` when using shared or static libraries.
55
56 Note:
57 This function never needs to be called by SLEPc users.
58
59 Level: developer
60
61 .seealso: [](ch:eps), `EPS`, `SlepcInitialize()`, `EPSFinalizePackage()`
62 @*/
63 153104 PetscErrorCode EPSInitializePackage(void)
64 {
65 153104 char logList[256];
66 153104 PetscBool opt,pkg;
67 153104 PetscClassId classids[1];
68
69
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
153104 PetscFunctionBegin;
70
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.
153104 if (EPSPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
71 6982 EPSPackageInitialized = PETSC_TRUE;
72 /* Register Classes */
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.
6982 PetscCall(PetscClassIdRegister("EPS Solver",&EPS_CLASSID));
74 /* Register Constructors */
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.
6982 PetscCall(EPSRegisterAll());
76 /* Register Monitors */
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.
6982 PetscCall(EPSMonitorRegisterAll());
78 /* Register Events */
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.
6982 PetscCall(PetscLogEventRegister("EPSSetUp",EPS_CLASSID,&EPS_SetUp));
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.
6982 PetscCall(PetscLogEventRegister("EPSSolve",EPS_CLASSID,&EPS_Solve));
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.
6982 PetscCall(PetscLogEventRegister("EPSCISS_SVD",EPS_CLASSID,&EPS_CISS_SVD));
82 /* Process Info */
83 6982 classids[0] = EPS_CLASSID;
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.
6982 PetscCall(PetscInfoProcessClass("eps",1,&classids[0]));
85 /* Process summary exclusions */
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.
6982 PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt));
87
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
6982 if (opt) {
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.
44 PetscCall(PetscStrInList("eps",logList,',',&pkg));
89
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.
44 if (pkg) PetscCall(PetscLogEventDeactivateClass(EPS_CLASSID));
90 }
91 /* Register package finalizer */
92
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.
6982 PetscCall(PetscRegisterFinalize(EPSFinalizePackage));
93
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.
1359 PetscFunctionReturn(PETSC_SUCCESS);
94 }
95
96 #if PetscDefined(HAVE_DYNAMIC_LIBRARIES)
97 /*
98 PetscDLLibraryRegister - This function is called when the dynamic library
99 it is in is opened.
100
101 This one registers all the EPS methods that are in the basic SLEPc libslepceps
102 library.
103 */
104 10 SLEPC_EXTERN PetscErrorCode PetscDLLibraryRegister_slepceps(void)
105 {
106
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
10 PetscFunctionBegin;
107
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(EPSInitializePackage());
108
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);
109 }
110 #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
111