15c6c1daeSBarry Smith 25c6c1daeSBarry Smith #include <petscdraw.h> 32c1a2d08SJed Brown #include <petscviewer.h> 45c6c1daeSBarry Smith 5*27a32ea5SJed Brown extern PetscLogEvent PETSC_Barrier,PETSC_BuildTwoSided,PETSC_BuildTwoSidedF; 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); 543b3561c8SJed Brown ierr = PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);CHKERRQ(ierr); 55*27a32ea5SJed Brown ierr = PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF);CHKERRQ(ierr); 565c6c1daeSBarry Smith /* Process info exclusions */ 570298fd71SBarry Smith ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); 585c6c1daeSBarry Smith if (opt) { 595c6c1daeSBarry Smith ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr); 605c6c1daeSBarry Smith if (className) { 615c6c1daeSBarry Smith ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr); 625c6c1daeSBarry Smith } 635c6c1daeSBarry Smith } 645c6c1daeSBarry Smith /* Process summary exclusions */ 650298fd71SBarry Smith ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); 665c6c1daeSBarry Smith if (opt) { 675c6c1daeSBarry Smith ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr); 685c6c1daeSBarry Smith if (className) { 695c6c1daeSBarry Smith ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr); 705c6c1daeSBarry Smith } 715c6c1daeSBarry Smith } 725c6c1daeSBarry Smith ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr); 735c6c1daeSBarry Smith PetscFunctionReturn(0); 745c6c1daeSBarry Smith } 755c6c1daeSBarry Smith 76aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 775c6c1daeSBarry Smith 785c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY) 79607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void); 80607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void); 81607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void); 82607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void); 83607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void); 84607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); 855c6c1daeSBarry Smith #endif 865c6c1daeSBarry Smith 875c6c1daeSBarry Smith #undef __FUNCT__ 885c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY) 895c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petsc" 905c6c1daeSBarry Smith #else 915c6c1daeSBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscsys" 925c6c1daeSBarry Smith #endif 935c6c1daeSBarry Smith /* 945c6c1daeSBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 955c6c1daeSBarry Smith 965c6c1daeSBarry Smith This one registers all the draw and PetscViewer objects. 975c6c1daeSBarry Smith 985c6c1daeSBarry Smith */ 995c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY) 100607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void) 1015c6c1daeSBarry Smith #else 102607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void) 1035c6c1daeSBarry Smith #endif 1045c6c1daeSBarry Smith { 1055c6c1daeSBarry Smith PetscErrorCode ierr; 1065c6c1daeSBarry Smith 1075c6c1daeSBarry Smith PetscFunctionBegin; 1085c6c1daeSBarry Smith /* 1095c6c1daeSBarry Smith If we got here then PETSc was properly loaded 1105c6c1daeSBarry Smith */ 111607a6623SBarry Smith ierr = PetscSysInitializePackage();CHKERRQ(ierr); 112607a6623SBarry Smith ierr = PetscDrawInitializePackage();CHKERRQ(ierr); 113607a6623SBarry Smith ierr = PetscViewerInitializePackage();CHKERRQ(ierr); 114607a6623SBarry Smith ierr = PetscRandomInitializePackage();CHKERRQ(ierr); 1155c6c1daeSBarry Smith 1165c6c1daeSBarry Smith #if defined(PETSC_USE_SINGLE_LIBRARY) 117607a6623SBarry Smith ierr = PetscDLLibraryRegister_petscvec();CHKERRQ(ierr); 118607a6623SBarry Smith ierr = PetscDLLibraryRegister_petscmat();CHKERRQ(ierr); 119607a6623SBarry Smith ierr = PetscDLLibraryRegister_petscdm();CHKERRQ(ierr); 120607a6623SBarry Smith ierr = PetscDLLibraryRegister_petscksp();CHKERRQ(ierr); 121607a6623SBarry Smith ierr = PetscDLLibraryRegister_petscsnes();CHKERRQ(ierr); 122607a6623SBarry Smith ierr = PetscDLLibraryRegister_petscts();CHKERRQ(ierr); 1235c6c1daeSBarry Smith #endif 1245c6c1daeSBarry Smith PetscFunctionReturn(0); 1255c6c1daeSBarry Smith } 126aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 127