Actual source code: petscao.h

  1: /* $Id: petscao.h,v 1.27 2001/08/07 21:31:33 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
 12: PETSC_EXTERN_CXX_BEGIN

 14: typedef enum {AO_BASIC=0, AO_ADVANCED, AO_MAPPING, AO_NEW} AOType;

 16: /*S
 17:      AO - Abstract PETSc object that manages mapping between different global numbering

 19:    Level: intermediate

 21:   Concepts: global numbering

 23: .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
 24: S*/
 25: typedef struct _p_AO* AO;

 27: /* Logging support */
 28: extern int AO_COOKIE;
 29: extern int AODATA_COOKIE;
 30: enum {AO_PetscToApplication, AO_ApplicationToPetsc, AO_MAX_EVENTS};
 31: extern int AOEvents[AO_MAX_EVENTS];
 32: #define AOLogEventBegin(e,o1,o2,o3,o4) PetscLogEventBegin(AOEvents[e],o1,o2,o3,o4)
 33: #define AOLogEventEnd(e,o1,o2,o3,o4)   PetscLogEventEnd(AOEvents[e],o1,o2,o3,o4)

 35: EXTERN int DMInitializePackage(const char[]);

 37: EXTERN int AOCreateBasic(MPI_Comm,int,const int[],const int[],AO*);
 38: EXTERN int AOCreateBasicIS(IS,IS,AO*);

 40: EXTERN int AOCreateMapping(MPI_Comm,int,const int[],const int[],AO*);
 41: EXTERN int AOCreateMappingIS(IS,IS,AO*);

 43: EXTERN int AOView(AO,PetscViewer);
 44: EXTERN int AODestroy(AO);

 46: EXTERN int AORegister_Private(const char [], const char [], const char [], int (*)(AO));
 47: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
 48: #define AORegister(a,b,c,d) AORegister_Private(a,b,c,0)
 49: #else
 50: #define AORegister(a,b,c,d) AORegister_Private(a,b,c,d)
 51: #endif

 53: EXTERN int AOPetscToApplication(AO,int,int[]);
 54: EXTERN int AOApplicationToPetsc(AO,int,int[]);
 55: EXTERN int AOPetscToApplicationIS(AO,IS);
 56: EXTERN int AOApplicationToPetscIS(AO,IS);

 58: EXTERN int AOPetscToApplicationPermuteInt(AO, int, int[]);
 59: EXTERN int AOApplicationToPetscPermuteInt(AO, int, int[]);
 60: EXTERN int AOPetscToApplicationPermuteReal(AO, int, double[]);
 61: EXTERN int AOApplicationToPetscPermuteReal(AO, int, double[]);

 63: EXTERN int AOMappingHasApplicationIndex(AO, int, PetscTruth *);
 64: EXTERN int AOMappingHasPetscIndex(AO, int, PetscTruth *);

 66: /* ----------------------------------------------------*/

 68: typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;

 70: /*S
 71:      AOData - Abstract PETSc object that manages complex parallel data structures intended to 
 72:          hold grid information, etc

 74:    Level: advanced

 76: .seealso:  AODataCreateBasic()
 77: S*/
 78: typedef struct _p_AOData* AOData;

 80: EXTERN int AODataCreateBasic(MPI_Comm,AOData *);
 81: EXTERN int AODataView(AOData,PetscViewer);
 82: EXTERN int AODataDestroy(AOData);
 83: EXTERN int AODataLoadBasic(PetscViewer,AOData *);
 84: EXTERN int AODataGetInfo(AOData,int*,char ***);

 86: EXTERN int AODataKeyAdd(AOData,const char[],int,int);
 87: EXTERN int AODataKeyRemove(AOData,const char[]);

 89: EXTERN int AODataKeySetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping);
 90: EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping*);
 91: EXTERN int AODataKeyRemap(AOData,const char[],AO);

 93: EXTERN int AODataKeyExists(AOData,const char[],PetscTruth*);
 94: EXTERN int AODataKeyGetInfo(AOData,const char[],int *,int*,int*,char***);
 95: EXTERN int AODataKeyGetOwnershipRange(AOData,const char[],int *,int*);

 97: EXTERN int AODataKeyGetNeighbors(AOData,const char[],int,int*,IS *);
 98: EXTERN int AODataKeyGetNeighborsIS(AOData,const char[],IS,IS *);
 99: EXTERN int AODataKeyGetAdjacency(AOData,const char[],Mat*);

101: EXTERN int AODataKeyGetActive(AOData,const char[],const char[],int,int *,int,IS*);
102: EXTERN int AODataKeyGetActiveIS(AOData,const char[],const char[],IS,int,IS*);
103: EXTERN int AODataKeyGetActiveLocal(AOData,const char[],const char[],int,int *,int,IS*);
104: EXTERN int AODataKeyGetActiveLocalIS(AOData,const char[],const char[],IS,int,IS*);

106: EXTERN int AODataKeyPartition(AOData,const char[]);

108: EXTERN int AODataSegmentAdd(AOData,const char[],const char[],int,int,int *,void *,PetscDataType);
109: EXTERN int AODataSegmentRemove(AOData,const char[],const char[]);
110: EXTERN int AODataSegmentAddIS(AOData,const char[],const char[],int,IS,void *,PetscDataType);

112: EXTERN int AODataSegmentExists(AOData,const char[],const char[],PetscTruth*);
113: EXTERN int AODataSegmentGetInfo(AOData,const char[],const char[],int *,PetscDataType*);

115: EXTERN int AODataSegmentGet(AOData,const char[],const char[],int,int*,void **);
116: EXTERN int AODataSegmentRestore(AOData,const char[],const char[],int,int*,void **);
117: EXTERN int AODataSegmentGetIS(AOData,const char[],const char[],IS,void **);
118: EXTERN int AODataSegmentRestoreIS(AOData,const char[],const char[],IS,void **);

120: EXTERN int AODataSegmentGetLocal(AOData,const char[],const char[],int,int*,void **);
121: EXTERN int AODataSegmentRestoreLocal(AOData,const char[],const char[],int,int*,void **);
122: EXTERN int AODataSegmentGetLocalIS(AOData,const char[],const char[],IS,void **);
123: EXTERN int AODataSegmentRestoreLocalIS(AOData,const char[],const char[],IS,void **);

125: EXTERN int AODataSegmentGetReduced(AOData,const char[],const char[],int,int*,IS *);
126: EXTERN int AODataSegmentGetReducedIS(AOData,const char[],const char[],IS,IS *);
127: EXTERN int AODataSegmentGetExtrema(AOData,const char[],const char[],void *,void *);

129: EXTERN int AODataSegmentPartition(AOData,const char[],const char[]);

131: EXTERN int AODataPartitionAndSetupLocal(AOData,const char[],const char[],IS*,IS*,ISLocalToGlobalMapping*);
132: EXTERN int AODataAliasAdd(AOData,const char[],const char[]);

134: 
135: typedef struct _p_AOData2dGrid *AOData2dGrid;
136: EXTERN int AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
137: EXTERN int AOData2dGridInput(AOData2dGrid,PetscDraw);
138: EXTERN int AOData2dGridFlipCells(AOData2dGrid);
139: EXTERN int AOData2dGridComputeNeighbors(AOData2dGrid);
140: EXTERN int AOData2dGridComputeVertexBoundary(AOData2dGrid);
141: EXTERN int AOData2dGridDraw(AOData2dGrid,PetscDraw);
142: EXTERN int AOData2dGridDestroy(AOData2dGrid);
143: EXTERN int AOData2dGridCreate(AOData2dGrid*);
144: EXTERN int AOData2dGridToAOData(AOData2dGrid,AOData*);

146: PETSC_EXTERN_CXX_END
147: #endif