public ObservableCollection <DataR> P(ObservableCollection <Bore> bores, TypeFlexStructure ts, double ls, double hs, double k = 1) { ObservableCollection <DataR> res = new ObservableCollection <DataR>(); foreach (Bore bore in bores) { DataR dataR = R(bore, ts, ls, hs, k); dataR.Base = Name; dataR.Bore = "Скв." + bore.Name; if (Loads == null || Loads.Count == 0) { dataR.CreateFullData(); dataR.CreateMediumData(); dataR.CreateSmallData(); res.Add(dataR); continue; } List <double> P = new List <double>(Loads.Count); List <double> PmaxX = new List <double>(Loads.Count); List <double> PmaxY = new List <double>(Loads.Count); List <double> chP = new List <double>(Loads.Count); List <double> GapX = new List <double>(Loads.Count); List <double> GapY = new List <double>(Loads.Count); List <double> chGap = new List <double>(Loads.Count); foreach (FoundLoad item in Loads) { P.Add(item.N / (B * L) + item.q + 2 * D1); double ex = (item.Mx / (item.N + 2 * D1 * L * B)) / L; double wx = (B * L * L * L) / 6; double pmaxx; if (ex <= 1 / 6) { pmaxx = item.N / (B * L) + 2 * D1 + Math.Abs(item.Mx) / wx; PmaxX.Add(pmaxx); GapX.Add(0); ex = 0; } else { double C0x = 0.5 * L - item.Mx / (item.N + 2 * D1 * L * B); pmaxx = 2 * (item.N + 2 * D1 * L * B) / (3 * B * C0x); PmaxX.Add(pmaxx); GapX.Add(ex); } double ey = (item.My / (item.N + 2 * D1 * L * B)) / B; double wy = (L * B * B * B) / 6; double pmaxy; if (ey <= 1 / 6) { pmaxy = item.N / (B * L) + 2 * D1 + Math.Abs(item.My) / wy; PmaxY.Add(pmaxy); GapY.Add(0); ey = 0; } else { double C0y = 0.5 * B - item.My / (item.N + 2 * D1 * L * B); pmaxy = 2 * (item.N + 2 * D1 * L * B) / (3 * L * C0y); PmaxY.Add(pmaxy); GapY.Add(ey); } chGap.Add(Math.Max(ex, ey)); List <double> chp = new List <double> { (item.N / (B * L) + item.q + 2 * D1) / dataR.R, pmaxx / (1.2 * dataR.R), pmaxy / (1.2 * dataR.R) }; chP.Add(chp.Max()); } dataR.P = Math.Round(P.Max(), 3); dataR.PmaxX = Math.Round(PmaxX.Max(), 3); dataR.PmaxY = Math.Round(PmaxY.Max(), 3); dataR.CheckP = Math.Round(chP.Max(), 3); dataR.CheckGap = Math.Round(chGap.Max(), 3); dataR.GapX = Math.Round(GapX.Max(), 3); dataR.GapY = Math.Round(GapY.Max(), 3); dataR.CreateFullData(); dataR.CreateMediumData(); dataR.CreateSmallData(); res.Add(dataR); } return(res); }
private DataR R(Bore bore, TypeFlexStructure ts, double ls, double hs, double k = 1) { DataR res = new DataR(); List <Layer> upF = UpF(bore); List <Layer> downF = DownF(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 fih = 0; double ch = 0; roh = 0; h = 0; if (downF.Count > 0) { foreach (Layer item in downF) { fih += item.H * item.IGE.FiII; ch += item.H * item.IGE.CII * 100; roh += item.H * item.IGE.RoII; h += item.H; } } res.YII = Math.Round(roh / h, 3); res.FiII = Math.Round(fih / h); res.CII = Math.Round(ch / h, 3); res.IL = downF[0].IGE.IL; res.Ke = downF[0].IGE.Ke; res.Ys = downF[0].IGE.Ys; res.Ground = "ИГЭ " + downF[0].IGE.NumIGE + " " + downF[0].IGE.Description; res.GroundType = downF[0].IGE.GroundType; res.Yc1 = TablesInterolator.Yc1(res.GroundType); res.Yc2 = TablesInterolator.Yc2(res.GroundType, ts, ls, hs); double[] MyMqMc = TablesInterolator.My_Mq_Mc(res.FiII); res.My = MyMqMc[0]; res.Mq = MyMqMc[1]; res.Mc = MyMqMc[2]; res.K = k; if (B < 10) { res.Kz = 1; } else { res.Kz = 8 / B + 0.2; } if (Basement) { res.d1 = Math.Round(Hs + Hcf * (Ycf / res.YIIu), 3); } else { res.d1 = D1; } if (Basement && Db > 2) { res.db = 2; } else if (Basement && Db <= 2) { res.db = Db; } else { res.db = 0; } res.R = res.Yc1 * res.Yc2 * (res.My * res.Kz * B * res.YII + res.Mq * res.d1 * res.YIIu + (res.Mq - 1) * res.db * res.YIIu + res.Mc * res.CII) / k; res.R = Math.Round(res.R, 2); //res.GroundType = ""; return(res); }
public DataR P(Bore bore, TypeFlexStructure ts, double ls, double hs, double k = 1) { DataR dataR = R(bore, ts, ls, hs, k); dataR.Base = Name; dataR.Bore = "Скв." + bore.Name; if (Loads == null || Loads.Count == 0) { FullResults = dataR.FullResults(); MediumResults = dataR.MediumResults(); SmallResults = dataR.SmallResults(); return(dataR); } List <double> P = new List <double>(Loads.Count); List <double> PmaxX = new List <double>(Loads.Count); List <double> PmaxY = new List <double>(Loads.Count); List <double> chP = new List <double>(Loads.Count); List <double> GapX = new List <double>(Loads.Count); List <double> GapY = new List <double>(Loads.Count); List <double> chGap = new List <double>(Loads.Count); foreach (FoundLoad item in Loads) { P.Add(item.N / (B * L) + item.q + 2 * D1); double ex = (Math.Abs(item.Mx) / (item.N + 2 * D1 * L * B)) / L; double wx = (B * L * L * L) / 6; double pmaxx; if (ex <= (1.0 / 6)) { pmaxx = item.N / (B * L) + 2 * D1 + Math.Abs(item.Mx) / wx; PmaxX.Add(pmaxx); GapX.Add(0); ex = 0; } else { double C0x = 0.5 * L - item.Mx / (item.N + 2 * D1 * L * B); pmaxx = 2 * (item.N + 2 * D1 * L * B) / (3 * B * C0x); PmaxX.Add(pmaxx); GapX.Add(ex); } double ey = (Math.Abs(item.My) / (item.N + 2 * D1 * L * B)) / B; double wy = (L * B * B * B) / 6; double pmaxy; if (ey <= (1.0 / 6)) { pmaxy = item.N / (B * L) + 2 * D1 + Math.Abs(item.My) / wy; PmaxY.Add(pmaxy); GapY.Add(0); ey = 0; } else { double C0y = 0.5 * B - item.My / (item.N + 2 * D1 * L * B); pmaxy = 2 * (item.N + 2 * D1 * L * B) / (3 * L * C0y); PmaxY.Add(pmaxy); GapY.Add(ey); } chGap.Add(Math.Max(ex, ey)); List <double> chp = new List <double> { (item.N / (B * L) + item.q + 2 * D1) / dataR.R, pmaxx / (1.2 * dataR.R), pmaxy / (1.2 * dataR.R) }; chP.Add(chp.Max()); } dataR.P = Math.Round(P.Max(), 3); dataR.PmaxX = Math.Round(PmaxX.Max(), 3); dataR.PmaxY = Math.Round(PmaxY.Max(), 3); dataR.CheckP = Math.Round(chP.Max(), 3); dataR.CheckGap = Math.Round(chGap.Max(), 3); dataR.GapX = Math.Round(GapX.Max(), 3); dataR.GapY = Math.Round(GapY.Max(), 3); FullResults = dataR.FullResults(); MediumResults = dataR.MediumResults(); SmallResults = dataR.SmallResults(); return(dataR); }