xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 3b3561c8b1660ea5cb073480ab5b031363170b10)
15c6c1daeSBarry Smith 
25c6c1daeSBarry Smith #include <petscdraw.h>
32c1a2d08SJed Brown #include <petscviewer.h>
45c6c1daeSBarry Smith 
5*3b3561c8SJed Brown extern PetscLogEvent PETSC_Barrier,PETSC_BuildTwoSided;
65c6c1daeSBarry Smith 
75c6c1daeSBarry Smith static PetscBool PetscSysPackageInitialized = PETSC_FALSE;
85c6c1daeSBarry Smith #undef __FUNCT__
95c6c1daeSBarry Smith #define __FUNCT__ "PetscSysFinalizePackage"
105c6c1daeSBarry Smith /*@C
115c6c1daeSBarry Smith   PetscSysFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is
125c6c1daeSBarry Smith   called from PetscFinalize().
135c6c1daeSBarry Smith 
145c6c1daeSBarry Smith   Level: developer
155c6c1daeSBarry Smith 
165c6c1daeSBarry Smith .keywords: Petsc, destroy, package, mathematica
175c6c1daeSBarry Smith .seealso: PetscFinalize()
185c6c1daeSBarry Smith @*/
195c6c1daeSBarry Smith PetscErrorCode  PetscSysFinalizePackage(void)
205c6c1daeSBarry Smith {
215c6c1daeSBarry Smith   PetscFunctionBegin;
225c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_FALSE;
235c6c1daeSBarry Smith   PetscFunctionReturn(0);
245c6c1daeSBarry Smith }
255c6c1daeSBarry Smith 
265c6c1daeSBarry Smith #undef __FUNCT__
275c6c1daeSBarry Smith #define __FUNCT__ "PetscSysInitializePackage"
285c6c1daeSBarry Smith /*@C
295c6c1daeSBarry Smith   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
305c6c1daeSBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize()
315c6c1daeSBarry Smith   when using static libraries.
325c6c1daeSBarry Smith 
335c6c1daeSBarry Smith   Level: developer
345c6c1daeSBarry Smith 
355c6c1daeSBarry Smith .keywords: Petsc, initialize, package
365c6c1daeSBarry Smith .seealso: PetscInitialize()
375c6c1daeSBarry Smith @*/
38607a6623SBarry Smith PetscErrorCode  PetscSysInitializePackage(void)
395c6c1daeSBarry Smith {
405c6c1daeSBarry Smith   char           logList[256];
415c6c1daeSBarry Smith   char           *className;
425c6c1daeSBarry Smith   PetscBool      opt;
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);
54*3b3561c8SJed Brown   ierr = PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);CHKERRQ(ierr);
555c6c1daeSBarry Smith   /* Process info exclusions */
560298fd71SBarry Smith   ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
575c6c1daeSBarry Smith   if (opt) {
585c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
595c6c1daeSBarry Smith     if (className) {
605c6c1daeSBarry Smith       ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);
615c6c1daeSBarry Smith     }
625c6c1daeSBarry Smith   }
635c6c1daeSBarry Smith   /* Process summary exclusions */
640298fd71SBarry Smith   ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
655c6c1daeSBarry Smith   if (opt) {
665c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
675c6c1daeSBarry Smith     if (className) {
685c6c1daeSBarry Smith       ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr);
695c6c1daeSBarry Smith     }
705c6c1daeSBarry Smith   }
715c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
725c6c1daeSBarry Smith   PetscFunctionReturn(0);
735c6c1daeSBarry Smith }
745c6c1daeSBarry Smith 
75aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
765c6c1daeSBarry Smith 
775c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
78607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
79607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
80607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
81607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
82607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
83607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
845c6c1daeSBarry Smith #endif
855c6c1daeSBarry Smith 
865c6c1daeSBarry Smith #undef __FUNCT__
875c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
885c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petsc"
895c6c1daeSBarry Smith #else
905c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscsys"
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