1: #include <petsc/private/dmfieldimpl.h> 3: PetscClassId DMFIELD_CLASSID; 5: static PetscBool DMFieldPackageInitialized = PETSC_FALSE; 7: PetscBool DMFieldRegisterAllCalled; 9: /*@C 10: DMFieldInitializePackage - Initialize `DMField` package 12: Logically Collective 14: Level: developer 16: .seealso: `DMFieldFinalizePackage()` 17: @*/ 18: PetscErrorCode DMFieldInitializePackage(void) 19: { 20: PetscFunctionBegin; 21: if (DMFieldPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS); 22: DMFieldPackageInitialized = PETSC_TRUE; 24: PetscCall(PetscClassIdRegister("Field over DM", &DMFIELD_CLASSID)); 25: PetscCall(DMFieldRegisterAll()); 26: PetscCall(PetscRegisterFinalize(DMFieldFinalizePackage)); 27: PetscFunctionReturn(PETSC_SUCCESS); 28: } 30: /*@C 31: DMFieldFinalizePackage - Finalize `DMField` package, it is called from `PetscFinalize()` 33: Logically Collective 35: Level: developer 37: .seealso: `DMFieldInitializePackage()` 38: @*/ 39: PetscErrorCode DMFieldFinalizePackage(void) 40: { 41: PetscFunctionBegin; 42: PetscCall(PetscFunctionListDestroy(&DMFieldList)); 43: DMFieldPackageInitialized = PETSC_FALSE; 44: DMFieldRegisterAllCalled = PETSC_FALSE; 45: PetscFunctionReturn(PETSC_SUCCESS); 46: }