xref: /petsc/include/petsccharacteristic.h (revision 8f6c3df8a08c97a85cebc515e4cf3a15ffff3059)
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