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]; 39*8e81d068SLisandro Dalcin PetscBool opt,pkg,cls; 401153da11SBarry Smith PetscErrorCode ierr; 411153da11SBarry Smith 421153da11SBarry Smith PetscFunctionBegin; 43b022a5c1SBarry Smith if (TSPackageInitialized) PetscFunctionReturn(0); 44b022a5c1SBarry Smith TSPackageInitialized = PETSC_TRUE; 45ed657a08SJed Brown /* Inialize subpackages */ 46*8e81d068SLisandro Dalcin ierr = TSAdaptInitializePackage();CHKERRQ(ierr); 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); 5326d28e4eSEmil Constantinescu ierr = TSGLLEAdaptInitializePackage();CHKERRQ(ierr); 541153da11SBarry Smith /* Register Classes */ 550700a824SBarry Smith ierr = PetscClassIdRegister("TS",&TS_CLASSID);CHKERRQ(ierr); 56d74926cbSBarry Smith ierr = PetscClassIdRegister("DMTS",&DMTS_CLASSID);CHKERRQ(ierr); 57bc952696SBarry Smith ierr = PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);CHKERRQ(ierr); 581153da11SBarry Smith /* Register Constructors */ 59607a6623SBarry Smith ierr = TSRegisterAll();CHKERRQ(ierr); 60bc952696SBarry Smith ierr = TSTrajectoryRegisterAll();CHKERRQ(ierr); 611153da11SBarry Smith /* Register Events */ 628d0ad7a8SHong Zhang ierr = PetscLogEventRegister("TSAdjointStep",TS_CLASSID,&TS_AdjointStep);CHKERRQ(ierr); 63715f1b00SHong Zhang ierr = PetscLogEventRegister("TSForwardStep",TS_CLASSID,&TS_ForwardStep);CHKERRQ(ierr); 644c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajSet",TSTRAJECTORY_CLASSID,&TSTrajectory_Set);CHKERRQ(ierr); 654c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajGet",TSTRAJECTORY_CLASSID,&TSTrajectory_Get);CHKERRQ(ierr); 664c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajDiskWrite",TS_CLASSID,&TSTrajectory_DiskWrite);CHKERRQ(ierr); 674c820ef5SHong Zhang ierr = PetscLogEventRegister("TSTrajDiskRead",TS_CLASSID,&TSTrajectory_DiskRead);CHKERRQ(ierr); 680700a824SBarry Smith ierr = PetscLogEventRegister("TSStep",TS_CLASSID,&TS_Step);CHKERRQ(ierr); 690700a824SBarry Smith ierr = PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);CHKERRQ(ierr); 700700a824SBarry Smith ierr = PetscLogEventRegister("TSFunctionEval",TS_CLASSID,&TS_FunctionEval);CHKERRQ(ierr); 710700a824SBarry Smith ierr = PetscLogEventRegister("TSJacobianEval",TS_CLASSID,&TS_JacobianEval);CHKERRQ(ierr); 721153da11SBarry Smith /* Process info exclusions */ 73*8e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 741153da11SBarry Smith if (opt) { 75*8e81d068SLisandro Dalcin ierr = PetscStrInList("ts",logList,',',&pkg);CHKERRQ(ierr); 76*8e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(TS_CLASSID);CHKERRQ(ierr);} 77*8e81d068SLisandro Dalcin ierr = PetscStrInList("dm",logList,',',&cls);CHKERRQ(ierr); 78*8e81d068SLisandro Dalcin if (pkg || cls) {ierr = PetscInfoDeactivateClass(DMTS_CLASSID);CHKERRQ(ierr);} 79*8e81d068SLisandro Dalcin ierr = PetscStrInList("tsadapt",logList,',',&cls);CHKERRQ(ierr); 80*8e81d068SLisandro Dalcin if (pkg || cls) {ierr = PetscInfoDeactivateClass(TSADAPT_CLASSID);CHKERRQ(ierr);} 81*8e81d068SLisandro Dalcin ierr = PetscStrInList("tstrajectory",logList,',',&cls);CHKERRQ(ierr); 82*8e81d068SLisandro Dalcin if (pkg || cls) {ierr = PetscInfoDeactivateClass(TSTRAJECTORY_CLASSID);CHKERRQ(ierr);} 831153da11SBarry Smith } 841153da11SBarry Smith /* Process summary exclusions */ 85*8e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 861153da11SBarry Smith if (opt) { 87*8e81d068SLisandro Dalcin ierr = PetscStrInList("ts",logList,',',&pkg);CHKERRQ(ierr); 88*8e81d068SLisandro Dalcin if (pkg) {ierr = PetscLogEventDeactivateClass(TS_CLASSID);CHKERRQ(ierr);} 89*8e81d068SLisandro Dalcin ierr = PetscStrInList("dm",logList,',',&cls);CHKERRQ(ierr); 90*8e81d068SLisandro Dalcin if (pkg || cls) {ierr = PetscLogEventDeactivateClass(DMTS_CLASSID);CHKERRQ(ierr);} 91*8e81d068SLisandro Dalcin ierr = PetscStrInList("tsadapt",logList,',',&cls);CHKERRQ(ierr); 92*8e81d068SLisandro Dalcin if (pkg || cls) {ierr = PetscLogEventDeactivateClass(TSADAPT_CLASSID);CHKERRQ(ierr);} 93*8e81d068SLisandro Dalcin ierr = PetscStrInList("tstrajectory",logList,',',&cls);CHKERRQ(ierr); 94*8e81d068SLisandro Dalcin if (pkg || cls) {ierr = PetscLogEventDeactivateClass(TSTRAJECTORY_CLASSID);CHKERRQ(ierr);} 951153da11SBarry Smith } 96*8e81d068SLisandro Dalcin /* Register package finalizer */ 97b022a5c1SBarry Smith ierr = PetscRegisterFinalize(TSFinalizePackage);CHKERRQ(ierr); 981153da11SBarry Smith PetscFunctionReturn(0); 991153da11SBarry Smith } 1001153da11SBarry Smith 101aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 1021153da11SBarry Smith /* 1031153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 1041153da11SBarry Smith 1051153da11SBarry Smith This one registers all the TS methods that are in the basic PETSc libpetscts library. 1061153da11SBarry Smith 1071153da11SBarry Smith */ 108560360afSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); /*prototype*/ 109607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void) 1101153da11SBarry Smith { 1111153da11SBarry Smith PetscErrorCode ierr; 1121153da11SBarry Smith 1131153da11SBarry Smith PetscFunctionBegin; 114607a6623SBarry Smith ierr = TSInitializePackage();CHKERRQ(ierr); 1151153da11SBarry Smith PetscFunctionReturn(0); 1161153da11SBarry Smith } 1171153da11SBarry Smith 1181153da11SBarry Smith 119aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 120