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