1af0996ceSBarry Smith #include <petsc/private/tsimpl.h> 21153da11SBarry Smith 3ace3abfcSBarry Smith static PetscBool TSPackageInitialized = PETSC_FALSE; 4b022a5c1SBarry Smith /*@C 5b022a5c1SBarry Smith TSFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is 6b022a5c1SBarry Smith called from PetscFinalize(). 7b022a5c1SBarry Smith 8b022a5c1SBarry Smith Level: developer 9b022a5c1SBarry Smith 10b022a5c1SBarry Smith .seealso: PetscFinalize() 11b022a5c1SBarry Smith @*/ 127087cfbeSBarry Smith PetscErrorCode TSFinalizePackage(void) 13b022a5c1SBarry Smith { 1437e93019SBarry Smith PetscErrorCode ierr; 1537e93019SBarry Smith 16b022a5c1SBarry Smith PetscFunctionBegin; 1737e93019SBarry Smith ierr = PetscFunctionListDestroy(&TSList);CHKERRQ(ierr); 18bc952696SBarry Smith ierr = PetscFunctionListDestroy(&TSTrajectoryList);CHKERRQ(ierr); 19b022a5c1SBarry Smith TSPackageInitialized = PETSC_FALSE; 20b022a5c1SBarry Smith TSRegisterAllCalled = PETSC_FALSE; 21b022a5c1SBarry Smith PetscFunctionReturn(0); 22b022a5c1SBarry Smith } 23b022a5c1SBarry Smith 241153da11SBarry Smith /*@C 251153da11SBarry Smith TSInitializePackage - This function initializes everything in the TS package. It is called 268a690491SBarry Smith from PetscDLLibraryRegister_petscts() when using dynamic libraries, and on the first call to TSCreate() 278a690491SBarry Smith when using shared or static libraries. 281153da11SBarry Smith 291153da11SBarry Smith Level: developer 301153da11SBarry Smith 311153da11SBarry Smith .seealso: PetscInitialize() 321153da11SBarry Smith @*/ 33607a6623SBarry Smith PetscErrorCode TSInitializePackage(void) 34b022a5c1SBarry Smith { 351153da11SBarry Smith char logList[256]; 368e81d068SLisandro Dalcin PetscBool opt,pkg,cls; 371153da11SBarry Smith PetscErrorCode ierr; 381153da11SBarry Smith 391153da11SBarry Smith PetscFunctionBegin; 40b022a5c1SBarry Smith if (TSPackageInitialized) PetscFunctionReturn(0); 41b022a5c1SBarry Smith TSPackageInitialized = PETSC_TRUE; 42ed657a08SJed Brown /* Inialize subpackages */ 438e81d068SLisandro Dalcin ierr = TSAdaptInitializePackage();CHKERRQ(ierr); 4426d28e4eSEmil Constantinescu ierr = TSGLLEInitializePackage();CHKERRQ(ierr); 45f68a32c8SEmil Constantinescu ierr = TSRKInitializePackage();CHKERRQ(ierr); 46b6a60446SDebojyoti Ghosh ierr = TSGLEEInitializePackage();CHKERRQ(ierr); 47607a6623SBarry Smith ierr = TSARKIMEXInitializePackage();CHKERRQ(ierr); 48607a6623SBarry Smith ierr = TSRosWInitializePackage();CHKERRQ(ierr); 49787849ffSJed Brown ierr = TSSSPInitializePackage();CHKERRQ(ierr); 5026d28e4eSEmil Constantinescu ierr = TSGLLEAdaptInitializePackage();CHKERRQ(ierr); 511d36bdfdSBarry Smith ierr = TSBasicSymplecticInitializePackage();CHKERRQ(ierr); 521153da11SBarry Smith /* Register Classes */ 530700a824SBarry Smith ierr = PetscClassIdRegister("TS",&TS_CLASSID);CHKERRQ(ierr); 54d74926cbSBarry Smith ierr = PetscClassIdRegister("DMTS",&DMTS_CLASSID);CHKERRQ(ierr); 55bc952696SBarry Smith ierr = PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);CHKERRQ(ierr); 5689818f9dSStefano Zampini 571153da11SBarry Smith /* Register Constructors */ 58607a6623SBarry Smith ierr = TSRegisterAll();CHKERRQ(ierr); 59bc952696SBarry Smith ierr = TSTrajectoryRegisterAll();CHKERRQ(ierr); 601153da11SBarry Smith /* Register Events */ 610700a824SBarry Smith ierr = PetscLogEventRegister("TSStep", TS_CLASSID,&TS_Step);CHKERRQ(ierr); 620700a824SBarry Smith ierr = PetscLogEventRegister("TSFunctionEval", TS_CLASSID,&TS_FunctionEval);CHKERRQ(ierr); 630700a824SBarry Smith ierr = PetscLogEventRegister("TSJacobianEval", TS_CLASSID,&TS_JacobianEval);CHKERRQ(ierr); 64fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSForwardStep", TS_CLASSID,&TS_ForwardStep);CHKERRQ(ierr); 65fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSAdjointStep", TS_CLASSID,&TS_AdjointStep);CHKERRQ(ierr); 66fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSTrajectorySet", TSTRAJECTORY_CLASSID,&TSTrajectory_Set);CHKERRQ(ierr); 67fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSTrajectoryGet", TSTRAJECTORY_CLASSID,&TSTrajectory_Get);CHKERRQ(ierr); 68fe8322adSStefano Zampini ierr = PetscLogEventRegister("TSTrajGetVecs", TSTRAJECTORY_CLASSID,&TSTrajectory_GetVecs);CHKERRQ(ierr); 69fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSTrajDiskWrite", TSTRAJECTORY_CLASSID,&TSTrajectory_DiskWrite);CHKERRQ(ierr); 70fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSTrajDiskRead", TSTRAJECTORY_CLASSID,&TSTrajectory_DiskRead);CHKERRQ(ierr); 71fa2bb9feSLisandro Dalcin ierr = PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);CHKERRQ(ierr); 72*e94e781bSJacob Faibussowitsch /* Process Info */ 73*e94e781bSJacob Faibussowitsch { 74*e94e781bSJacob Faibussowitsch PetscClassId classids[4]; 75*e94e781bSJacob Faibussowitsch 76*e94e781bSJacob Faibussowitsch classids[0] = TS_CLASSID; 77*e94e781bSJacob Faibussowitsch classids[1] = DMTS_CLASSID; 78*e94e781bSJacob Faibussowitsch classids[2] = TSADAPT_CLASSID; 79*e94e781bSJacob Faibussowitsch classids[3] = TSTRAJECTORY_CLASSID; 80*e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("ts", 1, classids);CHKERRQ(ierr); 81*e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("dm", 1, &classids[1]);CHKERRQ(ierr); 82*e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("tsadapt", 1, &classids[2]);CHKERRQ(ierr); 83*e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("tstrajectory", 1, &classids[3]);CHKERRQ(ierr); 841153da11SBarry Smith } 851153da11SBarry Smith /* Process summary exclusions */ 868e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 871153da11SBarry Smith if (opt) { 888e81d068SLisandro Dalcin ierr = PetscStrInList("ts",logList,',',&pkg);CHKERRQ(ierr); 89fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(TS_CLASSID);CHKERRQ(ierr);} 908e81d068SLisandro Dalcin ierr = PetscStrInList("dm",logList,',',&cls);CHKERRQ(ierr); 91fa2bb9feSLisandro Dalcin if (pkg || cls) {ierr = PetscLogEventExcludeClass(DMTS_CLASSID);CHKERRQ(ierr);} 928e81d068SLisandro Dalcin ierr = PetscStrInList("tsadapt",logList,',',&cls);CHKERRQ(ierr); 93fa2bb9feSLisandro Dalcin if (pkg || cls) {ierr = PetscLogEventExcludeClass(TSADAPT_CLASSID);CHKERRQ(ierr);} 948e81d068SLisandro Dalcin ierr = PetscStrInList("tstrajectory",logList,',',&cls);CHKERRQ(ierr); 95fa2bb9feSLisandro Dalcin if (pkg || cls) {ierr = PetscLogEventExcludeClass(TSTRAJECTORY_CLASSID);CHKERRQ(ierr);} 961153da11SBarry Smith } 978e81d068SLisandro Dalcin /* Register package finalizer */ 98b022a5c1SBarry Smith ierr = PetscRegisterFinalize(TSFinalizePackage);CHKERRQ(ierr); 991153da11SBarry Smith PetscFunctionReturn(0); 1001153da11SBarry Smith } 1011153da11SBarry Smith 102aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 1031153da11SBarry Smith /* 1041153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 1051153da11SBarry Smith 1061153da11SBarry Smith This one registers all the TS methods that are in the basic PETSc libpetscts library. 1071153da11SBarry Smith 1081153da11SBarry Smith */ 109560360afSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void); /*prototype*/ 110607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void) 1111153da11SBarry Smith { 1121153da11SBarry Smith PetscErrorCode ierr; 1131153da11SBarry Smith 1141153da11SBarry Smith PetscFunctionBegin; 115607a6623SBarry Smith ierr = TSInitializePackage();CHKERRQ(ierr); 1161153da11SBarry Smith PetscFunctionReturn(0); 1171153da11SBarry Smith } 118aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 119