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