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