xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision 8dc331a1884e7d9f3e74ba293e4b2ea0b4ee67ee)
1 #include <petsc-private/sfimpl.h>
2 
3 PetscClassId PETSCSF_CLASSID;
4 
5 static PetscBool PetscSFPackageInitialized = PETSC_FALSE;
6 
7 PetscBool PetscSFRegisterAllCalled;
8 
9 #undef __FUNCT__
10 #define __FUNCT__ "PetscSFInitializePackage"
11 /*@C
12    PetscSFInitializePackage - Initialize SF package
13 
14    Logically Collective
15 
16    Level: developer
17 
18 .seealso: PetscSFFinalizePackage()
19 @*/
20 PetscErrorCode PetscSFInitializePackage(void)
21 {
22   PetscErrorCode ierr;
23 
24   PetscFunctionBegin;
25   if (PetscSFPackageInitialized) PetscFunctionReturn(0);
26   PetscSFPackageInitialized = PETSC_TRUE;
27 
28   ierr = PetscClassIdRegister("Bipartite Graph",&PETSCSF_CLASSID);CHKERRQ(ierr);
29   ierr = PetscSFRegisterAll();CHKERRQ(ierr);
30   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
31   PetscFunctionReturn(0);
32 }
33 
34 #undef __FUNCT__
35 #define __FUNCT__ "PetscSFFinalizePackage"
36 /*@C
37    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
38 
39    Logically Collective
40 
41    Level: developer
42 
43 .seealso: PetscSFInitializePackage()
44 @*/
45 PetscErrorCode PetscSFFinalizePackage(void)
46 {
47   PetscErrorCode ierr;
48 
49   PetscFunctionBegin;
50   ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr);
51   PetscSFPackageInitialized = PETSC_FALSE;
52   PetscSFRegisterAllCalled  = PETSC_FALSE;
53   PetscFunctionReturn(0);
54 }
55