Actual source code: petscao.h
1: #pragma once
3: #include <petscis.h>
5: /* MANSEC = Vec */
6: /* SUBMANSEC = AO */
8: /*S
9: AO - Abstract PETSc object that manages mapping between different global numberings
11: Level: intermediate
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.
19: .seealso: `AOCreateBasic()`, `AOCreateBasicIS()`, `AOPetscToApplication()`, `AOView()`, `AOApplicationToPetsc()`, `AOType`, `AOSetType()`
20: S*/
21: typedef struct _p_AO *AO;
23: /*J
24: AOType - String with the name of a PETSc application ordering type
26: Level: beginner
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"
36: /* Logging support */
37: PETSC_EXTERN PetscClassId AO_CLASSID;
39: PETSC_EXTERN PetscErrorCode AOInitializePackage(void);
40: PETSC_EXTERN PetscErrorCode AOFinalizePackage(void);
42: PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm, AO *);
43: PETSC_EXTERN PetscErrorCode AOSetIS(AO, IS, IS);
44: PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO);
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 *);
53: PETSC_EXTERN PetscErrorCode AOView(AO, PetscViewer);
54: PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO, PetscObject, const char[]);
55: PETSC_EXTERN PetscErrorCode AODestroy(AO *);
57: /* Dynamic creation and loading functions */
58: PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType);
59: PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *);
61: PETSC_EXTERN PetscErrorCode AORegister(const char[], PetscErrorCode (*)(AO));
62: PETSC_EXTERN PetscErrorCode AORegisterAll(void);
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);
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[]);
74: PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *);
75: PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *);