public static double?table_5_8(double z, double b, double l, TypeFound typeFound = TypeFound.Прямоугольный, PointFound ptFound = PointFound.Центр)
        {
            double nu, ksi;

            if (ptFound == PointFound.Центр)
            {
                ksi = 2 * z / b;
            }
            else
            {
                ksi = z / b;
            }

            if (typeFound == TypeFound.Прямоугольный && l / b < 10)
            {
                nu = l / b;
                return(BilinearInterpolation(table_5_8_ksi, table_5_8_nu, table_5_8_R, ksi, nu));
            }
            if (typeFound == TypeFound.Ленточный || l / b >= 10)
            {
                return(LinearInterpolation(table_5_8_ksi, table_5_8_L, ksi));
            }
            if (typeFound == TypeFound.Круглый)
            {
                return(LinearInterpolation(table_5_8_ksi, table_5_8_C, ksi));
            }

            return(null);
        }
        public static List <double?> Table_5_8(List <double> z, double b, double l, TypeFound typeFound = TypeFound.Прямоугольный, PointFound ptFound = PointFound.Центр)
        {
            List <double?> res = new List <double?>();
            double         nu, ksi;

            foreach (double item in z)
            {
                if (ptFound == PointFound.Центр)
                {
                    ksi = 2 * item / b;
                }
                else
                {
                    ksi = item / b;
                }

                if (typeFound == TypeFound.Прямоугольный && l / b < 10)
                {
                    nu = l / b;
                    res.Add(BilinearInterpolation(table_5_8_ksi, table_5_8_nu, table_5_8_R, ksi, nu));
                }
                if (typeFound == TypeFound.Ленточный || l / b >= 10)
                {
                    res.Add(LinearInterpolation(table_5_8_ksi, table_5_8_L, ksi));
                }
                if (typeFound == TypeFound.Круглый)
                {
                    res.Add(LinearInterpolation(table_5_8_ksi, table_5_8_C, ksi));
                }
            }

            return(res);
        }
Beispiel #3
0
        public DataS Sp(Bore bore, FoundLoad load, double kHc = 0.5, PointFound ptFond = PointFound.Центр)
        {
            DataS         res    = new DataS();
            List <Layer>  downFS = DownFS(bore);
            List <double> n      = res.N;

            n = new List <double>();

            foreach (Layer item in downFS)
            {
                n.Add(Math.Ceiling(item.H / (0.4 * B)));
            }

            List <Layer> layers = new List <Layer>();

            for (int i = 0; i < n.Count; i++)
            {
                double z   = downFS[i].Up;
                double dlt = downFS[i].H / n[i];
                while (downFS[i].Down > z)
                {
                    z += dlt;
                    Layer lay = downFS[i].Clone();
                    lay.Down = z;
                    lay.H    = dlt;
                    lay.Up   = z - dlt;
                    layers.Add(lay);
                }
            }

            double FL;

            if (Basement)
            {
                FL = Hs + Hcf + Db;
            }
            else
            {
                FL = D1;
            }

            res.Z = new List <double>()
            {
                0
            };
            foreach (Layer item in layers)
            {
                res.Z.Add(item.Up + 0.5 * item.H - FL);
            }

            res.Alfa = TablesInterolator.Table_5_8(res.Z, B, L, Type);

            List <Layer> upF = UpF(bore);
            double       roh = 0;
            double       h   = 0;

            if (upF.Count > 0)
            {
                foreach (Layer item in upF)
                {
                    roh += item.H * item.IGE.RoII;
                    h   += item.H;
                }
            }
            res.YIIu = Math.Round(roh / h, 3);

            double sig_zg0 = res.YIIu * FL;
            double p       = load.N / (B * L) + load.q + 2 * FL;

            res.sig_zy = new List <double>();
            res.sig_zp = new List <double>();
            for (int i = 0; i < res.Z.Count; i++)
            {
                res.sig_zp.Add((double)res.Alfa[i] * p);
                res.sig_zy.Add((double)res.Alfa[i] * sig_zg0);
            }

            res.sig_zg = new List <double> {
                sig_zg0
            };
            res.E = new List <double>();
            for (int i = 0; i < layers.Count; i++)
            {
                res.sig_zg.Add(sig_zg0 + layers[i].IGE.RoII * (res.Z[i + 1] - (layers[i].Up - FL)));
                sig_zg0 += layers[i].H * layers[i].IGE.RoII;
                res.E.Add(layers[i].IGE.E * 101.972);
            }

            sig_zg0 = res.YIIu * FL;

            if (B <= 10)
            {
                res.Hmin = B / 2;
            }
            else if (B > 10 && B <= 60)
            {
                res.Hmin = 4 + 0.1 * B;
            }
            else
            {
                res.Hmin = 10;
            }

            int j = 0;

            for (int i = 0; i < layers.Count; i++)
            {
                if (res.sig_zp[i] >= kHc * res.sig_zg[i])
                {
                    res.Hc = res.Z[i];
                }
                else
                {
                    j = i;
                    break;
                }
            }

            int t = 0; double pt = layers[t].H;

            while (pt <= res.Hmin)
            {
                t++;
                pt += layers[t].H;
            }

            if (res.Hmin > res.Hc)
            {
                res.Hc = res.Hmin;
                j      = t;
            }

            if (sig_zg0 >= p)
            {
                for (int i = 0; i <= j; i++)
                {
                    res.Sp += res.sig_zp[i + 1] * layers[i].H / (5 * res.E[i]);
                }
                res.Sp *= 0.8;
            }
            else
            {
                for (int i = 0; i <= j; i++)
                {
                    res.Sp += (res.sig_zp[i + 1] - res.sig_zy[i + 1]) * layers[i].H / res.E[i] + res.sig_zy[i + 1] * layers[i].H / (5 * res.E[i]);
                }
                res.Sp *= 0.8;
            }

            res.Sp = Math.Round(res.Sp * 100, 1);
            res.p  = Math.Round(p, 2);

            return(res);
        }