xref: /petsc/include/petscao.h (revision 73f4d3771d9e6ab3f04055eab794d7609818b9d3)
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=1} 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 EXTERN int AOCreateBasic(MPI_Comm,int,int*,int*,AO*);
29 EXTERN int AOCreateBasicIS(IS,IS,AO*);
30 
31 EXTERN int AOPetscToApplication(AO,int,int*);
32 EXTERN int AOApplicationToPetsc(AO,int,int*);
33 EXTERN int AOPetscToApplicationIS(AO,IS);
34 EXTERN int AOApplicationToPetscIS(AO,IS);
35 
36 EXTERN int AODestroy(AO);
37 EXTERN int AOView(AO,PetscViewer);
38 
39 /* ----------------------------------------------------*/
40 
41 typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
42 
43 #define AODATA_COOKIE PETSC_COOKIE+24
44 
45 /*S
46      AOData - Abstract PETSc object that manages complex parallel data structures intended to
47          hold grid information, etc
48 
49    Level: advanced
50 
51 .seealso:  AODataCreateBasic()
52 S*/
53 typedef struct _p_AOData* AOData;
54 
55 EXTERN int AODataCreateBasic(MPI_Comm,AOData *);
56 EXTERN int AODataView(AOData,PetscViewer);
57 EXTERN int AODataDestroy(AOData);
58 EXTERN int AODataLoadBasic(PetscViewer,AOData *);
59 EXTERN int AODataGetInfo(AOData,int*,char ***);
60 
61 EXTERN int AODataKeyAdd(AOData,char*,int,int);
62 EXTERN int AODataKeyRemove(AOData,char*);
63 
64 EXTERN int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping);
65 EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*);
66 EXTERN int AODataKeyRemap(AOData,char *,AO);
67 
68 EXTERN int AODataKeyExists(AOData,char*,PetscTruth*);
69 EXTERN int AODataKeyGetInfo(AOData,char *,int *,int*,int*,char***);
70 EXTERN int AODataKeyGetOwnershipRange(AOData,char *,int *,int*);
71 
72 EXTERN int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *);
73 EXTERN int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *);
74 EXTERN int AODataKeyGetAdjacency(AOData,char *,Mat*);
75 
76 EXTERN int AODataKeyGetActive(AOData,char*,char*,int,int *,int,IS*);
77 EXTERN int AODataKeyGetActiveIS(AOData,char*,char*,IS,int,IS*);
78 EXTERN int AODataKeyGetActiveLocal(AOData,char*,char*,int,int *,int,IS*);
79 EXTERN int AODataKeyGetActiveLocalIS(AOData,char*,char*,IS,int,IS*);
80 
81 EXTERN int AODataKeyPartition(AOData,char *);
82 
83 EXTERN int AODataSegmentAdd(AOData,char*,char *,int,int,int *,void *,PetscDataType);
84 EXTERN int AODataSegmentRemove(AOData,char *,char *);
85 EXTERN int AODataSegmentAddIS(AOData,char*,char *,int,IS,void *,PetscDataType);
86 
87 EXTERN int AODataSegmentExists(AOData,char*,char*,PetscTruth*);
88 EXTERN int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*);
89 
90 EXTERN int AODataSegmentGet(AOData,char *,char *,int,int*,void **);
91 EXTERN int AODataSegmentRestore(AOData,char *,char *,int,int*,void **);
92 EXTERN int AODataSegmentGetIS(AOData,char *,char *,IS,void **);
93 EXTERN int AODataSegmentRestoreIS(AOData,char *,char *,IS,void **);
94 
95 EXTERN int AODataSegmentGetLocal(AOData,char *,char *,int,int*,void **);
96 EXTERN int AODataSegmentRestoreLocal(AOData,char *,char *,int,int*,void **);
97 EXTERN int AODataSegmentGetLocalIS(AOData,char *,char *,IS,void **);
98 EXTERN int AODataSegmentRestoreLocalIS(AOData,char *,char *,IS,void **);
99 
100 EXTERN int AODataSegmentGetReduced(AOData,char *,char *,int,int*,IS *);
101 EXTERN int AODataSegmentGetReducedIS(AOData,char *,char *,IS,IS *);
102 EXTERN int AODataSegmentGetExtrema(AOData,char*,char*,void *,void *);
103 
104 EXTERN int AODataSegmentPartition(AOData,char *,char *);
105 
106 EXTERN int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*);
107 EXTERN int AODataAliasAdd(AOData,char *,char *);
108 
109 
110 typedef struct _p_AOData2dGrid *AOData2dGrid;
111 EXTERN int AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
112 EXTERN int AOData2dGridInput(AOData2dGrid,PetscDraw);
113 EXTERN int AOData2dGridFlipCells(AOData2dGrid);
114 EXTERN int AOData2dGridComputeNeighbors(AOData2dGrid);
115 EXTERN int AOData2dGridComputeVertexBoundary(AOData2dGrid);
116 EXTERN int AOData2dGridDraw(AOData2dGrid,PetscDraw);
117 EXTERN int AOData2dGridDestroy(AOData2dGrid);
118 EXTERN int AOData2dGridCreate(AOData2dGrid*);
119 EXTERN int AOData2dGridToAOData(AOData2dGrid,AOData*);
120 
121 #endif
122 
123 
124