xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision 93ef888d563c67e8a0fe8824c927746efc2f6f0a)
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 
2895fce210SBarry Smith   ierr = PetscClassIdRegister("Bipartite Graph",&PETSCSF_CLASSID);CHKERRQ(ierr);
29607a6623SBarry Smith   ierr = PetscSFRegisterAll();CHKERRQ(ierr);
3095fce210SBarry Smith   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
3195fce210SBarry Smith   PetscFunctionReturn(0);
3295fce210SBarry Smith }
3395fce210SBarry Smith 
3495fce210SBarry Smith #undef __FUNCT__
3595fce210SBarry Smith #define __FUNCT__ "PetscSFFinalizePackage"
3695fce210SBarry Smith /*@C
3795fce210SBarry Smith    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
3895fce210SBarry Smith 
3995fce210SBarry Smith    Logically Collective
4095fce210SBarry Smith 
4195fce210SBarry Smith    Level: developer
4295fce210SBarry Smith 
4395fce210SBarry Smith .seealso: PetscSFInitializePackage()
4495fce210SBarry Smith @*/
4595fce210SBarry Smith PetscErrorCode PetscSFFinalizePackage(void)
4695fce210SBarry Smith {
4737e93019SBarry Smith   PetscErrorCode ierr;
4895fce210SBarry Smith 
4995fce210SBarry Smith   PetscFunctionBegin;
5037e93019SBarry Smith   ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr);
5195fce210SBarry Smith   PetscSFPackageInitialized = PETSC_FALSE;
52*93ef888dSBarry Smith   PetscSFRegisterAllCalled  = PETSC_FALSE;
5395fce210SBarry Smith   PetscFunctionReturn(0);
5495fce210SBarry Smith }
55