Actual source code: slregis.c

  1: #include <petsc/private/characteristicimpl.h>

  3: static PetscBool CharacteristicPackageInitialized = PETSC_FALSE;
  4: /*@C
  5:   CharacteristicFinalizePackage - This function destroys everything in the `Characteristics` package. It is
  6:   called from `PetscFinalize()`.

  8:   Level: developer

 10: .seealso: [](chapter_ts), `PetscFinalize()`, `CharacteristicInitializePackage()`
 11: @*/
 12: PetscErrorCode CharacteristicFinalizePackage(void)
 13: {
 14:   PetscFunctionListDestroy(&CharacteristicList);
 15:   CharacteristicPackageInitialized = PETSC_FALSE;
 16:   CharacteristicRegisterAllCalled  = PETSC_FALSE;
 17:   return 0;
 18: }

 20: /*@C
 21:   CharacteristicInitializePackage - This function initializes everything in the Characteristic package. It is called
 22:   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to CharacteristicCreate()
 23:   when using static libraries.

 25:   Level: developer

 27: .seealso: [](chapter_ts), `PetscInitialize()`, `CharacteristicFinalizePackage()`
 28: @*/
 29: PetscErrorCode CharacteristicInitializePackage(void)
 30: {
 31:   char      logList[256];
 32:   PetscBool opt, pkg;

 34:   if (CharacteristicPackageInitialized) return 0;
 35:   CharacteristicPackageInitialized = PETSC_TRUE;
 36:   /* Register Classes */
 37:   PetscClassIdRegister("Method of Characteristics", &CHARACTERISTIC_CLASSID);
 38:   /* Register Constructors */
 39:   CharacteristicRegisterAll();
 40:   /* Register Events */
 41:   PetscLogEventRegister("MOCSetUp", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_SetUp);
 42:   PetscLogEventRegister("MOCSolve", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_Solve);
 43:   PetscLogEventRegister("MOCQueueSetup", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_QueueSetup);
 44:   PetscLogEventRegister("MOCDAUpdate", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_DAUpdate);
 45:   PetscLogEventRegister("MOCHalfTimeLocal", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_HalfTimeLocal);
 46:   PetscLogEventRegister("MOCHalfTimeRemot", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_HalfTimeRemote);
 47:   PetscLogEventRegister("MOCHalfTimeExchg", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_HalfTimeExchange);
 48:   PetscLogEventRegister("MOCFullTimeLocal", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_FullTimeLocal);
 49:   PetscLogEventRegister("MOCFullTimeRemot", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_FullTimeRemote);
 50:   PetscLogEventRegister("MOCFullTimeExchg", CHARACTERISTIC_CLASSID, &CHARACTERISTIC_FullTimeExchange);
 51:   /* Process Info */
 52:   {
 53:     PetscClassId classids[1];

 55:     classids[0] = CHARACTERISTIC_CLASSID;
 56:     PetscInfoProcessClass("characteristic", 1, classids);
 57:   }
 58:   /* Process summary exclusions */
 59:   PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt);
 60:   if (opt) {
 61:     PetscStrInList("characteristic", logList, ',', &pkg);
 62:     if (pkg) PetscLogEventExcludeClass(CHARACTERISTIC_CLASSID);
 63:   }
 64:   /* Process package finalizer */
 65:   PetscRegisterFinalize(CharacteristicFinalizePackage);
 66:   return 0;
 67: }

 69: #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
 70: /*
 71:   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.

 73:   This one registers the method of characteristics code
 74:  */
 75: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsccharacteristic(void)
 76: {
 77:   CharacteristicInitializePackage();
 78:   return 0;
 79: }

 81: #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */