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