alpha2LD.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // 动力学方程积分部分
  2. // 输入: H: 高度变量
  3. // V: 速度变量
  4. // 输出: Rou:大气密度
  5. // Ma: 马赫数
  6. // 方法:无
  7. // 编写:李兆亭
  8. // 时间:2020 / 11 / 12
  9. #include <iostream>
  10. #include <armadillo>
  11. #include <time.h>
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include "GPM.h"
  15. using namespace std;
  16. using namespace arma;
  17. int alpha2LD(vec alpha_rad, vec Rou, vec Ma, vec V, auxdata1 auxdata, vec* L, vec* D) {
  18. vec Alpha = alpha_rad / datum::pi * 180;
  19. // 1.升力系数
  20. double Cl_P1 = -0.0561020506677546;
  21. double Cl_P2 = -0.00443388562734796;
  22. double Cl_P3 = 0.0500035404141617;
  23. double Cl_P4 = -0.000828657314629258;
  24. double Cl_P5 = 0.000319997795846394;
  25. double Cl_P6 = 0.000369999999999996;
  26. vec Cl = Cl_P1 + Cl_P2*Ma + Cl_P3*Alpha + Cl_P4*Ma % Alpha + Cl_P5*Ma % Ma + Cl_P6*Alpha % Alpha;
  27. // 2.阻力系数
  28. double Cd_P1 = 0.127207748994593;
  29. double Cd_P2 = -0.0154181895105519;
  30. double Cd_P3 = 0.00486212424849702;
  31. double Cd_P4 = -0.000297194388777555;
  32. double Cd_P5 = 0.000571576214733542;
  33. double Cd_P6 = 0.000669999999999999;
  34. vec Cd = Cd_P1 + Cd_P2*Ma + Cd_P3*Alpha + Cd_P4*Ma % Alpha + Cd_P5*Ma % Ma + Cd_P6*Alpha % Alpha;
  35. double Sref = auxdata.Sref;
  36. double M0 = auxdata.M0;
  37. *D = 0.5*Rou % V % V % Cd*Sref / M0;
  38. *L = 0.5*Rou % V % V % Cl*Sref / M0;
  39. return 1;
  40. }