Actual source code: petscao.h

  1: /* $Id: petscao.h,v 1.26 2001/04/10 19:37:14 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"

 13: typedef enum {AO_BASIC=0,AO_ADVANCED=1} AOType;

 15: #define AO_COOKIE PETSC_COOKIE+20

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

 20:    Level: intermediate

 22:   Concepts: global numbering

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

 28: EXTERN int AOCreateBasic(MPI_Comm,int,int*,int*,AO*);
 29: EXTERN int AOCreateBasicIS(IS,IS,AO*);

 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);

 36: EXTERN int AODestroy(AO);
 37: EXTERN int AOView(AO,PetscViewer);

 39: /* ----------------------------------------------------*/

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

 43: #define AODATA_COOKIE PETSC_COOKIE+24

 45: /*S
 46:      AOData - Abstract PETSc object that manages complex parallel data structures intended to 
 47:          hold grid information, etc

 49:    Level: advanced

 51: .seealso:  AODataCreateBasic()
 52: S*/
 53: typedef struct _p_AOData* AOData;

 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 ***);

 61: EXTERN int AODataKeyAdd(AOData,char*,int,int);
 62: EXTERN int AODataKeyRemove(AOData,char*);

 64: EXTERN int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping);
 65: EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*);
 66: EXTERN int AODataKeyRemap(AOData,char *,AO);

 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*);

 72: EXTERN int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *);
 73: EXTERN int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *);
 74: EXTERN int AODataKeyGetAdjacency(AOData,char *,Mat*);

 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*);

 81: EXTERN int AODataKeyPartition(AOData,char *);

 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);

 87: EXTERN int AODataSegmentExists(AOData,char*,char*,PetscTruth*);
 88: EXTERN int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*);

 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 **);

 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 **);

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 *);

104: EXTERN int AODataSegmentPartition(AOData,char *,char *);

106: EXTERN int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*);
107: EXTERN int AODataAliasAdd(AOData,char *,char *);

109: 
110: typedef struct _p_AOData2dGrid *AOData2dGrid;
111: EXTERN int AOData2dGridAddNode(AOData2dGrid, double, double, 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*);

121: #endif