Actual source code: dlregissnes.c

  1: #define PETSCSNES_DLL

 3:  #include private/snesimpl.h

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

 12:   Level: developer

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

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

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

 36:   Level: developer

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

 49:   if (SNESPackageInitialized) return(0);
 50:   SNESPackageInitialized = PETSC_TRUE;
 51:   /* Register Classes */
 52:   PetscCookieRegister("SNES",&SNES_COOKIE);
 53:   /* Register Constructors */
 54:   SNESRegisterAll(path);
 55:   /* Register Events */
 56:   PetscLogEventRegister("SNESSolve",        SNES_COOKIE,&SNES_Solve);
 57:   PetscLogEventRegister("SNESLineSearch",   SNES_COOKIE,&SNES_LineSearch);
 58:   PetscLogEventRegister("SNESFunctionEval", SNES_COOKIE,&SNES_FunctionEval);
 59:   PetscLogEventRegister("SNESJacobianEval", SNES_COOKIE,&SNES_JacobianEval);
 60:   /* Process info exclusions */
 61:   PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);
 62:   if (opt) {
 63:     PetscStrstr(logList, "snes", &className);
 64:     if (className) {
 65:       PetscInfoDeactivateClass(SNES_COOKIE);
 66:     }
 67:   }
 68:   /* Process summary exclusions */
 69:   PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
 70:   if (opt) {
 71:     PetscStrstr(logList, "snes", &className);
 72:     if (className) {
 73:       PetscLogEventDeactivateClass(SNES_COOKIE);
 74:     }
 75:   }
 76:   PetscRegisterFinalize(SNESFinalizePackage);
 77:   return(0);
 78: }

 80: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
 84: /*
 85:   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.

 87:   This registers all of the SNES methods that are in the basic PETSc libpetscsnes library.

 89:   Input Parameter:
 90:   path - library path

 92:  */
 93: PetscErrorCode  PetscDLLibraryRegister_petscsnes(const char path[])
 94: {

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

107: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */