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