xref: /petsc/src/dm/field/interface/dlregisdmfield.c (revision 02477ebbb21fa13a3b107e40dce1c3d726eb3600)
13da551e6SToby Isaac #include <petsc/private/dmfieldimpl.h> /*I "petscdmfield.h" I*/
23da551e6SToby Isaac 
33da551e6SToby Isaac PetscClassId DMFIELD_CLASSID;
43da551e6SToby Isaac 
53da551e6SToby Isaac static PetscBool DMFieldPackageInitialized = PETSC_FALSE;
63da551e6SToby Isaac 
73da551e6SToby Isaac PetscBool DMFieldRegisterAllCalled;
83da551e6SToby Isaac 
93da551e6SToby Isaac /*@C
10dce8aebaSBarry Smith   DMFieldInitializePackage - Initialize `DMField` package
113da551e6SToby Isaac 
123da551e6SToby Isaac   Logically Collective
133da551e6SToby Isaac 
143da551e6SToby Isaac   Level: developer
153da551e6SToby Isaac 
16db781477SPatrick Sanan .seealso: `DMFieldFinalizePackage()`
173da551e6SToby Isaac @*/
DMFieldInitializePackage(void)18d71ae5a4SJacob Faibussowitsch PetscErrorCode DMFieldInitializePackage(void)
19d71ae5a4SJacob Faibussowitsch {
203da551e6SToby Isaac   PetscFunctionBegin;
21*3ba16761SJacob Faibussowitsch   if (DMFieldPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
223da551e6SToby Isaac   DMFieldPackageInitialized = PETSC_TRUE;
233da551e6SToby Isaac 
249566063dSJacob Faibussowitsch   PetscCall(PetscClassIdRegister("Field over DM", &DMFIELD_CLASSID));
259566063dSJacob Faibussowitsch   PetscCall(DMFieldRegisterAll());
269566063dSJacob Faibussowitsch   PetscCall(PetscRegisterFinalize(DMFieldFinalizePackage));
27*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
283da551e6SToby Isaac }
293da551e6SToby Isaac 
303da551e6SToby Isaac /*@C
31dce8aebaSBarry Smith   DMFieldFinalizePackage - Finalize `DMField` package, it is called from `PetscFinalize()`
323da551e6SToby Isaac 
333da551e6SToby Isaac   Logically Collective
343da551e6SToby Isaac 
353da551e6SToby Isaac   Level: developer
363da551e6SToby Isaac 
37db781477SPatrick Sanan .seealso: `DMFieldInitializePackage()`
383da551e6SToby Isaac @*/
DMFieldFinalizePackage(void)39d71ae5a4SJacob Faibussowitsch PetscErrorCode DMFieldFinalizePackage(void)
40d71ae5a4SJacob Faibussowitsch {
413da551e6SToby Isaac   PetscFunctionBegin;
429566063dSJacob Faibussowitsch   PetscCall(PetscFunctionListDestroy(&DMFieldList));
433da551e6SToby Isaac   DMFieldPackageInitialized = PETSC_FALSE;
443da551e6SToby Isaac   DMFieldRegisterAllCalled  = PETSC_FALSE;
45*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
463da551e6SToby Isaac }
47