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