1 2 #include <petscao.h> 3 #include <petsc/private/dmlabelimpl.h> 4 #include <petsc/private/dmfieldimpl.h> 5 #include <petsc/private/dmpleximpl.h> 6 #include <petsc/private/dmplextransformimpl.h> 7 #include <petsc/private/petscdsimpl.h> 8 #include <petsc/private/petscfeimpl.h> 9 #include <petsc/private/petscfvimpl.h> 10 #include <petsc/private/dmswarmimpl.h> 11 12 static PetscBool DMPackageInitialized = PETSC_FALSE; 13 /*@C 14 DMFinalizePackage - This function finalizes everything in the DM package. It is called 15 from PetscFinalize(). 16 17 Level: developer 18 19 .seealso: PetscInitialize() 20 @*/ 21 PetscErrorCode DMFinalizePackage(void) 22 { 23 PetscErrorCode ierr; 24 25 PetscFunctionBegin; 26 ierr = PetscFunctionListDestroy(&DMList);CHKERRQ(ierr); 27 DMPackageInitialized = PETSC_FALSE; 28 DMRegisterAllCalled = PETSC_FALSE; 29 PetscFunctionReturn(0); 30 } 31 32 #if defined(PETSC_HAVE_HYPRE) 33 PETSC_EXTERN PetscErrorCode MatCreate_HYPREStruct(Mat); 34 PETSC_EXTERN PetscErrorCode MatCreate_HYPRESStruct(Mat); 35 #endif 36 37 /*@C 38 DMInitializePackage - This function initializes everything in the DM package. It is called 39 from PetscDLLibraryRegister_petscdm() when using dynamic libraries, and on the first call to AOCreate() 40 or DMDACreate() when using shared or static libraries. 41 42 Level: developer 43 44 .seealso: PetscInitialize() 45 @*/ 46 PetscErrorCode DMInitializePackage(void) 47 { 48 char logList[256]; 49 PetscBool opt,pkg; 50 PetscErrorCode ierr; 51 52 PetscFunctionBegin; 53 if (DMPackageInitialized) PetscFunctionReturn(0); 54 DMPackageInitialized = PETSC_TRUE; 55 56 /* Register Classes */ 57 ierr = PetscClassIdRegister("Distributed Mesh",&DM_CLASSID);CHKERRQ(ierr); 58 ierr = PetscClassIdRegister("DM Label",&DMLABEL_CLASSID);CHKERRQ(ierr); 59 ierr = PetscClassIdRegister("Quadrature",&PETSCQUADRATURE_CLASSID);CHKERRQ(ierr); 60 ierr = PetscClassIdRegister("Mesh Transform",&DMPLEXTRANSFORM_CLASSID);CHKERRQ(ierr); 61 62 #if defined(PETSC_HAVE_HYPRE) 63 ierr = MatRegister(MATHYPRESTRUCT, MatCreate_HYPREStruct);CHKERRQ(ierr); 64 ierr = MatRegister(MATHYPRESSTRUCT, MatCreate_HYPRESStruct);CHKERRQ(ierr); 65 #endif 66 ierr = PetscSectionSymRegister(PETSCSECTIONSYMLABEL,PetscSectionSymCreate_Label);CHKERRQ(ierr); 67 68 /* Register Constructors */ 69 ierr = DMRegisterAll();CHKERRQ(ierr); 70 /* Register Events */ 71 ierr = PetscLogEventRegister("DMConvert", DM_CLASSID,&DM_Convert);CHKERRQ(ierr); 72 ierr = PetscLogEventRegister("DMGlobalToLocal", DM_CLASSID,&DM_GlobalToLocal);CHKERRQ(ierr); 73 ierr = PetscLogEventRegister("DMLocalToGlobal", DM_CLASSID,&DM_LocalToGlobal);CHKERRQ(ierr); 74 ierr = PetscLogEventRegister("DMLocatePoints", DM_CLASSID,&DM_LocatePoints);CHKERRQ(ierr); 75 ierr = PetscLogEventRegister("DMCoarsen", DM_CLASSID,&DM_Coarsen);CHKERRQ(ierr); 76 ierr = PetscLogEventRegister("DMCreateInterp", DM_CLASSID,&DM_CreateInterpolation);CHKERRQ(ierr); 77 ierr = PetscLogEventRegister("DMCreateRestrict", DM_CLASSID,&DM_CreateRestriction);CHKERRQ(ierr); 78 ierr = PetscLogEventRegister("DMCreateInject", DM_CLASSID,&DM_CreateInjection);CHKERRQ(ierr); 79 ierr = PetscLogEventRegister("DMCreateMat", DM_CLASSID,&DM_CreateMatrix);CHKERRQ(ierr); 80 ierr = PetscLogEventRegister("DMLoad", DM_CLASSID,&DM_Load);CHKERRQ(ierr); 81 ierr = PetscLogEventRegister("DMAdaptInterp", DM_CLASSID,&DM_AdaptInterpolator);CHKERRQ(ierr); 82 83 ierr = PetscLogEventRegister("DMPlexBuFrCeLi", DM_CLASSID,&DMPLEX_BuildFromCellList);CHKERRQ(ierr); 84 ierr = PetscLogEventRegister("DMPlexBuCoFrCeLi", DM_CLASSID,&DMPLEX_BuildCoordinatesFromCellList);CHKERRQ(ierr); 85 ierr = PetscLogEventRegister("DMPlexCreateGmsh", DM_CLASSID,&DMPLEX_CreateGmsh);CHKERRQ(ierr); 86 ierr = PetscLogEventRegister("DMPlexCrFromFile", DM_CLASSID,&DMPLEX_CreateFromFile);CHKERRQ(ierr); 87 ierr = PetscLogEventRegister("Mesh Partition", DM_CLASSID,&DMPLEX_Partition);CHKERRQ(ierr); 88 ierr = PetscLogEventRegister("Mesh Migration", DM_CLASSID,&DMPLEX_Migrate);CHKERRQ(ierr); 89 ierr = PetscLogEventRegister("DMPlexPartSelf", DM_CLASSID,&DMPLEX_PartSelf);CHKERRQ(ierr); 90 ierr = PetscLogEventRegister("DMPlexPartLblInv", DM_CLASSID,&DMPLEX_PartLabelInvert);CHKERRQ(ierr); 91 ierr = PetscLogEventRegister("DMPlexPartLblSF", DM_CLASSID,&DMPLEX_PartLabelCreateSF);CHKERRQ(ierr); 92 ierr = PetscLogEventRegister("DMPlexPartStrtSF", DM_CLASSID,&DMPLEX_PartStratSF);CHKERRQ(ierr); 93 ierr = PetscLogEventRegister("DMPlexPointSF", DM_CLASSID,&DMPLEX_CreatePointSF);CHKERRQ(ierr); 94 ierr = PetscLogEventRegister("DMPlexInterp", DM_CLASSID,&DMPLEX_Interpolate);CHKERRQ(ierr); 95 ierr = PetscLogEventRegister("DMPlexDistribute", DM_CLASSID,&DMPLEX_Distribute);CHKERRQ(ierr); 96 ierr = PetscLogEventRegister("DMPlexDistCones", DM_CLASSID,&DMPLEX_DistributeCones);CHKERRQ(ierr); 97 ierr = PetscLogEventRegister("DMPlexDistLabels", DM_CLASSID,&DMPLEX_DistributeLabels);CHKERRQ(ierr); 98 ierr = PetscLogEventRegister("DMPlexDistSF", DM_CLASSID,&DMPLEX_DistributeSF);CHKERRQ(ierr); 99 ierr = PetscLogEventRegister("DMPlexDistOvrlp", DM_CLASSID,&DMPLEX_DistributeOverlap);CHKERRQ(ierr); 100 ierr = PetscLogEventRegister("DMPlexDistField", DM_CLASSID,&DMPLEX_DistributeField);CHKERRQ(ierr); 101 ierr = PetscLogEventRegister("DMPlexDistData", DM_CLASSID,&DMPLEX_DistributeData);CHKERRQ(ierr); 102 ierr = PetscLogEventRegister("DMPlexInterpSF", DM_CLASSID,&DMPLEX_InterpolateSF);CHKERRQ(ierr); 103 ierr = PetscLogEventRegister("DMPlexGToNBegin", DM_CLASSID,&DMPLEX_GlobalToNaturalBegin);CHKERRQ(ierr); 104 ierr = PetscLogEventRegister("DMPlexGToNEnd", DM_CLASSID,&DMPLEX_GlobalToNaturalEnd);CHKERRQ(ierr); 105 ierr = PetscLogEventRegister("DMPlexNToGBegin", DM_CLASSID,&DMPLEX_NaturalToGlobalBegin);CHKERRQ(ierr); 106 ierr = PetscLogEventRegister("DMPlexNToGEnd", DM_CLASSID,&DMPLEX_NaturalToGlobalEnd);CHKERRQ(ierr); 107 ierr = PetscLogEventRegister("DMPlexStratify", DM_CLASSID,&DMPLEX_Stratify);CHKERRQ(ierr); 108 ierr = PetscLogEventRegister("DMPlexSymmetrize", DM_CLASSID,&DMPLEX_Symmetrize);CHKERRQ(ierr); 109 ierr = PetscLogEventRegister("DMPlexPrealloc", DM_CLASSID,&DMPLEX_Preallocate);CHKERRQ(ierr); 110 ierr = PetscLogEventRegister("DMPlexResidualFE", DM_CLASSID,&DMPLEX_ResidualFEM);CHKERRQ(ierr); 111 ierr = PetscLogEventRegister("DMPlexJacobianFE", DM_CLASSID,&DMPLEX_JacobianFEM);CHKERRQ(ierr); 112 ierr = PetscLogEventRegister("DMPlexInterpFE", DM_CLASSID,&DMPLEX_InterpolatorFEM);CHKERRQ(ierr); 113 ierr = PetscLogEventRegister("DMPlexInjectorFE", DM_CLASSID,&DMPLEX_InjectorFEM);CHKERRQ(ierr); 114 ierr = PetscLogEventRegister("DMPlexIntegralFEM", DM_CLASSID,&DMPLEX_IntegralFEM);CHKERRQ(ierr); 115 ierr = PetscLogEventRegister("DMPlexRebalance", DM_CLASSID,&DMPLEX_RebalanceSharedPoints);CHKERRQ(ierr); 116 ierr = PetscLogEventRegister("DMPlexLocatePoints", DM_CLASSID,&DMPLEX_LocatePoints);CHKERRQ(ierr); 117 ierr = PetscLogEventRegister("DMPlexTopologyView", DM_CLASSID,&DMPLEX_TopologyView);CHKERRQ(ierr); 118 ierr = PetscLogEventRegister("DMPlexLabelsView", DM_CLASSID,&DMPLEX_LabelsView);CHKERRQ(ierr); 119 ierr = PetscLogEventRegister("DMPlexCoordinatesView", DM_CLASSID,&DMPLEX_CoordinatesView);CHKERRQ(ierr); 120 ierr = PetscLogEventRegister("DMPlexSectionView", DM_CLASSID,&DMPLEX_SectionView);CHKERRQ(ierr); 121 ierr = PetscLogEventRegister("DMPlexGlobalVectorView", DM_CLASSID,&DMPLEX_GlobalVectorView);CHKERRQ(ierr); 122 ierr = PetscLogEventRegister("DMPlexLocalVectorView", DM_CLASSID,&DMPLEX_LocalVectorView);CHKERRQ(ierr); 123 ierr = PetscLogEventRegister("DMPlexTopologyLoad", DM_CLASSID,&DMPLEX_TopologyLoad);CHKERRQ(ierr); 124 ierr = PetscLogEventRegister("DMPlexLabelsLoad", DM_CLASSID,&DMPLEX_LabelsLoad);CHKERRQ(ierr); 125 ierr = PetscLogEventRegister("DMPlexCoordinatesLoad", DM_CLASSID,&DMPLEX_CoordinatesLoad);CHKERRQ(ierr); 126 ierr = PetscLogEventRegister("DMPlexSectionLoad", DM_CLASSID,&DMPLEX_SectionLoad);CHKERRQ(ierr); 127 ierr = PetscLogEventRegister("DMPlexGlobalVectorLoad", DM_CLASSID,&DMPLEX_GlobalVectorLoad);CHKERRQ(ierr); 128 ierr = PetscLogEventRegister("DMPlexLocalVectorLoad", DM_CLASSID,&DMPLEX_LocalVectorLoad);CHKERRQ(ierr); 129 ierr = PetscLogEventRegister("DMPlexMetricEnforceSPD", DM_CLASSID,&DMPLEX_MetricEnforceSPD);CHKERRQ(ierr); 130 ierr = PetscLogEventRegister("DMPlexMetricNormalize", DM_CLASSID,&DMPLEX_MetricNormalize);CHKERRQ(ierr); 131 ierr = PetscLogEventRegister("DMPlexMetricAverage", DM_CLASSID,&DMPLEX_MetricAverage);CHKERRQ(ierr); 132 ierr = PetscLogEventRegister("DMPlexMetricIntersect", DM_CLASSID,&DMPLEX_MetricIntersection);CHKERRQ(ierr); 133 134 ierr = PetscLogEventRegister("DMSwarmMigrate", DM_CLASSID,&DMSWARM_Migrate);CHKERRQ(ierr); 135 ierr = PetscLogEventRegister("DMSwarmDETSetup", DM_CLASSID,&DMSWARM_DataExchangerTopologySetup);CHKERRQ(ierr); 136 ierr = PetscLogEventRegister("DMSwarmDExBegin", DM_CLASSID,&DMSWARM_DataExchangerBegin);CHKERRQ(ierr); 137 ierr = PetscLogEventRegister("DMSwarmDExEnd", DM_CLASSID,&DMSWARM_DataExchangerEnd);CHKERRQ(ierr); 138 ierr = PetscLogEventRegister("DMSwarmDESendCnt", DM_CLASSID,&DMSWARM_DataExchangerSendCount);CHKERRQ(ierr); 139 ierr = PetscLogEventRegister("DMSwarmDEPack", DM_CLASSID,&DMSWARM_DataExchangerPack);CHKERRQ(ierr); 140 ierr = PetscLogEventRegister("DMSwarmAddPnts", DM_CLASSID,&DMSWARM_AddPoints);CHKERRQ(ierr); 141 ierr = PetscLogEventRegister("DMSwarmRmvPnts", DM_CLASSID,&DMSWARM_RemovePoints);CHKERRQ(ierr); 142 ierr = PetscLogEventRegister("DMSwarmSort", DM_CLASSID,&DMSWARM_Sort);CHKERRQ(ierr); 143 ierr = PetscLogEventRegister("DMSwarmSetSizes", DM_CLASSID,&DMSWARM_SetSizes);CHKERRQ(ierr); 144 /* Process Info */ 145 { 146 PetscClassId classids[1]; 147 148 classids[0] = DM_CLASSID; 149 ierr = PetscInfoProcessClass("dm", 1, classids);CHKERRQ(ierr); 150 } 151 152 /* Process summary exclusions */ 153 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 154 if (opt) { 155 ierr = PetscStrInList("dm",logList,',',&pkg);CHKERRQ(ierr); 156 if (pkg) {ierr = PetscLogEventExcludeClass(DM_CLASSID);CHKERRQ(ierr);} 157 } 158 159 ierr = DMGenerateRegisterAll();CHKERRQ(ierr); 160 ierr = PetscRegisterFinalize(DMGenerateRegisterDestroy);CHKERRQ(ierr); 161 ierr = DMPlexTransformRegisterAll();CHKERRQ(ierr); 162 ierr = PetscRegisterFinalize(DMPlexTransformRegisterDestroy);CHKERRQ(ierr); 163 ierr = PetscRegisterFinalize(DMFinalizePackage);CHKERRQ(ierr); 164 PetscFunctionReturn(0); 165 } 166 #include <petscfe.h> 167 168 static PetscBool PetscFEPackageInitialized = PETSC_FALSE; 169 /*@C 170 PetscFEFinalizePackage - This function finalizes everything in the PetscFE package. It is called 171 from PetscFinalize(). 172 173 Level: developer 174 175 .seealso: PetscInitialize() 176 @*/ 177 PetscErrorCode PetscFEFinalizePackage(void) 178 { 179 PetscErrorCode ierr; 180 181 PetscFunctionBegin; 182 ierr = PetscFunctionListDestroy(&PetscSpaceList);CHKERRQ(ierr); 183 ierr = PetscFunctionListDestroy(&PetscDualSpaceList);CHKERRQ(ierr); 184 ierr = PetscFunctionListDestroy(&PetscFEList);CHKERRQ(ierr); 185 PetscFEPackageInitialized = PETSC_FALSE; 186 PetscSpaceRegisterAllCalled = PETSC_FALSE; 187 PetscDualSpaceRegisterAllCalled = PETSC_FALSE; 188 PetscFERegisterAllCalled = PETSC_FALSE; 189 PetscFunctionReturn(0); 190 } 191 192 /*@C 193 PetscFEInitializePackage - This function initializes everything in the FE package. It is called 194 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscSpaceCreate() 195 when using static libraries. 196 197 Level: developer 198 199 .seealso: PetscInitialize() 200 @*/ 201 PetscErrorCode PetscFEInitializePackage(void) 202 { 203 char logList[256]; 204 PetscBool opt,pkg; 205 PetscErrorCode ierr; 206 207 PetscFunctionBegin; 208 if (PetscFEPackageInitialized) PetscFunctionReturn(0); 209 PetscFEPackageInitialized = PETSC_TRUE; 210 211 /* Register Classes */ 212 ierr = PetscClassIdRegister("Linear Space", &PETSCSPACE_CLASSID);CHKERRQ(ierr); 213 ierr = PetscClassIdRegister("Dual Space", &PETSCDUALSPACE_CLASSID);CHKERRQ(ierr); 214 ierr = PetscClassIdRegister("FE Space", &PETSCFE_CLASSID);CHKERRQ(ierr); 215 /* Register Constructors */ 216 ierr = PetscSpaceRegisterAll();CHKERRQ(ierr); 217 ierr = PetscDualSpaceRegisterAll();CHKERRQ(ierr); 218 ierr = PetscFERegisterAll();CHKERRQ(ierr); 219 /* Register Events */ 220 ierr = PetscLogEventRegister("DualSpaceSetUp", PETSCDUALSPACE_CLASSID, &PETSCDUALSPACE_SetUp);CHKERRQ(ierr); 221 ierr = PetscLogEventRegister("FESetUp", PETSCFE_CLASSID, &PETSCFE_SetUp);CHKERRQ(ierr); 222 /* Process Info */ 223 { 224 PetscClassId classids[3]; 225 226 classids[0] = PETSCFE_CLASSID; 227 classids[1] = PETSCSPACE_CLASSID; 228 classids[2] = PETSCDUALSPACE_CLASSID; 229 ierr = PetscInfoProcessClass("fe", 1, classids);CHKERRQ(ierr); 230 ierr = PetscInfoProcessClass("space", 1, &classids[1]);CHKERRQ(ierr); 231 ierr = PetscInfoProcessClass("dualspace", 1, &classids[2]);CHKERRQ(ierr); 232 } 233 /* Process summary exclusions */ 234 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 235 if (opt) { 236 ierr = PetscStrInList("fe",logList,',',&pkg);CHKERRQ(ierr); 237 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCFE_CLASSID);CHKERRQ(ierr);} 238 } 239 /* Register package finalizer */ 240 ierr = PetscRegisterFinalize(PetscFEFinalizePackage);CHKERRQ(ierr); 241 PetscFunctionReturn(0); 242 } 243 #include <petscfv.h> 244 245 static PetscBool PetscFVPackageInitialized = PETSC_FALSE; 246 /*@C 247 PetscFVFinalizePackage - This function finalizes everything in the PetscFV package. It is called 248 from PetscFinalize(). 249 250 Level: developer 251 252 .seealso: PetscInitialize() 253 @*/ 254 PetscErrorCode PetscFVFinalizePackage(void) 255 { 256 PetscErrorCode ierr; 257 258 PetscFunctionBegin; 259 ierr = PetscFunctionListDestroy(&PetscLimiterList);CHKERRQ(ierr); 260 ierr = PetscFunctionListDestroy(&PetscFVList);CHKERRQ(ierr); 261 PetscFVPackageInitialized = PETSC_FALSE; 262 PetscFVRegisterAllCalled = PETSC_FALSE; 263 PetscLimiterRegisterAllCalled = PETSC_FALSE; 264 PetscFunctionReturn(0); 265 } 266 267 /*@C 268 PetscFVInitializePackage - This function initializes everything in the FV package. It is called 269 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscFVCreate() 270 when using static libraries. 271 272 Level: developer 273 274 .seealso: PetscInitialize() 275 @*/ 276 PetscErrorCode PetscFVInitializePackage(void) 277 { 278 char logList[256]; 279 PetscBool opt,pkg; 280 PetscErrorCode ierr; 281 282 PetscFunctionBegin; 283 if (PetscFVPackageInitialized) PetscFunctionReturn(0); 284 PetscFVPackageInitialized = PETSC_TRUE; 285 286 /* Register Classes */ 287 ierr = PetscClassIdRegister("FV Space", &PETSCFV_CLASSID);CHKERRQ(ierr); 288 ierr = PetscClassIdRegister("Limiter", &PETSCLIMITER_CLASSID);CHKERRQ(ierr); 289 /* Register Constructors */ 290 ierr = PetscFVRegisterAll();CHKERRQ(ierr); 291 /* Register Events */ 292 /* Process Info */ 293 { 294 PetscClassId classids[2]; 295 296 classids[0] = PETSCFV_CLASSID; 297 classids[1] = PETSCLIMITER_CLASSID; 298 ierr = PetscInfoProcessClass("fv", 1, classids);CHKERRQ(ierr); 299 ierr = PetscInfoProcessClass("limiter", 1, &classids[1]);CHKERRQ(ierr); 300 } 301 /* Process summary exclusions */ 302 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 303 if (opt) { 304 ierr = PetscStrInList("fv",logList,',',&pkg);CHKERRQ(ierr); 305 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCFV_CLASSID);CHKERRQ(ierr);} 306 ierr = PetscStrInList("limiter",logList,',',&pkg);CHKERRQ(ierr); 307 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCLIMITER_CLASSID);CHKERRQ(ierr);} 308 } 309 /* Register package finalizer */ 310 ierr = PetscRegisterFinalize(PetscFVFinalizePackage);CHKERRQ(ierr); 311 PetscFunctionReturn(0); 312 } 313 #include <petscds.h> 314 315 static PetscBool PetscDSPackageInitialized = PETSC_FALSE; 316 /*@C 317 PetscDSFinalizePackage - This function finalizes everything in the PetscDS package. It is called 318 from PetscFinalize(). 319 320 Level: developer 321 322 .seealso: PetscInitialize() 323 @*/ 324 PetscErrorCode PetscDSFinalizePackage(void) 325 { 326 PetscErrorCode ierr; 327 328 PetscFunctionBegin; 329 ierr = PetscFunctionListDestroy(&PetscDSList);CHKERRQ(ierr); 330 PetscDSPackageInitialized = PETSC_FALSE; 331 PetscDSRegisterAllCalled = PETSC_FALSE; 332 PetscFunctionReturn(0); 333 } 334 335 /*@C 336 PetscDSInitializePackage - This function initializes everything in the DS package. It is called 337 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscDSCreate() 338 when using static libraries. 339 340 Level: developer 341 342 .seealso: PetscInitialize() 343 @*/ 344 PetscErrorCode PetscDSInitializePackage(void) 345 { 346 char logList[256]; 347 PetscBool opt,pkg; 348 PetscErrorCode ierr; 349 350 PetscFunctionBegin; 351 if (PetscDSPackageInitialized) PetscFunctionReturn(0); 352 PetscDSPackageInitialized = PETSC_TRUE; 353 354 /* Register Classes */ 355 ierr = PetscClassIdRegister("Discrete System", &PETSCDS_CLASSID);CHKERRQ(ierr); 356 ierr = PetscClassIdRegister("Weak Form", &PETSCWEAKFORM_CLASSID);CHKERRQ(ierr); 357 /* Register Constructors */ 358 ierr = PetscDSRegisterAll();CHKERRQ(ierr); 359 /* Register Events */ 360 /* Process Info */ 361 { 362 PetscClassId classids[1]; 363 364 classids[0] = PETSCDS_CLASSID; 365 ierr = PetscInfoProcessClass("ds", 1, classids);CHKERRQ(ierr); 366 } 367 /* Process summary exclusions */ 368 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 369 if (opt) { 370 ierr = PetscStrInList("ds",logList,',',&pkg);CHKERRQ(ierr); 371 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCDS_CLASSID);CHKERRQ(ierr);} 372 } 373 /* Register package finalizer */ 374 ierr = PetscRegisterFinalize(PetscDSFinalizePackage);CHKERRQ(ierr); 375 PetscFunctionReturn(0); 376 } 377 378 #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 379 /* 380 PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 381 382 This one registers all the mesh generators and partitioners that are in 383 the basic DM library. 384 385 */ 386 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void) 387 { 388 PetscErrorCode ierr; 389 390 PetscFunctionBegin; 391 ierr = AOInitializePackage();CHKERRQ(ierr); 392 ierr = PetscPartitionerInitializePackage();CHKERRQ(ierr); 393 ierr = DMInitializePackage();CHKERRQ(ierr); 394 ierr = PetscFEInitializePackage();CHKERRQ(ierr); 395 ierr = PetscFVInitializePackage();CHKERRQ(ierr); 396 ierr = DMFieldInitializePackage();CHKERRQ(ierr); 397 PetscFunctionReturn(0); 398 } 399 400 #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 401