Actual source code: dlregists.c
petsc-3.12.5 2020-03-29
1: #include <petsc/private/tsimpl.h>
3: static PetscBool TSPackageInitialized = PETSC_FALSE;
4: /*@C
5: TSFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is
6: called from PetscFinalize().
8: Level: developer
10: .seealso: PetscFinalize()
11: @*/
12: PetscErrorCode TSFinalizePackage(void)
13: {
17: PetscFunctionListDestroy(&TSList);
18: PetscFunctionListDestroy(&TSTrajectoryList);
19: TSPackageInitialized = PETSC_FALSE;
20: TSRegisterAllCalled = PETSC_FALSE;
21: return(0);
22: }
24: /*@C
25: TSInitializePackage - This function initializes everything in the TS package. It is called
26: from PetscDLLibraryRegister_petscts() when using dynamic libraries, and on the first call to TSCreate()
27: when using shared or static libraries.
29: Level: developer
31: .seealso: PetscInitialize()
32: @*/
33: PetscErrorCode TSInitializePackage(void)
34: {
35: char logList[256];
36: PetscBool opt,pkg,cls;
40: if (TSPackageInitialized) return(0);
41: TSPackageInitialized = PETSC_TRUE;
42: /* Inialize subpackages */
43: TSAdaptInitializePackage();
44: TSGLLEInitializePackage();
45: TSRKInitializePackage();
46: TSGLEEInitializePackage();
47: TSARKIMEXInitializePackage();
48: TSRosWInitializePackage();
49: TSSSPInitializePackage();
50: TSGLLEAdaptInitializePackage();
51: TSBasicSymplecticInitializePackage();
52: /* Register Classes */
53: PetscClassIdRegister("TS",&TS_CLASSID);
54: PetscClassIdRegister("DMTS",&DMTS_CLASSID);
55: PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);
57: /* Register Constructors */
58: TSRegisterAll();
59: TSTrajectoryRegisterAll();
60: /* Register Events */
61: PetscLogEventRegister("TSStep", TS_CLASSID,&TS_Step);
62: PetscLogEventRegister("TSFunctionEval", TS_CLASSID,&TS_FunctionEval);
63: PetscLogEventRegister("TSJacobianEval", TS_CLASSID,&TS_JacobianEval);
64: PetscLogEventRegister("TSForwardStep", TS_CLASSID,&TS_ForwardStep);
65: PetscLogEventRegister("TSAdjointStep", TS_CLASSID,&TS_AdjointStep);
66: PetscLogEventRegister("TSTrajectorySet", TSTRAJECTORY_CLASSID,&TSTrajectory_Set);
67: PetscLogEventRegister("TSTrajectoryGet", TSTRAJECTORY_CLASSID,&TSTrajectory_Get);
68: PetscLogEventRegister("TSTrajGetVecs", TSTRAJECTORY_CLASSID,&TSTrajectory_GetVecs);
69: PetscLogEventRegister("TSTrajDiskWrite", TSTRAJECTORY_CLASSID,&TSTrajectory_DiskWrite);
70: PetscLogEventRegister("TSTrajDiskRead", TSTRAJECTORY_CLASSID,&TSTrajectory_DiskRead);
71: PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);
72: /* Process info exclusions */
73: PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);
74: if (opt) {
75: PetscStrInList("ts",logList,',',&pkg);
76: if (pkg) {PetscInfoDeactivateClass(TS_CLASSID);}
77: PetscStrInList("dm",logList,',',&cls);
78: if (pkg || cls) {PetscInfoDeactivateClass(DMTS_CLASSID);}
79: PetscStrInList("tsadapt",logList,',',&cls);
80: if (pkg || cls) {PetscInfoDeactivateClass(TSADAPT_CLASSID);}
81: PetscStrInList("tstrajectory",logList,',',&cls);
82: if (pkg || cls) {PetscInfoDeactivateClass(TSTRAJECTORY_CLASSID);}
83: }
84: /* Process summary exclusions */
85: PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);
86: if (opt) {
87: PetscStrInList("ts",logList,',',&pkg);
88: if (pkg) {PetscLogEventExcludeClass(TS_CLASSID);}
89: PetscStrInList("dm",logList,',',&cls);
90: if (pkg || cls) {PetscLogEventExcludeClass(DMTS_CLASSID);}
91: PetscStrInList("tsadapt",logList,',',&cls);
92: if (pkg || cls) {PetscLogEventExcludeClass(TSADAPT_CLASSID);}
93: PetscStrInList("tstrajectory",logList,',',&cls);
94: if (pkg || cls) {PetscLogEventExcludeClass(TSTRAJECTORY_CLASSID);}
95: }
96: /* Register package finalizer */
97: PetscRegisterFinalize(TSFinalizePackage);
98: return(0);
99: }
101: #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
102: /*
103: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
105: This one registers all the TS methods that are in the basic PETSc libpetscts library.
107: */
108: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); /*prototype*/
109: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void)
110: {
114: TSInitializePackage();
115: return(0);
116: }
117: #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */