1230e2716SBarry Smith /* 230127c82SLois Curfman McInnes An application ordering is mapping between an application-centric 330127c82SLois Curfman McInnes ordering (the ordering that is "natural" for the application) and 47588ac45SBarry Smith the parallel ordering that PETSc uses. 57588ac45SBarry Smith */ 6*26bd1501SBarry Smith #if !defined(PETSCAO_H) 7*26bd1501SBarry Smith #define PETSCAO_H 82c8e378dSBarry Smith #include <petscis.h> 97588ac45SBarry Smith 10b9617806SBarry Smith /*S 11b9617806SBarry Smith AO - Abstract PETSc object that manages mapping between different global numbering 12b9617806SBarry Smith 13b9617806SBarry Smith Level: intermediate 14b9617806SBarry Smith 15b9617806SBarry Smith Concepts: global numbering 16b9617806SBarry Smith 170e83c824SBarry Smith .seealso: AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView(), AOApplicationToPetsc() 18b9617806SBarry Smith S*/ 191ac94ccfSSatish Balay typedef struct _p_AO* AO; 207588ac45SBarry Smith 2176bdecfbSBarry Smith /*J 22b439297aSHong Zhang AOType - String with the name of a PETSc application ordering or the creation function 23b439297aSHong Zhang with an optional dynamic library name. 24b439297aSHong Zhang 25b439297aSHong Zhang Level: beginner 26b439297aSHong Zhang 27b439297aSHong Zhang .seealso: AOSetType(), AO 2876bdecfbSBarry Smith J*/ 2919fd82e9SBarry Smith typedef const char* AOType; 30b439297aSHong Zhang #define AOBASIC "basic" 31b439297aSHong Zhang #define AOADVANCED "advanced" 32b439297aSHong Zhang #define AOMAPPING "mapping" 330392740eSHong Zhang #define AOMEMORYSCALABLE "memoryscalable" 34b439297aSHong Zhang 358ba1e511SMatthew Knepley /* Logging support */ 36014dd563SJed Brown PETSC_EXTERN PetscClassId AO_CLASSID; 378ba1e511SMatthew Knepley 38607a6623SBarry Smith PETSC_EXTERN PetscErrorCode AOInitializePackage(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); 52685405a1SBarry Smith PETSC_STATIC_INLINE PetscErrorCode AOViewFromOptions(AO A,PetscObject obj,const char name[]) {return PetscObjectViewFromOptions((PetscObject)A,obj,name);} 53014dd563SJed Brown PETSC_EXTERN PetscErrorCode AODestroy(AO*); 54b439297aSHong Zhang 55b439297aSHong Zhang /* Dynamic creation and loading functions */ 56140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList AOList; 5719fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType); 5819fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *); 594ebda54eSMatthew Knepley 60bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode AORegister(const char [], PetscErrorCode (*)(AO)); 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 *); 747588ac45SBarry Smith 75376ee591SBarry Smith /* ----------------------------------------------------*/ 767588ac45SBarry Smith #endif 77