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: }