xref: /petsc/include/petscao.h (revision 72ce74bd30d5d09d1371a3eb387704f4af395d1a)
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, AO_MAPPING, AO_NEW} 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 int AO_COOKIE;
27 extern int AODATA_COOKIE;
28 enum {AO_PetscToApplication, AO_ApplicationToPetsc, AO_MAX_EVENTS};
29 extern int AOEvents[AO_MAX_EVENTS];
30 #define AOLogEventBegin(e,o1,o2,o3,o4) PetscLogEventBegin(AOEvents[e],o1,o2,o3,o4)
31 #define AOLogEventEnd(e,o1,o2,o3,o4)   PetscLogEventEnd(AOEvents[e],o1,o2,o3,o4)
32 
33 EXTERN PetscErrorCode DMInitializePackage(const char[]);
34 
35 EXTERN PetscErrorCode AOCreateBasic(MPI_Comm,int,const int[],const int[],AO*);
36 EXTERN PetscErrorCode AOCreateBasicIS(IS,IS,AO*);
37 
38 EXTERN PetscErrorCode AOCreateMapping(MPI_Comm,int,const int[],const int[],AO*);
39 EXTERN PetscErrorCode AOCreateMappingIS(IS,IS,AO*);
40 
41 EXTERN PetscErrorCode AOView(AO,PetscViewer);
42 EXTERN PetscErrorCode AODestroy(AO);
43 
44 EXTERN PetscErrorCode AORegister_Private(const char [], const char [], const char [], int (*)(AO));
45 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
46 #define AORegister(a,b,c,d) AORegister_Private(a,b,c,0)
47 #else
48 #define AORegister(a,b,c,d) AORegister_Private(a,b,c,d)
49 #endif
50 
51 EXTERN PetscErrorCode AOPetscToApplication(AO,int,int[]);
52 EXTERN PetscErrorCode AOApplicationToPetsc(AO,int,int[]);
53 EXTERN PetscErrorCode AOPetscToApplicationIS(AO,IS);
54 EXTERN PetscErrorCode AOApplicationToPetscIS(AO,IS);
55 
56 EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, int, int[]);
57 EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, int, int[]);
58 EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, int, double[]);
59 EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, int, double[]);
60 
61 EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, int, PetscTruth *);
62 EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, int, PetscTruth *);
63 
64 /* ----------------------------------------------------*/
65 
66 typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
67 
68 /*S
69      AOData - Abstract PETSc object that manages complex parallel data structures intended to
70          hold grid information, etc
71 
72    Level: advanced
73 
74 .seealso:  AODataCreateBasic()
75 S*/
76 typedef struct _p_AOData* AOData;
77 
78 EXTERN PetscErrorCode AODataCreateBasic(MPI_Comm,AOData *);
79 EXTERN PetscErrorCode AODataView(AOData,PetscViewer);
80 EXTERN PetscErrorCode AODataDestroy(AOData);
81 EXTERN PetscErrorCode AODataLoadBasic(PetscViewer,AOData *);
82 EXTERN PetscErrorCode AODataGetInfo(AOData,int*,char ***);
83 
84 EXTERN PetscErrorCode AODataKeyAdd(AOData,const char[],int,int);
85 EXTERN PetscErrorCode AODataKeyRemove(AOData,const char[]);
86 
87 EXTERN PetscErrorCode AODataKeySetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping);
88 EXTERN PetscErrorCode AODataKeyGetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping*);
89 EXTERN PetscErrorCode AODataKeyRemap(AOData,const char[],AO);
90 
91 EXTERN PetscErrorCode AODataKeyExists(AOData,const char[],PetscTruth*);
92 EXTERN PetscErrorCode AODataKeyGetInfo(AOData,const char[],int *,int*,int*,char***);
93 EXTERN PetscErrorCode AODataKeyGetOwnershipRange(AOData,const char[],int *,int*);
94 
95 EXTERN PetscErrorCode AODataKeyGetNeighbors(AOData,const char[],int,int*,IS *);
96 EXTERN PetscErrorCode AODataKeyGetNeighborsIS(AOData,const char[],IS,IS *);
97 EXTERN PetscErrorCode AODataKeyGetAdjacency(AOData,const char[],Mat*);
98 
99 EXTERN PetscErrorCode AODataKeyGetActive(AOData,const char[],const char[],int,int *,int,IS*);
100 EXTERN PetscErrorCode AODataKeyGetActiveIS(AOData,const char[],const char[],IS,int,IS*);
101 EXTERN PetscErrorCode AODataKeyGetActiveLocal(AOData,const char[],const char[],int,int *,int,IS*);
102 EXTERN PetscErrorCode AODataKeyGetActiveLocalIS(AOData,const char[],const char[],IS,int,IS*);
103 
104 EXTERN PetscErrorCode AODataKeyPartition(AOData,const char[]);
105 
106 EXTERN PetscErrorCode AODataSegmentAdd(AOData,const char[],const char[],int,int,int *,void *,PetscDataType);
107 EXTERN PetscErrorCode AODataSegmentRemove(AOData,const char[],const char[]);
108 EXTERN PetscErrorCode AODataSegmentAddIS(AOData,const char[],const char[],int,IS,void *,PetscDataType);
109 
110 EXTERN PetscErrorCode AODataSegmentExists(AOData,const char[],const char[],PetscTruth*);
111 EXTERN PetscErrorCode AODataSegmentGetInfo(AOData,const char[],const char[],int *,PetscDataType*);
112 
113 EXTERN PetscErrorCode AODataSegmentGet(AOData,const char[],const char[],int,int*,void **);
114 EXTERN PetscErrorCode AODataSegmentRestore(AOData,const char[],const char[],int,int*,void **);
115 EXTERN PetscErrorCode AODataSegmentGetIS(AOData,const char[],const char[],IS,void **);
116 EXTERN PetscErrorCode AODataSegmentRestoreIS(AOData,const char[],const char[],IS,void **);
117 
118 EXTERN PetscErrorCode AODataSegmentGetLocal(AOData,const char[],const char[],int,int*,void **);
119 EXTERN PetscErrorCode AODataSegmentRestoreLocal(AOData,const char[],const char[],int,int*,void **);
120 EXTERN PetscErrorCode AODataSegmentGetLocalIS(AOData,const char[],const char[],IS,void **);
121 EXTERN PetscErrorCode AODataSegmentRestoreLocalIS(AOData,const char[],const char[],IS,void **);
122 
123 EXTERN PetscErrorCode AODataSegmentGetReduced(AOData,const char[],const char[],int,int*,IS *);
124 EXTERN PetscErrorCode AODataSegmentGetReducedIS(AOData,const char[],const char[],IS,IS *);
125 EXTERN PetscErrorCode AODataSegmentGetExtrema(AOData,const char[],const char[],void *,void *);
126 
127 EXTERN PetscErrorCode AODataSegmentPartition(AOData,const char[],const char[]);
128 
129 EXTERN PetscErrorCode AODataPartitionAndSetupLocal(AOData,const char[],const char[],IS*,IS*,ISLocalToGlobalMapping*);
130 EXTERN PetscErrorCode AODataAliasAdd(AOData,const char[],const char[]);
131 
132 
133 typedef struct _p_AOData2dGrid *AOData2dGrid;
134 EXTERN PetscErrorCode AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
135 EXTERN PetscErrorCode AOData2dGridInput(AOData2dGrid,PetscDraw);
136 EXTERN PetscErrorCode AOData2dGridFlipCells(AOData2dGrid);
137 EXTERN PetscErrorCode AOData2dGridComputeNeighbors(AOData2dGrid);
138 EXTERN PetscErrorCode AOData2dGridComputeVertexBoundary(AOData2dGrid);
139 EXTERN PetscErrorCode AOData2dGridDraw(AOData2dGrid,PetscDraw);
140 EXTERN PetscErrorCode AOData2dGridDestroy(AOData2dGrid);
141 EXTERN PetscErrorCode AOData2dGridCreate(AOData2dGrid*);
142 EXTERN PetscErrorCode AOData2dGridToAOData(AOData2dGrid,AOData*);
143 
144 PETSC_EXTERN_CXX_END
145 #endif
146