1 #include <petsc/private/sfimpl.h> 2 3 PetscClassId PETSCSF_CLASSID; 4 5 static PetscBool PetscSFPackageInitialized = PETSC_FALSE; 6 7 PetscBool PetscSFRegisterAllCalled; 8 9 /*@C 10 PetscSFInitializePackage - Initialize SF package 11 12 Logically Collective 13 14 Level: developer 15 16 .seealso: PetscSFFinalizePackage() 17 @*/ 18 PetscErrorCode PetscSFInitializePackage(void) 19 { 20 PetscErrorCode ierr; 21 22 PetscFunctionBegin; 23 if (PetscSFPackageInitialized) PetscFunctionReturn(0); 24 PetscSFPackageInitialized = PETSC_TRUE; 25 26 ierr = PetscClassIdRegister("Star Forest Graph",&PETSCSF_CLASSID);CHKERRQ(ierr); 27 ierr = PetscSFRegisterAll();CHKERRQ(ierr); 28 ierr = PetscLogEventRegister("SFSetGraph" , PETSCSF_CLASSID, &PETSCSF_SetGraph);CHKERRQ(ierr); 29 ierr = PetscLogEventRegister("SFBcastBegin" , PETSCSF_CLASSID, &PETSCSF_BcastBegin);CHKERRQ(ierr); 30 ierr = PetscLogEventRegister("SFBcastEnd" , PETSCSF_CLASSID, &PETSCSF_BcastEnd);CHKERRQ(ierr); 31 ierr = PetscLogEventRegister("SFReduceBegin" , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);CHKERRQ(ierr); 32 ierr = PetscLogEventRegister("SFReduceEnd" , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);CHKERRQ(ierr); 33 ierr = PetscLogEventRegister("SFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);CHKERRQ(ierr); 34 ierr = PetscLogEventRegister("SFFetchOpEnd" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);CHKERRQ(ierr); 35 ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr); 36 PetscFunctionReturn(0); 37 } 38 39 /*@C 40 PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize() 41 42 Logically Collective 43 44 Level: developer 45 46 .seealso: PetscSFInitializePackage() 47 @*/ 48 PetscErrorCode PetscSFFinalizePackage(void) 49 { 50 PetscErrorCode ierr; 51 52 PetscFunctionBegin; 53 ierr = PetscFunctionListDestroy(&PetscSFList);CHKERRQ(ierr); 54 PetscSFPackageInitialized = PETSC_FALSE; 55 PetscSFRegisterAllCalled = PETSC_FALSE; 56 PetscFunctionReturn(0); 57 } 58