Ejemplo n.º 1
0
        /// <summary>
        /// формула 5.39
        /// </summary>
        /// <param name="wing"></param>
        /// <param name="mach"></param>
        /// <param name="mode">0 - alpha 1- delta</param>
        /// <returns></returns>
        public double Get_X_Fa_or_delta(WingOrient wing, double mach, int mode = 0)
        {
            var x_ak         = wing.X + wing.Wing.X_ak;
            var b_ak         = wing.Wing.B_ak;
            var x_graf       = AeroGraphs.M2min1(mach) * wing.Wing.Lmb_k;
            var y_graf       = wing.Wing.Etta_k;
            var z_graf       = wing.Wing.Lmb_k * wing.Wing.GetTgHiM(0.5);
            var x_Fizkr_shtr = AeroGr.GetV("5_8", x_graf, y_graf, z_graf);

            var x_Fizkr = x_ak + b_ak * x_Fizkr_shtr;

            var d_shtr = wing.Wing.D / wing.Wing.L;
            var f_1    = AeroGr.GetV("5_11", d_shtr);

            f_1 *= 0.5 * wing.Wing.L_k;

            var x_Fdelta = x_Fizkr - f_1 * wing.Wing.GetTgHiM(0.5);

            var x_b       = wing.X + wing.Wing.X_b;
            var b_b       = wing.Wing.B_b;
            var x_Fb_shtr = x_Fizkr_shtr + 0.02 * wing.Wing.Lmb_k * wing.Wing.GetTgHiM(0.5);
            var f_Lhv     = Get_F_Lhv(wing, mach);
            var f_1Lhv    = Get_F_1Lhv(wing, mach);

            var x_Fif = x_b + b_b * x_Fb_shtr * f_Lhv * f_1Lhv;

            var k = mode == 0 ?
                    Get_kaa(wing, mach, Aero_v, Aero_a) :
                    Get_kd0(wing, mach, Aero_v, Aero_a);
            var K = mode == 0 ?
                    Get_Kaa(wing, mach, Aero_v, Aero_a) :
                    Get_kd0(wing, mach, Aero_v, Aero_a);

            return((x_Fizkr + (k - 1) * x_Fdelta + (K - k) * x_Fif) / K);
        }
Ejemplo n.º 2
0
        public double Z_v_shtr(double mach)
        {
            var p1 = Lmb_k * AeroGraphs.M2min1(mach);
            var p2 = Lmb_k * GetTgHiM(0.5);
            var p3 = Etta_k;

            return(AeroGr.GetV("3_16", p1, p2, p3));
        }
Ejemplo n.º 3
0
 public double GetCy1a(double mach)
 {
     if (AeroGr == null)
     {
         return(0.0);
     }
     return(Lmb_k * AeroGr.GetV("3_5", Lmb_k * AeroGraphs.M2min1(mach), Lmb_k * Math.Pow(C_shtr, 1.0 / 3.0), Lmb_k * GetTgHiM(0.5)));
 }
Ejemplo n.º 4
0
        public double Get_X_Fdelta(WingOrient wing, double mach)
        {
            var x_Fizkr = Get_X_Fizkr(wing, mach);
            var d_shtr  = wing.Wing.D / wing.Wing.L;
            var f_1     = AeroGr.GetV("5_11", d_shtr);

            f_1 *= 0.5 * wing.Wing.L_k;
            return(x_Fizkr - f_1 * wing.Wing.GetTgHiM(0.5));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Cx трения
        /// </summary>
        /// <param name="mach">мах</param>
        /// <param name="x_t">относитальная точка  перехода лам погр.слоя в турбул</param>
        /// <param name="v">кинематическая вязкость среды</param>
        /// <param name="a_m">местная скорость звука</param>
        /// <returns></returns>
        public double Cx_tr(double mach, double x_t, double v, double a_m)
        {
            var vel    = mach * a_m;
            var re     = vel * L / v;
            var _2CfM0 = AeroGr.GetV("4_2", re, x_t);
            var etta   = AeroGr.GetV("4_3", mach, x_t);

            return(0.5 * _2CfM0 * etta * S_fuse / S_mid);
        }
Ejemplo n.º 6
0
        public double Get_X_Fizkr(WingOrient wing, double mach)
        {
            var x_ak         = wing.X + wing.Wing.X_ak;
            var b_ak         = wing.Wing.B_ak;
            var x_graf       = AeroGraphs.M2min1(mach) * wing.Wing.Lmb_k;
            var y_graf       = wing.Wing.Etta_k;
            var z_graf       = wing.Wing.Lmb_k * wing.Wing.GetTgHiM(0.5);
            var x_Fizkr_shtr = AeroGr.GetV("5_8", x_graf, y_graf, z_graf);

            return(x_ak + b_ak * x_Fizkr_shtr);
        }
Ejemplo n.º 7
0
        public double Cx_tr(double mach, double x_t, double v, double a_m)
        {
            var vel    = mach * a_m;
            var re     = vel * B_a / v;
            var _2CfM0 = AeroGr.GetV("4_2", re, x_t);
            var etta   = AeroGr.GetV("4_3", mach, x_t);

            var _2Cf = _2CfM0 * etta;

            var etta_c = AeroGr.GetV("4_28", C_shtr, x_t);

            return(_2Cf * etta_c);
        }
Ejemplo n.º 8
0
        public double Get_kt_II_shtr(double mach, double alpha)
        {
            double b_a_I    = W_I.Wing.B_ak;
            double x1       = W_I.X + W_I.Wing.X_ak + b_a_I;
            double x2       = W_II.X + W_II.Wing.X_ak + 0.5 * W_II.Wing.B_ak;
            double x        = x2 - x1;
            double x_shtr   = x / b_a_I;
            double k_t_star = AeroGr.GetV("3_22", mach, x_shtr);
            double s_I      = W_I.Wing.S_k;
            double s_II     = W_II.Wing.S_k;

            return((k_t_star + s_II / s_I) / (1 + s_II / s_I));
        }
Ejemplo n.º 9
0
        public double Cx_v(double mach)
        {
            if (mach <= 1.0)
            {
                return(0.0);
            }
            double lmM21   = Lmb_k * AeroGraphs.M2min1(mach);
            double lmbC3   = Lmb_k * Math.Pow(C_shtr, 1.0 / 3.0);
            double lmbTgHi = Lmb_k * GetTgHiM(Profile.B_c_shtr);
            double cx_romb = AeroGr.GetV("4_30", lmM21, lmbC3, lmbTgHi, Etta_k) * Lmb_k * C_shtr * C_shtr;
            double fi      = AeroGr.GetV("4_32", AeroGraphs.M2min1(mach) - GetTgHiM(Profile.B_c_shtr));

            return(cx_romb * (1 + fi * (Profile.K - 1)));
        }
Ejemplo n.º 10
0
        public double Get_F_Lhv(WingOrient wing, double mach)
        {
            if (mach < 1.0)
            {
                return(1.0);
            }
            double d_shtr    = Body.D / wing.Wing.L;
            double b_b_shtr  = wing.Wing.B_b / (0.5 * Math.PI * Body.D * Math.Sqrt(mach * mach - 1));
            double l_hv      = Body.L - wing.X - wing.Wing.X_b - wing.Wing.B_b;
            double l_hv_shtr = l_hv / (0.5 * Math.PI * Body.D * Math.Sqrt(mach * mach - 1));
            double c         = (4 + 1 / wing.Wing.Etta_k) * (1 + 8 * d_shtr * d_shtr);
            double lapl1     = AeroGr.GetV("gauss", (b_b_shtr + l_hv_shtr) * Math.Sqrt(2 * c));
            double lapl2     = AeroGr.GetV("gauss", l_hv_shtr * Math.Sqrt(2 * c));

            return(1.0 - (Math.Sqrt(Math.PI) * (lapl1 - lapl2)) / (2 * b_b_shtr * Math.Sqrt(c)));
        }
Ejemplo n.º 11
0
        public double Cx_korm(double mach)
        {
            if (D1 == D || L_korm == 0)
            {
                return(0);
            }
            double etta = D1 / D;

            return(AeroGr.GetV("4_24", mach, Lmb_korm, etta));
            //double S_dno_shtr = D1 * D1 / (D * D);
            //double expr = D1 < D ?
            //              Math.Sqrt(1 - S_dno_shtr) :
            //              Math.Sqrt(S_dno_shtr * (S_dno_shtr - 1));
            //double sinBetta = Math.Sin(Math.Atan(Math.Abs((D1 - D) * 0.5) / L_korm));
            //double sinBettaSqr = sinBetta* sinBetta;
            //return expr * (2.09 * sinBettaSqr + 0.19 * sinBettaSqr / Math.Sqrt(AeroGraphs.M2min1(mach)));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// формула 5.49
        /// </summary>
        /// <param name="wing"></param>
        /// <param name="mach"></param>
        /// <returns></returns>
        public double Get_F_1Lhv(WingOrient wing, double mach)
        {
            if (mach < 1.0)
            {
                return(1.0);
            }
            double d_shtr    = Body.D / wing.Wing.L;
            double b_b_shtr  = wing.Wing.B_b / (0.5 * Math.PI * Body.D * Math.Sqrt(mach * mach - 1));
            double l_hv      = Body.L - wing.X - wing.Wing.X_b - wing.Wing.B_b;
            double l_hv_shtr = l_hv / (0.5 * Math.PI * Body.D * Math.Sqrt(mach * mach - 1));
            double c         = (4 + 1 / wing.Wing.Etta_k) * (1 + 8 * d_shtr * d_shtr);

            var    expr1 = (Math.Exp(-c * l_hv_shtr * l_hv_shtr) - Math.Exp(-c * (b_b_shtr + l_hv_shtr) * (b_b_shtr + l_hv_shtr))) / (c * b_b_shtr * b_b_shtr);
            double lapl1 = AeroGr.GetV("gauss", l_hv_shtr * Math.Sqrt(2 * c));
            var    expr2 = Math.Sqrt(Math.PI) * lapl1 / (b_b_shtr * Math.Sqrt(c));

            return(1.0 - expr1 + expr2);
        }
Ejemplo n.º 13
0
        public double Get_m_z_omg_z_wing(double x_ct, int mode)
        {
            double machm1 = mode == 2 ?
                            AeroGraphs.M2min1(M_II) :
                            AeroGraphs.M2min1(M_I);
            double tg05 = mode == 2 ?
                          W_II.Wing.GetTgHiM(0.5) :
                          W_I.Wing.GetTgHiM(0.5);
            double lmbk = mode == 2 ?
                          W_II.Wing.Lmb_k :
                          W_I.Wing.Lmb_k;
            double etta = mode == 2 ?
                          W_II.Wing.Etta_k :
                          W_I.Wing.Etta_k;
            double x_ak = mode == 2 ?
                          W_II.Wing.X_ak + W_II.X :
                          W_I.Wing.X_ak + W_I.X;
            double b_ak = mode == 2 ?
                          W_II.Wing.B_ak :
                          W_I.Wing.B_ak;

            var expr1    = AeroGr.GetV("5_15", lmbk * machm1, lmbk * tg05, etta);
            var b1       = AeroGr.GetV("5_16", lmbk * machm1, lmbk * tg05, etta);
            var x_t_shtr = (x_ct - x_ak) / b_ak;
            //5.74
            var mzCya_izkr = expr1 - b1 * (0.5 - x_t_shtr) - AeroGraphs._180divPI * (0.5 - x_t_shtr) * (0.5 - x_t_shtr);

            var cyaIzkr = mode == 2 ?
                          Cy1a_II :
                          Cy1a_I;
            var Kaa = mode == 2 ?
                      Kaa_II :
                      Kaa_I;
            double delta_mz = 0.0;

            if (mode == 2)
            {
                //5.82
                var expr11 = (x_ct - (W_I.Wing.X_ak + W_I.X + 0.5 * W_I.Wing.B_ak)) / W_II.Wing.B_ak;
                var expr12 = (x_ct - X_Fa_II) / W_II.Wing.B_ak;
                delta_mz = -AeroGraphs._180divPI * Cy1a_II * Kaa_II * Eps_sr_a * expr11 * expr12;
            }
            return(mzCya_izkr * cyaIzkr * Kaa + delta_mz);
        }
Ejemplo n.º 14
0
        public double Get_A(double mach)
        {
            var    cy1a = GetCy1a(mach);
            double A;

            if (mach <= 1.1)
            {
                A = AeroGr.GetV("3_35_M1", cy1a);
            }
            else if (mach >= 2.0)
            {
                A = AeroGr.GetV("3_35_M2", cy1a, 1.0 / Etta_k);
            }
            else
            {
                var A1 = AeroGr.GetV("3_35_M1", cy1a);
                var A2 = AeroGr.GetV("3_35_M2", cy1a, 1.0 / Etta_k);
                A = A1 + (mach - 1.1) * (A2 - A1) / (2.0 - 1.1);
            }
            return(A);
        }
Ejemplo n.º 15
0
        public double Get_eps_sr_alpha()
        {
            var z_v_shtr = W_I.Wing.Z_v_shtr(M_I);
            var d_I      = W_I.Wing.D;
            var l_I      = W_I.Wing.L;
            var z_v      = 0.5 * (d_I + z_v_shtr * (l_I - d_I));

            var x_v  = W_I.Wing.GetX(z_v) + W_I.Wing.GetB(z_v) - W_I.Wing.X_b - W_I.Wing.B_b * W_I.X_povor_otn;
            var x_II = W_II.Wing.X_ak + W_II.Wing.B_ak * 0.5 -
                       W_I.Wing.X_b + W_I.Wing.B_b * W_I.X_povor_otn + x_v * Math.Cos(W_I.Delta * AeroGraphs.PIdiv180);
            var y_II = 0.0;
            var y_v  = Math.Abs(x_II * SinAlpha - x_v * Math.Sin(W_I.Delta * AeroGraphs.PIdiv180) + y_II);

            var _1_div_etta  = 1 / W_II.Wing.Etta_k;
            var _2zv_div_lII = 2.0 * z_v / W_II.Wing.L;
            var _2yv_div_lII = 2.0 * y_v / W_II.Wing.L;
            var d_II_shtr    = W_II.Wing.D / W_II.Wing.L;
            var i            = AeroGr.GetV("3_17", _2zv_div_lII, _2yv_div_lII, d_II_shtr, _1_div_etta);
            var ksi          = 1.0;

            return(AeroGraphs._180divPI * i * W_I.Wing.L_k * W_I.Wing.GetCy1a(M_I) * kaa_I * ksi / (2 * Math.PI * z_v_shtr * W_II.Wing.L_k * W_I.Wing.Lmb_k * Kaa_II));
        }
Ejemplo n.º 16
0
        public double Get_kt_I_shtr(double mach, double alpha)
        {
            double lmbda_nos;

            if (Body.Nose is RocketNos_ConePlusCyl)
            {
                lmbda_nos = Body.Lmb_nos;
            }
            else
            {
                double   cx_nos    = Body.Cx_nose(mach);
                InterpXY lmb_ot_Cx = new InterpXY();
                foreach (var item in (AeroGr.Graphs["4_11"] as Interp2D)._data)
                {
                    double lmb    = item.Key;
                    double cx_tmp = item.Value.GetV(mach);
                    lmb_ot_Cx.Add(cx_tmp, lmb);
                }
                lmbda_nos = lmb_ot_Cx.GetV(cx_nos);
            }
            return(AeroGr.GetV("3_21", lmbda_nos, mach));
        }
Ejemplo n.º 17
0
 /// <summary>
 /// 3.13
 /// </summary>
 /// <param name="mach"></param>
 /// <returns></returns>
 public double Get_hi_M(double mach)
 {
     return(AeroGr.GetV("3_13", mach));
 }
Ejemplo n.º 18
0
        public double Get_n(WingOrient wing, double mach)
        {
            var k_sh = AeroGr.GetV("k_shel", mach);

            return(k_sh * Math.Cos(wing.Hi_rulei * AeroGraphs.PIdiv180));
        }