xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision 785e854f82a3c614b452fca2cf5ad4f2afe8bdde)
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 = PetscLogEventRegister("PetscSFSetGraph"     , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr);
31   ierr = PetscLogEventRegister("PetscSFBcastBegin"   , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr);
32   ierr = PetscLogEventRegister("PetscSFBcastEnd"     , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr);
33   ierr = PetscLogEventRegister("PetscSFReduceBegin"  , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr);
34   ierr = PetscLogEventRegister("PetscSFReduceEnd"    , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr);
35   ierr = PetscLogEventRegister("PetscSFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr);
36   ierr = PetscLogEventRegister("PetscSFFetchOpEnd"   , 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