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