xref: /petsc/include/petscao.h (revision 6849ba73f22fecb8f92ef896a42e4e8bd4cd6965)
1230e2716SBarry Smith /*
230127c82SLois Curfman McInnes   An application ordering is mapping between an application-centric
330127c82SLois Curfman McInnes   ordering (the ordering that is "natural" for the application) and
47588ac45SBarry Smith   the parallel ordering that PETSc uses.
57588ac45SBarry Smith */
60a835dfdSSatish Balay #if !defined(__PETSCAO_H)
70a835dfdSSatish Balay #define __PETSCAO_H
80a835dfdSSatish Balay #include "petscis.h"
90a835dfdSSatish Balay #include "petscmat.h"
10e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN
117588ac45SBarry Smith 
124ebda54eSMatthew Knepley typedef enum {AO_BASIC=0, AO_ADVANCED, AO_MAPPING, AO_NEW} AOType;
137588ac45SBarry Smith 
14b9617806SBarry Smith /*S
15b9617806SBarry Smith      AO - Abstract PETSc object that manages mapping between different global numbering
16b9617806SBarry Smith 
17b9617806SBarry Smith    Level: intermediate
18b9617806SBarry Smith 
19b9617806SBarry Smith   Concepts: global numbering
20b9617806SBarry Smith 
21b9617806SBarry Smith .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
22b9617806SBarry Smith S*/
231ac94ccfSSatish Balay typedef struct _p_AO* AO;
247588ac45SBarry Smith 
258ba1e511SMatthew Knepley /* Logging support */
26*6849ba73SBarry Smith extern PetscCookie AO_COOKIE, AODATA_COOKIE;
27*6849ba73SBarry Smith extern PetscEvent  AO_PetscToApplication, AO_ApplicationToPetsc;
288ba1e511SMatthew Knepley 
29dfbe8321SBarry Smith EXTERN PetscErrorCode DMInitializePackage(const char[]);
308ba1e511SMatthew Knepley 
31dfbe8321SBarry Smith EXTERN PetscErrorCode AOCreateBasic(MPI_Comm,int,const int[],const int[],AO*);
32dfbe8321SBarry Smith EXTERN PetscErrorCode AOCreateBasicIS(IS,IS,AO*);
337588ac45SBarry Smith 
34dfbe8321SBarry Smith EXTERN PetscErrorCode AOCreateMapping(MPI_Comm,int,const int[],const int[],AO*);
35dfbe8321SBarry Smith EXTERN PetscErrorCode AOCreateMappingIS(IS,IS,AO*);
364ebda54eSMatthew Knepley 
37dfbe8321SBarry Smith EXTERN PetscErrorCode AOView(AO,PetscViewer);
38dfbe8321SBarry Smith EXTERN PetscErrorCode AODestroy(AO);
394ebda54eSMatthew Knepley 
40*6849ba73SBarry Smith EXTERN PetscErrorCode AORegister_Private(const char [], const char [], const char [], PetscErrorCode (*)(AO));
414ebda54eSMatthew Knepley #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
424ebda54eSMatthew Knepley #define AORegister(a,b,c,d) AORegister_Private(a,b,c,0)
434ebda54eSMatthew Knepley #else
444ebda54eSMatthew Knepley #define AORegister(a,b,c,d) AORegister_Private(a,b,c,d)
454ebda54eSMatthew Knepley #endif
464ebda54eSMatthew Knepley 
47dfbe8321SBarry Smith EXTERN PetscErrorCode AOPetscToApplication(AO,int,int[]);
48dfbe8321SBarry Smith EXTERN PetscErrorCode AOApplicationToPetsc(AO,int,int[]);
49dfbe8321SBarry Smith EXTERN PetscErrorCode AOPetscToApplicationIS(AO,IS);
50dfbe8321SBarry Smith EXTERN PetscErrorCode AOApplicationToPetscIS(AO,IS);
517588ac45SBarry Smith 
52dfbe8321SBarry Smith EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, int, int[]);
53dfbe8321SBarry Smith EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, int, int[]);
54dfbe8321SBarry Smith EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, int, double[]);
55dfbe8321SBarry Smith EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, int, double[]);
564ebda54eSMatthew Knepley 
57dfbe8321SBarry Smith EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, int, PetscTruth *);
58dfbe8321SBarry Smith EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, int, PetscTruth *);
597588ac45SBarry Smith 
60376ee591SBarry Smith /* ----------------------------------------------------*/
61376ee591SBarry Smith 
620752156aSBarry Smith typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
63376ee591SBarry Smith 
64b9617806SBarry Smith /*S
65b9617806SBarry Smith      AOData - Abstract PETSc object that manages complex parallel data structures intended to
66b9617806SBarry Smith          hold grid information, etc
67b9617806SBarry Smith 
68b9617806SBarry Smith    Level: advanced
69b9617806SBarry Smith 
70b9617806SBarry Smith .seealso:  AODataCreateBasic()
71b9617806SBarry Smith S*/
720752156aSBarry Smith typedef struct _p_AOData* AOData;
730752156aSBarry Smith 
74dfbe8321SBarry Smith EXTERN PetscErrorCode AODataCreateBasic(MPI_Comm,AOData *);
75dfbe8321SBarry Smith EXTERN PetscErrorCode AODataView(AOData,PetscViewer);
76dfbe8321SBarry Smith EXTERN PetscErrorCode AODataDestroy(AOData);
77dfbe8321SBarry Smith EXTERN PetscErrorCode AODataLoadBasic(PetscViewer,AOData *);
78dfbe8321SBarry Smith EXTERN PetscErrorCode AODataGetInfo(AOData,int*,char ***);
7931b6eecaSBarry Smith 
80dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyAdd(AOData,const char[],int,int);
81dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyRemove(AOData,const char[]);
82b2487710SBarry Smith 
83dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeySetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping);
84dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping*);
85dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyRemap(AOData,const char[],AO);
8631b6eecaSBarry Smith 
87dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyExists(AOData,const char[],PetscTruth*);
88dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetInfo(AOData,const char[],int *,int*,int*,char***);
89dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetOwnershipRange(AOData,const char[],int *,int*);
90ea06a074SBarry Smith 
91dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetNeighbors(AOData,const char[],int,int*,IS *);
92dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetNeighborsIS(AOData,const char[],IS,IS *);
93dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetAdjacency(AOData,const char[],Mat*);
94ea06a074SBarry Smith 
95dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetActive(AOData,const char[],const char[],int,int *,int,IS*);
96dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetActiveIS(AOData,const char[],const char[],IS,int,IS*);
97dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetActiveLocal(AOData,const char[],const char[],int,int *,int,IS*);
98dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyGetActiveLocalIS(AOData,const char[],const char[],IS,int,IS*);
9935c17c5bSBarry Smith 
100dfbe8321SBarry Smith EXTERN PetscErrorCode AODataKeyPartition(AOData,const char[]);
101ea06a074SBarry Smith 
102dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentAdd(AOData,const char[],const char[],int,int,int *,void *,PetscDataType);
103dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentRemove(AOData,const char[],const char[]);
104dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentAddIS(AOData,const char[],const char[],int,IS,void *,PetscDataType);
10531b6eecaSBarry Smith 
106dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentExists(AOData,const char[],const char[],PetscTruth*);
107dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetInfo(AOData,const char[],const char[],int *,PetscDataType*);
10831b6eecaSBarry Smith 
109dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGet(AOData,const char[],const char[],int,int*,void **);
110dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentRestore(AOData,const char[],const char[],int,int*,void **);
111dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetIS(AOData,const char[],const char[],IS,void **);
112dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentRestoreIS(AOData,const char[],const char[],IS,void **);
11331b6eecaSBarry Smith 
114dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetLocal(AOData,const char[],const char[],int,int*,void **);
115dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentRestoreLocal(AOData,const char[],const char[],int,int*,void **);
116dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetLocalIS(AOData,const char[],const char[],IS,void **);
117dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentRestoreLocalIS(AOData,const char[],const char[],IS,void **);
1182bdab257SBarry Smith 
119dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetReduced(AOData,const char[],const char[],int,int*,IS *);
120dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetReducedIS(AOData,const char[],const char[],IS,IS *);
121dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentGetExtrema(AOData,const char[],const char[],void *,void *);
122e852ff30SBarry Smith 
123dfbe8321SBarry Smith EXTERN PetscErrorCode AODataSegmentPartition(AOData,const char[],const char[]);
1242bdab257SBarry Smith 
125dfbe8321SBarry Smith EXTERN PetscErrorCode AODataPartitionAndSetupLocal(AOData,const char[],const char[],IS*,IS*,ISLocalToGlobalMapping*);
126dfbe8321SBarry Smith EXTERN PetscErrorCode AODataAliasAdd(AOData,const char[],const char[]);
1271ec7a0b9SBarry Smith 
1281ec7a0b9SBarry Smith 
1291ec7a0b9SBarry Smith typedef struct _p_AOData2dGrid *AOData2dGrid;
130dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
131dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridInput(AOData2dGrid,PetscDraw);
132dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridFlipCells(AOData2dGrid);
133dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridComputeNeighbors(AOData2dGrid);
134dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridComputeVertexBoundary(AOData2dGrid);
135dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridDraw(AOData2dGrid,PetscDraw);
136dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridDestroy(AOData2dGrid);
137dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridCreate(AOData2dGrid*);
138dfbe8321SBarry Smith EXTERN PetscErrorCode AOData2dGridToAOData(AOData2dGrid,AOData*);
1391ec7a0b9SBarry Smith 
140e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END
1417588ac45SBarry Smith #endif
142