data.hpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #ifndef QT_INPUT_DATA_HPP
  2. #define QT_INPUT_DATA_HPP
  3. #include "input_data.hpp"
  4. #include "math/spline.hpp"
  5. class QtInputData:public InputData{
  6. private:
  7. size_t findSoilOver(double y,int x,int x_step);
  8. public:
  9. static constexpr size_t const nmax_Qt=400;
  10. static constexpr size_t const np=10;
  11. static constexpr size_t const np_ov=5;
  12. double depth;
  13. size_t nZ_max;
  14. Point point[3*np+np_ov];
  15. Spline spline_soil;
  16. Spline spline_bot;
  17. Spline spline_sat;
  18. QtInputData();
  19. ~QtInputData();
  20. void initSplines();
  21. void initPhysics();
  22. void initGeometry();
  23. void initInitialState();
  24. void updateSplineBot();
  25. void updateSplineSat();
  26. void updateSplineSoil();
  27. void updateGeometry();
  28. void updateInitialState();
  29. void updateOverland();
  30. double evalSplineBot(double x) const;
  31. double evalSplineSat(double x) const;
  32. double evalSplineSoil(double x) const;
  33. Tank* addTank();
  34. void removeTank(Tank* tank);
  35. Pump* addPump();
  36. void removePump(Pump* pump);
  37. Cloud* addCloud();
  38. void removeCloud(Cloud* cloud);
  39. void save(fstream& file);
  40. void load(fstream& file);
  41. };
  42. inline void
  43. QtInputData::updateSplineSoil(){
  44. spline_soil.compute();
  45. }
  46. inline void
  47. QtInputData::updateSplineBot(){
  48. spline_bot.compute();
  49. }
  50. inline void
  51. QtInputData::updateSplineSat(){
  52. spline_sat.compute();
  53. }
  54. inline double
  55. QtInputData::evalSplineBot(double x) const{
  56. return spline_bot(x);
  57. }
  58. inline double
  59. QtInputData::evalSplineSat(double x) const{
  60. return spline_sat(x);
  61. }
  62. inline double
  63. QtInputData::evalSplineSoil(double x) const{
  64. return spline_soil(x);
  65. }
  66. inline Tank*
  67. QtInputData::addTank(){
  68. return initial_state->addTank();
  69. }
  70. inline void
  71. QtInputData::removeTank(Tank* tank){
  72. initial_state->removeTank(tank);
  73. }
  74. inline Pump*
  75. QtInputData::addPump(){
  76. return source.addPump();
  77. }
  78. inline void
  79. QtInputData::removePump(Pump* pump){
  80. source.removePump(pump);
  81. }
  82. inline Cloud*
  83. QtInputData::addCloud(){
  84. return source.addCloud();
  85. }
  86. inline void
  87. QtInputData::removeCloud(Cloud* cloud){
  88. source.removeCloud(cloud);
  89. }
  90. #endif