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 130 ierr = PetscLogEventRegister("DMSwarmMigrate", DM_CLASSID,&DMSWARM_Migrate);CHKERRQ(ierr); 131 ierr = PetscLogEventRegister("DMSwarmDETSetup", DM_CLASSID,&DMSWARM_DataExchangerTopologySetup);CHKERRQ(ierr); 132 ierr = PetscLogEventRegister("DMSwarmDExBegin", DM_CLASSID,&DMSWARM_DataExchangerBegin);CHKERRQ(ierr); 133 ierr = PetscLogEventRegister("DMSwarmDExEnd", DM_CLASSID,&DMSWARM_DataExchangerEnd);CHKERRQ(ierr); 134 ierr = PetscLogEventRegister("DMSwarmDESendCnt", DM_CLASSID,&DMSWARM_DataExchangerSendCount);CHKERRQ(ierr); 135 ierr = PetscLogEventRegister("DMSwarmDEPack", DM_CLASSID,&DMSWARM_DataExchangerPack);CHKERRQ(ierr); 136 ierr = PetscLogEventRegister("DMSwarmAddPnts", DM_CLASSID,&DMSWARM_AddPoints);CHKERRQ(ierr); 137 ierr = PetscLogEventRegister("DMSwarmRmvPnts", DM_CLASSID,&DMSWARM_RemovePoints);CHKERRQ(ierr); 138 ierr = PetscLogEventRegister("DMSwarmSort", DM_CLASSID,&DMSWARM_Sort);CHKERRQ(ierr); 139 ierr = PetscLogEventRegister("DMSwarmSetSizes", DM_CLASSID,&DMSWARM_SetSizes);CHKERRQ(ierr); 140 /* Process Info */ 141 { 142 PetscClassId classids[1]; 143 144 classids[0] = DM_CLASSID; 145 ierr = PetscInfoProcessClass("dm", 1, classids);CHKERRQ(ierr); 146 } 147 148 /* Process summary exclusions */ 149 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 150 if (opt) { 151 ierr = PetscStrInList("dm",logList,',',&pkg);CHKERRQ(ierr); 152 if (pkg) {ierr = PetscLogEventExcludeClass(DM_CLASSID);CHKERRQ(ierr);} 153 } 154 155 ierr = DMGenerateRegisterAll();CHKERRQ(ierr); 156 ierr = PetscRegisterFinalize(DMGenerateRegisterDestroy);CHKERRQ(ierr); 157 ierr = DMPlexTransformRegisterAll();CHKERRQ(ierr); 158 ierr = PetscRegisterFinalize(DMPlexTransformRegisterDestroy);CHKERRQ(ierr); 159 ierr = PetscRegisterFinalize(DMFinalizePackage);CHKERRQ(ierr); 160 PetscFunctionReturn(0); 161 } 162 #include <petscfe.h> 163 164 static PetscBool PetscFEPackageInitialized = PETSC_FALSE; 165 /*@C 166 PetscFEFinalizePackage - This function finalizes everything in the PetscFE package. It is called 167 from PetscFinalize(). 168 169 Level: developer 170 171 .seealso: PetscInitialize() 172 @*/ 173 PetscErrorCode PetscFEFinalizePackage(void) 174 { 175 PetscErrorCode ierr; 176 177 PetscFunctionBegin; 178 ierr = PetscFunctionListDestroy(&PetscSpaceList);CHKERRQ(ierr); 179 ierr = PetscFunctionListDestroy(&PetscDualSpaceList);CHKERRQ(ierr); 180 ierr = PetscFunctionListDestroy(&PetscFEList);CHKERRQ(ierr); 181 PetscFEPackageInitialized = PETSC_FALSE; 182 PetscSpaceRegisterAllCalled = PETSC_FALSE; 183 PetscDualSpaceRegisterAllCalled = PETSC_FALSE; 184 PetscFERegisterAllCalled = PETSC_FALSE; 185 PetscFunctionReturn(0); 186 } 187 188 /*@C 189 PetscFEInitializePackage - This function initializes everything in the FE package. It is called 190 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscSpaceCreate() 191 when using static libraries. 192 193 Level: developer 194 195 .seealso: PetscInitialize() 196 @*/ 197 PetscErrorCode PetscFEInitializePackage(void) 198 { 199 char logList[256]; 200 PetscBool opt,pkg; 201 PetscErrorCode ierr; 202 203 PetscFunctionBegin; 204 if (PetscFEPackageInitialized) PetscFunctionReturn(0); 205 PetscFEPackageInitialized = PETSC_TRUE; 206 207 /* Register Classes */ 208 ierr = PetscClassIdRegister("Linear Space", &PETSCSPACE_CLASSID);CHKERRQ(ierr); 209 ierr = PetscClassIdRegister("Dual Space", &PETSCDUALSPACE_CLASSID);CHKERRQ(ierr); 210 ierr = PetscClassIdRegister("FE Space", &PETSCFE_CLASSID);CHKERRQ(ierr); 211 /* Register Constructors */ 212 ierr = PetscSpaceRegisterAll();CHKERRQ(ierr); 213 ierr = PetscDualSpaceRegisterAll();CHKERRQ(ierr); 214 ierr = PetscFERegisterAll();CHKERRQ(ierr); 215 /* Register Events */ 216 ierr = PetscLogEventRegister("DualSpaceSetUp", PETSCDUALSPACE_CLASSID, &PETSCDUALSPACE_SetUp);CHKERRQ(ierr); 217 ierr = PetscLogEventRegister("FESetUp", PETSCFE_CLASSID, &PETSCFE_SetUp);CHKERRQ(ierr); 218 /* Process Info */ 219 { 220 PetscClassId classids[3]; 221 222 classids[0] = PETSCFE_CLASSID; 223 classids[1] = PETSCSPACE_CLASSID; 224 classids[2] = PETSCDUALSPACE_CLASSID; 225 ierr = PetscInfoProcessClass("fe", 1, classids);CHKERRQ(ierr); 226 ierr = PetscInfoProcessClass("space", 1, &classids[1]);CHKERRQ(ierr); 227 ierr = PetscInfoProcessClass("dualspace", 1, &classids[2]);CHKERRQ(ierr); 228 } 229 /* Process summary exclusions */ 230 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 231 if (opt) { 232 ierr = PetscStrInList("fe",logList,',',&pkg);CHKERRQ(ierr); 233 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCFE_CLASSID);CHKERRQ(ierr);} 234 } 235 /* Register package finalizer */ 236 ierr = PetscRegisterFinalize(PetscFEFinalizePackage);CHKERRQ(ierr); 237 PetscFunctionReturn(0); 238 } 239 #include <petscfv.h> 240 241 static PetscBool PetscFVPackageInitialized = PETSC_FALSE; 242 /*@C 243 PetscFVFinalizePackage - This function finalizes everything in the PetscFV package. It is called 244 from PetscFinalize(). 245 246 Level: developer 247 248 .seealso: PetscInitialize() 249 @*/ 250 PetscErrorCode PetscFVFinalizePackage(void) 251 { 252 PetscErrorCode ierr; 253 254 PetscFunctionBegin; 255 ierr = PetscFunctionListDestroy(&PetscLimiterList);CHKERRQ(ierr); 256 ierr = PetscFunctionListDestroy(&PetscFVList);CHKERRQ(ierr); 257 PetscFVPackageInitialized = PETSC_FALSE; 258 PetscFVRegisterAllCalled = PETSC_FALSE; 259 PetscLimiterRegisterAllCalled = PETSC_FALSE; 260 PetscFunctionReturn(0); 261 } 262 263 /*@C 264 PetscFVInitializePackage - This function initializes everything in the FV package. It is called 265 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscFVCreate() 266 when using static libraries. 267 268 Level: developer 269 270 .seealso: PetscInitialize() 271 @*/ 272 PetscErrorCode PetscFVInitializePackage(void) 273 { 274 char logList[256]; 275 PetscBool opt,pkg; 276 PetscErrorCode ierr; 277 278 PetscFunctionBegin; 279 if (PetscFVPackageInitialized) PetscFunctionReturn(0); 280 PetscFVPackageInitialized = PETSC_TRUE; 281 282 /* Register Classes */ 283 ierr = PetscClassIdRegister("FV Space", &PETSCFV_CLASSID);CHKERRQ(ierr); 284 ierr = PetscClassIdRegister("Limiter", &PETSCLIMITER_CLASSID);CHKERRQ(ierr); 285 /* Register Constructors */ 286 ierr = PetscFVRegisterAll();CHKERRQ(ierr); 287 /* Register Events */ 288 /* Process Info */ 289 { 290 PetscClassId classids[2]; 291 292 classids[0] = PETSCFV_CLASSID; 293 classids[1] = PETSCLIMITER_CLASSID; 294 ierr = PetscInfoProcessClass("fv", 1, classids);CHKERRQ(ierr); 295 ierr = PetscInfoProcessClass("limiter", 1, &classids[1]);CHKERRQ(ierr); 296 } 297 /* Process summary exclusions */ 298 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 299 if (opt) { 300 ierr = PetscStrInList("fv",logList,',',&pkg);CHKERRQ(ierr); 301 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCFV_CLASSID);CHKERRQ(ierr);} 302 ierr = PetscStrInList("limiter",logList,',',&pkg);CHKERRQ(ierr); 303 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCLIMITER_CLASSID);CHKERRQ(ierr);} 304 } 305 /* Register package finalizer */ 306 ierr = PetscRegisterFinalize(PetscFVFinalizePackage);CHKERRQ(ierr); 307 PetscFunctionReturn(0); 308 } 309 #include <petscds.h> 310 311 static PetscBool PetscDSPackageInitialized = PETSC_FALSE; 312 /*@C 313 PetscDSFinalizePackage - This function finalizes everything in the PetscDS package. It is called 314 from PetscFinalize(). 315 316 Level: developer 317 318 .seealso: PetscInitialize() 319 @*/ 320 PetscErrorCode PetscDSFinalizePackage(void) 321 { 322 PetscErrorCode ierr; 323 324 PetscFunctionBegin; 325 ierr = PetscFunctionListDestroy(&PetscDSList);CHKERRQ(ierr); 326 PetscDSPackageInitialized = PETSC_FALSE; 327 PetscDSRegisterAllCalled = PETSC_FALSE; 328 PetscFunctionReturn(0); 329 } 330 331 /*@C 332 PetscDSInitializePackage - This function initializes everything in the DS package. It is called 333 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscDSCreate() 334 when using static libraries. 335 336 Level: developer 337 338 .seealso: PetscInitialize() 339 @*/ 340 PetscErrorCode PetscDSInitializePackage(void) 341 { 342 char logList[256]; 343 PetscBool opt,pkg; 344 PetscErrorCode ierr; 345 346 PetscFunctionBegin; 347 if (PetscDSPackageInitialized) PetscFunctionReturn(0); 348 PetscDSPackageInitialized = PETSC_TRUE; 349 350 /* Register Classes */ 351 ierr = PetscClassIdRegister("Discrete System", &PETSCDS_CLASSID);CHKERRQ(ierr); 352 ierr = PetscClassIdRegister("Weak Form", &PETSCWEAKFORM_CLASSID);CHKERRQ(ierr); 353 /* Register Constructors */ 354 ierr = PetscDSRegisterAll();CHKERRQ(ierr); 355 /* Register Events */ 356 /* Process Info */ 357 { 358 PetscClassId classids[1]; 359 360 classids[0] = PETSCDS_CLASSID; 361 ierr = PetscInfoProcessClass("ds", 1, classids);CHKERRQ(ierr); 362 } 363 /* Process summary exclusions */ 364 ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 365 if (opt) { 366 ierr = PetscStrInList("ds",logList,',',&pkg);CHKERRQ(ierr); 367 if (pkg) {ierr = PetscLogEventExcludeClass(PETSCDS_CLASSID);CHKERRQ(ierr);} 368 } 369 /* Register package finalizer */ 370 ierr = PetscRegisterFinalize(PetscDSFinalizePackage);CHKERRQ(ierr); 371 PetscFunctionReturn(0); 372 } 373 374 #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 375 /* 376 PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 377 378 This one registers all the mesh generators and partitioners that are in 379 the basic DM library. 380 381 */ 382 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void) 383 { 384 PetscErrorCode ierr; 385 386 PetscFunctionBegin; 387 ierr = AOInitializePackage();CHKERRQ(ierr); 388 ierr = PetscPartitionerInitializePackage();CHKERRQ(ierr); 389 ierr = DMInitializePackage();CHKERRQ(ierr); 390 ierr = PetscFEInitializePackage();CHKERRQ(ierr); 391 ierr = PetscFVInitializePackage();CHKERRQ(ierr); 392 ierr = DMFieldInitializePackage();CHKERRQ(ierr); 393 PetscFunctionReturn(0); 394 } 395 396 #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 397