1 /* 2 An application ordering is mapping between an application-centric 3 ordering (the ordering that is "natural" for the application) and 4 the parallel ordering that PETSc uses. 5 */ 6 #if !defined(PETSCAO_H) 7 #define PETSCAO_H 8 #include <petscis.h> 9 10 /*S 11 AO - Abstract PETSc object that manages mapping between different global numbering 12 13 Level: intermediate 14 15 .seealso: AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView(), AOApplicationToPetsc() 16 S*/ 17 typedef struct _p_AO* AO; 18 19 /*J 20 AOType - String with the name of a PETSc application ordering or the creation function 21 with an optional dynamic library name. 22 23 Level: beginner 24 25 .seealso: AOSetType(), AO 26 J*/ 27 typedef const char* AOType; 28 #define AOBASIC "basic" 29 #define AOADVANCED "advanced" 30 #define AOMAPPING "mapping" 31 #define AOMEMORYSCALABLE "memoryscalable" 32 33 /* Logging support */ 34 PETSC_EXTERN PetscClassId AO_CLASSID; 35 36 PETSC_EXTERN PetscErrorCode AOInitializePackage(void); 37 38 PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm,AO*); 39 PETSC_EXTERN PetscErrorCode AOSetIS(AO,IS,IS); 40 PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO); 41 42 PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*); 43 PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS,IS,AO*); 44 PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*); 45 PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS,IS,AO*); 46 PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*); 47 PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS,IS,AO*); 48 49 PETSC_EXTERN PetscErrorCode AOView(AO,PetscViewer); 50 PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO,PetscObject,const char[]); 51 PETSC_EXTERN PetscErrorCode AODestroy(AO*); 52 53 /* Dynamic creation and loading functions */ 54 PETSC_EXTERN PetscFunctionList AOList; 55 PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType); 56 PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *); 57 58 PETSC_EXTERN PetscErrorCode AORegister(const char [], PetscErrorCode (*)(AO)); 59 60 PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO,PetscInt,PetscInt[]); 61 PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO,PetscInt,PetscInt[]); 62 PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO,IS); 63 PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO,IS); 64 65 PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]); 66 PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]); 67 PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]); 68 PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]); 69 70 PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *); 71 PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *); 72 73 /* ----------------------------------------------------*/ 74 #endif 75