xref: /petsc/src/ts/interface/dlregists.c (revision 715f1b00af42c8aa385eef4857042688c0e6692c)
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];
391153da11SBarry Smith   char           *className;
40ace3abfcSBarry Smith   PetscBool      opt;
411153da11SBarry Smith   PetscErrorCode ierr;
421153da11SBarry Smith 
431153da11SBarry Smith   PetscFunctionBegin;
44b022a5c1SBarry Smith   if (TSPackageInitialized) PetscFunctionReturn(0);
45b022a5c1SBarry Smith   TSPackageInitialized = PETSC_TRUE;
46ed657a08SJed Brown   /* Inialize subpackages */
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);
53607a6623SBarry Smith   ierr = TSAdaptInitializePackage();CHKERRQ(ierr);
5426d28e4eSEmil Constantinescu   ierr = TSGLLEAdaptInitializePackage();CHKERRQ(ierr);
551153da11SBarry Smith   /* Register Classes */
560700a824SBarry Smith   ierr = PetscClassIdRegister("TS",&TS_CLASSID);CHKERRQ(ierr);
57d74926cbSBarry Smith   ierr = PetscClassIdRegister("DMTS",&DMTS_CLASSID);CHKERRQ(ierr);
58bc952696SBarry Smith   ierr = PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);CHKERRQ(ierr);
591153da11SBarry Smith   /* Register Constructors */
60607a6623SBarry Smith   ierr = TSRegisterAll();CHKERRQ(ierr);
61bc952696SBarry Smith   ierr = TSTrajectoryRegisterAll();CHKERRQ(ierr);
621153da11SBarry Smith   /* Register Events */
638d0ad7a8SHong Zhang   ierr = PetscLogEventRegister("TSAdjointStep",TS_CLASSID,&TS_AdjointStep);CHKERRQ(ierr);
64*715f1b00SHong Zhang   ierr = PetscLogEventRegister("TSForwardStep",TS_CLASSID,&TS_ForwardStep);CHKERRQ(ierr);
654c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajSet",TSTRAJECTORY_CLASSID,&TSTrajectory_Set);CHKERRQ(ierr);
664c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajGet",TSTRAJECTORY_CLASSID,&TSTrajectory_Get);CHKERRQ(ierr);
674c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajDiskWrite",TS_CLASSID,&TSTrajectory_DiskWrite);CHKERRQ(ierr);
684c820ef5SHong Zhang   ierr = PetscLogEventRegister("TSTrajDiskRead",TS_CLASSID,&TSTrajectory_DiskRead);CHKERRQ(ierr);
690700a824SBarry Smith   ierr = PetscLogEventRegister("TSStep",TS_CLASSID,&TS_Step);CHKERRQ(ierr);
700700a824SBarry Smith   ierr = PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);CHKERRQ(ierr);
710700a824SBarry Smith   ierr = PetscLogEventRegister("TSFunctionEval",TS_CLASSID,&TS_FunctionEval);CHKERRQ(ierr);
720700a824SBarry Smith   ierr = PetscLogEventRegister("TSJacobianEval",TS_CLASSID,&TS_JacobianEval);CHKERRQ(ierr);
731153da11SBarry Smith   /* Process info exclusions */
74c5929fdfSBarry Smith   ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
751153da11SBarry Smith   if (opt) {
761153da11SBarry Smith     ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr);
771153da11SBarry Smith     if (className) {
780700a824SBarry Smith       ierr = PetscInfoDeactivateClass(TS_CLASSID);CHKERRQ(ierr);
791153da11SBarry Smith     }
801153da11SBarry Smith   }
811153da11SBarry Smith   /* Process summary exclusions */
827bf5a629SBarry Smith   ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr);
831153da11SBarry Smith   if (opt) {
841153da11SBarry Smith     ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr);
851153da11SBarry Smith     if (className) {
860700a824SBarry Smith       ierr = PetscLogEventDeactivateClass(TS_CLASSID);CHKERRQ(ierr);
871153da11SBarry Smith     }
881153da11SBarry Smith   }
89b022a5c1SBarry Smith   ierr = PetscRegisterFinalize(TSFinalizePackage);CHKERRQ(ierr);
901153da11SBarry Smith   PetscFunctionReturn(0);
911153da11SBarry Smith }
921153da11SBarry Smith 
93aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
941153da11SBarry Smith /*
951153da11SBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
961153da11SBarry Smith 
971153da11SBarry Smith   This one registers all the TS methods that are in the basic PETSc libpetscts library.
981153da11SBarry Smith 
991153da11SBarry Smith  */
100560360afSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); /*prototype*/
101607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void)
1021153da11SBarry Smith {
1031153da11SBarry Smith   PetscErrorCode ierr;
1041153da11SBarry Smith 
1051153da11SBarry Smith   PetscFunctionBegin;
106607a6623SBarry Smith   ierr = TSInitializePackage();CHKERRQ(ierr);
1071153da11SBarry Smith   PetscFunctionReturn(0);
1081153da11SBarry Smith }
1091153da11SBarry Smith 
1101153da11SBarry Smith 
111aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
112