Actual source code: svdregis.c
slepc-3.16.3 2022-04-11
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-2021, Universitat Politecnica de Valencia, Spain
6: This file is part of SLEPc.
7: SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9: */
11: #include <slepc/private/svdimpl.h>
13: SLEPC_EXTERN PetscErrorCode SVDCreate_Cross(SVD);
14: SLEPC_EXTERN PetscErrorCode SVDCreate_Cyclic(SVD);
15: SLEPC_EXTERN PetscErrorCode SVDCreate_LAPACK(SVD);
16: SLEPC_EXTERN PetscErrorCode SVDCreate_Lanczos(SVD);
17: SLEPC_EXTERN PetscErrorCode SVDCreate_TRLanczos(SVD);
18: SLEPC_EXTERN PetscErrorCode SVDCreate_Randomized(SVD);
19: #if defined(SLEPC_HAVE_SCALAPACK)
20: SLEPC_EXTERN PetscErrorCode SVDCreate_ScaLAPACK(SVD);
21: #endif
22: #if defined(SLEPC_HAVE_ELEMENTAL)
23: SLEPC_EXTERN PetscErrorCode SVDCreate_Elemental(SVD);
24: #endif
25: #if defined(SLEPC_HAVE_PRIMME)
26: SLEPC_EXTERN PetscErrorCode SVDCreate_PRIMME(SVD);
27: #endif
29: /*@C
30: SVDRegisterAll - Registers all the singular value solvers in the SVD package.
32: Not Collective
34: Level: advanced
36: .seealso: SVDRegister()
37: @*/
38: PetscErrorCode SVDRegisterAll(void)
39: {
43: if (SVDRegisterAllCalled) return(0);
44: SVDRegisterAllCalled = PETSC_TRUE;
45: SVDRegister(SVDCROSS,SVDCreate_Cross);
46: SVDRegister(SVDCYCLIC,SVDCreate_Cyclic);
47: SVDRegister(SVDLAPACK,SVDCreate_LAPACK);
48: SVDRegister(SVDLANCZOS,SVDCreate_Lanczos);
49: SVDRegister(SVDTRLANCZOS,SVDCreate_TRLanczos);
50: SVDRegister(SVDRANDOMIZED,SVDCreate_Randomized);
51: #if defined(SLEPC_HAVE_SCALAPACK)
52: SVDRegister(SVDSCALAPACK,SVDCreate_ScaLAPACK);
53: #endif
54: #if defined(SLEPC_HAVE_ELEMENTAL)
55: SVDRegister(SVDELEMENTAL,SVDCreate_Elemental);
56: #endif
57: #if defined(SLEPC_HAVE_PRIMME)
58: SVDRegister(SVDPRIMME,SVDCreate_PRIMME);
59: #endif
60: return(0);
61: }
63: /*@C
64: SVDMonitorRegisterAll - Registers all the monitors in the SVD package.
66: Not Collective
68: Level: advanced
69: @*/
70: PetscErrorCode SVDMonitorRegisterAll(void)
71: {
75: if (SVDMonitorRegisterAllCalled) return(0);
76: SVDMonitorRegisterAllCalled = PETSC_TRUE;
78: SVDMonitorRegister("first_approximation",PETSCVIEWERASCII,PETSC_VIEWER_DEFAULT,SVDMonitorFirst,NULL,NULL);
79: SVDMonitorRegister("first_approximation",PETSCVIEWERDRAW,PETSC_VIEWER_DRAW_LG,SVDMonitorFirstDrawLG,SVDMonitorFirstDrawLGCreate,NULL);
80: SVDMonitorRegister("all_approximations",PETSCVIEWERASCII,PETSC_VIEWER_DEFAULT,SVDMonitorAll,NULL,NULL);
81: SVDMonitorRegister("all_approximations",PETSCVIEWERDRAW,PETSC_VIEWER_DRAW_LG,SVDMonitorAllDrawLG,SVDMonitorAllDrawLGCreate,NULL);
82: SVDMonitorRegister("convergence_history",PETSCVIEWERASCII,PETSC_VIEWER_DEFAULT,SVDMonitorConverged,SVDMonitorConvergedCreate,SVDMonitorConvergedDestroy);
83: SVDMonitorRegister("convergence_history",PETSCVIEWERDRAW,PETSC_VIEWER_DRAW_LG,SVDMonitorConvergedDrawLG,SVDMonitorConvergedDrawLGCreate,SVDMonitorConvergedDestroy);
84: return(0);
85: }