Actual source code: dlregists.c

  1: #define PETSCTS_DLL

 3:  #include private/tsimpl.h

  5: static PetscTruth TSPackageInitialized = PETSC_FALSE;
  8: /*@C
  9:   TSFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is
 10:   called from PetscFinalize().

 12:   Level: developer

 14: .keywords: Petsc, destroy, package, mathematica
 15: .seealso: PetscFinalize()
 16: @*/
 17: PetscErrorCode  TSFinalizePackage(void)
 18: {
 20:   TSPackageInitialized = PETSC_FALSE;
 21:   TSList               = PETSC_NULL;
 22:   TSRegisterAllCalled  = PETSC_FALSE;
 23:   return(0);
 24: }

 28: /*@C
 29:   TSInitializePackage - This function initializes everything in the TS package. It is called
 30:   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to TSCreate()
 31:   when using static libraries.

 33:   Input Parameter:
 34:   path - The dynamic library path, or PETSC_NULL

 36:   Level: developer

 38: .keywords: TS, initialize, package
 39: .seealso: PetscInitialize()
 40: @*/
 41: PetscErrorCode  TSInitializePackage(const char path[])
 42: {
 43:   char              logList[256];
 44:   char              *className;
 45:   PetscTruth        opt;
 46:   PetscErrorCode    ierr;

 49:   if (TSPackageInitialized) return(0);
 50:   TSPackageInitialized = PETSC_TRUE;
 51:   /* Inialize subpackages */
 52:   TSGLInitializePackage(path);
 53:   TSGLAdaptInitializePackage(path);
 54:   /* Register Classes */
 55:   PetscCookieRegister("TS",&TS_COOKIE);
 56:   /* Register Constructors */
 57:   TSRegisterAll(path);
 58:   /* Register Events */
 59:   PetscLogEventRegister("TSStep",           TS_COOKIE,&TS_Step);
 60:   PetscLogEventRegister("TSPseudoCmptTStp", TS_COOKIE,&TS_PseudoComputeTimeStep);
 61:   PetscLogEventRegister("TSFunctionEval",   TS_COOKIE,&TS_FunctionEval);
 62:   PetscLogEventRegister("TSJacobianEval",   TS_COOKIE,&TS_JacobianEval);
 63:   /* Process info exclusions */
 64:   PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);
 65:   if (opt) {
 66:     PetscStrstr(logList, "ts", &className);
 67:     if (className) {
 68:       PetscInfoDeactivateClass(TS_COOKIE);
 69:     }
 70:   }
 71:   /* Process summary exclusions */
 72:   PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
 73:   if (opt) {
 74:     PetscStrstr(logList, "ts", &className);
 75:     if (className) {
 76:       PetscLogEventDeactivateClass(TS_COOKIE);
 77:     }
 78:   }
 79:   PetscRegisterFinalize(TSFinalizePackage);
 80:   return(0);
 81: }

 83: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
 87: /*
 88:   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.

 90:   This one registers all the TS methods that are in the basic PETSc libpetscts library.

 92:   Input Parameter:
 93:   path - library path
 94:  */
 95: PetscErrorCode  PetscDLLibraryRegister_petscts(const char path[])
 96: {

 99:   PetscInitializeNoArguments(); if (ierr) return 1;
101:   /*
102:       If we got here then PETSc was properly loaded
103:   */
104:   TSInitializePackage(path);
105:   return(0);
106: }


110: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */