xref: /petsc/include/petscao.h (revision 76be6f4ff3bd4e251c19fc00ebbebfd58b6e7589)
1 /*
2   An application ordering is mapping between an application-centric
3   ordering (the ordering that is "natural" for the application) and
4   the parallel ordering that PETSc uses.
5 */
6 #if !defined(PETSCAO_H)
7 #define PETSCAO_H
8 
9 #include <petscis.h>
10 
11 /* SUBMANSEC = AO */
12 
13 /*S
14      AO - Abstract PETSc object that manages mapping between different global numbering
15 
16    Level: intermediate
17 
18 .seealso: `AOCreateBasic()`, `AOCreateBasicIS()`, `AOPetscToApplication()`, `AOView()`, `AOApplicationToPetsc()`
19 S*/
20 typedef struct _p_AO* AO;
21 
22 /*J
23     AOType - String with the name of a PETSc application ordering or the creation function
24        with an optional dynamic library name.
25 
26    Level: beginner
27 
28 .seealso: `AOSetType()`, `AO`
29 J*/
30 typedef const char* AOType;
31 #define AOBASIC               "basic"
32 #define AOADVANCED            "advanced"
33 #define AOMAPPING             "mapping"
34 #define AOMEMORYSCALABLE      "memoryscalable"
35 
36 /* Logging support */
37 PETSC_EXTERN PetscClassId AO_CLASSID;
38 
39 PETSC_EXTERN PetscErrorCode AOInitializePackage(void);
40 
41 PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm,AO*);
42 PETSC_EXTERN PetscErrorCode AOSetIS(AO,IS,IS);
43 PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO);
44 
45 PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
46 PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS,IS,AO*);
47 PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
48 PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS,IS,AO*);
49 PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
50 PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS,IS,AO*);
51 
52 PETSC_EXTERN PetscErrorCode AOView(AO,PetscViewer);
53 PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO,PetscObject,const char[]);
54 PETSC_EXTERN PetscErrorCode AODestroy(AO*);
55 
56 /* Dynamic creation and loading functions */
57 PETSC_EXTERN PetscFunctionList AOList;
58 PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType);
59 PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *);
60 
61 PETSC_EXTERN PetscErrorCode AORegister(const char [], PetscErrorCode (*)(AO));
62 
63 PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO,PetscInt,PetscInt[]);
64 PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO,PetscInt,PetscInt[]);
65 PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO,IS);
66 PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO,IS);
67 
68 PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
69 PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
70 PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
71 PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);
72 
73 PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool  *);
74 PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool  *);
75 
76 /* ----------------------------------------------------*/
77 #endif
78