1*1ec7a0b9SBarry Smith /* $Id: ao.h,v 1.20 2000/01/11 21:04:04 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 */ 888d459dfSBarry Smith #if !defined(__AO_H) 988d459dfSBarry Smith #define __AO_H 107588ac45SBarry Smith #include "is.h" 11d64ed03dSBarry Smith #include "mat.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 171ac94ccfSSatish Balay typedef struct _p_AO* AO; 187588ac45SBarry Smith 197588ac45SBarry Smith extern int AOCreateBasic(MPI_Comm,int,int*,int*,AO*); 20d64ed03dSBarry Smith extern int AOCreateBasicIS(IS,IS,AO*); 217588ac45SBarry Smith 227588ac45SBarry Smith extern int AOPetscToApplication(AO,int,int*); 237588ac45SBarry Smith extern int AOApplicationToPetsc(AO,int,int*); 247588ac45SBarry Smith extern int AOPetscToApplicationIS(AO,IS); 257588ac45SBarry Smith extern int AOApplicationToPetscIS(AO,IS); 267588ac45SBarry Smith 277588ac45SBarry Smith extern int AODestroy(AO); 287588ac45SBarry Smith extern int AOView(AO,Viewer); 297588ac45SBarry Smith 30376ee591SBarry Smith /* ----------------------------------------------------*/ 31376ee591SBarry Smith 320752156aSBarry Smith typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType; 33376ee591SBarry Smith 340752156aSBarry Smith #define AODATA_COOKIE PETSC_COOKIE+24 35376ee591SBarry Smith 360752156aSBarry Smith typedef struct _p_AOData* AOData; 370752156aSBarry Smith 38522c5e43SBarry Smith extern int AODataCreateBasic(MPI_Comm,AOData *); 39522c5e43SBarry Smith extern int AODataView(AOData,Viewer); 40522c5e43SBarry Smith extern int AODataDestroy(AOData); 41522c5e43SBarry Smith extern int AODataLoadBasic(Viewer,AOData *); 42522c5e43SBarry Smith extern int AODataGetInfo(AOData,int*,char ***); 4331b6eecaSBarry Smith 44522c5e43SBarry Smith extern int AODataKeyAdd(AOData,char*,int,int); 45b2487710SBarry Smith extern int AODataKeyRemove(AOData,char*); 46b2487710SBarry Smith 47ea06a074SBarry Smith extern int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping); 48ea06a074SBarry Smith extern int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*); 49d64ed03dSBarry Smith extern int AODataKeyRemap(AOData,char *,AO); 5031b6eecaSBarry Smith 51ea06a074SBarry Smith extern int AODataKeyExists(AOData,char*,PetscTruth*); 52522c5e43SBarry Smith extern int AODataKeyGetInfo(AOData,char *,int *,int*,int*,char***); 53ea06a074SBarry Smith extern int AODataKeyGetOwnershipRange(AOData,char *,int *,int*); 54ea06a074SBarry Smith 55ea06a074SBarry Smith extern int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *); 56ea06a074SBarry Smith extern int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *); 57ea06a074SBarry Smith extern int AODataKeyGetAdjacency(AOData,char *,Mat*); 58ea06a074SBarry Smith 5935c17c5bSBarry Smith extern int AODataKeyGetActive(AOData,char*,char*,int,int *,int,IS*); 6035c17c5bSBarry Smith extern int AODataKeyGetActiveIS(AOData,char*,char*,IS,int,IS*); 6135c17c5bSBarry Smith extern int AODataKeyGetActiveLocal(AOData,char*,char*,int,int *,int,IS*); 6235c17c5bSBarry Smith extern int AODataKeyGetActiveLocalIS(AOData,char*,char*,IS,int,IS*); 6335c17c5bSBarry Smith 64ea06a074SBarry Smith extern int AODataKeyPartition(AOData,char *); 65ea06a074SBarry Smith 66e852ff30SBarry Smith extern int AODataSegmentAdd(AOData,char*,char *,int,int,int *,void *,PetscDataType); 67b2487710SBarry Smith extern int AODataSegmentRemove(AOData,char *,char *); 68e852ff30SBarry Smith extern int AODataSegmentAddIS(AOData,char*,char *,int,IS,void *,PetscDataType); 6931b6eecaSBarry Smith 70ea06a074SBarry Smith extern int AODataSegmentExists(AOData,char*,char*,PetscTruth*); 71522c5e43SBarry Smith extern int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*); 7231b6eecaSBarry Smith 73e852ff30SBarry Smith extern int AODataSegmentGet(AOData,char *,char *,int,int*,void **); 74e852ff30SBarry Smith extern int AODataSegmentRestore(AOData,char *,char *,int,int*,void **); 75e852ff30SBarry Smith extern int AODataSegmentGetIS(AOData,char *,char *,IS,void **); 76e852ff30SBarry Smith extern int AODataSegmentRestoreIS(AOData,char *,char *,IS,void **); 7731b6eecaSBarry Smith 78e852ff30SBarry Smith extern int AODataSegmentGetLocal(AOData,char *,char *,int,int*,void **); 79e852ff30SBarry Smith extern int AODataSegmentRestoreLocal(AOData,char *,char *,int,int*,void **); 80e852ff30SBarry Smith extern int AODataSegmentGetLocalIS(AOData,char *,char *,IS,void **); 81e852ff30SBarry Smith extern int AODataSegmentRestoreLocalIS(AOData,char *,char *,IS,void **); 822bdab257SBarry Smith 83e852ff30SBarry Smith extern int AODataSegmentGetReduced(AOData,char *,char *,int,int*,IS *); 84e852ff30SBarry Smith extern int AODataSegmentGetReducedIS(AOData,char *,char *,IS,IS *); 85ea06a074SBarry Smith extern int AODataSegmentGetExtrema(AOData,char*,char*,void *,void *); 86e852ff30SBarry Smith 87ea06a074SBarry Smith extern int AODataSegmentPartition(AOData,char *,char *); 882bdab257SBarry Smith 89184914b5SBarry Smith extern int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*); 90f1af5d2fSBarry Smith extern int AODataAliasAdd(AOData,char *,char *); 91*1ec7a0b9SBarry Smith 92*1ec7a0b9SBarry Smith 93*1ec7a0b9SBarry Smith typedef struct _p_AOData2dGrid *AOData2dGrid; 94*1ec7a0b9SBarry Smith extern int AOData2dGridAddNode(AOData2dGrid, double, double, int *); 95*1ec7a0b9SBarry Smith extern int AOData2dGridInput(AOData2dGrid,Draw); 96*1ec7a0b9SBarry Smith extern int AOData2dGridFlipCells(AOData2dGrid); 97*1ec7a0b9SBarry Smith extern int AOData2dGridComputeNeighbors(AOData2dGrid); 98*1ec7a0b9SBarry Smith extern int AOData2dGridComputeVertexBoundary(AOData2dGrid); 99*1ec7a0b9SBarry Smith extern int AOData2dGridDraw(AOData2dGrid,Draw); 100*1ec7a0b9SBarry Smith extern int AOData2dGridDestroy(AOData2dGrid); 101*1ec7a0b9SBarry Smith extern int AOData2dGridCreate(AOData2dGrid*); 102*1ec7a0b9SBarry Smith 1037588ac45SBarry Smith #endif 1047588ac45SBarry Smith 105230e2716SBarry Smith 106