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