xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 2c1a2d0829486efa01f899c5316bb48377ef96eb)
15c6c1daeSBarry Smith 
25c6c1daeSBarry Smith #include <petscdraw.h>
3*2c1a2d08SJed Brown #include <petscviewer.h>
45c6c1daeSBarry Smith 
55c6c1daeSBarry Smith extern PetscLogEvent PETSC_Barrier;
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   Input Parameter:
340298fd71SBarry Smith   path - The dynamic library path, or NULL
355c6c1daeSBarry Smith 
365c6c1daeSBarry Smith   Level: developer
375c6c1daeSBarry Smith 
385c6c1daeSBarry Smith .keywords: Petsc, initialize, package
395c6c1daeSBarry Smith .seealso: PetscInitialize()
405c6c1daeSBarry Smith @*/
415c6c1daeSBarry Smith PetscErrorCode  PetscSysInitializePackage(const char path[])
425c6c1daeSBarry Smith {
435c6c1daeSBarry Smith   char           logList[256];
445c6c1daeSBarry Smith   char           *className;
455c6c1daeSBarry Smith   PetscBool      opt;
465c6c1daeSBarry Smith   PetscErrorCode ierr;
475c6c1daeSBarry Smith 
485c6c1daeSBarry Smith   PetscFunctionBegin;
495c6c1daeSBarry Smith   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
505c6c1daeSBarry Smith   PetscSysPackageInitialized = PETSC_TRUE;
515c6c1daeSBarry Smith   /* Register Classes */
525c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
535c6c1daeSBarry Smith   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
545c6c1daeSBarry Smith 
555c6c1daeSBarry Smith   /* Register Events */
565c6c1daeSBarry Smith   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
575c6c1daeSBarry Smith   /* Process info exclusions */
580298fd71SBarry Smith   ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
595c6c1daeSBarry Smith   if (opt) {
605c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
615c6c1daeSBarry Smith     if (className) {
625c6c1daeSBarry Smith       ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);
635c6c1daeSBarry Smith     }
645c6c1daeSBarry Smith   }
655c6c1daeSBarry Smith   /* Process summary exclusions */
660298fd71SBarry Smith   ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
675c6c1daeSBarry Smith   if (opt) {
685c6c1daeSBarry Smith     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
695c6c1daeSBarry Smith     if (className) {
705c6c1daeSBarry Smith       ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr);
715c6c1daeSBarry Smith     }
725c6c1daeSBarry Smith   }
735c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
745c6c1daeSBarry Smith   PetscFunctionReturn(0);
755c6c1daeSBarry Smith }
765c6c1daeSBarry Smith 
77519f805aSKarl Rupp #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
785c6c1daeSBarry Smith EXTERN_C_BEGIN
795c6c1daeSBarry Smith 
805c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
815c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscvec(const char[]);
825c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscmat(const char[]);
835c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscdm(const char[]);
845c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscksp(const char[]);
855c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscsnes(const char[]);
865c6c1daeSBarry Smith extern PetscErrorCode PetscDLLibraryRegister_petscts(const char[]);
875c6c1daeSBarry Smith #endif
885c6c1daeSBarry Smith 
895c6c1daeSBarry Smith #undef __FUNCT__
905c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
915c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petsc"
925c6c1daeSBarry Smith #else
935c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscsys"
945c6c1daeSBarry Smith #endif
955c6c1daeSBarry Smith /*
965c6c1daeSBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
975c6c1daeSBarry Smith 
985c6c1daeSBarry Smith   This one registers all the draw and PetscViewer objects.
995c6c1daeSBarry Smith 
1005c6c1daeSBarry Smith   Input Parameter:
1015c6c1daeSBarry Smith   path - library path
1025c6c1daeSBarry Smith  */
1035c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
1045c6c1daeSBarry Smith PetscErrorCode  PetscDLLibraryRegister_petsc(const char path[])
1055c6c1daeSBarry Smith #else
1065c6c1daeSBarry Smith PetscErrorCode  PetscDLLibraryRegister_petscsys(const char path[])
1075c6c1daeSBarry Smith #endif
1085c6c1daeSBarry Smith {
1095c6c1daeSBarry Smith   PetscErrorCode ierr;
1105c6c1daeSBarry Smith 
1115c6c1daeSBarry Smith   PetscFunctionBegin;
1125c6c1daeSBarry Smith   /*
1135c6c1daeSBarry Smith       If we got here then PETSc was properly loaded
1145c6c1daeSBarry Smith   */
1155c6c1daeSBarry Smith   ierr = PetscSysInitializePackage(path);CHKERRQ(ierr);
1165c6c1daeSBarry Smith   ierr = PetscDrawInitializePackage(path);CHKERRQ(ierr);
1175c6c1daeSBarry Smith   ierr = PetscViewerInitializePackage(path);CHKERRQ(ierr);
1185c6c1daeSBarry Smith   ierr = PetscRandomInitializePackage(path);CHKERRQ(ierr);
1195c6c1daeSBarry Smith 
1205c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY)
1215c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscvec(path);CHKERRQ(ierr);
1225c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscmat(path);CHKERRQ(ierr);
1235c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscdm(path);CHKERRQ(ierr);
1245c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscksp(path);CHKERRQ(ierr);
1255c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscsnes(path);CHKERRQ(ierr);
1265c6c1daeSBarry Smith   ierr = PetscDLLibraryRegister_petscts(path);CHKERRQ(ierr);
1275c6c1daeSBarry Smith #endif
1285c6c1daeSBarry Smith   PetscFunctionReturn(0);
1295c6c1daeSBarry Smith }
1305c6c1daeSBarry Smith EXTERN_C_END
1315c6c1daeSBarry Smith #endif
1325c6c1daeSBarry Smith 
1335c6c1daeSBarry Smith 
134