1*a4963045SJacob Faibussowitsch #pragma once 2ac09b921SBarry Smith 32c8e378dSBarry Smith #include <petscis.h> 47588ac45SBarry Smith 5ac09b921SBarry Smith /* SUBMANSEC = AO */ 6ac09b921SBarry Smith 7b9617806SBarry Smith /*S 816a05f60SBarry Smith AO - Abstract PETSc object that manages mapping between different global numberings 9b9617806SBarry Smith 10b9617806SBarry Smith Level: intermediate 11b9617806SBarry Smith 1287497f52SBarry Smith Notes: 1316a05f60SBarry Smith An application ordering is usually mapping between an application-centric 1416a05f60SBarry Smith numbering (the ordering that is "natural" for the application) and 1516a05f60SBarry Smith the parallel numbering that PETSc uses. 1687497f52SBarry Smith 1787497f52SBarry Smith .seealso: `AOCreateBasic()`, `AOCreateBasicIS()`, `AOPetscToApplication()`, `AOView()`, `AOApplicationToPetsc()`, `AOType`, `AOSetType()` 18b9617806SBarry Smith S*/ 191ac94ccfSSatish Balay typedef struct _p_AO *AO; 207588ac45SBarry Smith 2176bdecfbSBarry Smith /*J 2216a05f60SBarry Smith AOType - String with the name of a PETSc application ordering type 23b439297aSHong Zhang 24b439297aSHong Zhang Level: beginner 25b439297aSHong Zhang 26db781477SPatrick Sanan .seealso: `AOSetType()`, `AO` 2776bdecfbSBarry Smith J*/ 2819fd82e9SBarry Smith typedef const char *AOType; 29b439297aSHong Zhang #define AOBASIC "basic" 30b439297aSHong Zhang #define AOADVANCED "advanced" 31b439297aSHong Zhang #define AOMAPPING "mapping" 320392740eSHong Zhang #define AOMEMORYSCALABLE "memoryscalable" 33b439297aSHong Zhang 348ba1e511SMatthew Knepley /* Logging support */ 35014dd563SJed Brown PETSC_EXTERN PetscClassId AO_CLASSID; 368ba1e511SMatthew Knepley 37607a6623SBarry Smith PETSC_EXTERN PetscErrorCode AOInitializePackage(void); 384bf303faSJacob Faibussowitsch PETSC_EXTERN PetscErrorCode AOFinalizePackage(void); 398ba1e511SMatthew Knepley 40014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm, AO *); 41014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetIS(AO, IS, IS); 42014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO); 43b439297aSHong Zhang 44014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *); 45014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS, IS, AO *); 46014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *); 47014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS, IS, AO *); 48014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *); 49014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS, IS, AO *); 504ebda54eSMatthew Knepley 51014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOView(AO, PetscViewer); 52fe2efc57SMark PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO, PetscObject, const char[]); 53014dd563SJed Brown PETSC_EXTERN PetscErrorCode AODestroy(AO *); 54b439297aSHong Zhang 55b439297aSHong Zhang /* Dynamic creation and loading functions */ 5619fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType); 5719fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *); 584ebda54eSMatthew Knepley 59bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode AORegister(const char[], PetscErrorCode (*)(AO)); 60da8c939bSJacob Faibussowitsch PETSC_EXTERN PetscErrorCode AORegisterAll(void); 61b439297aSHong Zhang 62014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO, PetscInt, PetscInt[]); 63014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO, PetscInt, PetscInt[]); 64014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO, IS); 65014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO, IS); 667588ac45SBarry Smith 67014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]); 68014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]); 69014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]); 70014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]); 714ebda54eSMatthew Knepley 72014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *); 73014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *); 74