xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 8e81d0682c925ac65a16095f60c998f9f3b7b642)
15c6c1daeSBarry Smith 
25c6c1daeSBarry Smith #include <petscdraw.h>
32c1a2d08SJed Brown #include <petscviewer.h>
4974a8051SSatish Balay #include <petsc/private/viewerimpl.h>
55c6c1daeSBarry Smith 
627a32ea5SJed Brown extern PetscLogEvent PETSC_Barrier,PETSC_BuildTwoSided,PETSC_BuildTwoSidedF;
75c6c1daeSBarry Smith static PetscBool PetscSysPackageInitialized = PETSC_FALSE;
8d4c7638eSBarry Smith 
95c6c1daeSBarry Smith /*@C
10d4c7638eSBarry Smith   PetscSysFinalizePackage - This function destroys everything in the PETSc created internally in the system library portion of PETSc.
11d4c7638eSBarry Smith   It is called from PetscFinalize().
125c6c1daeSBarry Smith 
135c6c1daeSBarry Smith   Level: developer
145c6c1daeSBarry Smith 
15d4c7638eSBarry Smith .keywords: Petsc, destroy, package
165c6c1daeSBarry Smith .seealso: PetscFinalize()
175c6c1daeSBarry Smith @*/
185c6c1daeSBarry Smith PetscErrorCode  PetscSysFinalizePackage(void)
195c6c1daeSBarry Smith {
20d4c7638eSBarry Smith   PetscErrorCode ierr;
21d4c7638eSBarry Smith 
225c6c1daeSBarry Smith   PetscFunctionBegin;
232fe4ef4aSBarry Smith   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) {
2447435625SJed Brown     ierr = MPI_Comm_free_keyval(&Petsc_Seq_keyval);CHKERRQ(ierr);
25d4c7638eSBarry Smith   }
265c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
275c6c1daeSBarry Smith   PetscFunctionReturn(0);
285c6c1daeSBarry Smith }
295c6c1daeSBarry Smith 
305c6c1daeSBarry Smith /*@C
315c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
325c6c1daeSBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize()
335c6c1daeSBarry Smith   when using static libraries.
345c6c1daeSBarry Smith 
355c6c1daeSBarry Smith   Level: developer
365c6c1daeSBarry Smith 
375c6c1daeSBarry Smith .keywords: Petsc, initialize, package
385c6c1daeSBarry Smith .seealso: PetscInitialize()
395c6c1daeSBarry Smith @*/
40607a6623SBarry Smith PetscErrorCode  PetscSysInitializePackage(void)
415c6c1daeSBarry Smith {
425c6c1daeSBarry Smith   char           logList[256];
43*8e81d068SLisandro Dalcin   PetscBool      opt,pkg;
445c6c1daeSBarry Smith   PetscErrorCode ierr;
455c6c1daeSBarry Smith 
465c6c1daeSBarry Smith   PetscFunctionBegin;
475c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
485c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
495c6c1daeSBarry Smith   /* Register Classes */
505c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
515c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
525c6c1daeSBarry Smith 
535c6c1daeSBarry Smith   /* Register Events */
545c6c1daeSBarry Smith   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
553b3561c8SJed Brown   ierr = PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);CHKERRQ(ierr);
5627a32ea5SJed Brown   ierr = PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF);CHKERRQ(ierr);
575c6c1daeSBarry Smith   /* Process info exclusions */
58*8e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
595c6c1daeSBarry Smith   if (opt) {
60*8e81d068SLisandro Dalcin     ierr = PetscStrInList("null",logList,',',&pkg);CHKERRQ(ierr);
61*8e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);}
625c6c1daeSBarry Smith   }
635c6c1daeSBarry Smith   /* Process summary exclusions */
64*8e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
655c6c1daeSBarry Smith   if (opt) {
66*8e81d068SLisandro Dalcin     ierr = PetscStrInList("null",logList,',',&pkg);CHKERRQ(ierr);
67*8e81d068SLisandro Dalcin     if (pkg) {ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr);}
685c6c1daeSBarry Smith   }
695c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
705c6c1daeSBarry Smith   PetscFunctionReturn(0);
715c6c1daeSBarry Smith }
725c6c1daeSBarry Smith 
73aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
745c6c1daeSBarry Smith 
755c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
76607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
77607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
78607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
79607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
80607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
81607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
825c6c1daeSBarry Smith #endif
835c6c1daeSBarry Smith 
845c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
855c6c1daeSBarry Smith #else
865c6c1daeSBarry Smith #endif
875c6c1daeSBarry Smith /*
885c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
895c6c1daeSBarry Smith 
905c6c1daeSBarry Smith   This one registers all the draw and PetscViewer objects.
915c6c1daeSBarry Smith 
925c6c1daeSBarry Smith  */
935c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
94607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
955c6c1daeSBarry Smith #else
96607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
975c6c1daeSBarry Smith #endif
985c6c1daeSBarry Smith {
995c6c1daeSBarry Smith   PetscErrorCode ierr;
1005c6c1daeSBarry Smith 
1015c6c1daeSBarry Smith   PetscFunctionBegin;
1025c6c1daeSBarry Smith   /*
1035c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
1045c6c1daeSBarry Smith   */
105607a6623SBarry Smith   ierr = PetscSysInitializePackage();CHKERRQ(ierr);
106607a6623SBarry Smith   ierr = PetscDrawInitializePackage();CHKERRQ(ierr);
107607a6623SBarry Smith   ierr = PetscViewerInitializePackage();CHKERRQ(ierr);
108607a6623SBarry Smith   ierr = PetscRandomInitializePackage();CHKERRQ(ierr);
1095c6c1daeSBarry Smith 
1105c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
111607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscvec();CHKERRQ(ierr);
112607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscmat();CHKERRQ(ierr);
113607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscdm();CHKERRQ(ierr);
114607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscksp();CHKERRQ(ierr);
115607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscsnes();CHKERRQ(ierr);
116607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscts();CHKERRQ(ierr);
1175c6c1daeSBarry Smith #endif
1185c6c1daeSBarry Smith   PetscFunctionReturn(0);
1195c6c1daeSBarry Smith }
120aa2d57e9SJed Brown #endif  /* PETSC_HAVE_DYNAMIC_LIBRARIES */
121