xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 5c6c1daec53e1d9ab0bec9db5309fd8fc7645b8d)
1*5c6c1daeSBarry Smith 
2*5c6c1daeSBarry Smith #include <petscdraw.h>
3*5c6c1daeSBarry Smith #include <petscsf.h>
4*5c6c1daeSBarry Smith 
5*5c6c1daeSBarry Smith extern PetscLogEvent  PETSC_Barrier;
6*5c6c1daeSBarry Smith 
7*5c6c1daeSBarry Smith static PetscBool  PetscSysPackageInitialized = PETSC_FALSE;
8*5c6c1daeSBarry Smith #undef __FUNCT__
9*5c6c1daeSBarry Smith #define __FUNCT__ "PetscSysFinalizePackage"
10*5c6c1daeSBarry Smith /*@C
11*5c6c1daeSBarry Smith   PetscSysFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is
12*5c6c1daeSBarry Smith   called from PetscFinalize().
13*5c6c1daeSBarry Smith 
14*5c6c1daeSBarry Smith   Level: developer
15*5c6c1daeSBarry Smith 
16*5c6c1daeSBarry Smith .keywords: Petsc, destroy, package, mathematica
17*5c6c1daeSBarry Smith .seealso: PetscFinalize()
18*5c6c1daeSBarry Smith @*/
19*5c6c1daeSBarry Smith PetscErrorCode  PetscSysFinalizePackage(void)
20*5c6c1daeSBarry Smith {
21*5c6c1daeSBarry Smith   PetscFunctionBegin;
22*5c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
23*5c6c1daeSBarry Smith   PetscFunctionReturn(0);
24*5c6c1daeSBarry Smith }
25*5c6c1daeSBarry Smith 
26*5c6c1daeSBarry Smith #undef __FUNCT__
27*5c6c1daeSBarry Smith #define __FUNCT__ "PetscSysInitializePackage"
28*5c6c1daeSBarry Smith /*@C
29*5c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
30*5c6c1daeSBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize()
31*5c6c1daeSBarry Smith   when using static libraries.
32*5c6c1daeSBarry Smith 
33*5c6c1daeSBarry Smith   Input Parameter:
34*5c6c1daeSBarry Smith   path - The dynamic library path, or PETSC_NULL
35*5c6c1daeSBarry Smith 
36*5c6c1daeSBarry Smith   Level: developer
37*5c6c1daeSBarry Smith 
38*5c6c1daeSBarry Smith .keywords: Petsc, initialize, package
39*5c6c1daeSBarry Smith .seealso: PetscInitialize()
40*5c6c1daeSBarry Smith @*/
41*5c6c1daeSBarry Smith PetscErrorCode  PetscSysInitializePackage(const char path[])
42*5c6c1daeSBarry Smith {
43*5c6c1daeSBarry Smith   char              logList[256];
44*5c6c1daeSBarry Smith   char              *className;
45*5c6c1daeSBarry Smith   PetscBool         opt;
46*5c6c1daeSBarry Smith   PetscErrorCode    ierr;
47*5c6c1daeSBarry Smith 
48*5c6c1daeSBarry Smith   PetscFunctionBegin;
49*5c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
50*5c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
51*5c6c1daeSBarry Smith   /* Register Classes */
52*5c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
53*5c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
54*5c6c1daeSBarry Smith 
55*5c6c1daeSBarry Smith   /* Register Events */
56*5c6c1daeSBarry Smith   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
57*5c6c1daeSBarry Smith   /* Process info exclusions */
58*5c6c1daeSBarry Smith   ierr = PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
59*5c6c1daeSBarry Smith   if (opt) {
60*5c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
61*5c6c1daeSBarry Smith     if (className) {
62*5c6c1daeSBarry Smith       ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);
63*5c6c1daeSBarry Smith     }
64*5c6c1daeSBarry Smith   }
65*5c6c1daeSBarry Smith   /* Process summary exclusions */
66*5c6c1daeSBarry Smith   ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
67*5c6c1daeSBarry Smith   if (opt) {
68*5c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
69*5c6c1daeSBarry Smith     if (className) {
70*5c6c1daeSBarry Smith       ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr);
71*5c6c1daeSBarry Smith     }
72*5c6c1daeSBarry Smith   }
73*5c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
74*5c6c1daeSBarry Smith   PetscFunctionReturn(0);
75*5c6c1daeSBarry Smith }
76*5c6c1daeSBarry Smith 
77*5c6c1daeSBarry Smith #ifdef PETSC_USE_DYNAMIC_LIBRARIES
78*5c6c1daeSBarry Smith EXTERN_C_BEGIN
79*5c6c1daeSBarry Smith 
80*5c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
81*5c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscvec(const char[]);
82*5c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscmat(const char[]);
83*5c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscdm(const char[]);
84*5c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscksp(const char[]);
85*5c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscsnes(const char[]);
86*5c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscts(const char[]);
87*5c6c1daeSBarry Smith #endif
88*5c6c1daeSBarry Smith 
89*5c6c1daeSBarry Smith #undef __FUNCT__
90*5c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
91*5c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petsc"
92*5c6c1daeSBarry Smith #else
93*5c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscsys"
94*5c6c1daeSBarry Smith #endif
95*5c6c1daeSBarry Smith /*
96*5c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
97*5c6c1daeSBarry Smith 
98*5c6c1daeSBarry Smith   This one registers all the draw and PetscViewer objects.
99*5c6c1daeSBarry Smith 
100*5c6c1daeSBarry Smith   Input Parameter:
101*5c6c1daeSBarry Smith   path - library path
102*5c6c1daeSBarry Smith  */
103*5c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
104*5c6c1daeSBarry Smith PetscErrorCode  PetscDLLibraryRegister_petsc(const char path[])
105*5c6c1daeSBarry Smith #else
106*5c6c1daeSBarry Smith PetscErrorCode  PetscDLLibraryRegister_petscsys(const char path[])
107*5c6c1daeSBarry Smith #endif
108*5c6c1daeSBarry Smith {
109*5c6c1daeSBarry Smith   PetscErrorCode ierr;
110*5c6c1daeSBarry Smith 
111*5c6c1daeSBarry Smith   PetscFunctionBegin;
112*5c6c1daeSBarry Smith   /*
113*5c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
114*5c6c1daeSBarry Smith   */
115*5c6c1daeSBarry Smith   ierr = PetscSysInitializePackage(path);CHKERRQ(ierr);
116*5c6c1daeSBarry Smith   ierr = PetscShellInitializePackage(path);CHKERRQ(ierr);
117*5c6c1daeSBarry Smith   ierr = PetscDrawInitializePackage(path);CHKERRQ(ierr);
118*5c6c1daeSBarry Smith   ierr = PetscViewerInitializePackage(path);CHKERRQ(ierr);
119*5c6c1daeSBarry Smith   ierr = PetscRandomInitializePackage(path);CHKERRQ(ierr);
120*5c6c1daeSBarry Smith   ierr = PetscSFInitializePackage(path);CHKERRQ(ierr);
121*5c6c1daeSBarry Smith 
122*5c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
123*5c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscvec(path);CHKERRQ(ierr);
124*5c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscmat(path);CHKERRQ(ierr);
125*5c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscdm(path);CHKERRQ(ierr);
126*5c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscksp(path);CHKERRQ(ierr);
127*5c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscsnes(path);CHKERRQ(ierr);
128*5c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscts(path);CHKERRQ(ierr);
129*5c6c1daeSBarry Smith #endif
130*5c6c1daeSBarry Smith   PetscFunctionReturn(0);
131*5c6c1daeSBarry Smith }
132*5c6c1daeSBarry Smith EXTERN_C_END
133*5c6c1daeSBarry Smith #endif
134*5c6c1daeSBarry Smith 
135*5c6c1daeSBarry Smith 
136