Actual source code: petscao.h
1: /* $Id: petscao.h,v 1.26 2001/04/10 19:37:14 bsmith Exp $ */
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: */
10: #include "petscis.h"
11: #include "petscmat.h"
13: typedef enum {AO_BASIC=0,AO_ADVANCED=1} AOType;
15: #define AO_COOKIE PETSC_COOKIE+20
17: /*S
18: AO - Abstract PETSc object that manages mapping between different global numbering
20: Level: intermediate
22: Concepts: global numbering
24: .seealso: AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
25: S*/
26: typedef struct _p_AO* AO;
28: EXTERN int AOCreateBasic(MPI_Comm,int,int*,int*,AO*);
29: EXTERN int AOCreateBasicIS(IS,IS,AO*);
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);
36: EXTERN int AODestroy(AO);
37: EXTERN int AOView(AO,PetscViewer);
39: /* ----------------------------------------------------*/
41: typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
43: #define AODATA_COOKIE PETSC_COOKIE+24
45: /*S
46: AOData - Abstract PETSc object that manages complex parallel data structures intended to
47: hold grid information, etc
49: Level: advanced
51: .seealso: AODataCreateBasic()
52: S*/
53: typedef struct _p_AOData* AOData;
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 ***);
61: EXTERN int AODataKeyAdd(AOData,char*,int,int);
62: EXTERN int AODataKeyRemove(AOData,char*);
64: EXTERN int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping);
65: EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*);
66: EXTERN int AODataKeyRemap(AOData,char *,AO);
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*);
72: EXTERN int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *);
73: EXTERN int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *);
74: EXTERN int AODataKeyGetAdjacency(AOData,char *,Mat*);
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*);
81: EXTERN int AODataKeyPartition(AOData,char *);
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);
87: EXTERN int AODataSegmentExists(AOData,char*,char*,PetscTruth*);
88: EXTERN int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*);
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 **);
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 **);
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 *);
104: EXTERN int AODataSegmentPartition(AOData,char *,char *);
106: EXTERN int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*);
107: EXTERN int AODataAliasAdd(AOData,char *,char *);
109:
110: typedef struct _p_AOData2dGrid *AOData2dGrid;
111: EXTERN int AOData2dGridAddNode(AOData2dGrid, double, double, 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*);
121: #endif