xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 9566063d113dddea24716c546802770db7481bc0)
15c6c1daeSBarry Smith 
25c6c1daeSBarry Smith #include <petscdraw.h>
32c1a2d08SJed Brown #include <petscviewer.h>
4974a8051SSatish Balay #include <petsc/private/viewerimpl.h>
55c6c1daeSBarry Smith 
65c6c1daeSBarry Smith static PetscBool PetscSysPackageInitialized = PETSC_FALSE;
7d4c7638eSBarry Smith 
85c6c1daeSBarry Smith /*@C
9d4c7638eSBarry Smith   PetscSysFinalizePackage - This function destroys everything in the PETSc created internally in the system library portion of PETSc.
10d4c7638eSBarry Smith   It is called from PetscFinalize().
115c6c1daeSBarry Smith 
125c6c1daeSBarry Smith   Level: developer
135c6c1daeSBarry Smith 
145c6c1daeSBarry Smith .seealso: PetscFinalize()
155c6c1daeSBarry Smith @*/
165c6c1daeSBarry Smith PetscErrorCode  PetscSysFinalizePackage(void)
175c6c1daeSBarry Smith {
185c6c1daeSBarry Smith   PetscFunctionBegin;
192fe4ef4aSBarry Smith   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) {
20*9566063dSJacob Faibussowitsch     PetscCallMPI(MPI_Comm_free_keyval(&Petsc_Seq_keyval));
21d4c7638eSBarry Smith   }
225c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
235c6c1daeSBarry Smith   PetscFunctionReturn(0);
245c6c1daeSBarry Smith }
255c6c1daeSBarry Smith 
265c6c1daeSBarry Smith /*@C
275c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
288a690491SBarry Smith   from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the call to PetscInitialize()
298a690491SBarry Smith   when using shared or static libraries.
305c6c1daeSBarry Smith 
315c6c1daeSBarry Smith   Level: developer
325c6c1daeSBarry Smith 
335c6c1daeSBarry Smith .seealso: PetscInitialize()
345c6c1daeSBarry Smith @*/
35607a6623SBarry Smith PetscErrorCode  PetscSysInitializePackage(void)
365c6c1daeSBarry Smith {
375c6c1daeSBarry Smith   char           logList[256];
388e81d068SLisandro Dalcin   PetscBool      opt,pkg;
395c6c1daeSBarry Smith 
405c6c1daeSBarry Smith   PetscFunctionBegin;
415c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
425c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
435c6c1daeSBarry Smith   /* Register Classes */
44*9566063dSJacob Faibussowitsch   PetscCall(PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID));
45*9566063dSJacob Faibussowitsch   PetscCall(PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID));
465c6c1daeSBarry Smith 
475c6c1daeSBarry Smith   /* Register Events */
48*9566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier));
49*9566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided));
50*9566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF));
51e94e781bSJacob Faibussowitsch   /* Process Info */
52e94e781bSJacob Faibussowitsch   {
53e94e781bSJacob Faibussowitsch     PetscClassId  classids[1];
54e94e781bSJacob Faibussowitsch 
55e94e781bSJacob Faibussowitsch     classids[0] = PETSC_SMALLEST_CLASSID;
56*9566063dSJacob Faibussowitsch     PetscCall(PetscInfoProcessClass("sys", 1, classids));
575c6c1daeSBarry Smith   }
585c6c1daeSBarry Smith   /* Process summary exclusions */
59*9566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt));
605c6c1daeSBarry Smith   if (opt) {
61*9566063dSJacob Faibussowitsch     PetscCall(PetscStrInList("null",logList,',',&pkg));
62*9566063dSJacob Faibussowitsch     if (pkg) PetscCall(PetscLogEventExcludeClass(PETSC_SMALLEST_CLASSID));
635c6c1daeSBarry Smith   }
64*9566063dSJacob Faibussowitsch   PetscCall(PetscRegisterFinalize(PetscSysFinalizePackage));
655c6c1daeSBarry Smith   PetscFunctionReturn(0);
665c6c1daeSBarry Smith }
675c6c1daeSBarry Smith 
68aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
695c6c1daeSBarry Smith 
705c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
71607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
72607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
73607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
74607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
75607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
76607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
775c6c1daeSBarry Smith #endif
785c6c1daeSBarry Smith 
795c6c1daeSBarry Smith /*
805c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
815c6c1daeSBarry Smith 
8260da17ecSBarry Smith   This one registers all the system level objects.
835c6c1daeSBarry Smith 
845c6c1daeSBarry Smith  */
855c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
86607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
875c6c1daeSBarry Smith #else
88607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
895c6c1daeSBarry Smith #endif
905c6c1daeSBarry Smith {
915c6c1daeSBarry Smith   PetscFunctionBegin;
925c6c1daeSBarry Smith   /*
935c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
945c6c1daeSBarry Smith   */
95*9566063dSJacob Faibussowitsch   PetscCall(PetscSysInitializePackage());
96*9566063dSJacob Faibussowitsch   PetscCall(PetscDrawInitializePackage());
97*9566063dSJacob Faibussowitsch   PetscCall(PetscViewerInitializePackage());
98*9566063dSJacob Faibussowitsch   PetscCall(PetscRandomInitializePackage());
995c6c1daeSBarry Smith 
1005c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
101*9566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscvec());
102*9566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscmat());
103*9566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscdm());
104*9566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscksp());
105*9566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscsnes());
106*9566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscts());
1075c6c1daeSBarry Smith #endif
1085c6c1daeSBarry Smith   PetscFunctionReturn(0);
1095c6c1daeSBarry Smith }
110aa2d57e9SJed Brown #endif  /* PETSC_HAVE_DYNAMIC_LIBRARIES */
111