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