xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision acd237931bb1a9bac9f28a5b48ea0475c4525a22)
195fce210SBarry Smith #include <petsc-private/sfimpl.h>
295fce210SBarry Smith 
395fce210SBarry Smith PetscClassId PETSCSF_CLASSID;
495fce210SBarry Smith 
595fce210SBarry Smith static PetscBool PetscSFPackageInitialized = PETSC_FALSE;
695fce210SBarry Smith 
795fce210SBarry Smith PetscBool PetscSFRegisterAllCalled;
895fce210SBarry Smith 
995fce210SBarry Smith #undef __FUNCT__
1095fce210SBarry Smith #define __FUNCT__ "PetscSFInitializePackage"
1195fce210SBarry Smith /*@C
1295fce210SBarry Smith    PetscSFInitializePackage - Initialize SF package
1395fce210SBarry Smith 
1495fce210SBarry Smith    Logically Collective
1595fce210SBarry Smith 
1695fce210SBarry Smith    Level: developer
1795fce210SBarry Smith 
1895fce210SBarry Smith .seealso: PetscSFFinalizePackage()
1995fce210SBarry Smith @*/
20607a6623SBarry Smith PetscErrorCode PetscSFInitializePackage(void)
2195fce210SBarry Smith {
2295fce210SBarry Smith   PetscErrorCode ierr;
2395fce210SBarry Smith 
2495fce210SBarry Smith   PetscFunctionBegin;
2595fce210SBarry Smith   if (PetscSFPackageInitialized) PetscFunctionReturn(0);
2695fce210SBarry Smith   PetscSFPackageInitialized = PETSC_TRUE;
2795fce210SBarry Smith 
28*acd23793SJed Brown   ierr = PetscClassIdRegister("Star Forest Bipartite Graph",&PETSCSF_CLASSID);CHKERRQ(ierr);
29607a6623SBarry Smith   ierr = PetscSFRegisterAll();CHKERRQ(ierr);
30*acd23793SJed Brown   ierr = PetscLogEventRegister("SFSetGraph"     , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr);
31*acd23793SJed Brown   ierr = PetscLogEventRegister("SFBcastBegin"   , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr);
32*acd23793SJed Brown   ierr = PetscLogEventRegister("SFBcastEnd"     , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr);
33*acd23793SJed Brown   ierr = PetscLogEventRegister("SFReduceBegin"  , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr);
34*acd23793SJed Brown   ierr = PetscLogEventRegister("SFReduceEnd"    , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr);
35*acd23793SJed Brown   ierr = PetscLogEventRegister("SFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr);
36*acd23793SJed Brown   ierr = PetscLogEventRegister("SFFetchOpEnd"   , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);CHKERRQ(ierr);
3795fce210SBarry Smith   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
3895fce210SBarry Smith   PetscFunctionReturn(0);
3995fce210SBarry Smith }
4095fce210SBarry Smith 
4195fce210SBarry Smith #undef __FUNCT__
4295fce210SBarry Smith #define __FUNCT__ "PetscSFFinalizePackage"
4395fce210SBarry Smith /*@C
4495fce210SBarry Smith    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
4595fce210SBarry Smith 
4695fce210SBarry Smith    Logically Collective
4795fce210SBarry Smith 
4895fce210SBarry Smith    Level: developer
4995fce210SBarry Smith 
5095fce210SBarry Smith .seealso: PetscSFInitializePackage()
5195fce210SBarry Smith @*/
5295fce210SBarry Smith PetscErrorCode PetscSFFinalizePackage(void)
5395fce210SBarry Smith {
5437e93019SBarry Smith   PetscErrorCode ierr;
5595fce210SBarry Smith 
5695fce210SBarry Smith   PetscFunctionBegin;
5737e93019SBarry Smith   ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr);
5895fce210SBarry Smith   PetscSFPackageInitialized = PETSC_FALSE;
5993ef888dSBarry Smith   PetscSFRegisterAllCalled  = PETSC_FALSE;
6095fce210SBarry Smith   PetscFunctionReturn(0);
6195fce210SBarry Smith }
62