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