xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 8a690491e6c6c591ad1bff5657f43271c38b9863)
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 
14d4c7638eSBarry Smith .keywords: Petsc, destroy, package
155c6c1daeSBarry Smith .seealso: PetscFinalize()
165c6c1daeSBarry Smith @*/
175c6c1daeSBarry Smith PetscErrorCode  PetscSysFinalizePackage(void)
185c6c1daeSBarry Smith {
19d4c7638eSBarry Smith   PetscErrorCode ierr;
20d4c7638eSBarry Smith 
215c6c1daeSBarry Smith   PetscFunctionBegin;
222fe4ef4aSBarry Smith   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) {
2347435625SJed Brown     ierr = MPI_Comm_free_keyval(&Petsc_Seq_keyval);CHKERRQ(ierr);
24d4c7638eSBarry Smith   }
255c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
265c6c1daeSBarry Smith   PetscFunctionReturn(0);
275c6c1daeSBarry Smith }
285c6c1daeSBarry Smith 
295c6c1daeSBarry Smith /*@C
305c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
31*8a690491SBarry Smith   from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the call to PetscInitialize()
32*8a690491SBarry Smith   when using shared or static libraries.
335c6c1daeSBarry Smith 
345c6c1daeSBarry Smith   Level: developer
355c6c1daeSBarry Smith 
365c6c1daeSBarry Smith .keywords: Petsc, initialize, package
375c6c1daeSBarry Smith .seealso: PetscInitialize()
385c6c1daeSBarry Smith @*/
39607a6623SBarry Smith PetscErrorCode  PetscSysInitializePackage(void)
405c6c1daeSBarry Smith {
415c6c1daeSBarry Smith   char           logList[256];
428e81d068SLisandro Dalcin   PetscBool      opt,pkg;
435c6c1daeSBarry Smith   PetscErrorCode ierr;
445c6c1daeSBarry Smith 
455c6c1daeSBarry Smith   PetscFunctionBegin;
465c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
475c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
485c6c1daeSBarry Smith   /* Register Classes */
495c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
505c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
515c6c1daeSBarry Smith 
525c6c1daeSBarry Smith   /* Register Events */
535c6c1daeSBarry Smith   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
543b3561c8SJed Brown   ierr = PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);CHKERRQ(ierr);
5527a32ea5SJed Brown   ierr = PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF);CHKERRQ(ierr);
565c6c1daeSBarry Smith   /* Process info exclusions */
578e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
585c6c1daeSBarry Smith   if (opt) {
598e81d068SLisandro Dalcin     ierr = PetscStrInList("null",logList,',',&pkg);CHKERRQ(ierr);
608e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);}
615c6c1daeSBarry Smith   }
625c6c1daeSBarry Smith   /* Process summary exclusions */
638e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
645c6c1daeSBarry Smith   if (opt) {
658e81d068SLisandro Dalcin     ierr = PetscStrInList("null",logList,',',&pkg);CHKERRQ(ierr);
66fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_SMALLEST_CLASSID);CHKERRQ(ierr);}
675c6c1daeSBarry Smith   }
685c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
695c6c1daeSBarry Smith   PetscFunctionReturn(0);
705c6c1daeSBarry Smith }
715c6c1daeSBarry Smith 
72aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
735c6c1daeSBarry Smith 
745c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
75607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
76607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
77607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
78607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
79607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
80607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
815c6c1daeSBarry Smith #endif
825c6c1daeSBarry Smith 
835c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
845c6c1daeSBarry Smith #else
855c6c1daeSBarry Smith #endif
865c6c1daeSBarry Smith /*
875c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
885c6c1daeSBarry Smith 
895c6c1daeSBarry Smith   This one registers all the draw and PetscViewer objects.
905c6c1daeSBarry Smith 
915c6c1daeSBarry Smith  */
925c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
93607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
945c6c1daeSBarry Smith #else
95607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
965c6c1daeSBarry Smith #endif
975c6c1daeSBarry Smith {
985c6c1daeSBarry Smith   PetscErrorCode ierr;
995c6c1daeSBarry Smith 
1005c6c1daeSBarry Smith   PetscFunctionBegin;
1015c6c1daeSBarry Smith   /*
1025c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
1035c6c1daeSBarry Smith   */
104607a6623SBarry Smith   ierr = PetscSysInitializePackage();CHKERRQ(ierr);
105607a6623SBarry Smith   ierr = PetscDrawInitializePackage();CHKERRQ(ierr);
106607a6623SBarry Smith   ierr = PetscViewerInitializePackage();CHKERRQ(ierr);
107607a6623SBarry Smith   ierr = PetscRandomInitializePackage();CHKERRQ(ierr);
1085c6c1daeSBarry Smith 
1095c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
110607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscvec();CHKERRQ(ierr);
111607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscmat();CHKERRQ(ierr);
112607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscdm();CHKERRQ(ierr);
113607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscksp();CHKERRQ(ierr);
114607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscsnes();CHKERRQ(ierr);
115607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscts();CHKERRQ(ierr);
1165c6c1daeSBarry Smith #endif
1175c6c1daeSBarry Smith   PetscFunctionReturn(0);
1185c6c1daeSBarry Smith }
119aa2d57e9SJed Brown #endif  /* PETSC_HAVE_DYNAMIC_LIBRARIES */
120