1*ea06a074SBarry Smith /* $Id: ao.h,v 1.11 1997/10/28 14:26:00 bsmith Exp bsmith $ */ 27588ac45SBarry Smith 3230e2716SBarry Smith /* 4230e2716SBarry Smith An application ordering is mapping between application-centric 57588ac45SBarry Smith ordering (the ordering that is "natural" to the application) and 67588ac45SBarry Smith the parallel ordering that PETSc uses. 77588ac45SBarry Smith */ 87588ac45SBarry Smith #if !defined(__AO_PACKAGE) 97588ac45SBarry Smith #define __AO_PACKAGE 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 38f2bd0a27SBarry Smith extern int AODataCreateBasic(MPI_Comm,int,AOData *); 3931b6eecaSBarry Smith 40e852ff30SBarry Smith extern int AODataKeyAdd(AOData,char*,int,int,int); 41*ea06a074SBarry Smith extern int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping); 42*ea06a074SBarry Smith extern int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*); 43d64ed03dSBarry Smith extern int AODataKeyRemap(AOData,char *,AO); 4431b6eecaSBarry Smith 45*ea06a074SBarry Smith extern int AODataKeyExists(AOData,char*,PetscTruth*); 46*ea06a074SBarry Smith extern int AODataKeyGetInfo(AOData,char *,int *,int*,int *); 47*ea06a074SBarry Smith extern int AODataKeyGetOwnershipRange(AOData,char *,int *,int*); 48*ea06a074SBarry Smith 49*ea06a074SBarry Smith extern int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *); 50*ea06a074SBarry Smith extern int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *); 51*ea06a074SBarry Smith extern int AODataKeyGetAdjacency(AOData,char *,Mat*); 52*ea06a074SBarry Smith 53*ea06a074SBarry Smith extern int AODataKeyPartition(AOData,char *); 54*ea06a074SBarry Smith 55e852ff30SBarry Smith extern int AODataSegmentAdd(AOData,char*,char *,int, int, int *,void *,PetscDataType); 56e852ff30SBarry Smith extern int AODataSegmentAddIS(AOData,char*,char *,int, IS,void *,PetscDataType); 5731b6eecaSBarry Smith 58*ea06a074SBarry Smith extern int AODataSegmentExists(AOData,char*,char*,PetscTruth*); 59e852ff30SBarry Smith extern int AODataSegmentGetInfo(AOData,char *,char *,int *,int *,int*,PetscDataType*); 6031b6eecaSBarry Smith 61e852ff30SBarry Smith extern int AODataSegmentGet(AOData,char *,char *,int,int*,void **); 62e852ff30SBarry Smith extern int AODataSegmentRestore(AOData,char *,char *,int,int*,void **); 63e852ff30SBarry Smith extern int AODataSegmentGetIS(AOData,char *,char *,IS,void **); 64e852ff30SBarry Smith extern int AODataSegmentRestoreIS(AOData,char *,char *,IS,void **); 6531b6eecaSBarry Smith 66e852ff30SBarry Smith extern int AODataSegmentGetLocal(AOData,char *,char *,int,int*,void **); 67e852ff30SBarry Smith extern int AODataSegmentRestoreLocal(AOData,char *,char *,int,int*,void **); 68e852ff30SBarry Smith extern int AODataSegmentGetLocalIS(AOData,char *,char *,IS,void **); 69e852ff30SBarry Smith extern int AODataSegmentRestoreLocalIS(AOData,char *,char *,IS,void **); 702bdab257SBarry Smith 71e852ff30SBarry Smith extern int AODataSegmentGetReduced(AOData,char *,char *,int,int*,IS *); 72e852ff30SBarry Smith extern int AODataSegmentGetReducedIS(AOData,char *,char *,IS,IS *); 73*ea06a074SBarry Smith extern int AODataSegmentGetExtrema(AOData,char*,char*,void *,void *); 74e852ff30SBarry Smith 75*ea06a074SBarry Smith extern int AODataSegmentPartition(AOData,char *,char *); 762bdab257SBarry Smith 770752156aSBarry Smith extern int AODataView(AOData,Viewer); 780752156aSBarry Smith extern int AODataDestroy(AOData); 79376ee591SBarry Smith 80f2bd0a27SBarry Smith extern int AODataLoadBasic(Viewer,AOData *); 81376ee591SBarry Smith 827588ac45SBarry Smith #endif 837588ac45SBarry Smith 84230e2716SBarry Smith 85