xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision bebe2cf65d55febe21a5af8db2bd2e168caaa2e7)
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("Star Forest Bipartite Graph",&PETSCSF_CLASSID);CHKERRQ(ierr);
29   ierr = PetscSFRegisterAll();CHKERRQ(ierr);
30   ierr = PetscLogEventRegister("SFSetGraph"     , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr);
31   ierr = PetscLogEventRegister("SFBcastBegin"   , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr);
32   ierr = PetscLogEventRegister("SFBcastEnd"     , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr);
33   ierr = PetscLogEventRegister("SFReduceBegin"  , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr);
34   ierr = PetscLogEventRegister("SFReduceEnd"    , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr);
35   ierr = PetscLogEventRegister("SFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr);
36   ierr = PetscLogEventRegister("SFFetchOpEnd"   , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);CHKERRQ(ierr);
37   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
38   PetscFunctionReturn(0);
39 }
40 
41 #undef __FUNCT__
42 #define __FUNCT__ "PetscSFFinalizePackage"
43 /*@C
44    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
45 
46    Logically Collective
47 
48    Level: developer
49 
50 .seealso: PetscSFInitializePackage()
51 @*/
52 PetscErrorCode PetscSFFinalizePackage(void)
53 {
54   PetscErrorCode ierr;
55 
56   PetscFunctionBegin;
57   ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr);
58   PetscSFPackageInitialized = PETSC_FALSE;
59   PetscSFRegisterAllCalled  = PETSC_FALSE;
60   PetscFunctionReturn(0);
61 }
62