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 */ 60a835dfdSSatish Balay #if !defined(__PETSCAO_H) 70a835dfdSSatish Balay #define __PETSCAO_H 80a835dfdSSatish Balay #include "petscis.h" 90a835dfdSSatish Balay #include "petscmat.h" 10e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN 117588ac45SBarry Smith 12b9617806SBarry Smith /*S 13b9617806SBarry Smith AO - Abstract PETSc object that manages mapping between different global numbering 14b9617806SBarry Smith 15b9617806SBarry Smith Level: intermediate 16b9617806SBarry Smith 17b9617806SBarry Smith Concepts: global numbering 18b9617806SBarry Smith 190e83c824SBarry Smith .seealso: AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView(), AOApplicationToPetsc() 20b9617806SBarry Smith S*/ 211ac94ccfSSatish Balay typedef struct _p_AO* AO; 227588ac45SBarry Smith 23*76bdecfbSBarry Smith /*J 24b439297aSHong Zhang AOType - String with the name of a PETSc application ordering or the creation function 25b439297aSHong Zhang with an optional dynamic library name. 26b439297aSHong Zhang 27b439297aSHong Zhang Level: beginner 28b439297aSHong Zhang 29b439297aSHong Zhang .seealso: AOSetType(), AO 30*76bdecfbSBarry Smith J*/ 31b439297aSHong Zhang #define AOType char* 32b439297aSHong Zhang #define AOBASIC "basic" 33b439297aSHong Zhang #define AOADVANCED "advanced" 34b439297aSHong Zhang #define AOMAPPING "mapping" 350392740eSHong Zhang #define AOMEMORYSCALABLE "memoryscalable" 36b439297aSHong Zhang 378ba1e511SMatthew Knepley /* Logging support */ 387087cfbeSBarry Smith extern PetscClassId AO_CLASSID; 398ba1e511SMatthew Knepley 407087cfbeSBarry Smith extern PetscErrorCode AOInitializePackage(const char[]); 418ba1e511SMatthew Knepley 42b439297aSHong Zhang extern PetscErrorCode AOCreate(MPI_Comm,AO*); 43b439297aSHong Zhang extern PetscErrorCode AOSetIS(AO,IS,IS); 44b439297aSHong Zhang extern PetscErrorCode AOSetFromOptions(AO); 45b439297aSHong Zhang 467087cfbeSBarry Smith extern PetscErrorCode AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*); 477087cfbeSBarry Smith extern PetscErrorCode AOCreateBasicIS(IS,IS,AO*); 480392740eSHong Zhang extern PetscErrorCode AOCreateMemoryScalable(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*); 490392740eSHong Zhang extern PetscErrorCode AOCreateMemoryScalableIS(IS,IS,AO*); 507087cfbeSBarry Smith extern PetscErrorCode AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*); 517087cfbeSBarry Smith extern PetscErrorCode AOCreateMappingIS(IS,IS,AO*); 524ebda54eSMatthew Knepley 537087cfbeSBarry Smith extern PetscErrorCode AOView(AO,PetscViewer); 54fcfd50ebSBarry Smith extern PetscErrorCode AODestroy(AO*); 55b439297aSHong Zhang 56b439297aSHong Zhang /* Dynamic creation and loading functions */ 57b439297aSHong Zhang extern PetscFList AOList; 58b439297aSHong Zhang extern PetscBool AORegisterAllCalled; 59b439297aSHong Zhang extern PetscErrorCode AOSetType(AO, const AOType); 60b439297aSHong Zhang extern PetscErrorCode AOGetType(AO, const AOType *); 614ebda54eSMatthew Knepley 627087cfbeSBarry Smith extern PetscErrorCode AORegister(const char [], const char [], const char [], PetscErrorCode (*)(AO)); 63b439297aSHong Zhang extern PetscErrorCode AORegisterAll(const char []); 64b439297aSHong Zhang extern PetscErrorCode AORegisterDestroy(void); 65b439297aSHong Zhang 664ebda54eSMatthew Knepley #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 67985db425SBarry Smith #define AORegisterDynamic(a,b,c,d) AORegister(a,b,c,0) 684ebda54eSMatthew Knepley #else 69985db425SBarry Smith #define AORegisterDynamic(a,b,c,d) AORegister(a,b,c,d) 704ebda54eSMatthew Knepley #endif 714ebda54eSMatthew Knepley 727087cfbeSBarry Smith extern PetscErrorCode AOPetscToApplication(AO,PetscInt,PetscInt[]); 737087cfbeSBarry Smith extern PetscErrorCode AOApplicationToPetsc(AO,PetscInt,PetscInt[]); 747087cfbeSBarry Smith extern PetscErrorCode AOPetscToApplicationIS(AO,IS); 757087cfbeSBarry Smith extern PetscErrorCode AOApplicationToPetscIS(AO,IS); 767588ac45SBarry Smith 777087cfbeSBarry Smith extern PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]); 787087cfbeSBarry Smith extern PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]); 797087cfbeSBarry Smith extern PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]); 807087cfbeSBarry Smith extern PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]); 814ebda54eSMatthew Knepley 827087cfbeSBarry Smith extern PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *); 837087cfbeSBarry Smith extern PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *); 847588ac45SBarry Smith 85376ee591SBarry Smith /* ----------------------------------------------------*/ 86e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END 877588ac45SBarry Smith #endif 88