xref: /petsc/include/petscao.h (revision 78d75ff191b869cdb35b2d082fe9de104a423a0c)
1230e2716SBarry Smith /*
230127c82SLois Curfman McInnes   An application ordering is mapping between an application-centric
330127c82SLois Curfman McInnes   ordering (the ordering that is "natural" for the application) and
47588ac45SBarry Smith   the parallel ordering that PETSc uses.
57588ac45SBarry Smith */
60a835dfdSSatish Balay #if !defined(__PETSCAO_H)
70a835dfdSSatish Balay #define __PETSCAO_H
80a835dfdSSatish Balay #include "petscis.h"
90a835dfdSSatish Balay #include "petscmat.h"
10e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN
117588ac45SBarry Smith 
124ebda54eSMatthew Knepley typedef enum {AO_BASIC=0, AO_ADVANCED, AO_MAPPING, AO_NEW} AOType;
137588ac45SBarry Smith 
14b9617806SBarry Smith /*S
15b9617806SBarry Smith      AO - Abstract PETSc object that manages mapping between different global numbering
16b9617806SBarry Smith 
17b9617806SBarry Smith    Level: intermediate
18b9617806SBarry Smith 
19b9617806SBarry Smith   Concepts: global numbering
20b9617806SBarry Smith 
21b9617806SBarry Smith .seealso:  AOCreateBasic(), AOCreateBasicIS(), AOPetscToApplication(), AOView()
22b9617806SBarry Smith S*/
231ac94ccfSSatish Balay typedef struct _p_AO* AO;
247588ac45SBarry Smith 
258ba1e511SMatthew Knepley /* Logging support */
262f2e5d10SKris Buschelman extern PetscCookie PETSCDM_DLLEXPORT AO_COOKIE, AODATA_COOKIE;
278ba1e511SMatthew Knepley 
282f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT DMInitializePackage(const char[]);
298ba1e511SMatthew Knepley 
302f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateBasic(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
312f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateBasicIS(IS,IS,AO*);
327588ac45SBarry Smith 
332f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateMapping(MPI_Comm,PetscInt,const PetscInt[],const PetscInt[],AO*);
342f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOCreateMappingIS(IS,IS,AO*);
354ebda54eSMatthew Knepley 
362f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOView(AO,PetscViewer);
372f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODestroy(AO);
384ebda54eSMatthew Knepley 
392f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AORegister_Private(const char [], const char [], const char [], PetscErrorCode (*)(AO));
404ebda54eSMatthew Knepley #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
414ebda54eSMatthew Knepley #define AORegister(a,b,c,d) AORegister_Private(a,b,c,0)
424ebda54eSMatthew Knepley #else
434ebda54eSMatthew Knepley #define AORegister(a,b,c,d) AORegister_Private(a,b,c,d)
444ebda54eSMatthew Knepley #endif
454ebda54eSMatthew Knepley 
462f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplication(AO,PetscInt,PetscInt[]);
472f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetsc(AO,PetscInt,PetscInt[]);
482f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplicationIS(AO,IS);
492f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetscIS(AO,IS);
507588ac45SBarry Smith 
512f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
522f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
532f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
542f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);
554ebda54eSMatthew Knepley 
562f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOMappingHasApplicationIndex(AO, PetscInt, PetscTruth *);
572f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOMappingHasPetscIndex(AO, PetscInt, PetscTruth *);
587588ac45SBarry Smith 
59376ee591SBarry Smith /* ----------------------------------------------------*/
60376ee591SBarry Smith 
6156bde9e2SSatish Balay /* aodatabasic.c, aodata.c inpututils.c */
6256bde9e2SSatish Balay 
630752156aSBarry Smith typedef enum {AODATA_BASIC=0,AODATA_ADVANCED=1} AODataType;
64376ee591SBarry Smith 
65b9617806SBarry Smith /*S
66b9617806SBarry Smith      AOData - Abstract PETSc object that manages complex parallel data structures intended to
67b9617806SBarry Smith          hold grid information, etc
68b9617806SBarry Smith 
69*78d75ff1SSatish Balay    Level: deprecated
70b9617806SBarry Smith 
71b9617806SBarry Smith .seealso:  AODataCreateBasic()
72b9617806SBarry Smith S*/
730752156aSBarry Smith typedef struct _p_AOData* AOData;
740752156aSBarry Smith 
752f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataCreateBasic(MPI_Comm,AOData *);
762f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataView(AOData,PetscViewer);
772f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataDestroy(AOData);
782f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataLoadBasic(PetscViewer,AOData *);
792f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataGetInfo(AOData,PetscInt*,char ***);
8031b6eecaSBarry Smith 
812f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyAdd(AOData,const char[],PetscInt,PetscInt);
822f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyRemove(AOData,const char[]);
83b2487710SBarry Smith 
842f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeySetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping);
852f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetLocalToGlobalMapping(AOData,const char[],ISLocalToGlobalMapping*);
862f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyRemap(AOData,const char[],AO);
8731b6eecaSBarry Smith 
882f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyExists(AOData,const char[],PetscTruth*);
892f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetInfo(AOData,const char[],PetscInt *,PetscInt*,PetscInt*,char***);
902f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetOwnershipRange(AOData,const char[],PetscInt *,PetscInt*);
91ea06a074SBarry Smith 
922f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetNeighbors(AOData,const char[],PetscInt,PetscInt*,IS *);
932f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetNeighborsIS(AOData,const char[],IS,IS *);
942f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetAdjacency(AOData,const char[],Mat*);
95ea06a074SBarry Smith 
962f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetActive(AOData,const char[],const char[],PetscInt,PetscInt *,PetscInt,IS*);
972f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetActiveIS(AOData,const char[],const char[],IS,PetscInt,IS*);
982f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetActiveLocal(AOData,const char[],const char[],PetscInt,PetscInt *,PetscInt,IS*);
992f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyGetActiveLocalIS(AOData,const char[],const char[],IS,PetscInt,IS*);
10035c17c5bSBarry Smith 
1012f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataKeyPartition(AOData,const char[]);
102ea06a074SBarry Smith 
1032f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentAdd(AOData,const char[],const char[],PetscInt,PetscInt,PetscInt *,void *,PetscDataType);
1042f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentRemove(AOData,const char[],const char[]);
1052f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentAddIS(AOData,const char[],const char[],PetscInt,IS,void *,PetscDataType);
10631b6eecaSBarry Smith 
1072f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentExists(AOData,const char[],const char[],PetscTruth*);
1082f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetInfo(AOData,const char[],const char[],PetscInt *,PetscDataType*);
10931b6eecaSBarry Smith 
1102f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGet(AOData,const char[],const char[],PetscInt,PetscInt*,void **);
1112f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentRestore(AOData,const char[],const char[],PetscInt,PetscInt*,void **);
1122f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetIS(AOData,const char[],const char[],IS,void **);
1132f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentRestoreIS(AOData,const char[],const char[],IS,void **);
11431b6eecaSBarry Smith 
1152f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetLocal(AOData,const char[],const char[],PetscInt,PetscInt*,void **);
1162f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentRestoreLocal(AOData,const char[],const char[],PetscInt,PetscInt*,void **);
1172f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetLocalIS(AOData,const char[],const char[],IS,void **);
1182f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentRestoreLocalIS(AOData,const char[],const char[],IS,void **);
1192bdab257SBarry Smith 
1202f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetReduced(AOData,const char[],const char[],PetscInt,PetscInt*,IS *);
1212f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetReducedIS(AOData,const char[],const char[],IS,IS *);
1222f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentGetExtrema(AOData,const char[],const char[],void *,void *);
123e852ff30SBarry Smith 
1242f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataSegmentPartition(AOData,const char[],const char[]);
1252bdab257SBarry Smith 
1262f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataPartitionAndSetupLocal(AOData,const char[],const char[],IS*,IS*,ISLocalToGlobalMapping*);
1272f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AODataAliasAdd(AOData,const char[],const char[]);
1281ec7a0b9SBarry Smith 
1291ec7a0b9SBarry Smith 
13095fbd943SSatish Balay typedef struct _n_AOData2dGrid* AOData2dGrid;
1312f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridAddNode(AOData2dGrid, PetscReal, PetscReal, PetscInt *);
1322f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridInput(AOData2dGrid,PetscDraw);
1332f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridFlipCells(AOData2dGrid);
1342f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridComputeNeighbors(AOData2dGrid);
1352f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridComputeVertexBoundary(AOData2dGrid);
1362f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridDraw(AOData2dGrid,PetscDraw);
1372f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridDestroy(AOData2dGrid);
1382f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridCreate(AOData2dGrid*);
1392f2e5d10SKris Buschelman EXTERN PetscErrorCode PETSCDM_DLLEXPORT AOData2dGridToAOData(AOData2dGrid,AOData*);
1401ec7a0b9SBarry Smith 
141e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END
1427588ac45SBarry Smith #endif
143