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