xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision e94e781be4d0de67afa8d29cbcd676556dbc0369)
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 {
18d4c7638eSBarry Smith   PetscErrorCode ierr;
19d4c7638eSBarry Smith 
205c6c1daeSBarry Smith   PetscFunctionBegin;
212fe4ef4aSBarry Smith   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) {
2247435625SJed Brown     ierr = MPI_Comm_free_keyval(&Petsc_Seq_keyval);CHKERRQ(ierr);
23d4c7638eSBarry Smith   }
245c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
255c6c1daeSBarry Smith   PetscFunctionReturn(0);
265c6c1daeSBarry Smith }
275c6c1daeSBarry Smith 
285c6c1daeSBarry Smith /*@C
295c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
308a690491SBarry Smith   from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the call to PetscInitialize()
318a690491SBarry Smith   when using shared or static libraries.
325c6c1daeSBarry Smith 
335c6c1daeSBarry Smith   Level: developer
345c6c1daeSBarry Smith 
355c6c1daeSBarry Smith .seealso: PetscInitialize()
365c6c1daeSBarry Smith @*/
37607a6623SBarry Smith PetscErrorCode  PetscSysInitializePackage(void)
385c6c1daeSBarry Smith {
395c6c1daeSBarry Smith   char           logList[256];
408e81d068SLisandro Dalcin   PetscBool      opt,pkg;
415c6c1daeSBarry Smith   PetscErrorCode ierr;
425c6c1daeSBarry Smith 
435c6c1daeSBarry Smith   PetscFunctionBegin;
445c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
455c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
465c6c1daeSBarry Smith   /* Register Classes */
475c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
485c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
495c6c1daeSBarry Smith 
505c6c1daeSBarry Smith   /* Register Events */
515c6c1daeSBarry Smith   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
523b3561c8SJed Brown   ierr = PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);CHKERRQ(ierr);
5327a32ea5SJed Brown   ierr = PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF);CHKERRQ(ierr);
54*e94e781bSJacob Faibussowitsch   /* Process Info */
55*e94e781bSJacob Faibussowitsch   {
56*e94e781bSJacob Faibussowitsch     PetscClassId  classids[1];
57*e94e781bSJacob Faibussowitsch 
58*e94e781bSJacob Faibussowitsch     classids[0] = PETSC_SMALLEST_CLASSID;
59*e94e781bSJacob Faibussowitsch     ierr = PetscInfoProcessClass("sys", 1, classids);CHKERRQ(ierr);
605c6c1daeSBarry Smith   }
615c6c1daeSBarry Smith   /* Process summary exclusions */
628e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
635c6c1daeSBarry Smith   if (opt) {
648e81d068SLisandro Dalcin     ierr = PetscStrInList("null",logList,',',&pkg);CHKERRQ(ierr);
65fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_SMALLEST_CLASSID);CHKERRQ(ierr);}
665c6c1daeSBarry Smith   }
675c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
685c6c1daeSBarry Smith   PetscFunctionReturn(0);
695c6c1daeSBarry Smith }
705c6c1daeSBarry Smith 
71aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
725c6c1daeSBarry Smith 
735c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
74607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
75607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
76607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
77607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
78607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
79607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
805c6c1daeSBarry Smith #endif
815c6c1daeSBarry Smith 
825c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
835c6c1daeSBarry Smith #else
845c6c1daeSBarry Smith #endif
855c6c1daeSBarry Smith /*
865c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
875c6c1daeSBarry Smith 
885c6c1daeSBarry Smith   This one registers all the draw and PetscViewer objects.
895c6c1daeSBarry Smith 
905c6c1daeSBarry Smith  */
915c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
92607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
935c6c1daeSBarry Smith #else
94607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
955c6c1daeSBarry Smith #endif
965c6c1daeSBarry Smith {
975c6c1daeSBarry Smith   PetscErrorCode ierr;
985c6c1daeSBarry Smith 
995c6c1daeSBarry Smith   PetscFunctionBegin;
1005c6c1daeSBarry Smith   /*
1015c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
1025c6c1daeSBarry Smith   */
103607a6623SBarry Smith   ierr = PetscSysInitializePackage();CHKERRQ(ierr);
104607a6623SBarry Smith   ierr = PetscDrawInitializePackage();CHKERRQ(ierr);
105607a6623SBarry Smith   ierr = PetscViewerInitializePackage();CHKERRQ(ierr);
106607a6623SBarry Smith   ierr = PetscRandomInitializePackage();CHKERRQ(ierr);
1075c6c1daeSBarry Smith 
1085c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
109607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscvec();CHKERRQ(ierr);
110607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscmat();CHKERRQ(ierr);
111607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscdm();CHKERRQ(ierr);
112607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscksp();CHKERRQ(ierr);
113607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscsnes();CHKERRQ(ierr);
114607a6623SBarry Smith   ierr = PetscDLLibraryRegister_petscts();CHKERRQ(ierr);
1155c6c1daeSBarry Smith #endif
1165c6c1daeSBarry Smith   PetscFunctionReturn(0);
1175c6c1daeSBarry Smith }
118aa2d57e9SJed Brown #endif  /* PETSC_HAVE_DYNAMIC_LIBRARIES */
119