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