Actual source code: dlregispetsc.c

petsc-3.10.5 2019-03-28
Report Typos and Errors

  2:  #include <petscdraw.h>
  3:  #include <petscviewer.h>
  4:  #include <petsc/private/viewerimpl.h>

  6: static PetscBool PetscSysPackageInitialized = PETSC_FALSE;

  8: /*@C
  9:   PetscSysFinalizePackage - This function destroys everything in the PETSc created internally in the system library portion of PETSc.
 10:   It is called from PetscFinalize().

 12:   Level: developer

 14: .keywords: Petsc, destroy, package
 15: .seealso: PetscFinalize()
 16: @*/
 17: PetscErrorCode  PetscSysFinalizePackage(void)
 18: {

 22:   if (Petsc_Seq_keyval != MPI_KEYVAL_INVALID) {
 23:     MPI_Comm_free_keyval(&Petsc_Seq_keyval);
 24:   }
 25:   PetscSysPackageInitialized = PETSC_FALSE;
 26:   return(0);
 27: }

 29: /*@C
 30:   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
 31:   from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize()
 32:   when using static libraries.

 34:   Level: developer

 36: .keywords: Petsc, initialize, package
 37: .seealso: PetscInitialize()
 38: @*/
 39: PetscErrorCode  PetscSysInitializePackage(void)
 40: {
 41:   char           logList[256];
 42:   PetscBool      opt,pkg;

 46:   if (PetscSysPackageInitialized) return(0);
 47:   PetscSysPackageInitialized = PETSC_TRUE;
 48:   /* Register Classes */
 49:   PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);
 50:   PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);

 52:   /* Register Events */
 53:   PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);
 54:   PetscLogEventRegister("BuildTwoSided",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSided);
 55:   PetscLogEventRegister("BuildTwoSidedF",PETSC_SMALLEST_CLASSID,&PETSC_BuildTwoSidedF);
 56:   /* Process info exclusions */
 57:   PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);
 58:   if (opt) {
 59:     PetscStrInList("null",logList,',',&pkg);
 60:     if (pkg) {PetscInfoDeactivateClass(0);}
 61:   }
 62:   /* Process summary exclusions */
 63:   PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);
 64:   if (opt) {
 65:     PetscStrInList("null",logList,',',&pkg);
 66:     if (pkg) {PetscLogEventExcludeClass(PETSC_SMALLEST_CLASSID);}
 67:   }
 68:   PetscRegisterFinalize(PetscSysFinalizePackage);
 69:   return(0);
 70: }

 72: #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)

 74: #if defined(PETSC_USE_SINGLE_LIBRARY)
 75: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(void);
 76: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void);
 77: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void);
 78: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(void);
 79: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(void);
 80: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscts(void);
 81: #endif

 83: #if defined(PETSC_USE_SINGLE_LIBRARY)
 84: #else
 85: #endif
 86: /*
 87:   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.

 89:   This one registers all the draw and PetscViewer objects.

 91:  */
 92: #if defined(PETSC_USE_SINGLE_LIBRARY)
 93: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(void)
 94: #else
 95: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsys(void)
 96: #endif
 97: {

101:   /*
102:       If we got here then PETSc was properly loaded
103:   */
104:   PetscSysInitializePackage();
105:   PetscDrawInitializePackage();
106:   PetscViewerInitializePackage();
107:   PetscRandomInitializePackage();

109: #if defined(PETSC_USE_SINGLE_LIBRARY)
110:   PetscDLLibraryRegister_petscvec();
111:   PetscDLLibraryRegister_petscmat();
112:   PetscDLLibraryRegister_petscdm();
113:   PetscDLLibraryRegister_petscksp();
114:   PetscDLLibraryRegister_petscsnes();
115:   PetscDLLibraryRegister_petscts();
116: #endif
117:   return(0);
118: }
119: #endif  /* PETSC_HAVE_DYNAMIC_LIBRARIES */