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