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