xref: /petsc/src/dm/field/interface/dlregisdmfield.c (revision ccb4e88a40f0b86eaeca07ff64c64e4de2fae686)
1 #include <petsc/private/dmfieldimpl.h> /*I "petscdmfield.h" I*/
2 
3 PetscClassId DMFIELD_CLASSID;
4 
5 static PetscBool DMFieldPackageInitialized = PETSC_FALSE;
6 
7 PetscBool DMFieldRegisterAllCalled;
8 
9 /*@C
10    DMFieldInitializePackage - Initialize DMField package
11 
12    Logically Collective
13 
14    Level: developer
15 
16 .seealso: DMFieldFinalizePackage()
17 @*/
18 PetscErrorCode DMFieldInitializePackage(void)
19 {
20   PetscErrorCode ierr;
21 
22   PetscFunctionBegin;
23   if (DMFieldPackageInitialized) PetscFunctionReturn(0);
24   DMFieldPackageInitialized = PETSC_TRUE;
25 
26   ierr = PetscClassIdRegister("Field over DM",&DMFIELD_CLASSID);CHKERRQ(ierr);
27   ierr = DMFieldRegisterAll();CHKERRQ(ierr);
28   ierr = PetscRegisterFinalize(DMFieldFinalizePackage);CHKERRQ(ierr);
29   PetscFunctionReturn(0);
30 }
31 
32 /*@C
33    DMFieldFinalizePackage - Finalize DMField package, it is called from PetscFinalize()
34 
35    Logically Collective
36 
37    Level: developer
38 
39 .seealso: DMFieldInitializePackage()
40 @*/
41 PetscErrorCode DMFieldFinalizePackage(void)
42 {
43   PetscErrorCode ierr;
44 
45   PetscFunctionBegin;
46   ierr = PetscFunctionListDestroy(&DMFieldList);CHKERRQ(ierr);
47   DMFieldPackageInitialized = PETSC_FALSE;
48   DMFieldRegisterAllCalled  = PETSC_FALSE;
49   PetscFunctionReturn(0);
50 }
51