xref: /petsc/include/petscao.h (revision 014dd563d73e9fc78d056590fa6cf997782bf92d)
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"
107588ac45SBarry Smith 
11b9617806SBarry Smith /*S
12b9617806SBarry Smith      AO - Abstract PETSc object that manages mapping between different global numbering
13b9617806SBarry Smith 
14b9617806SBarry Smith    Level: intermediate
15b9617806SBarry Smith 
16b9617806SBarry Smith   Concepts: global numbering
17b9617806SBarry Smith 
180e83c824SBarry Smith .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView(), AOApplicationToPetsc()
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 
28b439297aSHong Zhang .seealso: AOSetType(), AO
2976bdecfbSBarry Smith J*/
30b439297aSHong Zhang #define AOType char*
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 */
37*014dd563SJed Brown PETSC_EXTERN PetscClassId AO_CLASSID;
388ba1e511SMatthew Knepley 
39*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOInitializePackage(const char[]);
408ba1e511SMatthew Knepley 
41*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm,AO*);
42*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetIS(AO,IS,IS);
43*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO);
44b439297aSHong Zhang 
45*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
46*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS,IS,AO*);
47*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
48*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS,IS,AO*);
49*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
50*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS,IS,AO*);
514ebda54eSMatthew Knepley 
52*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOView(AO,PetscViewer);
53*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AODestroy(AO*);
54b439297aSHong Zhang 
55b439297aSHong Zhang /* Dynamic creation and loading functions */
56*014dd563SJed Brown PETSC_EXTERN PetscFList AOList;
57*014dd563SJed Brown PETSC_EXTERN PetscBool AORegisterAllCalled;
58*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOSetType(AO, const AOType);
59*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOGetType(AO, const AOType *);
604ebda54eSMatthew Knepley 
61*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AORegister(const char [], const char [], const char [], PetscErrorCode (*)(AO));
62*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AORegisterAll(const char []);
63*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AORegisterDestroy(void);
64b439297aSHong Zhang 
654ebda54eSMatthew Knepley #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
66985db425SBarry Smith #define AORegisterDynamic(a,b,c,d) AORegister(a,b,c,0)
674ebda54eSMatthew Knepley #else
68985db425SBarry Smith #define AORegisterDynamic(a,b,c,d) AORegister(a,b,c,d)
694ebda54eSMatthew Knepley #endif
704ebda54eSMatthew Knepley 
71*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO,PetscInt,PetscInt[]);
72*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO,PetscInt,PetscInt[]);
73*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO,IS);
74*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO,IS);
757588ac45SBarry Smith 
76*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
77*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
78*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
79*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);
804ebda54eSMatthew Knepley 
81*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool  *);
82*014dd563SJed Brown PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool  *);
837588ac45SBarry Smith 
84376ee591SBarry Smith /* ----------------------------------------------------*/
857588ac45SBarry Smith #endif
86