xref: /petsc/include/petscao.h (revision b961780643a09dddcde1fa5de76862b9b9b6ff18)
1*b9617806SBarry Smith /* $Id: petscao.h,v 1.25 2001/01/15 21:48:40 bsmith Exp bsmith $ */
27588ac45SBarry Smith 
3230e2716SBarry Smith /*
430127c82SLois Curfman McInnes   An application ordering is mapping between an application-centric
530127c82SLois Curfman McInnes   ordering (the ordering that is "natural" for the application) and
67588ac45SBarry Smith   the parallel ordering that PETSc uses.
77588ac45SBarry Smith */
80a835dfdSSatish Balay #if !defined(__PETSCAO_H)
90a835dfdSSatish Balay #define __PETSCAO_H
100a835dfdSSatish Balay #include "petscis.h"
110a835dfdSSatish Balay #include "petscmat.h"
127588ac45SBarry Smith 
130752156aSBarry Smith typedef enum {AO_BASIC=0,AO_ADVANCED=1} AOType;
147588ac45SBarry Smith 
157588ac45SBarry Smith #define AO_COOKIE PETSC_COOKIE+20
167588ac45SBarry Smith 
17*b9617806SBarry Smith /*S
18*b9617806SBarry Smith      AO - Abstract PETSc object that manages mapping between different global numbering
19*b9617806SBarry Smith 
20*b9617806SBarry Smith    Level: intermediate
21*b9617806SBarry Smith 
22*b9617806SBarry Smith   Concepts: global numbering
23*b9617806SBarry Smith 
24*b9617806SBarry Smith .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
25*b9617806SBarry Smith S*/
261ac94ccfSSatish Balay typedef struct _p_AO* AO;
277588ac45SBarry Smith 
28ca44d042SBarry Smith EXTERN int AOCreateBasic(MPI_Comm,int,int*,int*,AO*);
29ca44d042SBarry Smith EXTERN int AOCreateBasicIS(IS,IS,AO*);
307588ac45SBarry Smith 
31ca44d042SBarry Smith EXTERN int AOPetscToApplication(AO,int,int*);
32ca44d042SBarry Smith EXTERN int AOApplicationToPetsc(AO,int,int*);
33ca44d042SBarry Smith EXTERN int AOPetscToApplicationIS(AO,IS);
34ca44d042SBarry Smith EXTERN int AOApplicationToPetscIS(AO,IS);
357588ac45SBarry Smith 
36ca44d042SBarry Smith EXTERN int AODestroy(AO);
37b0a32e0cSBarry Smith EXTERN int AOView(AO,PetscViewer);
387588ac45SBarry Smith 
39376ee591SBarry Smith /* ----------------------------------------------------*/
40376ee591SBarry Smith 
410752156aSBarry Smith typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
42376ee591SBarry Smith 
430752156aSBarry Smith #define AODATA_COOKIE PETSC_COOKIE+24
44376ee591SBarry Smith 
45*b9617806SBarry Smith /*S
46*b9617806SBarry Smith      AOData - Abstract PETSc object that manages complex parallel data structures intended to
47*b9617806SBarry Smith          hold grid information, etc
48*b9617806SBarry Smith 
49*b9617806SBarry Smith    Level: advanced
50*b9617806SBarry Smith 
51*b9617806SBarry Smith .seealso:  AODataCreateBasic()
52*b9617806SBarry Smith S*/
530752156aSBarry Smith typedef struct _p_AOData* AOData;
540752156aSBarry Smith 
55ca44d042SBarry Smith EXTERN int AODataCreateBasic(MPI_Comm,AOData *);
56b0a32e0cSBarry Smith EXTERN int AODataView(AOData,PetscViewer);
57ca44d042SBarry Smith EXTERN int AODataDestroy(AOData);
58b0a32e0cSBarry Smith EXTERN int AODataLoadBasic(PetscViewer,AOData *);
59ca44d042SBarry Smith EXTERN int AODataGetInfo(AOData,int*,char ***);
6031b6eecaSBarry Smith 
61ca44d042SBarry Smith EXTERN int AODataKeyAdd(AOData,char*,int,int);
62ca44d042SBarry Smith EXTERN int AODataKeyRemove(AOData,char*);
63b2487710SBarry Smith 
64ca44d042SBarry Smith EXTERN int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping);
65ca44d042SBarry Smith EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*);
66ca44d042SBarry Smith EXTERN int AODataKeyRemap(AOData,char *,AO);
6731b6eecaSBarry Smith 
68ca44d042SBarry Smith EXTERN int AODataKeyExists(AOData,char*,PetscTruth*);
69ca44d042SBarry Smith EXTERN int AODataKeyGetInfo(AOData,char *,int *,int*,int*,char***);
70ca44d042SBarry Smith EXTERN int AODataKeyGetOwnershipRange(AOData,char *,int *,int*);
71ea06a074SBarry Smith 
72ca44d042SBarry Smith EXTERN int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *);
73ca44d042SBarry Smith EXTERN int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *);
74ca44d042SBarry Smith EXTERN int AODataKeyGetAdjacency(AOData,char *,Mat*);
75ea06a074SBarry Smith 
76ca44d042SBarry Smith EXTERN int AODataKeyGetActive(AOData,char*,char*,int,int *,int,IS*);
77ca44d042SBarry Smith EXTERN int AODataKeyGetActiveIS(AOData,char*,char*,IS,int,IS*);
78ca44d042SBarry Smith EXTERN int AODataKeyGetActiveLocal(AOData,char*,char*,int,int *,int,IS*);
79ca44d042SBarry Smith EXTERN int AODataKeyGetActiveLocalIS(AOData,char*,char*,IS,int,IS*);
8035c17c5bSBarry Smith 
81ca44d042SBarry Smith EXTERN int AODataKeyPartition(AOData,char *);
82ea06a074SBarry Smith 
83ca44d042SBarry Smith EXTERN int AODataSegmentAdd(AOData,char*,char *,int,int,int *,void *,PetscDataType);
84ca44d042SBarry Smith EXTERN int AODataSegmentRemove(AOData,char *,char *);
85ca44d042SBarry Smith EXTERN int AODataSegmentAddIS(AOData,char*,char *,int,IS,void *,PetscDataType);
8631b6eecaSBarry Smith 
87ca44d042SBarry Smith EXTERN int AODataSegmentExists(AOData,char*,char*,PetscTruth*);
88ca44d042SBarry Smith EXTERN int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*);
8931b6eecaSBarry Smith 
90ca44d042SBarry Smith EXTERN int AODataSegmentGet(AOData,char *,char *,int,int*,void **);
91ca44d042SBarry Smith EXTERN int AODataSegmentRestore(AOData,char *,char *,int,int*,void **);
92ca44d042SBarry Smith EXTERN int AODataSegmentGetIS(AOData,char *,char *,IS,void **);
93ca44d042SBarry Smith EXTERN int AODataSegmentRestoreIS(AOData,char *,char *,IS,void **);
9431b6eecaSBarry Smith 
95ca44d042SBarry Smith EXTERN int AODataSegmentGetLocal(AOData,char *,char *,int,int*,void **);
96ca44d042SBarry Smith EXTERN int AODataSegmentRestoreLocal(AOData,char *,char *,int,int*,void **);
97ca44d042SBarry Smith EXTERN int AODataSegmentGetLocalIS(AOData,char *,char *,IS,void **);
98ca44d042SBarry Smith EXTERN int AODataSegmentRestoreLocalIS(AOData,char *,char *,IS,void **);
992bdab257SBarry Smith 
100ca44d042SBarry Smith EXTERN int AODataSegmentGetReduced(AOData,char *,char *,int,int*,IS *);
101ca44d042SBarry Smith EXTERN int AODataSegmentGetReducedIS(AOData,char *,char *,IS,IS *);
102ca44d042SBarry Smith EXTERN int AODataSegmentGetExtrema(AOData,char*,char*,void *,void *);
103e852ff30SBarry Smith 
104ca44d042SBarry Smith EXTERN int AODataSegmentPartition(AOData,char *,char *);
1052bdab257SBarry Smith 
106ca44d042SBarry Smith EXTERN int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*);
107ca44d042SBarry Smith EXTERN int AODataAliasAdd(AOData,char *,char *);
1081ec7a0b9SBarry Smith 
1091ec7a0b9SBarry Smith 
1101ec7a0b9SBarry Smith typedef struct _p_AOData2dGrid *AOData2dGrid;
111ca44d042SBarry Smith EXTERN int AOData2dGridAddNode(AOData2dGrid, double, double, int *);
112b0a32e0cSBarry Smith EXTERN int AOData2dGridInput(AOData2dGrid,PetscDraw);
113ca44d042SBarry Smith EXTERN int AOData2dGridFlipCells(AOData2dGrid);
114ca44d042SBarry Smith EXTERN int AOData2dGridComputeNeighbors(AOData2dGrid);
115ca44d042SBarry Smith EXTERN int AOData2dGridComputeVertexBoundary(AOData2dGrid);
116b0a32e0cSBarry Smith EXTERN int AOData2dGridDraw(AOData2dGrid,PetscDraw);
117ca44d042SBarry Smith EXTERN int AOData2dGridDestroy(AOData2dGrid);
118ca44d042SBarry Smith EXTERN int AOData2dGridCreate(AOData2dGrid*);
119ca44d042SBarry Smith EXTERN int AOData2dGridToAOData(AOData2dGrid,AOData*);
1201ec7a0b9SBarry Smith 
1217588ac45SBarry Smith #endif
1227588ac45SBarry Smith 
123230e2716SBarry Smith 
124