130a76a96SBarry Smith /* 230a76a96SBarry Smith Defines the interface functions for the method of characteristics solvers 330a76a96SBarry Smith */ 430a76a96SBarry Smith #ifndef __PETSCCHARACTERISTICS_H 530a76a96SBarry Smith #define __PETSCCHARACTERISTICS_H 630a76a96SBarry Smith 72c8e378dSBarry Smith #include <petscvec.h> 81e25c274SJed Brown #include <petscdmdatypes.h> 930a76a96SBarry Smith 10607a6623SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicInitializePackage(void); 1130a76a96SBarry Smith 1230a76a96SBarry Smith /*S 1330a76a96SBarry Smith Characteristic - Abstract PETSc object that manages method of characteristics solves 1430a76a96SBarry Smith 1530a76a96SBarry Smith Level: beginner 1630a76a96SBarry Smith 1730a76a96SBarry Smith Concepts: Method of characteristics 1830a76a96SBarry Smith 1930a76a96SBarry Smith .seealso: CharacteristicCreate(), CharacteristicSetType(), CharacteristicType, SNES, TS, PC, KSP 2030a76a96SBarry Smith S*/ 2130a76a96SBarry Smith typedef struct _p_Characteristic *Characteristic; 2230a76a96SBarry Smith 2376bdecfbSBarry Smith /*J 24*8f6c3df8SBarry Smith CharacteristicType - String with the name of a characteristics method. 2530a76a96SBarry Smith 2630a76a96SBarry Smith Level: beginner 2730a76a96SBarry Smith 2830a76a96SBarry Smith .seealso: CharacteristicSetType(), Characteristic 2976bdecfbSBarry Smith J*/ 3030a76a96SBarry Smith #define CHARACTERISTICDA "da" 3119fd82e9SBarry Smith typedef const char* CharacteristicType; 3230a76a96SBarry Smith 33014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicCreate(MPI_Comm, Characteristic *); 3419fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicSetType(Characteristic, CharacteristicType); 35014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetUp(Characteristic); 36014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetVelocityInterpolation(Characteristic, DM, Vec, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(Vec, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *); 37014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetVelocityInterpolationLocal(Characteristic, DM, Vec, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(void *, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *); 38014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetFieldInterpolation(Characteristic, DM, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(Vec, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *); 39014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetFieldInterpolationLocal(Characteristic, DM, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(void *, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *); 40014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSolve(Characteristic, PetscReal, Vec); 41014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicDestroy(Characteristic*); 4230a76a96SBarry Smith 43140e18c1SBarry Smith PETSC_EXTERN PetscBool CharacteristicRegisterAllCalled; 44140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList CharacteristicList; 45607a6623SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicRegisterAll(void); 4630a76a96SBarry Smith 47bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicRegister(const char[],PetscErrorCode (*)(Characteristic)); 4830a76a96SBarry Smith 4930a76a96SBarry Smith #endif /*__PETSCCHARACTERISTICS_H*/ 50