xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 2fe4ef4a9eb82e4d7c3a118a6d3c972f05c4238d)
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;
23*2fe4ef4aSBarry Smith   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) {
24*2fe4ef4aSBarry Smith     ierr = MPI_Keyval_free(&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];
435c6c1daeSBarry Smith   char           *className;
445c6c1daeSBarry Smith   PetscBool      opt;
455c6c1daeSBarry Smith   PetscErrorCode ierr;
465c6c1daeSBarry Smith 
475c6c1daeSBarry Smith   PetscFunctionBegin;
485c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
495c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
505c6c1daeSBarry Smith   /* Register Classes */
515c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
525c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
535c6c1daeSBarry Smith 
545c6c1daeSBarry Smith   /* Register Events */
555c6c1daeSBarry Smith   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
563b3561c8SJed Brown   ierr = PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);CHKERRQ(ierr);
5727a32ea5SJed Brown   ierr = PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF);CHKERRQ(ierr);
585c6c1daeSBarry Smith   /* Process info exclusions */
59c5929fdfSBarry Smith   ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
605c6c1daeSBarry Smith   if (opt) {
615c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
625c6c1daeSBarry Smith     if (className) {
635c6c1daeSBarry Smith       ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);
645c6c1daeSBarry Smith     }
655c6c1daeSBarry Smith   }
665c6c1daeSBarry Smith   /* Process summary exclusions */
677bf5a629SBarry Smith   ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr);
685c6c1daeSBarry Smith   if (opt) {
695c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
705c6c1daeSBarry Smith     if (className) {
715c6c1daeSBarry Smith       ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr);
725c6c1daeSBarry Smith     }
735c6c1daeSBarry Smith   }
745c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
755c6c1daeSBarry Smith   PetscFunctionReturn(0);
765c6c1daeSBarry Smith }
775c6c1daeSBarry Smith 
78aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
795c6c1daeSBarry Smith 
805c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
81607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
82607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
83607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
84607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
85607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
86607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
875c6c1daeSBarry Smith #endif
885c6c1daeSBarry Smith 
895c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
905c6c1daeSBarry Smith #else
915c6c1daeSBarry Smith #endif
925c6c1daeSBarry Smith /*
935c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
945c6c1daeSBarry Smith 
955c6c1daeSBarry Smith   This one registers all the draw and PetscViewer objects.
965c6c1daeSBarry Smith 
975c6c1daeSBarry Smith  */
985c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
99607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
1005c6c1daeSBarry Smith #else
101607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
1025c6c1daeSBarry Smith #endif
1035c6c1daeSBarry Smith {
1045c6c1daeSBarry Smith   PetscErrorCode ierr;
1055c6c1daeSBarry Smith 
1065c6c1daeSBarry Smith   PetscFunctionBegin;
1075c6c1daeSBarry Smith   /*
1085c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
1095c6c1daeSBarry Smith   */
110607a6623SBarry Smith   ierr = PetscSysInitializePackage();CHKERRQ(ierr);
111607a6623SBarry Smith   ierr = PetscDrawInitializePackage();CHKERRQ(ierr);
112607a6623SBarry Smith   ierr = PetscViewerInitializePackage();CHKERRQ(ierr);
113607a6623SBarry Smith   ierr = PetscRandomInitializePackage();CHKERRQ(ierr);
1145c6c1daeSBarry Smith 
1155c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
116607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscvec();CHKERRQ(ierr);
117607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscmat();CHKERRQ(ierr);
118607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscdm();CHKERRQ(ierr);
119607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscksp();CHKERRQ(ierr);
120607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscsnes();CHKERRQ(ierr);
121607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscts();CHKERRQ(ierr);
1225c6c1daeSBarry Smith #endif
1235c6c1daeSBarry Smith   PetscFunctionReturn(0);
1245c6c1daeSBarry Smith }
125aa2d57e9SJed Brown #endif  /* PETSC_HAVE_DYNAMIC_LIBRARIES */
126