xref: /petsc/include/petscao.h (revision 6d8694c4fbab79f9439f1ad13c0386ba7ee1ca4b)
1 #pragma once
2 
3 #include <petscis.h>
4 
5 /* MANSEC = Vec */
6 /* SUBMANSEC = AO */
7 
8 /*S
9    AO - Abstract PETSc object that manages mapping between different global numberings
10 
11    Level: intermediate
12 
13    Note:
14    An application ordering is usually a mapping between an application-centric
15    numbering (the ordering that is "natural" for the application) and
16    the parallel numbering ($0$ to $n_0-1$ on the first MPI process, $n_0$ to $n_1 - 1$ on the second MPI process, etc)
17    that PETSc uses.
18 
19 .seealso: `AOCreateBasic()`, `AOCreateBasicIS()`, `AOPetscToApplication()`, `AOView()`, `AOApplicationToPetsc()`, `AOType`, `AOSetType()`
20 S*/
21 typedef struct _p_AO *AO;
22 
23 /*J
24     AOType - String with the name of a PETSc application ordering type
25 
26    Level: beginner
27 
28 .seealso: `AOSetType()`, `AO`, `AOApplicationToPetsc()`, `AOCreateBasic()`, `AOCreate()`
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 PETSC_EXTERN PetscErrorCode AOFinalizePackage(void);
41 
42 PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm, AO *);
43 PETSC_EXTERN PetscErrorCode AOSetIS(AO, IS, IS);
44 PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO);
45 
46 PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *);
47 PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS, IS, AO *);
48 PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *);
49 PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS, IS, AO *);
50 PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *);
51 PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS, IS, AO *);
52 
53 PETSC_EXTERN PetscErrorCode AOView(AO, PetscViewer);
54 PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO, PetscObject, const char[]);
55 PETSC_EXTERN PetscErrorCode AODestroy(AO *);
56 
57 /* Dynamic creation and loading functions */
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 PETSC_EXTERN PetscErrorCode AORegisterAll(void);
63 
64 PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO, PetscInt, PetscInt[]);
65 PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO, PetscInt, PetscInt[]);
66 PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO, IS);
67 PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO, IS);
68 
69 PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
70 PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
71 PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
72 PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);
73 
74 PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *);
75 PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *);
76