11153da11SBarry Smith 2af0996ceSBarry Smith #include <petsc/private/tsimpl.h> 31153da11SBarry Smith 4ace3abfcSBarry Smith static PetscBool TSPackageInitialized = PETSC_FALSE; 5b022a5c1SBarry Smith /*@C 6b022a5c1SBarry Smith TSFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is 7b022a5c1SBarry Smith called from PetscFinalize(). 8b022a5c1SBarry Smith 9b022a5c1SBarry Smith Level: developer 10b022a5c1SBarry Smith 11b022a5c1SBarry Smith .keywords: Petsc, destroy, package, mathematica 12b022a5c1SBarry Smith .seealso: PetscFinalize() 13b022a5c1SBarry Smith @*/ 147087cfbeSBarry Smith PetscErrorCode TSFinalizePackage(void) 15b022a5c1SBarry Smith { 1637e93019SBarry Smith PetscErrorCode ierr; 1737e93019SBarry Smith 18b022a5c1SBarry Smith PetscFunctionBegin; 1937e93019SBarry Smith ierr = PetscFunctionListDestroy(&TSList);CHKERRQ(ierr); 20bc952696SBarry Smith ierr = PetscFunctionListDestroy(&TSTrajectoryList);CHKERRQ(ierr); 21b022a5c1SBarry Smith TSPackageInitialized = PETSC_FALSE; 22b022a5c1SBarry Smith TSRegisterAllCalled = PETSC_FALSE; 23b022a5c1SBarry Smith PetscFunctionReturn(0); 24b022a5c1SBarry Smith } 25b022a5c1SBarry Smith 261153da11SBarry Smith /*@C 271153da11SBarry Smith TSInitializePackage - This function initializes everything in the TS package. It is called 281153da11SBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to TSCreate() 291153da11SBarry Smith when using static libraries. 301153da11SBarry Smith 311153da11SBarry Smith Level: developer 321153da11SBarry Smith 331153da11SBarry Smith .keywords: TS, initialize, package 341153da11SBarry Smith .seealso: PetscInitialize() 351153da11SBarry Smith @*/ 36607a6623SBarry Smith PetscErrorCode TSInitializePackage(void) 37b022a5c1SBarry Smith { 381153da11SBarry Smith char logList[256]; 391153da11SBarry Smith char *className; 40ace3abfcSBarry Smith PetscBool opt; 411153da11SBarry Smith PetscErrorCode ierr; 421153da11SBarry Smith 431153da11SBarry Smith PetscFunctionBegin; 44b022a5c1SBarry Smith if (TSPackageInitialized) PetscFunctionReturn(0); 45b022a5c1SBarry Smith TSPackageInitialized = PETSC_TRUE; 46ed657a08SJed Brown /* Inialize subpackages */ 4726d28e4eSEmil Constantinescu ierr = TSGLLEInitializePackage();CHKERRQ(ierr); 48f68a32c8SEmil Constantinescu ierr = TSRKInitializePackage();CHKERRQ(ierr); 49b6a60446SDebojyoti Ghosh ierr = TSGLEEInitializePackage();CHKERRQ(ierr); 50607a6623SBarry Smith ierr = TSARKIMEXInitializePackage();CHKERRQ(ierr); 51607a6623SBarry Smith ierr = TSRosWInitializePackage();CHKERRQ(ierr); 52787849ffSJed Brown ierr = TSSSPInitializePackage();CHKERRQ(ierr); 53607a6623SBarry Smith ierr = TSAdaptInitializePackage();CHKERRQ(ierr); 5426d28e4eSEmil Constantinescu ierr = TSGLLEAdaptInitializePackage();CHKERRQ(ierr); 551153da11SBarry Smith /* Register Classes */ 560700a824SBarry Smith ierr = PetscClassIdRegister("TS",&TS_CLASSID);CHKERRQ(ierr); 57d74926cbSBarry Smith ierr = PetscClassIdRegister("DMTS",&DMTS_CLASSID);CHKERRQ(ierr); 58bc952696SBarry Smith ierr = PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);CHKERRQ(ierr); 591153da11SBarry Smith /* Register Constructors */ 60607a6623SBarry Smith ierr = TSRegisterAll();CHKERRQ(ierr); 61bc952696SBarry Smith ierr = TSTrajectoryRegisterAll();CHKERRQ(ierr); 621153da11SBarry Smith /* Register Events */ 638d0ad7a8SHong Zhang ierr = PetscLogEventRegister("TSAdjointStep",TS_CLASSID,&TS_AdjointStep);CHKERRQ(ierr); 64*715f1b00SHong Zhang ierr = PetscLogEventRegister("TSForwardStep",TS_CLASSID,&TS_ForwardStep);CHKERRQ(ierr); 654c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajSet",TSTRAJECTORY_CLASSID,&TSTrajectory_Set);CHKERRQ(ierr); 664c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajGet",TSTRAJECTORY_CLASSID,&TSTrajectory_Get);CHKERRQ(ierr); 674c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajDiskWrite",TS_CLASSID,&TSTrajectory_DiskWrite);CHKERRQ(ierr); 684c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajDiskRead",TS_CLASSID,&TSTrajectory_DiskRead);CHKERRQ(ierr); 690700a824SBarry Smith ierr = PetscLogEventRegister("TSStep",TS_CLASSID,&TS_Step);CHKERRQ(ierr); 700700a824SBarry Smith ierr = PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);CHKERRQ(ierr); 710700a824SBarry Smith ierr = PetscLogEventRegister("TSFunctionEval",TS_CLASSID,&TS_FunctionEval);CHKERRQ(ierr); 720700a824SBarry Smith ierr = PetscLogEventRegister("TSJacobianEval",TS_CLASSID,&TS_JacobianEval);CHKERRQ(ierr); 731153da11SBarry Smith /* Process info exclusions */ 74c5929fdfSBarry Smith ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); 751153da11SBarry Smith if (opt) { 761153da11SBarry Smith ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr); 771153da11SBarry Smith if (className) { 780700a824SBarry Smith ierr = PetscInfoDeactivateClass(TS_CLASSID);CHKERRQ(ierr); 791153da11SBarry Smith } 801153da11SBarry Smith } 811153da11SBarry Smith /* Process summary exclusions */ 827bf5a629SBarry Smith ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); 831153da11SBarry Smith if (opt) { 841153da11SBarry Smith ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr); 851153da11SBarry Smith if (className) { 860700a824SBarry Smith ierr = PetscLogEventDeactivateClass(TS_CLASSID);CHKERRQ(ierr); 871153da11SBarry Smith } 881153da11SBarry Smith } 89b022a5c1SBarry Smith ierr = PetscRegisterFinalize(TSFinalizePackage);CHKERRQ(ierr); 901153da11SBarry Smith PetscFunctionReturn(0); 911153da11SBarry Smith } 921153da11SBarry Smith 93aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 941153da11SBarry Smith /* 951153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 961153da11SBarry Smith 971153da11SBarry Smith This one registers all the TS methods that are in the basic PETSc libpetscts library. 981153da11SBarry Smith 991153da11SBarry Smith */ 100560360afSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); /*prototype*/ 101607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void) 1021153da11SBarry Smith { 1031153da11SBarry Smith PetscErrorCode ierr; 1041153da11SBarry Smith 1051153da11SBarry Smith PetscFunctionBegin; 106607a6623SBarry Smith ierr = TSInitializePackage();CHKERRQ(ierr); 1071153da11SBarry Smith PetscFunctionReturn(0); 1081153da11SBarry Smith } 1091153da11SBarry Smith 1101153da11SBarry Smith 111aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 112