xref: /petsc/include/petscao.h (revision e9fa29b77eaf32efadba30e98aa12b45e655e5d0)
173f4d377SMatthew Knepley /* $Id: petscao.h,v 1.27 2001/08/07 21:31:33 bsmith Exp $ */
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"
12*e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN
137588ac45SBarry Smith 
144ebda54eSMatthew Knepley typedef enum {AO_BASIC=0, AO_ADVANCED, AO_MAPPING, AO_NEW} AOType;
157588ac45SBarry Smith 
16b9617806SBarry Smith /*S
17b9617806SBarry Smith      AO - Abstract PETSc object that manages mapping between different global numbering
18b9617806SBarry Smith 
19b9617806SBarry Smith    Level: intermediate
20b9617806SBarry Smith 
21b9617806SBarry Smith   Concepts: global numbering
22b9617806SBarry Smith 
23b9617806SBarry Smith .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
24b9617806SBarry Smith S*/
251ac94ccfSSatish Balay typedef struct _p_AO* AO;
267588ac45SBarry Smith 
274ebda54eSMatthew Knepley #define AO_SER_BASIC_BINARY   "basic_binary"
284ebda54eSMatthew Knepley #define AO_SER_MAPPING_BINARY "mapping_binary"
294ebda54eSMatthew Knepley typedef char *AOSerializeType;
304ebda54eSMatthew Knepley 
318ba1e511SMatthew Knepley /* Logging support */
328ba1e511SMatthew Knepley extern int AO_COOKIE;
338ba1e511SMatthew Knepley extern int AODATA_COOKIE;
348ba1e511SMatthew Knepley enum {AO_PetscToApplication, AO_ApplicationToPetsc, AO_MAX_EVENTS};
358ba1e511SMatthew Knepley extern int AOEvents[AO_MAX_EVENTS];
368ba1e511SMatthew Knepley #define AOLogEventBegin(e,o1,o2,o3,o4) PetscLogEventBegin(AOEvents[e],o1,o2,o3,o4)
378ba1e511SMatthew Knepley #define AOLogEventEnd(e,o1,o2,o3,o4)   PetscLogEventEnd(AOEvents[e],o1,o2,o3,o4)
388ba1e511SMatthew Knepley 
398ba1e511SMatthew Knepley EXTERN int DMInitializePackage(char *);
408ba1e511SMatthew Knepley 
41707b6823SBarry Smith EXTERN int AOCreateBasic(MPI_Comm,int,const int[],const int[],AO*);
42ca44d042SBarry Smith EXTERN int AOCreateBasicIS(IS,IS,AO*);
437588ac45SBarry Smith 
44707b6823SBarry Smith EXTERN int AOCreateMapping(MPI_Comm,int,const int[],const int[],AO*);
454ebda54eSMatthew Knepley EXTERN int AOCreateMappingIS(IS,IS,AO*);
464ebda54eSMatthew Knepley 
474ebda54eSMatthew Knepley EXTERN int AOView(AO,PetscViewer);
484ebda54eSMatthew Knepley EXTERN int AODestroy(AO);
494ebda54eSMatthew Knepley 
504ebda54eSMatthew Knepley EXTERN PetscFList AOSerializeList;
514ebda54eSMatthew Knepley EXTERN int AOSerializeRegisterAll(const char []);
5265804fbbSSatish Balay EXTERN int AOSerializeRegisterDestroy(void);
534ebda54eSMatthew Knepley EXTERN int AOSerializeRegisterAllCalled;
544ebda54eSMatthew Knepley EXTERN int AOSerialize(MPI_Comm, AO *, PetscViewer, PetscTruth);
554ebda54eSMatthew Knepley EXTERN int AOSetSerializeType(AO, AOSerializeType);
564ebda54eSMatthew Knepley 
574ebda54eSMatthew Knepley EXTERN int AORegister_Private(const char [], const char [], const char [], int (*)(AO));
584ebda54eSMatthew Knepley EXTERN int AOSerializeRegister_Private(const char [], const char [], const char [], int (*)(MPI_Comm, AO *, PetscViewer, PetscTruth));
594ebda54eSMatthew Knepley #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
604ebda54eSMatthew Knepley #define AORegister(a,b,c,d) AORegister_Private(a,b,c,0)
614ebda54eSMatthew Knepley #define AOSerializeRegister(a,b,c,d) AOSerializeRegister_Private(a,b,c,0)
624ebda54eSMatthew Knepley #else
634ebda54eSMatthew Knepley #define AORegister(a,b,c,d) AORegister_Private(a,b,c,d)
644ebda54eSMatthew Knepley #define AOSerializeRegister(a,b,c,d) AOSerializeRegister_Private(a,b,c,d)
654ebda54eSMatthew Knepley #endif
664ebda54eSMatthew Knepley 
67707b6823SBarry Smith EXTERN int AOPetscToApplication(AO,int,int[]);
68707b6823SBarry Smith EXTERN int AOApplicationToPetsc(AO,int,int[]);
69ca44d042SBarry Smith EXTERN int AOPetscToApplicationIS(AO,IS);
70ca44d042SBarry Smith EXTERN int AOApplicationToPetscIS(AO,IS);
717588ac45SBarry Smith 
72707b6823SBarry Smith EXTERN int AOPetscToApplicationPermuteInt(AO, int, int[]);
73707b6823SBarry Smith EXTERN int AOApplicationToPetscPermuteInt(AO, int, int[]);
74707b6823SBarry Smith EXTERN int AOPetscToApplicationPermuteReal(AO, int, double[]);
75707b6823SBarry Smith EXTERN int AOApplicationToPetscPermuteReal(AO, int, double[]);
764ebda54eSMatthew Knepley 
774ebda54eSMatthew Knepley EXTERN int AOMappingHasApplicationIndex(AO, int, PetscTruth *);
784ebda54eSMatthew Knepley EXTERN int AOMappingHasPetscIndex(AO, int, PetscTruth *);
797588ac45SBarry Smith 
80376ee591SBarry Smith /* ----------------------------------------------------*/
81376ee591SBarry Smith 
820752156aSBarry Smith typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
83376ee591SBarry Smith 
84b9617806SBarry Smith /*S
85b9617806SBarry Smith      AOData - Abstract PETSc object that manages complex parallel data structures intended to
86b9617806SBarry Smith          hold grid information, etc
87b9617806SBarry Smith 
88b9617806SBarry Smith    Level: advanced
89b9617806SBarry Smith 
90b9617806SBarry Smith .seealso:  AODataCreateBasic()
91b9617806SBarry Smith S*/
920752156aSBarry Smith typedef struct _p_AOData* AOData;
930752156aSBarry Smith 
94ca44d042SBarry Smith EXTERN int AODataCreateBasic(MPI_Comm,AOData *);
95b0a32e0cSBarry Smith EXTERN int AODataView(AOData,PetscViewer);
96ca44d042SBarry Smith EXTERN int AODataDestroy(AOData);
97b0a32e0cSBarry Smith EXTERN int AODataLoadBasic(PetscViewer,AOData *);
98ca44d042SBarry Smith EXTERN int AODataGetInfo(AOData,int*,char ***);
9931b6eecaSBarry Smith 
100ca44d042SBarry Smith EXTERN int AODataKeyAdd(AOData,char*,int,int);
101ca44d042SBarry Smith EXTERN int AODataKeyRemove(AOData,char*);
102b2487710SBarry Smith 
103ca44d042SBarry Smith EXTERN int AODataKeySetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping);
104ca44d042SBarry Smith EXTERN int AODataKeyGetLocalToGlobalMapping(AOData,char*,ISLocalToGlobalMapping*);
105ca44d042SBarry Smith EXTERN int AODataKeyRemap(AOData,char *,AO);
10631b6eecaSBarry Smith 
107ca44d042SBarry Smith EXTERN int AODataKeyExists(AOData,char*,PetscTruth*);
108ca44d042SBarry Smith EXTERN int AODataKeyGetInfo(AOData,char *,int *,int*,int*,char***);
109ca44d042SBarry Smith EXTERN int AODataKeyGetOwnershipRange(AOData,char *,int *,int*);
110ea06a074SBarry Smith 
111ca44d042SBarry Smith EXTERN int AODataKeyGetNeighbors(AOData,char *,int,int*,IS *);
112ca44d042SBarry Smith EXTERN int AODataKeyGetNeighborsIS(AOData,char *,IS,IS *);
113ca44d042SBarry Smith EXTERN int AODataKeyGetAdjacency(AOData,char *,Mat*);
114ea06a074SBarry Smith 
115ca44d042SBarry Smith EXTERN int AODataKeyGetActive(AOData,char*,char*,int,int *,int,IS*);
116ca44d042SBarry Smith EXTERN int AODataKeyGetActiveIS(AOData,char*,char*,IS,int,IS*);
117ca44d042SBarry Smith EXTERN int AODataKeyGetActiveLocal(AOData,char*,char*,int,int *,int,IS*);
118ca44d042SBarry Smith EXTERN int AODataKeyGetActiveLocalIS(AOData,char*,char*,IS,int,IS*);
11935c17c5bSBarry Smith 
120ca44d042SBarry Smith EXTERN int AODataKeyPartition(AOData,char *);
121ea06a074SBarry Smith 
122ca44d042SBarry Smith EXTERN int AODataSegmentAdd(AOData,char*,char *,int,int,int *,void *,PetscDataType);
123ca44d042SBarry Smith EXTERN int AODataSegmentRemove(AOData,char *,char *);
124ca44d042SBarry Smith EXTERN int AODataSegmentAddIS(AOData,char*,char *,int,IS,void *,PetscDataType);
12531b6eecaSBarry Smith 
126ca44d042SBarry Smith EXTERN int AODataSegmentExists(AOData,char*,char*,PetscTruth*);
127ca44d042SBarry Smith EXTERN int AODataSegmentGetInfo(AOData,char *,char *,int *,PetscDataType*);
12831b6eecaSBarry Smith 
129ca44d042SBarry Smith EXTERN int AODataSegmentGet(AOData,char *,char *,int,int*,void **);
130ca44d042SBarry Smith EXTERN int AODataSegmentRestore(AOData,char *,char *,int,int*,void **);
131ca44d042SBarry Smith EXTERN int AODataSegmentGetIS(AOData,char *,char *,IS,void **);
132ca44d042SBarry Smith EXTERN int AODataSegmentRestoreIS(AOData,char *,char *,IS,void **);
13331b6eecaSBarry Smith 
134ca44d042SBarry Smith EXTERN int AODataSegmentGetLocal(AOData,char *,char *,int,int*,void **);
135ca44d042SBarry Smith EXTERN int AODataSegmentRestoreLocal(AOData,char *,char *,int,int*,void **);
136ca44d042SBarry Smith EXTERN int AODataSegmentGetLocalIS(AOData,char *,char *,IS,void **);
137ca44d042SBarry Smith EXTERN int AODataSegmentRestoreLocalIS(AOData,char *,char *,IS,void **);
1382bdab257SBarry Smith 
139ca44d042SBarry Smith EXTERN int AODataSegmentGetReduced(AOData,char *,char *,int,int*,IS *);
140ca44d042SBarry Smith EXTERN int AODataSegmentGetReducedIS(AOData,char *,char *,IS,IS *);
141ca44d042SBarry Smith EXTERN int AODataSegmentGetExtrema(AOData,char*,char*,void *,void *);
142e852ff30SBarry Smith 
143ca44d042SBarry Smith EXTERN int AODataSegmentPartition(AOData,char *,char *);
1442bdab257SBarry Smith 
145ca44d042SBarry Smith EXTERN int AODataPartitionAndSetupLocal(AOData,char*,char*,IS*,IS*,ISLocalToGlobalMapping*);
146ca44d042SBarry Smith EXTERN int AODataAliasAdd(AOData,char *,char *);
1471ec7a0b9SBarry Smith 
1481ec7a0b9SBarry Smith 
1491ec7a0b9SBarry Smith typedef struct _p_AOData2dGrid *AOData2dGrid;
150f6275e2eSBarry Smith EXTERN int AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, int *);
151b0a32e0cSBarry Smith EXTERN int AOData2dGridInput(AOData2dGrid,PetscDraw);
152ca44d042SBarry Smith EXTERN int AOData2dGridFlipCells(AOData2dGrid);
153ca44d042SBarry Smith EXTERN int AOData2dGridComputeNeighbors(AOData2dGrid);
154ca44d042SBarry Smith EXTERN int AOData2dGridComputeVertexBoundary(AOData2dGrid);
155b0a32e0cSBarry Smith EXTERN int AOData2dGridDraw(AOData2dGrid,PetscDraw);
156ca44d042SBarry Smith EXTERN int AOData2dGridDestroy(AOData2dGrid);
157ca44d042SBarry Smith EXTERN int AOData2dGridCreate(AOData2dGrid*);
158ca44d042SBarry Smith EXTERN int AOData2dGridToAOData(AOData2dGrid,AOData*);
1591ec7a0b9SBarry Smith 
160*e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END
1617588ac45SBarry Smith #endif
162