xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 3ba1676111f5c958fe6c2729b46ca4d523958bb3)
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.
10811af0c4SBarry Smith   It is called from `PetscFinalize()`.
115c6c1daeSBarry Smith 
125c6c1daeSBarry Smith   Level: developer
135c6c1daeSBarry Smith 
14db781477SPatrick Sanan .seealso: `PetscFinalize()`
155c6c1daeSBarry Smith @*/
16d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscSysFinalizePackage(void)
17d71ae5a4SJacob Faibussowitsch {
185c6c1daeSBarry Smith   PetscFunctionBegin;
1948a46eb9SPierre Jolivet   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) PetscCallMPI(MPI_Comm_free_keyval(&Petsc_Seq_keyval));
205c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
21*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
225c6c1daeSBarry Smith }
235c6c1daeSBarry Smith 
245c6c1daeSBarry Smith /*@C
255c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
26811af0c4SBarry Smith   from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the call to `PetscInitialize()`
278a690491SBarry Smith   when using shared or static libraries.
285c6c1daeSBarry Smith 
295c6c1daeSBarry Smith   Level: developer
305c6c1daeSBarry Smith 
31db781477SPatrick Sanan .seealso: `PetscInitialize()`
325c6c1daeSBarry Smith @*/
33d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscSysInitializePackage(void)
34d71ae5a4SJacob Faibussowitsch {
355c6c1daeSBarry Smith   char      logList[256];
368e81d068SLisandro Dalcin   PetscBool opt, pkg;
375c6c1daeSBarry Smith 
385c6c1daeSBarry Smith   PetscFunctionBegin;
39*3ba16761SJacob Faibussowitsch   if (PetscSysPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
405c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
415c6c1daeSBarry Smith   /* Register Classes */
429566063dSJacob Faibussowitsch   PetscCall(PetscClassIdRegister("Object", &PETSC_OBJECT_CLASSID));
439566063dSJacob Faibussowitsch   PetscCall(PetscClassIdRegister("Container", &PETSC_CONTAINER_CLASSID));
445c6c1daeSBarry Smith 
455c6c1daeSBarry Smith   /* Register Events */
469566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID, &PETSC_Barrier));
479566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("BuildTwoSided", PETSC_SMALLEST_CLASSID, &PETSC_BuildTwoSided));
489566063dSJacob Faibussowitsch   PetscCall(PetscLogEventRegister("BuildTwoSidedF", PETSC_SMALLEST_CLASSID, &PETSC_BuildTwoSidedF));
49e94e781bSJacob Faibussowitsch   /* Process Info */
50e94e781bSJacob Faibussowitsch   {
51e94e781bSJacob Faibussowitsch     PetscClassId classids[1];
52e94e781bSJacob Faibussowitsch 
53e94e781bSJacob Faibussowitsch     classids[0] = PETSC_SMALLEST_CLASSID;
549566063dSJacob Faibussowitsch     PetscCall(PetscInfoProcessClass("sys", 1, classids));
555c6c1daeSBarry Smith   }
565c6c1daeSBarry Smith   /* Process summary exclusions */
579566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt));
585c6c1daeSBarry Smith   if (opt) {
599566063dSJacob Faibussowitsch     PetscCall(PetscStrInList("null", logList, ',', &pkg));
609566063dSJacob Faibussowitsch     if (pkg) PetscCall(PetscLogEventExcludeClass(PETSC_SMALLEST_CLASSID));
615c6c1daeSBarry Smith   }
629566063dSJacob Faibussowitsch   PetscCall(PetscRegisterFinalize(PetscSysFinalizePackage));
63*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
645c6c1daeSBarry Smith }
655c6c1daeSBarry Smith 
66aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
675c6c1daeSBarry Smith 
685c6c1daeSBarry Smith   #if defined(PETSC_USE_SINGLE_LIBRARY)
69607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
70607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
71607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
72607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
73607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
74607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
755c6c1daeSBarry Smith   #endif
765c6c1daeSBarry Smith 
775c6c1daeSBarry Smith   /*
785c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
795c6c1daeSBarry Smith 
8060da17ecSBarry Smith   This one registers all the system level objects.
815c6c1daeSBarry Smith 
825c6c1daeSBarry Smith  */
835c6c1daeSBarry Smith   #if defined(PETSC_USE_SINGLE_LIBRARY)
84607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
855c6c1daeSBarry Smith   #else
86607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
875c6c1daeSBarry Smith   #endif
885c6c1daeSBarry Smith {
895c6c1daeSBarry Smith   PetscFunctionBegin;
905c6c1daeSBarry Smith   /*
915c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
925c6c1daeSBarry Smith   */
939566063dSJacob Faibussowitsch   PetscCall(PetscSysInitializePackage());
949566063dSJacob Faibussowitsch   PetscCall(PetscDrawInitializePackage());
959566063dSJacob Faibussowitsch   PetscCall(PetscViewerInitializePackage());
969566063dSJacob Faibussowitsch   PetscCall(PetscRandomInitializePackage());
975c6c1daeSBarry Smith 
985c6c1daeSBarry Smith   #if defined(PETSC_USE_SINGLE_LIBRARY)
999566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscvec());
1009566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscmat());
1019566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscdm());
1029566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscksp());
1039566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscsnes());
1049566063dSJacob Faibussowitsch   PetscCall(PetscDLLibraryRegister_petscts());
1055c6c1daeSBarry Smith   #endif
106*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
1075c6c1daeSBarry Smith }
108aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
109