コード例 #1
0
ファイル: TimeСycle.cs プロジェクト: Bach1685/ResearchWork
        public static void CreateShortCrack(List <Area> areas)
        {
            int ShortCrackAreaIndex = GetShortCrackAreaIndex(areas);

            ShortCrack shortCrack = new ShortCrack();

            shortCrack.Length = 0.0002;

            double B_tr = 0.0125; // ширина подшипника
            double h_tr = 0.002;  // толщина баббитового слоя (должна варьироваться)
            double a_tr = shortCrack.Length;
            double b_tr = (a_tr / 2) < h_tr ? (a_tr / 2) : h_tr;
            double f_g = 1, f_teta = 1;
            //  f_g = 1 - почему?
            double f_B = Math.Sqrt(1 / Math.Cos((Math.PI * a_tr / B_tr) * Math.Sqrt(b_tr / h_tr)));

            double F1 = 1.04;
            double F2 = 0.202;
            double F3 = -1.06;
            double F  = (F1 + (F2 * Math.Pow((b_tr / h_tr), 2)) + (F3 * Math.Pow((b_tr / h_tr), 4))) * f_teta * f_g * f_B;

            shortCrack.SIF = (areas[ShortCrackAreaIndex].Stress.Radial + areas[ShortCrackAreaIndex].Stress.MaxPrincipal) * (Math.Sqrt(Math.PI * (shortCrack.Length / 2)) / (Math.PI / 2)) * F; // F_function; // тут не должно быть NaN

            areas[ShortCrackAreaIndex].ShortCracks.Add(shortCrack);
        }
コード例 #2
0
        public static double GetExcludedVolume(ShortCrack shortCrack, Area area)
        {
            double r0        = (1 / (2 * Math.PI)) * Math.Pow((shortCrack.SIF / (area.Stress.Radial + area.Stress.MaxPrincipal)), 2);
            double r90       = r0 / 1.125;
            double S         = Math.PI * Math.Pow(r0, 2);
            double TorVolume = S * 2 * Math.PI * (shortCrack.Length / 2);

            return(TorVolume);
        }
コード例 #3
0
        public static double GetRecalculatedSIF(Area area, ShortCrack shortCrack)
        {
            double B_tr = 0.0125; // ширина подшипника
            double h_tr = 0.002;  // толщина баббитового слоя (должна варьироваться)
            double a_tr = shortCrack.Length;
            double b_tr = (a_tr / 2) < h_tr ? (a_tr / 2) : h_tr;
            double f_g = 1, f_teta = 1;                                                             //  f_g = 1 - почему?
            double f_B = Math.Sqrt(1 / Math.Cos((Math.PI * a_tr / B_tr) * Math.Sqrt(b_tr / h_tr))); // в маткаде проверил, что тут NaN быть не должно

            double F1 = 1.04;                                                                       //1.13 - 0.09 * (b_tr / a_tr);
            double F2 = 0.202;                                                                      //-0.54 + 0.89 * (0.2 + (b_tr / a_tr));
            double F3 = -1.06;                                                                      //0.5 - (1 / (0.65 + (b_tr / a_tr))) + (14 * (1 - (b_tr / a_tr)));
            double F  = (F1 + (F2 * Math.Pow((b_tr / h_tr), 2)) + (F3 * Math.Pow((b_tr / h_tr), 4))) * f_teta * f_g * f_B;

            double SIF = (area.Stress.Radial + area.Stress.MaxPrincipal) * (Math.Sqrt(Math.PI * (shortCrack.Length / 2)) / (Math.PI / 2)) * F; // F_function; // тут не должно быть NaN

            if (shortCrack.SIF < 0)
            {
            }

            return(SIF);
        }