1*6524c165SJacob Faibussowitsch #ifndef PETSCAO_H 226bd1501SBarry Smith #define PETSCAO_H 3ac09b921SBarry Smith 42c8e378dSBarry Smith #include <petscis.h> 57588ac45SBarry Smith 6ac09b921SBarry Smith /* SUBMANSEC = AO */ 7ac09b921SBarry Smith 8b9617806SBarry Smith /*S 9b9617806SBarry Smith AO - Abstract PETSc object that manages mapping between different global numbering 10b9617806SBarry Smith 11b9617806SBarry Smith Level: intermediate 12b9617806SBarry Smith 1387497f52SBarry Smith Notes: 1487497f52SBarry Smith An application ordering is mapping between an application-centric 1587497f52SBarry Smith ordering (the ordering that is "natural" for the application) and 1687497f52SBarry Smith the parallel ordering that PETSc uses. 1787497f52SBarry Smith 1887497f52SBarry Smith .seealso: `AOCreateBasic()`, `AOCreateBasicIS()`, `AOPetscToApplication()`, `AOView()`, `AOApplicationToPetsc()`, `AOType`, `AOSetType()` 19b9617806SBarry Smith S*/ 201ac94ccfSSatish Balay typedef struct _p_AO *AO; 217588ac45SBarry Smith 2276bdecfbSBarry Smith /*J 23b439297aSHong Zhang AOType - String with the name of a PETSc application ordering or the creation function 24b439297aSHong Zhang with an optional dynamic library name. 25b439297aSHong Zhang 26b439297aSHong Zhang Level: beginner 27b439297aSHong Zhang 28db781477SPatrick Sanan .seealso: `AOSetType()`, `AO` 2976bdecfbSBarry Smith J*/ 3019fd82e9SBarry Smith typedef const char *AOType; 31b439297aSHong Zhang #define AOBASIC "basic" 32b439297aSHong Zhang #define AOADVANCED "advanced" 33b439297aSHong Zhang #define AOMAPPING "mapping" 340392740eSHong Zhang #define AOMEMORYSCALABLE "memoryscalable" 35b439297aSHong Zhang 368ba1e511SMatthew Knepley /* Logging support */ 37014dd563SJed Brown PETSC_EXTERN PetscClassId AO_CLASSID; 388ba1e511SMatthew Knepley 39607a6623SBarry Smith PETSC_EXTERN PetscErrorCode AOInitializePackage(void); 408ba1e511SMatthew Knepley 41014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm, AO *); 42014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetIS(AO, IS, IS); 43014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO); 44b439297aSHong Zhang 45014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *); 46014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS, IS, AO *); 47014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *); 48014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS, IS, AO *); 49014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *); 50014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS, IS, AO *); 514ebda54eSMatthew Knepley 52014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOView(AO, PetscViewer); 53fe2efc57SMark PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO, PetscObject, const char[]); 54014dd563SJed Brown PETSC_EXTERN PetscErrorCode AODestroy(AO *); 55b439297aSHong Zhang 56b439297aSHong Zhang /* Dynamic creation and loading functions */ 57140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList AOList; 5819fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType); 5919fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *); 604ebda54eSMatthew Knepley 61bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode AORegister(const char[], PetscErrorCode (*)(AO)); 62b439297aSHong Zhang 63014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO, PetscInt, PetscInt[]); 64014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO, PetscInt, PetscInt[]); 65014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO, IS); 66014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO, IS); 677588ac45SBarry Smith 68014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]); 69014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]); 70014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]); 71014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]); 724ebda54eSMatthew Knepley 73014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *); 74014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *); 757588ac45SBarry Smith 76376ee591SBarry Smith /* ----------------------------------------------------*/ 777588ac45SBarry Smith #endif 78