xref: /petsc/include/petscao.h (revision 2fc52814d27bf1f4e71021c1c3ebb532b583ed60)
1 /* $Id: petscao.h,v 1.27 2001/08/07 21:31:33 bsmith Exp $ */
2 
3 /*
4   An application ordering is mapping between an application-centric
5   ordering (the ordering that is "natural" for the application) and
6   the parallel ordering that PETSc uses.
7 */
8 #if !defined(__PETSCAO_H)
9 #define __PETSCAO_H
10 #include "petscis.h"
11 #include "petscmat.h"
12 PETSC_EXTERN_CXX_BEGIN
13 
14 typedef enum {AO_BASIC=0, AO_ADVANCED, AO_MAPPING, AO_NEW} AOType;
15 
16 /*S
17      AO - Abstract PETSc object that manages mapping between different global numbering
18 
19    Level: intermediate
20 
21   Concepts: global numbering
22 
23 .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
24 S*/
25 typedef struct _p_AO* AO;
26 
27 #define AO_SER_BASIC_BINARY   "basic_binary"
28 #define AO_SER_MAPPING_BINARY "mapping_binary"
29 #define AOSerializeType char*
30 
31 /* Logging support */
32 extern int AO_COOKIE;
33 extern int AODATA_COOKIE;
34 enum {AO_PetscToApplication, AO_ApplicationToPetsc, AO_MAX_EVENTS};
35 extern int AOEvents[AO_MAX_EVENTS];
36 #define AOLogEventBegin(e,o1,o2,o3,o4) PetscLogEventBegin(AOEvents[e],o1,o2,o3,o4)
37 #define AOLogEventEnd(e,o1,o2,o3,o4)   PetscLogEventEnd(AOEvents[e],o1,o2,o3,o4)
38 
39 EXTERN int DMInitializePackage(const char[]);
40 
41 EXTERN int AOCreateBasic(MPI_Comm,int,const int[],const int[],AO*);
42 EXTERN int AOCreateBasicIS(IS,IS,AO*);
43 
44 EXTERN int AOCreateMapping(MPI_Comm,int,const int[],const int[],AO*);
45 EXTERN int AOCreateMappingIS(IS,IS,AO*);
46 
47 EXTERN int AOView(AO,PetscViewer);
48 EXTERN int AODestroy(AO);
49 
50 EXTERN PetscFList AOSerializeList;
51 EXTERN int AOSerializeRegisterAll(const char []);
52 EXTERN int AOSerializeRegisterDestroy(void);
53 EXTERN int AOSerializeRegisterAllCalled;
54 EXTERN int AOSerialize(MPI_Comm, AO *, PetscViewer, PetscTruth);
55 EXTERN int AOSetSerializeType(AO, AOSerializeType);
56 
57 EXTERN int AORegister_Private(const char [], const char [], const char [], int (*)(AO));
58 EXTERN int AOSerializeRegister_Private(const char [], const char [], const char [], int (*)(MPI_Comm, AO *, PetscViewer, PetscTruth));
59 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
60 #define AORegister(a,b,c,d) AORegister_Private(a,b,c,0)
61 #define AOSerializeRegister(a,b,c,d) AOSerializeRegister_Private(a,b,c,0)
62 #else
63 #define AORegister(a,b,c,d) AORegister_Private(a,b,c,d)
64 #define AOSerializeRegister(a,b,c,d) AOSerializeRegister_Private(a,b,c,d)
65 #endif
66 
67 EXTERN int AOPetscToApplication(AO,int,int[]);
68 EXTERN int AOApplicationToPetsc(AO,int,int[]);
69 EXTERN int AOPetscToApplicationIS(AO,IS);
70 EXTERN int AOApplicationToPetscIS(AO,IS);
71 
72 EXTERN int AOPetscToApplicationPermuteInt(AO, int, int[]);
73 EXTERN int AOApplicationToPetscPermuteInt(AO, int, int[]);
74 EXTERN int AOPetscToApplicationPermuteReal(AO, int, double[]);
75 EXTERN int AOApplicationToPetscPermuteReal(AO, int, double[]);
76 
77 EXTERN int AOMappingHasApplicationIndex(AO, int, PetscTruth *);
78 EXTERN int AOMappingHasPetscIndex(AO, int, PetscTruth *);
79 
80 /* ----------------------------------------------------*/
81 
82 typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
83 
84 /*S
85      AOData - Abstract PETSc object that manages complex parallel data structures intended to
86          hold grid information, etc
87 
88    Level: advanced
89 
90 .seealso:  AODataCreateBasic()
91 S*/
92 typedef struct _p_AOData* AOData;
93 
94 EXTERN int AODataCreateBasic(MPI_Comm,AOData *);
95 EXTERN int AODataView(AOData,PetscViewer);
96 EXTERN int AODataDestroy(AOData);
97 EXTERN int AODataLoadBasic(PetscViewer,AOData *);
98 EXTERN int AODataGetInfo(AOData,int*,char ***);
99 
100 EXTERN int AODataKeyAdd(AOData,const char[],int,int);
101 EXTERN int AODataKeyRemove(AOData,const char[]);
102 
103 EXTERN int AODataKeySetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping);
104 EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping*);
105 EXTERN int AODataKeyRemap(AOData,const char[],AO);
106 
107 EXTERN int AODataKeyExists(AOData,const char[],PetscTruth*);
108 EXTERN int AODataKeyGetInfo(AOData,const char[],int *,int*,int*,char***);
109 EXTERN int AODataKeyGetOwnershipRange(AOData,const char[],int *,int*);
110 
111 EXTERN int AODataKeyGetNeighbors(AOData,const char[],int,int*,IS *);
112 EXTERN int AODataKeyGetNeighborsIS(AOData,const char[],IS,IS *);
113 EXTERN int AODataKeyGetAdjacency(AOData,const char[],Mat*);
114 
115 EXTERN int AODataKeyGetActive(AOData,const char[],const char[],int,int *,int,IS*);
116 EXTERN int AODataKeyGetActiveIS(AOData,const char[],const char[],IS,int,IS*);
117 EXTERN int AODataKeyGetActiveLocal(AOData,const char[],const char[],int,int *,int,IS*);
118 EXTERN int AODataKeyGetActiveLocalIS(AOData,const char[],const char[],IS,int,IS*);
119 
120 EXTERN int AODataKeyPartition(AOData,const char[]);
121 
122 EXTERN int AODataSegmentAdd(AOData,const char[],const char[],int,int,int *,void *,PetscDataType);
123 EXTERN int AODataSegmentRemove(AOData,const char[],const char[]);
124 EXTERN int AODataSegmentAddIS(AOData,const char[],const char[],int,IS,void *,PetscDataType);
125 
126 EXTERN int AODataSegmentExists(AOData,const char[],const char[],PetscTruth*);
127 EXTERN int AODataSegmentGetInfo(AOData,const char[],const char[],int *,PetscDataType*);
128 
129 EXTERN int AODataSegmentGet(AOData,const char[],const char[],int,int*,void **);
130 EXTERN int AODataSegmentRestore(AOData,const char[],const char[],int,int*,void **);
131 EXTERN int AODataSegmentGetIS(AOData,const char[],const char[],IS,void **);
132 EXTERN int AODataSegmentRestoreIS(AOData,const char[],const char[],IS,void **);
133 
134 EXTERN int AODataSegmentGetLocal(AOData,const char[],const char[],int,int*,void **);
135 EXTERN int AODataSegmentRestoreLocal(AOData,const char[],const char[],int,int*,void **);
136 EXTERN int AODataSegmentGetLocalIS(AOData,const char[],const char[],IS,void **);
137 EXTERN int AODataSegmentRestoreLocalIS(AOData,const char[],const char[],IS,void **);
138 
139 EXTERN int AODataSegmentGetReduced(AOData,const char[],const char[],int,int*,IS *);
140 EXTERN int AODataSegmentGetReducedIS(AOData,const char[],const char[],IS,IS *);
141 EXTERN int AODataSegmentGetExtrema(AOData,const char[],const char[],void *,void *);
142 
143 EXTERN int AODataSegmentPartition(AOData,const char[],const char[]);
144 
145 EXTERN int AODataPartitionAndSetupLocal(AOData,const char[],const char[],IS*,IS*,ISLocalToGlobalMapping*);
146 EXTERN int AODataAliasAdd(AOData,const char[],const char[]);
147 
148 
149 typedef struct _p_AOData2dGrid *AOData2dGrid;
150 EXTERN int AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
151 EXTERN int AOData2dGridInput(AOData2dGrid,PetscDraw);
152 EXTERN int AOData2dGridFlipCells(AOData2dGrid);
153 EXTERN int AOData2dGridComputeNeighbors(AOData2dGrid);
154 EXTERN int AOData2dGridComputeVertexBoundary(AOData2dGrid);
155 EXTERN int AOData2dGridDraw(AOData2dGrid,PetscDraw);
156 EXTERN int AOData2dGridDestroy(AOData2dGrid);
157 EXTERN int AOData2dGridCreate(AOData2dGrid*);
158 EXTERN int AOData2dGridToAOData(AOData2dGrid,AOData*);
159 
160 PETSC_EXTERN_CXX_END
161 #endif
162