xref: /petsc/src/ts/interface/dlregists.c (revision 1153da110c132807661d1701eed1b4f23dada5ea)
1*1153da11SBarry Smith #define PETSCTS_DLL
2*1153da11SBarry Smith 
3*1153da11SBarry Smith #include "petscts.h"
4*1153da11SBarry Smith 
5*1153da11SBarry Smith #undef __FUNCT__
6*1153da11SBarry Smith #define __FUNCT__ "TSInitializePackage"
7*1153da11SBarry Smith /*@C
8*1153da11SBarry Smith   TSInitializePackage - This function initializes everything in the TS package. It is called
9*1153da11SBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to TSCreate()
10*1153da11SBarry Smith   when using static libraries.
11*1153da11SBarry Smith 
12*1153da11SBarry Smith   Input Parameter:
13*1153da11SBarry Smith   path - The dynamic library path, or PETSC_NULL
14*1153da11SBarry Smith 
15*1153da11SBarry Smith   Level: developer
16*1153da11SBarry Smith 
17*1153da11SBarry Smith .keywords: TS, initialize, package
18*1153da11SBarry Smith .seealso: PetscInitialize()
19*1153da11SBarry Smith @*/
20*1153da11SBarry Smith PetscErrorCode PETSCTS_DLLEXPORT TSInitializePackage(const char path[]) {
21*1153da11SBarry Smith   static PetscTruth initialized = PETSC_FALSE;
22*1153da11SBarry Smith   char              logList[256];
23*1153da11SBarry Smith   char              *className;
24*1153da11SBarry Smith   PetscTruth        opt;
25*1153da11SBarry Smith   PetscErrorCode    ierr;
26*1153da11SBarry Smith 
27*1153da11SBarry Smith   PetscFunctionBegin;
28*1153da11SBarry Smith   if (initialized) PetscFunctionReturn(0);
29*1153da11SBarry Smith   initialized = PETSC_TRUE;
30*1153da11SBarry Smith   /* Register Classes */
31*1153da11SBarry Smith   ierr = PetscLogClassRegister(&TS_COOKIE, "TS");CHKERRQ(ierr);
32*1153da11SBarry Smith   /* Register Constructors */
33*1153da11SBarry Smith   ierr = TSRegisterAll(path);CHKERRQ(ierr);
34*1153da11SBarry Smith   /* Register Events */
35*1153da11SBarry Smith   ierr = PetscLogEventRegister(&TS_Step,                  "TSStep",           TS_COOKIE);CHKERRQ(ierr);
36*1153da11SBarry Smith   ierr = PetscLogEventRegister(&TS_PseudoComputeTimeStep, "TSPseudoCmptTStp", TS_COOKIE);CHKERRQ(ierr);
37*1153da11SBarry Smith   ierr = PetscLogEventRegister(&TS_FunctionEval,          "TSFunctionEval",   TS_COOKIE);CHKERRQ(ierr);
38*1153da11SBarry Smith   ierr = PetscLogEventRegister(&TS_JacobianEval,          "TSJacobianEval",   TS_COOKIE);CHKERRQ(ierr);
39*1153da11SBarry Smith   /* Process info exclusions */
40*1153da11SBarry Smith   ierr = PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);CHKERRQ(ierr);
41*1153da11SBarry Smith   if (opt) {
42*1153da11SBarry Smith     ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr);
43*1153da11SBarry Smith     if (className) {
44*1153da11SBarry Smith       ierr = PetscLogInfoDeactivateClass(TS_COOKIE);CHKERRQ(ierr);
45*1153da11SBarry Smith     }
46*1153da11SBarry Smith   }
47*1153da11SBarry Smith   /* Process summary exclusions */
48*1153da11SBarry Smith   ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
49*1153da11SBarry Smith   if (opt) {
50*1153da11SBarry Smith     ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr);
51*1153da11SBarry Smith     if (className) {
52*1153da11SBarry Smith       ierr = PetscLogEventDeactivateClass(TS_COOKIE);CHKERRQ(ierr);
53*1153da11SBarry Smith     }
54*1153da11SBarry Smith   }
55*1153da11SBarry Smith   PetscFunctionReturn(0);
56*1153da11SBarry Smith }
57*1153da11SBarry Smith 
58*1153da11SBarry Smith #ifdef PETSC_USE_DYNAMIC_LIBRARIES
59*1153da11SBarry Smith EXTERN_C_BEGIN
60*1153da11SBarry Smith #undef __FUNCT__
61*1153da11SBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscts"
62*1153da11SBarry Smith /*
63*1153da11SBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
64*1153da11SBarry Smith 
65*1153da11SBarry Smith   This one registers all the TS methods that are in the basic PETSc libpetscts library.
66*1153da11SBarry Smith 
67*1153da11SBarry Smith   Input Parameter:
68*1153da11SBarry Smith   path - library path
69*1153da11SBarry Smith  */
70*1153da11SBarry Smith PetscErrorCode PETSCTS_DLLEXPORT PetscDLLibraryRegister_petscts(char *path)
71*1153da11SBarry Smith {
72*1153da11SBarry Smith   PetscErrorCode ierr;
73*1153da11SBarry Smith 
74*1153da11SBarry Smith   ierr = PetscInitializeNoArguments(); if (ierr) return 1;
75*1153da11SBarry Smith 
76*1153da11SBarry Smith   PetscFunctionBegin;
77*1153da11SBarry Smith   /*
78*1153da11SBarry Smith       If we got here then PETSc was properly loaded
79*1153da11SBarry Smith   */
80*1153da11SBarry Smith   ierr = TSInitializePackage(path);CHKERRQ(ierr);
81*1153da11SBarry Smith   PetscFunctionReturn(0);
82*1153da11SBarry Smith }
83*1153da11SBarry Smith EXTERN_C_END
84*1153da11SBarry Smith 
85*1153da11SBarry Smith /* --------------------------------------------------------------------------*/
86*1153da11SBarry Smith static const char *contents = "PETSc timestepping library. \n\
87*1153da11SBarry Smith      Euler\n\
88*1153da11SBarry Smith      Backward Euler\n\
89*1153da11SBarry Smith      PVODE interface\n";
90*1153da11SBarry Smith static const char *authors  = PETSC_AUTHOR_INFO;
91*1153da11SBarry Smith 
92*1153da11SBarry Smith 
93*1153da11SBarry Smith #endif /* PETSC_USE_DYNAMIC_LIBRARIES */
94