1*1153da11SBarry Smith #define PETSCTS_DLL 2*1153da11SBarry Smith 3*1153da11SBarry Smith #include "petscts.h" 4*1153da11SBarry Smith 5*1153da11SBarry Smith #undef __FUNCT__ 6*1153da11SBarry Smith #define __FUNCT__ "TSInitializePackage" 7*1153da11SBarry Smith /*@C 8*1153da11SBarry Smith TSInitializePackage - This function initializes everything in the TS package. It is called 9*1153da11SBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to TSCreate() 10*1153da11SBarry Smith when using static libraries. 11*1153da11SBarry Smith 12*1153da11SBarry Smith Input Parameter: 13*1153da11SBarry Smith path - The dynamic library path, or PETSC_NULL 14*1153da11SBarry Smith 15*1153da11SBarry Smith Level: developer 16*1153da11SBarry Smith 17*1153da11SBarry Smith .keywords: TS, initialize, package 18*1153da11SBarry Smith .seealso: PetscInitialize() 19*1153da11SBarry Smith @*/ 20*1153da11SBarry Smith PetscErrorCode PETSCTS_DLLEXPORT TSInitializePackage(const char path[]) { 21*1153da11SBarry Smith static PetscTruth initialized = PETSC_FALSE; 22*1153da11SBarry Smith char logList[256]; 23*1153da11SBarry Smith char *className; 24*1153da11SBarry Smith PetscTruth opt; 25*1153da11SBarry Smith PetscErrorCode ierr; 26*1153da11SBarry Smith 27*1153da11SBarry Smith PetscFunctionBegin; 28*1153da11SBarry Smith if (initialized) PetscFunctionReturn(0); 29*1153da11SBarry Smith initialized = PETSC_TRUE; 30*1153da11SBarry Smith /* Register Classes */ 31*1153da11SBarry Smith ierr = PetscLogClassRegister(&TS_COOKIE, "TS");CHKERRQ(ierr); 32*1153da11SBarry Smith /* Register Constructors */ 33*1153da11SBarry Smith ierr = TSRegisterAll(path);CHKERRQ(ierr); 34*1153da11SBarry Smith /* Register Events */ 35*1153da11SBarry Smith ierr = PetscLogEventRegister(&TS_Step, "TSStep", TS_COOKIE);CHKERRQ(ierr); 36*1153da11SBarry Smith ierr = PetscLogEventRegister(&TS_PseudoComputeTimeStep, "TSPseudoCmptTStp", TS_COOKIE);CHKERRQ(ierr); 37*1153da11SBarry Smith ierr = PetscLogEventRegister(&TS_FunctionEval, "TSFunctionEval", TS_COOKIE);CHKERRQ(ierr); 38*1153da11SBarry Smith ierr = PetscLogEventRegister(&TS_JacobianEval, "TSJacobianEval", TS_COOKIE);CHKERRQ(ierr); 39*1153da11SBarry Smith /* Process info exclusions */ 40*1153da11SBarry Smith ierr = PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);CHKERRQ(ierr); 41*1153da11SBarry Smith if (opt) { 42*1153da11SBarry Smith ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr); 43*1153da11SBarry Smith if (className) { 44*1153da11SBarry Smith ierr = PetscLogInfoDeactivateClass(TS_COOKIE);CHKERRQ(ierr); 45*1153da11SBarry Smith } 46*1153da11SBarry Smith } 47*1153da11SBarry Smith /* Process summary exclusions */ 48*1153da11SBarry Smith ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); 49*1153da11SBarry Smith if (opt) { 50*1153da11SBarry Smith ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr); 51*1153da11SBarry Smith if (className) { 52*1153da11SBarry Smith ierr = PetscLogEventDeactivateClass(TS_COOKIE);CHKERRQ(ierr); 53*1153da11SBarry Smith } 54*1153da11SBarry Smith } 55*1153da11SBarry Smith PetscFunctionReturn(0); 56*1153da11SBarry Smith } 57*1153da11SBarry Smith 58*1153da11SBarry Smith #ifdef PETSC_USE_DYNAMIC_LIBRARIES 59*1153da11SBarry Smith EXTERN_C_BEGIN 60*1153da11SBarry Smith #undef __FUNCT__ 61*1153da11SBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscts" 62*1153da11SBarry Smith /* 63*1153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 64*1153da11SBarry Smith 65*1153da11SBarry Smith This one registers all the TS methods that are in the basic PETSc libpetscts library. 66*1153da11SBarry Smith 67*1153da11SBarry Smith Input Parameter: 68*1153da11SBarry Smith path - library path 69*1153da11SBarry Smith */ 70*1153da11SBarry Smith PetscErrorCode PETSCTS_DLLEXPORT PetscDLLibraryRegister_petscts(char *path) 71*1153da11SBarry Smith { 72*1153da11SBarry Smith PetscErrorCode ierr; 73*1153da11SBarry Smith 74*1153da11SBarry Smith ierr = PetscInitializeNoArguments(); if (ierr) return 1; 75*1153da11SBarry Smith 76*1153da11SBarry Smith PetscFunctionBegin; 77*1153da11SBarry Smith /* 78*1153da11SBarry Smith If we got here then PETSc was properly loaded 79*1153da11SBarry Smith */ 80*1153da11SBarry Smith ierr = TSInitializePackage(path);CHKERRQ(ierr); 81*1153da11SBarry Smith PetscFunctionReturn(0); 82*1153da11SBarry Smith } 83*1153da11SBarry Smith EXTERN_C_END 84*1153da11SBarry Smith 85*1153da11SBarry Smith /* --------------------------------------------------------------------------*/ 86*1153da11SBarry Smith static const char *contents = "PETSc timestepping library. \n\ 87*1153da11SBarry Smith Euler\n\ 88*1153da11SBarry Smith Backward Euler\n\ 89*1153da11SBarry Smith PVODE interface\n"; 90*1153da11SBarry Smith static const char *authors = PETSC_AUTHOR_INFO; 91*1153da11SBarry Smith 92*1153da11SBarry Smith 93*1153da11SBarry Smith #endif /* PETSC_USE_DYNAMIC_LIBRARIES */ 94