xref: /petsc/include/petscao.h (revision fe2efc57b7777594bce7568e90822861480cbdc8)
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 */
626bd1501SBarry Smith #if !defined(PETSCAO_H)
726bd1501SBarry 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 
150e83c824SBarry Smith .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView(), AOApplicationToPetsc()
16b9617806SBarry Smith S*/
171ac94ccfSSatish Balay typedef struct _p_AO* AO;
187588ac45SBarry Smith 
1976bdecfbSBarry Smith /*J
20b439297aSHong Zhang     AOType - String with the name of a PETSc application ordering or the creation function
21b439297aSHong Zhang        with an optional dynamic library name.
22b439297aSHong Zhang 
23b439297aSHong Zhang    Level: beginner
24b439297aSHong Zhang 
25b439297aSHong Zhang .seealso: AOSetType(), AO
2676bdecfbSBarry Smith J*/
2719fd82e9SBarry Smith typedef const char* AOType;
28b439297aSHong Zhang #define AOBASIC               "basic"
29b439297aSHong Zhang #define AOADVANCED            "advanced"
30b439297aSHong Zhang #define AOMAPPING             "mapping"
310392740eSHong Zhang #define AOMEMORYSCALABLE      "memoryscalable"
32b439297aSHong Zhang 
338ba1e511SMatthew Knepley /* Logging support */
34014dd563SJed Brown PETSC_EXTERN PetscClassId AO_CLASSID;
358ba1e511SMatthew Knepley 
36607a6623SBarry Smith PETSC_EXTERN PetscErrorCode AOInitializePackage(void);
378ba1e511SMatthew Knepley 
38014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm,AO*);
39014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetIS(AO,IS,IS);
40014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO);
41b439297aSHong Zhang 
42014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
43014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS,IS,AO*);
44014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
45014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS,IS,AO*);
46014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
47014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS,IS,AO*);
484ebda54eSMatthew Knepley 
49014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOView(AO,PetscViewer);
50*fe2efc57SMark PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO,PetscObject,const char[]);
51014dd563SJed Brown PETSC_EXTERN PetscErrorCode AODestroy(AO*);
52b439297aSHong Zhang 
53b439297aSHong Zhang /* Dynamic creation and loading functions */
54140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList AOList;
5519fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType);
5619fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *);
574ebda54eSMatthew Knepley 
58bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode AORegister(const char [], PetscErrorCode (*)(AO));
59b439297aSHong Zhang 
60014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO,PetscInt,PetscInt[]);
61014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO,PetscInt,PetscInt[]);
62014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO,IS);
63014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO,IS);
647588ac45SBarry Smith 
65014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
66014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
67014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
68014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);
694ebda54eSMatthew Knepley 
70014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool  *);
71014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool  *);
727588ac45SBarry Smith 
73376ee591SBarry Smith /* ----------------------------------------------------*/
747588ac45SBarry Smith #endif
75