1 /* $Id: petscao.h,v 1.27 2001/08/07 21:31:33 bsmith Exp $ */ 2 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 */ 8 #if !defined(__PETSCAO_H) 9 #define __PETSCAO_H 10 #include "petscis.h" 11 #include "petscmat.h" 12 13 typedef enum {AO_BASIC=0,AO_ADVANCED=1} AOType; 14 15 #define AO_COOKIE PETSC_COOKIE+20 16 17 /*S 18 AO - Abstract PETSc object that manages mapping between different global numbering 19 20 Level: intermediate 21 22 Concepts: global numbering 23 24 .seealso: AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView() 25 S*/ 26 typedef struct _p_AO* AO; 27 28 EXTERN int AOCreateBasic(MPI_Comm,int,int*,int*,AO*); 29 EXTERN int AOCreateBasicIS(IS,IS,AO*); 30 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); 35 36 EXTERN int AODestroy(AO); 37 EXTERN int AOView(AO,PetscViewer); 38 39 /* ----------------------------------------------------*/ 40 41 typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType; 42 43 #define AODATA_COOKIE PETSC_COOKIE+24 44 45 /*S 46 AOData - Abstract PETSc object that manages complex parallel data structures intended to 47 hold grid information, etc 48 49 Level: advanced 50 51 .seealso: AODataCreateBasic() 52 S*/ 53 typedef struct _p_AOData* AOData; 54 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 ***); 60 61 EXTERN int AODataKeyAdd(AOData,char*,int,int); 62 EXTERN int AODataKeyRemove(AOData,char*); 63 64 EXTERN int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping); 65 EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*); 66 EXTERN int AODataKeyRemap(AOData,char *,AO); 67 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*); 71 72 EXTERN int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *); 73 EXTERN int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *); 74 EXTERN int AODataKeyGetAdjacency(AOData,char *,Mat*); 75 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*); 80 81 EXTERN int AODataKeyPartition(AOData,char *); 82 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); 86 87 EXTERN int AODataSegmentExists(AOData,char*,char*,PetscTruth*); 88 EXTERN int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*); 89 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 **); 94 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 **); 99 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 *); 103 104 EXTERN int AODataSegmentPartition(AOData,char *,char *); 105 106 EXTERN int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*); 107 EXTERN int AODataAliasAdd(AOData,char *,char *); 108 109 110 typedef struct _p_AOData2dGrid *AOData2dGrid; 111 EXTERN int AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, 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*); 120 121 #endif 122 123 124