Actual source code: dlregis.c

  1: /*$Id: dlregis.c,v 1.20 2001/03/23 23:23:29 balay Exp $*/

 3:  #include petscsles.h

  5: /*@C
  6:   SLESInitializePackage - This function initializes everything in the SLES package. It is called
  7:   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to SLESCreate()
  8:   when using static libraries.

 10:   Input Parameter:
 11:   path - The dynamic library path, or PETSC_NULL

 13:   Level: developer

 15: .keywords: SLES, initialize, package
 16: .seealso: PetscInitialize()
 17: @*/
 18: int SLESInitializePackage(char *path) {
 19:   static PetscTruth initialized = PETSC_FALSE;
 20:   char              logList[256];
 21:   char             *className;
 22:   PetscTruth        opt;
 23:   int               ierr;

 26:   if (initialized == PETSC_TRUE) return(0);
 27:   initialized = PETSC_TRUE;
 28:   /* Register Classes */
 29:   PetscLogClassRegister(&KSP_COOKIE,  "Krylov Solver");
 30:   PetscLogClassRegister(&PC_COOKIE,   "Preconditioner");
 31:   PetscLogClassRegister(&SLES_COOKIE, "SLES");
 32:   /* Register Constructors and Serializers */
 33:   KSPRegisterAll(path);
 34:   PCRegisterAll(path);
 35:   /* Register Events */
 36:   PetscLogEventRegister(&PC_SetUp,                   "PCSetUp",          PC_COOKIE);
 37:   PetscLogEventRegister(&PC_SetUpOnBlocks,           "PCSetUpOnBlocks",  PC_COOKIE);
 38:   PetscLogEventRegister(&PC_Apply,                   "PCApply",          PC_COOKIE);
 39:   PetscLogEventRegister(&PC_ApplyCoarse,             "PCApplyCoarse",    PC_COOKIE);
 40:   PetscLogEventRegister(&PC_ApplyMultiple,           "PCApplyMultiple",  PC_COOKIE);
 41:   PetscLogEventRegister(&PC_ApplySymmetricLeft,      "PCApplySymmLeft",  PC_COOKIE);
 42:   PetscLogEventRegister(&PC_ApplySymmetricRight,     "PCApplySymmRight", PC_COOKIE);
 43:   PetscLogEventRegister(&PC_ModifySubMatrices,       "PCModifySubMatri", PC_COOKIE);
 44:   PetscLogEventRegister(&KSP_GMRESOrthogonalization, "KSPGMRESOrthog",   KSP_COOKIE);
 45:   PetscLogEventRegister(&SLES_SetUp,                 "SLESSetup",        SLES_COOKIE);
 46:   PetscLogEventRegister(&SLES_Solve,                 "SLESSolve",        SLES_COOKIE);
 47:   /* Process info exclusions */
 48:   PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);
 49:   if (opt == PETSC_TRUE) {
 50:     PetscStrstr(logList, "sles", &className);
 51:     if (className) {
 52:       PetscLogInfoDeactivateClass(KSP_COOKIE);
 53:       PetscLogInfoDeactivateClass(PC_COOKIE);
 54:       PetscLogInfoDeactivateClass(SLES_COOKIE);
 55:     }
 56:     PetscStrstr(logList, "ksp", &className);
 57:     if (className) {
 58:       PetscLogInfoDeactivateClass(KSP_COOKIE);
 59:     }
 60:     PetscStrstr(logList, "pc", &className);
 61:     if (className) {
 62:       PetscLogInfoDeactivateClass(PC_COOKIE);
 63:     }
 64:   }
 65:   /* Process summary exclusions */
 66:   PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
 67:   if (opt == PETSC_TRUE) {
 68:     PetscStrstr(logList, "sles", &className);
 69:     if (className) {
 70:       PetscLogEventDeactivateClass(KSP_COOKIE);
 71:       PetscLogEventDeactivateClass(PC_COOKIE);
 72:       PetscLogEventDeactivateClass(SLES_COOKIE);
 73:     }
 74:     PetscStrstr(logList, "ksp", &className);
 75:     if (className) {
 76:       PetscLogEventDeactivateClass(KSP_COOKIE);
 77:     }
 78:     PetscStrstr(logList, "pc", &className);
 79:     if (className) {
 80:       PetscLogEventDeactivateClass(PC_COOKIE);
 81:     }
 82:   }
 83:   return(0);
 84: }

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

 91:   This one registers all the KSP and PC methods that are in the basic PETSc libpetscsles
 92:   library.

 94:   Input Parameter:
 95:   path - library path
 96:  */
 97: int PetscDLLibraryRegister(char *path)
 98: {

101:   PetscInitializeNoArguments(); if (ierr) return 1;

104:   /*
105:       If we got here then PETSc was properly loaded
106:   */
107:   SLESInitializePackage(path);
108:   return(0);
109: }
110: EXTERN_C_END

112: /* --------------------------------------------------------------------------*/
113: static char *contents = "PETSc Krylov subspace method and preconditioner library.n
114:      GMRES, PCG, Bi-CG-stab, ...n
115:      Jacobi, ILU, Block Jacobi, LU, Additive Schwarz, ...n";
116: static char *authors  = PETSC_AUTHOR_INFO;

118:  #include src/sys/src/utils/dlregis.h

120: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */