ABLATE Source Documentation  0.12.34
fluxCalculator.hpp
1 #ifndef ABLATELIBRARY_FLUXCALCULATOR_HPP
2 #define ABLATELIBRARY_FLUXCALCULATOR_HPP
3 #include <petsc.h>
4 
5 namespace ablate::finiteVolume::fluxCalculator {
6 
12 enum Direction { LEFT = 1, RIGHT = 2, NA = 0 };
13 using FluxCalculatorFunction = Direction (*)(void* ctx, PetscReal uL, PetscReal aL, PetscReal rhoL, PetscReal pL, PetscReal uR, PetscReal aR, PetscReal rhoR, PetscReal pR, PetscReal* massFlux,
14  PetscReal* p12);
15 
17  public:
18  FluxCalculator() = default;
19  FluxCalculator(FluxCalculator const&) = delete;
20  FluxCalculator& operator=(FluxCalculator const&) = delete;
21  virtual ~FluxCalculator() = default;
22  virtual FluxCalculatorFunction GetFluxCalculatorFunction() = 0;
23  virtual void* GetFluxCalculatorContext() { return nullptr; }
24 };
25 } // namespace ablate::finiteVolume::fluxCalculator
26 #endif // ABLATELIBRARY_FLUXCALCULATOR_HPP