xref: /petsc/src/ts/interface/dlregists.c (revision 8e81d0682c925ac65a16095f60c998f9f3b7b642)
11153da11SBarry Smith 
2af0996ceSBarry Smith #include <petsc/private/tsimpl.h>
31153da11SBarry Smith 
4ace3abfcSBarry Smith static PetscBool TSPackageInitialized = PETSC_FALSE;
5b022a5c1SBarry Smith /*@C
6b022a5c1SBarry Smith   TSFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is
7b022a5c1SBarry Smith   called from PetscFinalize().
8b022a5c1SBarry Smith 
9b022a5c1SBarry Smith   Level: developer
10b022a5c1SBarry Smith 
11b022a5c1SBarry Smith .keywords: Petsc, destroy, package, mathematica
12b022a5c1SBarry Smith .seealso: PetscFinalize()
13b022a5c1SBarry Smith @*/
147087cfbeSBarry Smith PetscErrorCode  TSFinalizePackage(void)
15b022a5c1SBarry Smith {
1637e93019SBarry Smith   PetscErrorCode ierr;
1737e93019SBarry Smith 
18b022a5c1SBarry Smith   PetscFunctionBegin;
1937e93019SBarry Smith   ierr = PetscFunctionListDestroy(&TSList);CHKERRQ(ierr);
20bc952696SBarry Smith   ierr = PetscFunctionListDestroy(&TSTrajectoryList);CHKERRQ(ierr);
21b022a5c1SBarry Smith   TSPackageInitialized = PETSC_FALSE;
22b022a5c1SBarry Smith   TSRegisterAllCalled  = PETSC_FALSE;
23b022a5c1SBarry Smith   PetscFunctionReturn(0);
24b022a5c1SBarry Smith }
25b022a5c1SBarry Smith 
261153da11SBarry Smith /*@C
271153da11SBarry Smith   TSInitializePackage - This function initializes everything in the TS package. It is called
281153da11SBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to TSCreate()
291153da11SBarry Smith   when using static libraries.
301153da11SBarry Smith 
311153da11SBarry Smith   Level: developer
321153da11SBarry Smith 
331153da11SBarry Smith .keywords: TS, initialize, package
341153da11SBarry Smith .seealso: PetscInitialize()
351153da11SBarry Smith @*/
36607a6623SBarry Smith PetscErrorCode  TSInitializePackage(void)
37b022a5c1SBarry Smith {
381153da11SBarry Smith   char           logList[256];
39*8e81d068SLisandro Dalcin   PetscBool      opt,pkg,cls;
401153da11SBarry Smith   PetscErrorCode ierr;
411153da11SBarry Smith 
421153da11SBarry Smith   PetscFunctionBegin;
43b022a5c1SBarry Smith   if (TSPackageInitialized) PetscFunctionReturn(0);
44b022a5c1SBarry Smith   TSPackageInitialized = PETSC_TRUE;
45ed657a08SJed Brown   /* Inialize subpackages */
46*8e81d068SLisandro Dalcin   ierr = TSAdaptInitializePackage();CHKERRQ(ierr);
4726d28e4eSEmil Constantinescu   ierr = TSGLLEInitializePackage();CHKERRQ(ierr);
48f68a32c8SEmil Constantinescu   ierr = TSRKInitializePackage();CHKERRQ(ierr);
49b6a60446SDebojyoti Ghosh   ierr = TSGLEEInitializePackage();CHKERRQ(ierr);
50607a6623SBarry Smith   ierr = TSARKIMEXInitializePackage();CHKERRQ(ierr);
51607a6623SBarry Smith   ierr = TSRosWInitializePackage();CHKERRQ(ierr);
52787849ffSJed Brown   ierr = TSSSPInitializePackage();CHKERRQ(ierr);
5326d28e4eSEmil Constantinescu   ierr = TSGLLEAdaptInitializePackage();CHKERRQ(ierr);
541153da11SBarry Smith   /* Register Classes */
550700a824SBarry Smith   ierr = PetscClassIdRegister("TS",&TS_CLASSID);CHKERRQ(ierr);
56d74926cbSBarry Smith   ierr = PetscClassIdRegister("DMTS",&DMTS_CLASSID);CHKERRQ(ierr);
57bc952696SBarry Smith   ierr = PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);CHKERRQ(ierr);
581153da11SBarry Smith   /* Register Constructors */
59607a6623SBarry Smith   ierr = TSRegisterAll();CHKERRQ(ierr);
60bc952696SBarry Smith   ierr = TSTrajectoryRegisterAll();CHKERRQ(ierr);
611153da11SBarry Smith   /* Register Events */
628d0ad7a8SHong Zhang   ierr = PetscLogEventRegister("TSAdjointStep",TS_CLASSID,&TS_AdjointStep);CHKERRQ(ierr);
63715f1b00SHong Zhang   ierr = PetscLogEventRegister("TSForwardStep",TS_CLASSID,&TS_ForwardStep);CHKERRQ(ierr);
644c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajSet",TSTRAJECTORY_CLASSID,&TSTrajectory_Set);CHKERRQ(ierr);
654c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajGet",TSTRAJECTORY_CLASSID,&TSTrajectory_Get);CHKERRQ(ierr);
664c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajDiskWrite",TS_CLASSID,&TSTrajectory_DiskWrite);CHKERRQ(ierr);
674c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajDiskRead",TS_CLASSID,&TSTrajectory_DiskRead);CHKERRQ(ierr);
680700a824SBarry Smith   ierr = PetscLogEventRegister("TSStep",TS_CLASSID,&TS_Step);CHKERRQ(ierr);
690700a824SBarry Smith   ierr = PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);CHKERRQ(ierr);
700700a824SBarry Smith   ierr = PetscLogEventRegister("TSFunctionEval",TS_CLASSID,&TS_FunctionEval);CHKERRQ(ierr);
710700a824SBarry Smith   ierr = PetscLogEventRegister("TSJacobianEval",TS_CLASSID,&TS_JacobianEval);CHKERRQ(ierr);
721153da11SBarry Smith   /* Process info exclusions */
73*8e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
741153da11SBarry Smith   if (opt) {
75*8e81d068SLisandro Dalcin     ierr = PetscStrInList("ts",logList,',',&pkg);CHKERRQ(ierr);
76*8e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(TS_CLASSID);CHKERRQ(ierr);}
77*8e81d068SLisandro Dalcin     ierr = PetscStrInList("dm",logList,',',&cls);CHKERRQ(ierr);
78*8e81d068SLisandro Dalcin     if (pkg || cls) {ierr = PetscInfoDeactivateClass(DMTS_CLASSID);CHKERRQ(ierr);}
79*8e81d068SLisandro Dalcin     ierr = PetscStrInList("tsadapt",logList,',',&cls);CHKERRQ(ierr);
80*8e81d068SLisandro Dalcin     if (pkg || cls) {ierr = PetscInfoDeactivateClass(TSADAPT_CLASSID);CHKERRQ(ierr);}
81*8e81d068SLisandro Dalcin     ierr = PetscStrInList("tstrajectory",logList,',',&cls);CHKERRQ(ierr);
82*8e81d068SLisandro Dalcin     if (pkg || cls) {ierr = PetscInfoDeactivateClass(TSTRAJECTORY_CLASSID);CHKERRQ(ierr);}
831153da11SBarry Smith   }
841153da11SBarry Smith   /* Process summary exclusions */
85*8e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
861153da11SBarry Smith   if (opt) {
87*8e81d068SLisandro Dalcin     ierr = PetscStrInList("ts",logList,',',&pkg);CHKERRQ(ierr);
88*8e81d068SLisandro Dalcin     if (pkg) {ierr = PetscLogEventDeactivateClass(TS_CLASSID);CHKERRQ(ierr);}
89*8e81d068SLisandro Dalcin     ierr = PetscStrInList("dm",logList,',',&cls);CHKERRQ(ierr);
90*8e81d068SLisandro Dalcin     if (pkg || cls) {ierr = PetscLogEventDeactivateClass(DMTS_CLASSID);CHKERRQ(ierr);}
91*8e81d068SLisandro Dalcin     ierr = PetscStrInList("tsadapt",logList,',',&cls);CHKERRQ(ierr);
92*8e81d068SLisandro Dalcin     if (pkg || cls) {ierr = PetscLogEventDeactivateClass(TSADAPT_CLASSID);CHKERRQ(ierr);}
93*8e81d068SLisandro Dalcin     ierr = PetscStrInList("tstrajectory",logList,',',&cls);CHKERRQ(ierr);
94*8e81d068SLisandro Dalcin     if (pkg || cls) {ierr = PetscLogEventDeactivateClass(TSTRAJECTORY_CLASSID);CHKERRQ(ierr);}
951153da11SBarry Smith   }
96*8e81d068SLisandro Dalcin   /* Register package finalizer */
97b022a5c1SBarry Smith   ierr = PetscRegisterFinalize(TSFinalizePackage);CHKERRQ(ierr);
981153da11SBarry Smith   PetscFunctionReturn(0);
991153da11SBarry Smith }
1001153da11SBarry Smith 
101aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
1021153da11SBarry Smith /*
1031153da11SBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
1041153da11SBarry Smith 
1051153da11SBarry Smith   This one registers all the TS methods that are in the basic PETSc libpetscts library.
1061153da11SBarry Smith 
1071153da11SBarry Smith  */
108560360afSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); /*prototype*/
109607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void)
1101153da11SBarry Smith {
1111153da11SBarry Smith   PetscErrorCode ierr;
1121153da11SBarry Smith 
1131153da11SBarry Smith   PetscFunctionBegin;
114607a6623SBarry Smith   ierr = TSInitializePackage();CHKERRQ(ierr);
1151153da11SBarry Smith   PetscFunctionReturn(0);
1161153da11SBarry Smith }
1171153da11SBarry Smith 
1181153da11SBarry Smith 
119aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
120