xref: /petsc/include/petsccharacteristic.h (revision 6d8694c4fbab79f9439f1ad13c0386ba7ee1ca4b)
130a76a96SBarry Smith /*
230a76a96SBarry Smith    Defines the interface functions for the method of characteristics solvers
330a76a96SBarry Smith */
4a4963045SJacob Faibussowitsch #pragma once
530a76a96SBarry Smith 
62c8e378dSBarry Smith #include <petscvec.h>
7*ce78bad3SBarry Smith #include <petscdmtypes.h>
830a76a96SBarry Smith 
9*ce78bad3SBarry Smith /* MANSEC = TS */
10ac09b921SBarry Smith /* SUBMANSEC = Characteristic */
11ac09b921SBarry Smith 
12607a6623SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicInitializePackage(void);
134bf303faSJacob Faibussowitsch PETSC_EXTERN PetscErrorCode CharacteristicFinalizePackage(void);
1430a76a96SBarry Smith 
1530a76a96SBarry Smith /*S
1630a76a96SBarry Smith      Characteristic - Abstract PETSc object that manages method of characteristics solves
1730a76a96SBarry Smith 
1830a76a96SBarry Smith    Level: beginner
1930a76a96SBarry Smith 
20db781477SPatrick Sanan .seealso: `CharacteristicCreate()`, `CharacteristicSetType()`, `CharacteristicType`, `SNES`, `TS`, `PC`, `KSP`
2130a76a96SBarry Smith S*/
2230a76a96SBarry Smith typedef struct _p_Characteristic *Characteristic;
2330a76a96SBarry Smith 
2476bdecfbSBarry Smith /*J
258f6c3df8SBarry Smith     CharacteristicType - String with the name of a characteristics method.
2630a76a96SBarry Smith 
2730a76a96SBarry Smith    Level: beginner
2830a76a96SBarry Smith 
29db781477SPatrick Sanan .seealso: `CharacteristicSetType()`, `Characteristic`
3076bdecfbSBarry Smith J*/
3119fd82e9SBarry Smith typedef const char *CharacteristicType;
32*ce78bad3SBarry Smith #define CHARACTERISTICDA "da"
3330a76a96SBarry Smith 
34014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicCreate(MPI_Comm, Characteristic *);
3519fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicSetType(Characteristic, CharacteristicType);
36014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetUp(Characteristic);
37014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetVelocityInterpolation(Characteristic, DM, Vec, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(Vec, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *);
38014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetVelocityInterpolationLocal(Characteristic, DM, Vec, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(void *, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *);
39014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetFieldInterpolation(Characteristic, DM, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(Vec, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *);
40014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSetFieldInterpolationLocal(Characteristic, DM, Vec, PetscInt, PetscInt[], PetscErrorCode (*)(void *, PetscReal[], PetscInt, PetscInt[], PetscScalar[], void *), void *);
41014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicSolve(Characteristic, PetscReal, Vec);
42014dd563SJed Brown PETSC_EXTERN PetscErrorCode CharacteristicDestroy(Characteristic *);
4330a76a96SBarry Smith 
44140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList CharacteristicList;
4530a76a96SBarry Smith 
46bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode CharacteristicRegister(const char[], PetscErrorCode (*)(Characteristic));
47