source.hpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef SOURCE_HPP
  2. #define SOURCE_HPP
  3. #include <list>
  4. #include <fstream>
  5. #include <iostream>
  6. #include "math/algo.hpp"
  7. using namespace std;
  8. class Pump{
  9. public:
  10. double amplitude_init;
  11. double left_init,right_init,bottom_init,top_init;
  12. double delta_left_init,delta_right_init,delta_bottom_init,delta_top_init;
  13. double amplitude_final;
  14. double left_final,right_final,bottom_final,top_final;
  15. double delta_left_final,delta_right_final,delta_bottom_final,delta_top_final;
  16. double get_amplitude(double t);
  17. double get_left(double t);
  18. double get_right(double t);
  19. double get_top(double t);
  20. double get_bottom(double t);
  21. double get_left_delta(double t);
  22. double get_right_delta(double t);
  23. double get_top_delta(double t);
  24. double get_bottom_delta(double t);
  25. Pump();
  26. void save(fstream& file);
  27. void load(fstream& file);
  28. double value(double x,double z,double t);
  29. };
  30. class Cloud{
  31. public:
  32. double amplitude_init;
  33. double left_init,right_init;
  34. double delta_left_init,delta_right_init;
  35. double amplitude_final;
  36. double left_final,right_final;
  37. double delta_left_final,delta_right_final;
  38. double get_amplitude(double t);
  39. double get_amplitude_max();
  40. double get_left(double t);
  41. double get_right(double t);
  42. double get_left_delta(double t);
  43. double get_right_delta(double t);
  44. Cloud();
  45. void save(fstream& file);
  46. void load(fstream& file);
  47. };
  48. class Source{
  49. public:
  50. list<Pump*> pumps;
  51. list<Cloud*> clouds;
  52. Source();
  53. ~Source();
  54. Pump* addPump();
  55. Cloud* addCloud();
  56. void removePump(Pump* pump);
  57. void removeCloud(Cloud* cloud);
  58. void save(fstream& file);
  59. void load(fstream& file);
  60. };
  61. inline Source::Source(){
  62. }
  63. #endif