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