Actual source code: petscao.h

  1: #pragma once

  3: #include <petscis.h>

  5: /* SUBMANSEC = AO */

  7: /*S
  8:      AO - Abstract PETSc object that manages mapping between different global numberings

 10:    Level: intermediate

 12:    Notes:
 13:    An application ordering is usually a mapping between an application-centric
 14:    numbering (the ordering that is "natural" for the application) and
 15:    the parallel numbering that PETSc uses.

 17: .seealso: `AOCreateBasic()`, `AOCreateBasicIS()`, `AOPetscToApplication()`, `AOView()`, `AOApplicationToPetsc()`, `AOType`, `AOSetType()`
 18: S*/
 19: typedef struct _p_AO *AO;

 21: /*J
 22:     AOType - String with the name of a PETSc application ordering type

 24:    Level: beginner

 26: .seealso: `AOSetType()`, `AO`
 27: J*/
 28: typedef const char *AOType;
 29: #define AOBASIC          "basic"
 30: #define AOADVANCED       "advanced"
 31: #define AOMAPPING        "mapping"
 32: #define AOMEMORYSCALABLE "memoryscalable"

 34: /* Logging support */
 35: PETSC_EXTERN PetscClassId AO_CLASSID;

 37: PETSC_EXTERN PetscErrorCode AOInitializePackage(void);
 38: PETSC_EXTERN PetscErrorCode AOFinalizePackage(void);

 40: PETSC_EXTERN PetscErrorCode AOCreate(MPI_Comm, AO *);
 41: PETSC_EXTERN PetscErrorCode AOSetIS(AO, IS, IS);
 42: PETSC_EXTERN PetscErrorCode AOSetFromOptions(AO);

 44: PETSC_EXTERN PetscErrorCode AOCreateBasic(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *);
 45: PETSC_EXTERN PetscErrorCode AOCreateBasicIS(IS, IS, AO *);
 46: PETSC_EXTERN PetscErrorCode AOCreateMemoryScalable(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *);
 47: PETSC_EXTERN PetscErrorCode AOCreateMemoryScalableIS(IS, IS, AO *);
 48: PETSC_EXTERN PetscErrorCode AOCreateMapping(MPI_Comm, PetscInt, const PetscInt[], const PetscInt[], AO *);
 49: PETSC_EXTERN PetscErrorCode AOCreateMappingIS(IS, IS, AO *);

 51: PETSC_EXTERN PetscErrorCode AOView(AO, PetscViewer);
 52: PETSC_EXTERN PetscErrorCode AOViewFromOptions(AO, PetscObject, const char[]);
 53: PETSC_EXTERN PetscErrorCode AODestroy(AO *);

 55: /* Dynamic creation and loading functions */
 56: PETSC_EXTERN PetscErrorCode AOSetType(AO, AOType);
 57: PETSC_EXTERN PetscErrorCode AOGetType(AO, AOType *);

 59: PETSC_EXTERN PetscErrorCode AORegister(const char[], PetscErrorCode (*)(AO));
 60: PETSC_EXTERN PetscErrorCode AORegisterAll(void);

 62: PETSC_EXTERN PetscErrorCode AOPetscToApplication(AO, PetscInt, PetscInt[]);
 63: PETSC_EXTERN PetscErrorCode AOApplicationToPetsc(AO, PetscInt, PetscInt[]);
 64: PETSC_EXTERN PetscErrorCode AOPetscToApplicationIS(AO, IS);
 65: PETSC_EXTERN PetscErrorCode AOApplicationToPetscIS(AO, IS);

 67: PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteInt(AO, PetscInt, PetscInt[]);
 68: PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteInt(AO, PetscInt, PetscInt[]);
 69: PETSC_EXTERN PetscErrorCode AOPetscToApplicationPermuteReal(AO, PetscInt, PetscReal[]);
 70: PETSC_EXTERN PetscErrorCode AOApplicationToPetscPermuteReal(AO, PetscInt, PetscReal[]);

 72: PETSC_EXTERN PetscErrorCode AOMappingHasApplicationIndex(AO, PetscInt, PetscBool *);
 73: PETSC_EXTERN PetscErrorCode AOMappingHasPetscIndex(AO, PetscInt, PetscBool *);