xref: /petsc/include/petscao.h (revision 6524c165f7ddaf30fd7457737f668f984c8ababf)
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