xref: /petsc/include/petscao.h (revision a58c3bc3391eee32bc3fd94ac7edeea38fe57aae)
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 #include "petscis.h"
9 #include "petscmat.h"
10 PETSC_EXTERN_CXX_BEGIN
11 
12 typedef enum {AO_BASIC=0, AO_ADVANCED=1, AO_MAPPING=2} AOType;
13 
14 /*S
15      AO - Abstract PETSc object that manages mapping between different global numbering
16 
17    Level: intermediate
18 
19   Concepts: global numbering
20 
21 .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
22 S*/
23 typedef struct _p_AO* AO;
24 
25 /* Logging support */
26 extern PetscCookie PETSCDM_DLLEXPORT AO_COOKIE;
27 
28 EXTERN PetscErrorCode PETSCDM_DLLEXPORT DMInitializePackage(const char[]);
29 
30 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
31 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateBasicIS(IS,IS,AO*);
32 
33 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
34 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateMappingIS(IS,IS,AO*);
35 
36 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOView(AO,PetscViewer);
37 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODestroy(AO);
38 
39 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AORegister(const char [], const char [], const char [], PetscErrorCode (*)(AO));
40 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
41 #define AORegisterDynamic(a,b,c,d) AORegister(a,b,c,0)
42 #else
43 #define AORegisterDynamic(a,b,c,d) AORegister(a,b,c,d)
44 #endif
45 
46 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplication(AO,PetscInt,PetscInt[]);
47 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetsc(AO,PetscInt,PetscInt[]);
48 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplicationIS(AO,IS);
49 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetscIS(AO,IS);
50 
51 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
52 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
53 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
54 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);
55 
56 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOMappingHasApplicationIndex(AO, PetscInt, PetscTruth *);
57 EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOMappingHasPetscIndex(AO, PetscInt, PetscTruth *);
58 
59 /* ----------------------------------------------------*/
60 PETSC_EXTERN_CXX_END
61 #endif
62