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); }
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); }