xref: /petsc/include/petscao.h (revision 9c30b7d2697335155d7490a7e085415ee7b4a02a)
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 int DMInitializePackage(const char[]);
34 
35 EXTERN int AOCreateBasic(MPI_Comm,int,const int[],const int[],AO*);
36 EXTERN int AOCreateBasicIS(IS,IS,AO*);
37 
38 EXTERN int AOCreateMapping(MPI_Comm,int,const int[],const int[],AO*);
39 EXTERN int AOCreateMappingIS(IS,IS,AO*);
40 
41 EXTERN int AOView(AO,PetscViewer);
42 EXTERN int AODestroy(AO);
43 
44 EXTERN int 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 int AOPetscToApplication(AO,int,int[]);
52 EXTERN int AOApplicationToPetsc(AO,int,int[]);
53 EXTERN int AOPetscToApplicationIS(AO,IS);
54 EXTERN int AOApplicationToPetscIS(AO,IS);
55 
56 EXTERN int AOPetscToApplicationPermuteInt(AO, int, int[]);
57 EXTERN int AOApplicationToPetscPermuteInt(AO, int, int[]);
58 EXTERN int AOPetscToApplicationPermuteReal(AO, int, double[]);
59 EXTERN int AOApplicationToPetscPermuteReal(AO, int, double[]);
60 
61 EXTERN int AOMappingHasApplicationIndex(AO, int, PetscTruth *);
62 EXTERN int 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 int AODataCreateBasic(MPI_Comm,AOData *);
79 EXTERN int AODataView(AOData,PetscViewer);
80 EXTERN int AODataDestroy(AOData);
81 EXTERN int AODataLoadBasic(PetscViewer,AOData *);
82 EXTERN int AODataGetInfo(AOData,int*,char ***);
83 
84 EXTERN int AODataKeyAdd(AOData,const char[],int,int);
85 EXTERN int AODataKeyRemove(AOData,const char[]);
86 
87 EXTERN int AODataKeySetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping);
88 EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping*);
89 EXTERN int AODataKeyRemap(AOData,const char[],AO);
90 
91 EXTERN int AODataKeyExists(AOData,const char[],PetscTruth*);
92 EXTERN int AODataKeyGetInfo(AOData,const char[],int *,int*,int*,char***);
93 EXTERN int AODataKeyGetOwnershipRange(AOData,const char[],int *,int*);
94 
95 EXTERN int AODataKeyGetNeighbors(AOData,const char[],int,int*,IS *);
96 EXTERN int AODataKeyGetNeighborsIS(AOData,const char[],IS,IS *);
97 EXTERN int AODataKeyGetAdjacency(AOData,const char[],Mat*);
98 
99 EXTERN int AODataKeyGetActive(AOData,const char[],const char[],int,int *,int,IS*);
100 EXTERN int AODataKeyGetActiveIS(AOData,const char[],const char[],IS,int,IS*);
101 EXTERN int AODataKeyGetActiveLocal(AOData,const char[],const char[],int,int *,int,IS*);
102 EXTERN int AODataKeyGetActiveLocalIS(AOData,const char[],const char[],IS,int,IS*);
103 
104 EXTERN int AODataKeyPartition(AOData,const char[]);
105 
106 EXTERN int AODataSegmentAdd(AOData,const char[],const char[],int,int,int *,void *,PetscDataType);
107 EXTERN int AODataSegmentRemove(AOData,const char[],const char[]);
108 EXTERN int AODataSegmentAddIS(AOData,const char[],const char[],int,IS,void *,PetscDataType);
109 
110 EXTERN int AODataSegmentExists(AOData,const char[],const char[],PetscTruth*);
111 EXTERN int AODataSegmentGetInfo(AOData,const char[],const char[],int *,PetscDataType*);
112 
113 EXTERN int AODataSegmentGet(AOData,const char[],const char[],int,int*,void **);
114 EXTERN int AODataSegmentRestore(AOData,const char[],const char[],int,int*,void **);
115 EXTERN int AODataSegmentGetIS(AOData,const char[],const char[],IS,void **);
116 EXTERN int AODataSegmentRestoreIS(AOData,const char[],const char[],IS,void **);
117 
118 EXTERN int AODataSegmentGetLocal(AOData,const char[],const char[],int,int*,void **);
119 EXTERN int AODataSegmentRestoreLocal(AOData,const char[],const char[],int,int*,void **);
120 EXTERN int AODataSegmentGetLocalIS(AOData,const char[],const char[],IS,void **);
121 EXTERN int AODataSegmentRestoreLocalIS(AOData,const char[],const char[],IS,void **);
122 
123 EXTERN int AODataSegmentGetReduced(AOData,const char[],const char[],int,int*,IS *);
124 EXTERN int AODataSegmentGetReducedIS(AOData,const char[],const char[],IS,IS *);
125 EXTERN int AODataSegmentGetExtrema(AOData,const char[],const char[],void *,void *);
126 
127 EXTERN int AODataSegmentPartition(AOData,const char[],const char[]);
128 
129 EXTERN int AODataPartitionAndSetupLocal(AOData,const char[],const char[],IS*,IS*,ISLocalToGlobalMapping*);
130 EXTERN int AODataAliasAdd(AOData,const char[],const char[]);
131 
132 
133 typedef struct _p_AOData2dGrid *AOData2dGrid;
134 EXTERN int AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
135 EXTERN int AOData2dGridInput(AOData2dGrid,PetscDraw);
136 EXTERN int AOData2dGridFlipCells(AOData2dGrid);
137 EXTERN int AOData2dGridComputeNeighbors(AOData2dGrid);
138 EXTERN int AOData2dGridComputeVertexBoundary(AOData2dGrid);
139 EXTERN int AOData2dGridDraw(AOData2dGrid,PetscDraw);
140 EXTERN int AOData2dGridDestroy(AOData2dGrid);
141 EXTERN int AOData2dGridCreate(AOData2dGrid*);
142 EXTERN int AOData2dGridToAOData(AOData2dGrid,AOData*);
143 
144 PETSC_EXTERN_CXX_END
145 #endif
146