Actual source code: dlregissnes.c
1: #define PETSCSNES_DLL
3: #include private/snesimpl.h
5: static PetscTruth SNESPackageInitialized = PETSC_FALSE;
8: /*@C
9: SNESFinalizePackage - This function destroys everything in the Petsc interface to the charactoristics package. It is
10: called from PetscFinalize().
12: Level: developer
14: .keywords: Petsc, destroy, package, mathematica
15: .seealso: PetscFinalize()
16: @*/
17: PetscErrorCode SNESFinalizePackage(void)
18: {
20: SNESPackageInitialized = PETSC_FALSE;
21: SNESRegisterAllCalled = PETSC_FALSE;
22: SNESList = PETSC_NULL;
23: return(0);
24: }
28: /*@C
29: SNESInitializePackage - This function initializes everything in the SNES package. It is called
30: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to SNESCreate()
31: when using static libraries.
33: Input Parameter:
34: path - The dynamic library path, or PETSC_NULL
36: Level: developer
38: .keywords: SNES, initialize, package
39: .seealso: PetscInitialize()
40: @*/
41: PetscErrorCode SNESInitializePackage(const char path[])
42: {
43: char logList[256];
44: char *className;
45: PetscTruth opt;
46: PetscErrorCode ierr;
49: if (SNESPackageInitialized) return(0);
50: SNESPackageInitialized = PETSC_TRUE;
51: /* Register Classes */
52: PetscCookieRegister("SNES",&SNES_COOKIE);
53: /* Register Constructors */
54: SNESRegisterAll(path);
55: /* Register Events */
56: PetscLogEventRegister("SNESSolve", SNES_COOKIE,&SNES_Solve);
57: PetscLogEventRegister("SNESLineSearch", SNES_COOKIE,&SNES_LineSearch);
58: PetscLogEventRegister("SNESFunctionEval", SNES_COOKIE,&SNES_FunctionEval);
59: PetscLogEventRegister("SNESJacobianEval", SNES_COOKIE,&SNES_JacobianEval);
60: /* Process info exclusions */
61: PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);
62: if (opt) {
63: PetscStrstr(logList, "snes", &className);
64: if (className) {
65: PetscInfoDeactivateClass(SNES_COOKIE);
66: }
67: }
68: /* Process summary exclusions */
69: PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
70: if (opt) {
71: PetscStrstr(logList, "snes", &className);
72: if (className) {
73: PetscLogEventDeactivateClass(SNES_COOKIE);
74: }
75: }
76: PetscRegisterFinalize(SNESFinalizePackage);
77: return(0);
78: }
80: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
84: /*
85: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
87: This registers all of the SNES methods that are in the basic PETSc libpetscsnes library.
89: Input Parameter:
90: path - library path
92: */
93: PetscErrorCode PetscDLLibraryRegister_petscsnes(const char path[])
94: {
97: PetscInitializeNoArguments(); if (ierr) return 1;
99: /*
100: If we got here then PETSc was properly loaded
101: */
102: SNESInitializePackage(path);
103: return(0);
104: }
107: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */