Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <math.h>
  5.  
  6. using namespace std;
  7.  
  8. double nu = 1 * 1e-6;
  9. double y = 73 * 1e-3;
  10. double ro = 1e3;
  11.  
  12. double Patm = 101325;
  13.  
  14. double fr = 26500;
  15. double w = 2 * 3.1415 * fr;
  16.  
  17. double P0 = Patm;
  18.  
  19. double r0 = 0.1;
  20. double h = r0 / 8.86;
  21.  
  22. double dt = 1e-6;
  23.  
  24. double c = 1481;
  25. double k = 1.4;
  26.  
  27. double Pdr = 1.5 * P0;
  28.  
  29. double P(double t)
  30. {
  31.     //return -Pdr * cos(w * t);
  32.  
  33.     return sin(w*t);
  34. }
  35.  
  36. double p_gas(double r, double t)
  37. {
  38.     return (P0 + 2 * y / r0) * pow((pow(r0, 3) - pow(h, 3)) / (pow(r, 3) - pow(h, 3)), k);
  39. }
  40.  
  41. double f(double t, double r, double v)
  42. {
  43.     return v;
  44. }
  45.  
  46. double g(double t, double r, double v)
  47. {
  48.     return (1 / r) * ((1 / ro) * (p_gas(r, t) - P(t) - P0 + (r / c) * (p_gas(r, t + dt) - p_gas(r, t)) / dt - 4 * nu * v / r - 2 * y / r) - 3 * v * v / 2);
  49. }
  50.  
  51. int main()
  52. {
  53.     freopen("out.txt", "w", stdout);
  54.  
  55.     double cc = 5;
  56.  
  57.     double tmin = 0, tmax = 1 * cc;
  58.  
  59.     double N = 1e3 * cc;
  60.     double h = (tmax - tmin) / N;
  61.  
  62.     double t0 = tmin;
  63.     double v0 = 0;
  64.  
  65.     double k[4], l[4];
  66.  
  67.     //cout << "t\tv\tr\tp" << endl;
  68.  
  69.     for (int i = 0; i <= N; i++)
  70.     {
  71.         cerr << i << endl;
  72.        
  73.         cout << P(t0) << endl;
  74.         //cout << t0 << "\t" << v0 << "\t" << r0 << "\t" << P(t0) << endl;
  75.  
  76.         k[0] = h * f(t0, r0, v0);
  77.         l[0] = h * g(t0, r0, v0);
  78.  
  79.         k[1] = h * f(t0 + h / 2, r0 + k[0] / 2, v0 + l[0] / 2);
  80.         l[1] = h * g(t0 + h / 2, r0 + k[0] / 2, v0 + l[0] / 2);
  81.  
  82.         k[2] = h * f(t0 + h / 2, r0 + k[1] / 2, v0 + l[1] / 2);
  83.         l[2] = h * g(t0 + h / 2, r0 + k[1] / 2, v0 + l[1] / 2);
  84.  
  85.         k[3] = h * f(t0 + h / 2, r0 + k[2] / 2, v0 + l[2] / 2);
  86.         l[3] = h * g(t0 + h / 2, r0 + k[2] / 2, v0 + l[2] / 2);
  87.  
  88.         t0 += h;
  89.         r0 += (k[0] + 2 * k[1] + 2 * k[2] + k[3]) / 6;
  90.         v0 += (l[0] + 2 * l[1] + 2 * l[2] + l[3]) / 6;
  91.     }
  92.  
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement