ABLATE Source Documentation  0.12.34
rocketMonitor.hpp
1 #ifndef ABLATELIBRARY_ROCKETMONITOR_HPP
2 #define ABLATELIBRARY_ROCKETMONITOR_HPP
3 
4 #include <petsc.h>
5 #include "domain/region.hpp"
6 #include "domain/subDomain.hpp"
7 #include "eos/eos.hpp"
8 #include "finiteVolume/boundaryConditions/ghost.hpp"
9 #include "finiteVolume/compressibleFlowFields.hpp"
10 #include "finiteVolume/finiteVolumeSolver.hpp"
11 #include "io/interval/interval.hpp"
12 #include "monitor.hpp"
13 #include "monitors/logs/log.hpp"
14 
15 namespace ablate::monitors {
16 
17 class RocketMonitor : public Monitor {
18  private:
19  static PetscErrorCode OutputRocket(TS ts, PetscInt step, PetscReal crtime, Vec u, void* ctx);
20  const std::string name;
21  const std::shared_ptr<domain::Region> region;
22  const std::shared_ptr<domain::Region> fieldBoundary;
23  const std::shared_ptr<eos::EOS> eos;
24  eos::ThermodynamicFunction computePressure;
25  const std::shared_ptr<logs::Log> log;
26  const std::shared_ptr<io::interval::Interval> interval;
27  double referencePressure;
28 
29  public:
30  RocketMonitor(const std::string name, std::shared_ptr<domain::Region> region, std::shared_ptr<domain::Region> fieldBoundary, std::shared_ptr<eos::EOS> eos,
31  const std::shared_ptr<logs::Log>& log = {}, const std::shared_ptr<io::interval::Interval>& interval = {}, double referencePressure = {});
32  void Register(std::shared_ptr<solver::Solver>) override;
33  PetscMonitorFunction GetPetscFunction() override { return OutputRocket; }
34 };
35 
36 } // namespace ablate::monitors
37 #endif // ABLATELIBRARY_ROCKETMONITOR_HPP
Definition: monitor.hpp:12
Definition: rocketMonitor.hpp:17
PetscMonitorFunction GetPetscFunction() override
Definition: rocketMonitor.hpp:33
void Register(std::shared_ptr< solver::Solver >) override
Definition: rocketMonitor.cpp:19
Definition: boundarySolverMonitor.hpp:16