public void Calculate_Program(string file_name) { frmCurve f_c = null; StreamWriter sw = new StreamWriter(new FileStream(file_name, FileMode.Create)); #region TechSOFT Banner sw.WriteLine(); sw.WriteLine(); sw.WriteLine("\t\t**********************************************"); sw.WriteLine("\t\t* ASTRA Pro *"); sw.WriteLine("\t\t* TechSOFT Engineering Services *"); sw.WriteLine("\t\t* *"); sw.WriteLine("\t\t* DESIGN OF DECK SLAB *"); sw.WriteLine("\t\t* FOR T-BEAM RCC BRIDGE *"); sw.WriteLine("\t\t**********************************************"); sw.WriteLine("\t\t----------------------------------------------"); sw.WriteLine("\t\tTHIS RESULT CREATED ON " + System.DateTime.Now.ToString("dd.MM.yyyy AT HH:mm:ss") + " "); sw.WriteLine("\t\t----------------------------------------------"); #endregion try { #region USER DATA sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("USER'S DATA"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(" Panel Length [L]= {0} m", L, "Marked as (C) in the Drawing"); sw.WriteLine(" Spacing of main Girders [B] = {0} m", B, "Marked as (A) in the Drawing"); //sw.WriteLine(" Width of Carriage way = {0:f3} m", width_carrage_way); //sw.WriteLine(" Effective Span of Tee Beam = {0} m", effe_span); sw.WriteLine(" Concrete Grade = M {0:f0} ", concrete_grade); sw.WriteLine(" Steel Grade = Fe {0:f0} ", steel_grade); sw.WriteLine(" Permissible Stress in Concrete [σ_cb] = {0} N/sq.m", sigma_cb); sw.WriteLine(" Permissible Stress in Steel [σ_st] = {0} N/sq.m", sigma_st); //sw.WriteLine(" No. Of Main girders = {0:f0} ", no_main_girder); //sw.WriteLine(" Width of Cross Girders = {0} mm {1,40}", width_cross_girders, "Marked as (D) in the Drawing"); //sw.WriteLine(" Width of Long Girders = {0} mm {1,40}", width_long_girders, "Marked as (B) in the Drawing"); sw.WriteLine(" Modular ratio [m] = {0} ", m); sw.WriteLine(" Lever arm factor [j] = {0} ", j); sw.WriteLine(" Moment factor [Q] = {0} ", Q); sw.WriteLine(" Minimum Cover = {0:f3} mm", minimum_cover); sw.WriteLine(" Load = {0:f3} kN", load); sw.WriteLine(" Width of Load [a]= {0:f3} m", width); sw.WriteLine(" Length of Load [b]= {0:f3} m", length); sw.WriteLine(" Impact Factor [IF]= {0:f3} ", impact_factor); sw.WriteLine(" Continuity Factor [CF]= {0:f3} ", continuity_factor); sw.WriteLine(" Constant [µ] = {0:f3} ", mu); sw.WriteLine(" Thickness of concrete Deck Slab [Ds] = {0} mm ", Ds, "Marked as (F) in the Drawing"); sw.WriteLine(" Unit weight of concrete Deck Slab [γ_c]= {0} kN/cu.m", gamma_c); sw.WriteLine(" Thickness of Asphalt Wearing Course [Dwc] = {0} mm ", Dwc, "Marked as (E) in the Drawing"); sw.WriteLine(" Unit weight of Asphalt Wearing Course [γ_wc] = {0} kN/cu.m", gamma_wc); sw.WriteLine(); sw.WriteLine(); #endregion sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("DESIGN CALCULATIONS"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 1 : DEAD LOAD "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine("Self weight of slab = Ds * γ_c = {0} * {1} = {2} kN/sq.m.", (Ds / 1000), gamma_c, self_weight_slab); sw.WriteLine(); sw.WriteLine("Self weight of wearing course = Dwc * γ_wc "); sw.WriteLine(" = {0} * {1}", (Dwc / 1000), gamma_wc); sw.WriteLine(" = {0} kN/sq.m.", self_weight_wearing_cource); sw.WriteLine(); sw.WriteLine(" Total weight = tw = {0} + {1}", self_weight_slab, self_weight_wearing_cource); sw.WriteLine(" = {0} kN/sq.m.", tw); double wd; wd = B * L * tw; sw.WriteLine(); sw.WriteLine("Total Permanent Load on Slab Panel = Wd = B * L * tw"); sw.WriteLine(" = {0} * {1} * {2}", B, L, tw); sw.WriteLine(" = {0} kN", wd); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Full slab Panel is Loaded with uniformly distributed load"); double k; k = B / L; sw.WriteLine("k = B / L = {0:f2} / {1:f2} = {2:f2}", B, L, k); sw.WriteLine("1/k = 1 / {0} = {1}", k, (1 / k)); f_c = new frmCurve(k, 0.0, 0.0, LoadType.FullyLoad); f_c.m1 = 0.045; f_c.m2 = 0.004; f_c.ShowDialog(); double m1, m2, MB1, ML1; m1 = f_c.m1; m2 = f_c.m2; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Select m1 and m2 from Pigeaud's curve"); sw.WriteLine(" m1 = {0} and m2 = {1}", m1, m2); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("The Permanent Load Bending Moments are obtained by"); sw.WriteLine("applying continuity Factor (CF) as, "); sw.WriteLine(); MB1 = wd * (m1 + mu * m2); sw.WriteLine("MB1 = wd * (m1 + mu * m2)"); sw.WriteLine(" = {0:f3} * ({1:f3} + {2:f3} * {3:f3})", wd, m1, mu, m2); MB1 = continuity_factor * MB1; sw.WriteLine(" = {0:f3} kN-m", MB1); sw.WriteLine(); sw.WriteLine("Taking Continuity into effect = MB1 = {0:f3} * {1:f3}", continuity_factor, MB1); sw.WriteLine(" = {0:f3} ", continuity_factor, MB1); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("ML1 = (CF * Wd) * (m2 + µm1)"); sw.WriteLine(" = ({0:f2} * {1:f2}) * ({2:f4} + {3:f4} * {4:f4})", continuity_factor, wd, m2, mu, m1); ML1 = (continuity_factor * wd) * (m2 + mu * m1); sw.WriteLine(" = {0:f3} kN-m", ML1); //sw.WriteLine(); //sw.WriteLine(); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 2 : Calculations for Bending Moments for Imposed Load "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); //double B = 2.5; //double L = 4.0; //m1 0.0049 0.081 m2 0.015 0.022 //m1 0.049 0.081 m2 0.015 0.022 double _k = B / L; sw.WriteLine(" B = {0:f3} m.", B); sw.WriteLine(" L = {0:f3} m.", L); sw.WriteLine(); sw.WriteLine(" k = B / L = {0:f2} / {1:f2} = {2:f2} m.", B, L, _k); double a = 0.84; double b = 4.57; double u, v; u = a + 2.0 * (Dwc / 1000.0); sw.WriteLine(); sw.WriteLine("u = a + 2 * Dwc = {0} + 2 * {1} = {2:f2} m", a, (Dwc / 1000), u); v = b + 2.0 * (Dwc / 1000.0); sw.WriteLine("v = b + 2 * Dwc = {0} + 2 * {1} = {2:f2} m", b, (Dwc / 1000), v); double _v = 0.0; _v = v; if (v > L) { v = L; } double u_by_B = u / B; double v_by_L = v / L; if (k < 0.4) { k = 0.4; } if (k > 1.0) { k = 1.0; } f_c = new frmCurve(k, u_by_B, v_by_L, LoadType.PartialLoad); f_c.m1 = 0.085; f_c.m2 = 0.009; f_c.ShowDialog(); double _m1, _m2; _m1 = f_c.m1; _m2 = f_c.m2; sw.WriteLine(); sw.WriteLine("u/B = {0} / {1} = {2:f2}", u, B, u_by_B); sw.WriteLine("v/L = {0} / {1} = {2:f2}", v, L, v_by_L); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Select m1 & m2 from Pigeaud's curves"); sw.WriteLine("Corresponding to k = {0:f3}, u/B = {1:f2} and v/L = {2:f2}", _k, u_by_B, v_by_L); sw.WriteLine("m1 = {0} and m2 = {1}", _m1, _m2); double total_impact_load; total_impact_load = impact_factor * load; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Total Load per track including impact"); sw.WriteLine(" = IF * load"); sw.WriteLine(" = {0:f2} * {1:f2}", impact_factor, load); sw.WriteLine(" = {0:f2} N", total_impact_load); double w2 = total_impact_load * (L / _v); sw.WriteLine(); sw.WriteLine("Effective load on slab Panel = w2"); sw.WriteLine(" = {0:f2} * ({1:f2}/{2:f2})", total_impact_load, L, b); sw.WriteLine(" = {0:f2} kN", w2); sw.WriteLine(); sw.WriteLine("Moment along Shorter span "); double _MB = w2 * (_m1 + mu * _m2); sw.WriteLine(" = MB2 = w2 * (m1 + µ*m2)"); sw.WriteLine(" = {0:f3} * ({1:f3} + {2:f3}*{3:f3}", w2, _m1, mu, _m2); sw.WriteLine(" = {0:f3} kN", _MB); double _ML = w2 * (_m2 + mu * _m1); sw.WriteLine(); sw.WriteLine(" = ML2 = w2 * (m2 + µ*m1)"); sw.WriteLine(" = {0:f3} * ({1:f3} + {2:f3} * {3:f3}", w2, m2, mu, m1); sw.WriteLine(" = {0:f3} kN", _ML); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("The Slab is designed as Continuous,"); sw.WriteLine("The Imposed Load Bending Moment are obtained"); sw.WriteLine("by applying Continuity Factor(CF) as"); sw.WriteLine(); sw.WriteLine("MB2 = CF * MB2 = {0:f3} * {1:f3} = {2:f3} kN-m", continuity_factor, _MB, (continuity_factor * _MB)); _MB = continuity_factor * _MB; sw.WriteLine("ML2 = CF * ML2 = {0:f3} * {1:f3} = {2:f3} kN-m", continuity_factor, _ML, (continuity_factor * _ML)); _ML = continuity_factor * _ML; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Final Design Bending Moments for the Slab "); sw.WriteLine("Short Span B.N. = MB = {0:f3} + {1:f3} = {2:f3} kN-m", MB1, _MB, (MB1 + _MB)); MB1 += _MB; sw.WriteLine("Long Span B.M. = ML = {0:f3} + {1:f3} = {2:f3} kN-m", ML1, _ML, (ML1 + _ML)); ML1 += _ML; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 3 : Calculations for Effective Depth "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); double d; d = (MB1 * 10E5) / (Q * 1000); d = Math.Sqrt(d); sw.WriteLine("d = √((MB * 10E+5)/(Q * 1000))"); sw.WriteLine(" = √(({0:f3} * 10E+5)/({1:f3} * 1000)) ", MB1, Q); sw.WriteLine(" = {0:f3} mm", d); d = (int)(d / 10.0); d = d + 1; d = d * 10; sw.WriteLine(" = {0:f3} mm", d); double d1, d2; d1 = 12; //sw.WriteLine(); //sw.WriteLine("Using {0:f0} mm dia bars", d1); double overall_depth = 0.0; overall_depth = d + minimum_cover; sw.WriteLine(); sw.WriteLine("Overall depth of Deck slab = {0:f3} + {1:f3}", d, minimum_cover); sw.WriteLine(" = {0:f3} mm", overall_depth); //double _over_dep; //_over_dep = overall_depth / 100; //_over_dep = (double)(int)_over_dep; sw.WriteLine(); //sw.WriteLine("{0:f3} / 100 = {1:f3} = {2:f0}", // overall_depth, // (overall_depth / 100), // _over_dep); //double _o_depth; //_o_depth = _over_dep * 100 + 50; sw.WriteLine(); if (Ds > overall_depth) { sw.WriteLine("Provided Overall Depth = {0:f2} > {1:f2}, So OK", Ds, overall_depth); } if (Ds < overall_depth) { sw.WriteLine("Provided Overall Depth = {0:f2} > {1:f2}, So NOT OK", Ds, overall_depth); } sw.WriteLine(); double eff_depth; eff_depth = Ds - minimum_cover; sw.WriteLine(); sw.WriteLine("Provided Effective depth = d1 = {0:f3} - {1:f3} = {2:f3} mm", Ds, minimum_cover, eff_depth); //double adopt_eff_depth; //adopt_eff_depth = (int)(eff_depth / 10); //adopt_eff_depth *= 10; //sw.WriteLine(); //sw.WriteLine("Adopt Eff. Depth = {0:f3} mm", adopt_eff_depth); double Ast1 = (MB1 * 10E5) / (sigma_st * j * eff_depth); //S = S / 10; //S = (int)S; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 4 : Calculations for Reinforcement along shorter span "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine("Short Span Moment = MB = {0:f3} kN-m", MB1); sw.WriteLine(); sw.WriteLine("Ast1 = (Mb * 10E5)/(σ_st * j * d)"); sw.WriteLine(" = ({0:f3} * 10E5)/({1:f3} * {2:f3}* {3:f3})", MB1, sigma_st, j, eff_depth); sw.WriteLine(" = {0:f0} sq.mm", Ast1); double S = (1000 * (Math.PI * d1 * d1 / 4)) / Ast1; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("spacing of Bars = S = (1000 * (π * 12 * 12/4))/ Ast1"); sw.WriteLine(" = {0:f0} mm", S); sw.WriteLine(" = {0:f0} /10 = {1:f3} = {1:f0}", S, (S / 10.0)); if (S > 145) { S = 150; } else { S = (int)(S / 10.0); S = (S * 10.0); } sw.WriteLine(" = {0:f0} * 10 = {1:f0} mm", (S / 10.0), S); sw.WriteLine(); sw.WriteLine("Adopt T12 bars @{0:f0} mm c/c", S, "Marked as (1) in the Drawing"); _sp1 = S; _bd1 = 12; d2 = 10; double res_eff_depth; res_eff_depth = eff_depth - (d1 / 2) - (d2 / 2); double Ast2; Ast2 = (ML1 * 10E5) / (sigma_st * j * res_eff_depth); //S = (1000.0 * (Math.PI * 12.0 * 12.0 / 4.0)) / Ast2; sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 5 : Calculations for Reinforcement along longer span "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine("Use 10 mm dia bars,"); sw.WriteLine("Respective effective depth = {0} - {1} = {2} mm", eff_depth, (d2 / 2).ToString("0"), res_eff_depth); sw.WriteLine(); sw.WriteLine("Ast2 = (ML * 10E5)/(σ_st * j* d)"); sw.WriteLine(" = ({0:f3} * 10E5)/({1:f2} * {2:f2}* {3:f2})", ML1, sigma_st, j, res_eff_depth); sw.WriteLine(" = {0:f2} sq.mm", Ast2); sw.WriteLine(); sw.WriteLine("Minimum Required Reinforcement = 0.12% of Slab Section"); sw.WriteLine(" = (0.12/100)*({0}*1000) of Slab Section", Ds); double val = (0.12 / 100) * (Ds * 1000); sw.WriteLine(" = {0:f3} sq.mm", val); sw.WriteLine(); sw.WriteLine(); double spacing_bars; spacing_bars = (1000 * Math.PI * d2 * d2) / (4 * Ast2); sw.WriteLine(); sw.WriteLine("spacing of Bars = S = (1000 * (π * 10 * 10/4))/ Ast2"); sw.WriteLine(" = {0:f3} mm", spacing_bars); //sw.WriteLine(" = {0:f3}/10 = {1:f3} = {1:f0} ", spacing_bars, //(spacing_bars/10)); double _spacing_bars = (int)(spacing_bars / 10); _spacing_bars = _spacing_bars * 10; sw.WriteLine(" = {0:f0} mm", _spacing_bars); if (_spacing_bars > 200) { _spacing_bars = 200; } else { _spacing_bars = (int)(_spacing_bars / 10.0); _spacing_bars = _spacing_bars * 10; } _sp2 = _spacing_bars; _bd2 = 10; sw.WriteLine(); sw.WriteLine("Provide T10 bars @{0:f0} mm c/c at Top & Bottom", _spacing_bars, "Marked as (2) in the Drawing"); sw.WriteLine(); Ast2 = (Math.PI * 10 * 10 / 4.0) * (1000 / S); sw.WriteLine("Ast2 = (π * 10 * 10/4)* (1000/{0})", S); sw.WriteLine(" = {0:f3} sq.mm", Ast2); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("---------------------------------------------------------------------------"); sw.WriteLine("--------------------- END OF REPORT --------------------------"); sw.WriteLine("---------------------------------------------------------------------------"); } catch (Exception ex) { } finally { sw.Flush(); sw.Close(); } }
public void Calculate_Program() { frmCurve f_c = null; StreamWriter sw = new StreamWriter(new FileStream(rep_file_name, FileMode.Create)); try { #region TechSOFT Banner sw.WriteLine("\t\t***********************************************"); sw.WriteLine("\t\t* ASTRA Pro Release 21 *"); sw.WriteLine("\t\t* TechSOFT Engineering Services *"); sw.WriteLine("\t\t* *"); sw.WriteLine("\t\t* DESIGN OF HYDRAULIC CALCULATIONS *"); sw.WriteLine("\t\t* FOR RCC BRIDGE FOUNDATION *"); sw.WriteLine("\t\t***********************************************"); sw.WriteLine("\t\t----------------------------------------------"); sw.WriteLine("\t\tTHIS RESULT CREATED ON " + System.DateTime.Now.ToString("dd.MM.yyyy AT HH:mm:ss") + " "); sw.WriteLine("\t\t----------------------------------------------"); #endregion #region USER DATA sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("USER'S DATA"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine("High Flood Level [HFL] = {0} m", HFL); sw.WriteLine("Low Water Level [LWL] = {0} m", LWL); sw.WriteLine("Lowest Bed Level [LBL] = {0} m", LBL); sw.WriteLine("Scour Depth Observed [SDO] = {0} m", SDO); sw.WriteLine("Oberved Velocity [V1] = {0} m/sec", V1); sw.WriteLine("Slope of River [S] = {0}", S); sw.WriteLine("Value of n = {0}", n); sw.WriteLine("Factor for Discharge for Foundation Depth [F1] = {0}", F1); sw.WriteLine("Proposed Water way [L] = {0}", L); sw.WriteLine("Silt Factor [Ksb] = {0}", Ksb); sw.WriteLine("Factor for Foundation depth over Scour Depth [F2] = {0}", F2); #endregion #region DESIGN CALCULATIONS sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("DESIGN CALCULATIONS"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); #endregion #region STEP 1 sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 1 : "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); //sw.WriteLine("{0,5:f3} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", sw.WriteLine("{0,6:f3} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "SL. N", "Distance from", "Reduced", "Depth of", "Mean Depth", "Distance", "Diffence", "Sectional", "X*X", "Y*X", "X*X", "Wetted"); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "Reference Point", "Levels", "Water", "of Water", "Between", "of Levels", "Area", "", "", "+ ", "Perimeter"); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "to Various", "of the", "from HFL", "between", "two", "between", "Ai=Xi*Di", "", "", "Y*Y", "√(X*X+Y*Y)"); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "Points across", "River", "to LBL", "two", " adjacent", "two", "(sq.m)", "", "", "", "(m)"); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "cross Section", "Bed", "", "adjacent", "Points", " adjacent", "", "", "", "", ""); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "at Bridge", "LBL", "", " Points", "= Xi (m)", "Points", "", "", "", "", ""); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "Location", "(m)", "", "= Di (m)", "", "= Yi(m)", "", "", "", "", ""); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "(m)", "", "", "", "", "", "", "", "", "", ""); sw.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------"); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"); sw.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------"); sw.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------"); sw.WriteLine("{0,6} {1,15:f3} {2,10:f3} {3,10:f3} {4,10:f3} {5,10:f3} {6,10:f3} {7,10:f3} {8,10:f3} {9,10:f3} {10,10:f3} {11,10:f3}", "", "A", "B", "(HFL-B)", "(C1+C2)/2", "(A2-A1)", "(B1-B2)", "(E*F)", "(E*E)", "(F*F)", "(H+I)", "√J"); sw.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------"); sw.WriteLine(); for (int i = 0; i < HR_COL.Count; i++) { sw.WriteLine(HR_COL[i].ToString()); } sw.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------"); sw.WriteLine(HR_COL.ToString()); sw.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------"); #endregion #region STEP 2 sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 2 "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Total Area = A = {0} sq.m", A); sw.WriteLine(); sw.WriteLine("Total Perimeter = P = {0} sq.m", P); sw.WriteLine(); sw.WriteLine("Water spread at HFL between the banks"); lst_dist.Sort(); double water_spread = lst_dist[lst_dist.Count - 1] - lst_dist[0]; water_spread = double.Parse(water_spread.ToString("0.000")); sw.WriteLine(); sw.WriteLine(" = {0} - {1}", lst_dist[lst_dist.Count - 1], lst_dist[0]); sw.WriteLine(" = {0:f3} m", water_spread); sw.WriteLine(); double R = A / P; R = double.Parse(R.ToString("0.000")); sw.WriteLine("R = A / P = {0} / {1}", A, P); sw.WriteLine(); double V2 = (1 / n) * Math.Pow(R, (2.0 / 3.0)) * Math.Pow(S, 0.5d); V2 = double.Parse(V2.ToString("0.000")); sw.WriteLine("Mannings Velocity = V2 = (1/n) * R**(2/3) * S**(1/2)"); sw.WriteLine(" = (1/{0}) * {1}^(2/3) * {2}^(1/2)", n, R, S); sw.WriteLine(" = {0} m/sec", V2); sw.WriteLine(); #endregion #region STEP 3 sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 3 : "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Discharge at Bridge Site"); sw.WriteLine(); double area_vel_mth = A * V1; area_vel_mth = double.Parse(area_vel_mth.ToString("0.000")); sw.WriteLine("Area Velocity method = A * V1"); sw.WriteLine(" = {0} * {1}", A, V1); sw.WriteLine(" = {0} cu.m/sec", area_vel_mth); sw.WriteLine(); double Manning_vel_mth = A * V2; Manning_vel_mth = double.Parse(Manning_vel_mth.ToString("0.000")); sw.WriteLine("Manning's Velocity method = A * V2"); sw.WriteLine(" = {0} * {1}", A, V2); sw.WriteLine(" = {0} cu.m/sec", Manning_vel_mth); sw.WriteLine(); double discharge_adopt = Math.Max(area_vel_mth, Manning_vel_mth); sw.WriteLine("Discharge Adopted for water way = Q = {0} cu.m/sec", discharge_adopt); sw.WriteLine(); double foundation_dep = F1 * discharge_adopt; foundation_dep = double.Parse(foundation_dep.ToString("0.000")); sw.WriteLine("Discharge adopted for Foundation depth"); sw.WriteLine(); sw.WriteLine(" = F1 * {0}", discharge_adopt); sw.WriteLine(" = {0} * {1}", F1, discharge_adopt); sw.WriteLine(" = {0} cu.m/sec", foundation_dep); sw.WriteLine(); double Lw = 4.8 * Math.Sqrt(discharge_adopt); Lw = double.Parse(Lw.ToString("0.000")); sw.WriteLine("Lacy's with = Lw = 4.8 * √Q"); sw.WriteLine(" = 4.8 * √{0:f3}", discharge_adopt); sw.WriteLine(" = {0:f3} m", Lw); sw.WriteLine(); sw.WriteLine("Water spread at H.F.L between Banks = {0:f3} m", water_spread); sw.WriteLine(); sw.WriteLine("Proposed Waterway = L = {0:f3} m", L); sw.WriteLine(); double Db = foundation_dep / L; Db = double.Parse(Db.ToString("0.000")); sw.WriteLine("Discharge per metre width = Db = {0} / {1}", foundation_dep, L); sw.WriteLine(" = {0} cu.m/sec/m", Db); sw.WriteLine(); double d2 = 1.34 * Math.Pow(((Db * Db) / Ksb), (1.0 / 3.0)); d2 = double.Parse(d2.ToString("0.000")); sw.WriteLine("Mean Scour Depth = d2 = 1.34 * ((Db*Db)/Ksb)^(1/3)"); sw.WriteLine(" = 1.34 * (({0}*{0})/{1})^(1/3)", Db, Ksb); sw.WriteLine(" = {0} m", d2); sw.WriteLine(); double D = 1.272 * d2; D = double.Parse(D.ToString("0.000")); Max_Scour_Depth = D; sw.WriteLine("Maximum Scour Depth adopted = D = 1.272 * d2"); sw.WriteLine(" = 1.272 * {0}", d2); sw.WriteLine(" = {0} m", D); sw.WriteLine(); #endregion #region STEP 4 sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 4 : "); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); double min_deg_fond_dep = F2 * D; min_deg_fond_dep = double.Parse(min_deg_fond_dep.ToString("0.000")); sw.WriteLine("Minimum design Foundation depth = F2 * D"); sw.WriteLine(" = {0} * {1}", F2, D); sw.WriteLine(" = {0} m", min_deg_fond_dep); sw.WriteLine(); double min_deg_Fond_Lvl = HFL - min_deg_fond_dep; min_deg_Fond_Lvl = double.Parse(min_deg_Fond_Lvl.ToString("0.000")); sw.WriteLine("Minimum design Foundation Level = HFL - {0}", min_deg_fond_dep); sw.WriteLine(" = {0} - {1}", HFL, min_deg_fond_dep); sw.WriteLine(" = {0} m", min_deg_Fond_Lvl); sw.WriteLine(); double dep = LWL - min_deg_Fond_Lvl; dep = double.Parse(dep.ToString("0.000")); sw.WriteLine("Depth from LWL to minimum Foundation Level"); sw.WriteLine(" = LWL - {0}", min_deg_Fond_Lvl); sw.WriteLine(" = {0} - {1}", LWL, min_deg_Fond_Lvl); sw.WriteLine(" = {0} m", dep); sw.WriteLine(); dep = LBL - min_deg_Fond_Lvl; dep = double.Parse(dep.ToString("0.000")); min_foundation_Level = dep; sw.WriteLine("Depth from LBL to minimum Foundation Level"); sw.WriteLine(" = LBL - {0}", min_deg_Fond_Lvl); sw.WriteLine(" = {0} - {1}", LBL, min_deg_Fond_Lvl); sw.WriteLine(" = {0} m", dep); sw.WriteLine(); #endregion #region END OF REPORT sw.WriteLine(); sw.WriteLine(); sw.WriteLine("---------------------------------------------------------------------------"); sw.WriteLine("--------------------- END OF REPORT --------------------------"); sw.WriteLine("---------------------------------------------------------------------------"); #endregion } catch (Exception ex) { } finally { sw.Flush(); sw.Close(); } }
public void Calculate_Program() { frmCurve f_c = null; StreamWriter sw = new StreamWriter(new FileStream(rep_file_name, FileMode.Create)); try { #region TechSOFT Banner sw.WriteLine("\t\t***********************************************"); sw.WriteLine("\t\t* ASTRA Pro Release 21 *"); sw.WriteLine("\t\t* TechSOFT Engineering Services *"); sw.WriteLine("\t\t* *"); sw.WriteLine("\t\t* DESIGN OF RCC WELL FOUNDATION *"); sw.WriteLine("\t\t* *"); sw.WriteLine("\t\t***********************************************"); sw.WriteLine("\t\t----------------------------------------------"); sw.WriteLine("\t\tTHIS RESULT CREATED ON " + System.DateTime.Now.ToString("dd.MM.yyyy AT HH:mm:ss") + " "); sw.WriteLine("\t\t----------------------------------------------"); #endregion #region USER DATA sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("USER'S DATA"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine("Internal Diameter of Well [Di] = {0} m Marked as (Di) in the Drawing", txt_di.Text); _inner_dia = Di.ToString() + " m"; sw.WriteLine("Depth of Well below Bed Level [L] = {0} m Marked as (L) in the Drawing", txt_L.Text); sw.WriteLine("Concrete Grade [fck] = {0} N/sq.mm", txt_fck.Text); sw.WriteLine("Steel Grade [fy] = {0} N/sq.mm", txt_fy.Text); sw.WriteLine("Diameter of Main Reinforcement Steel bars [D1] = {0} mm", txt_D1.Text); sw.WriteLine("Diameter of Main Hoop Steel bars [D2] = {0} mm", txt_D2.Text); sw.WriteLine("Depth of Curb [Lc] = {0} mm", txt_Lc.Text); sw.WriteLine("Thickness of Curb at bottom [Tc] = {0} mm Marked as (Tc) in the Drawing", txt_Tc.Text); sw.WriteLine(); sw.WriteLine("{0} K = {1:f3}", cmb_K.Text, K); //sw.WriteLine("K = {0}", K); #endregion #region DESIGN CALCULATIONS sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("DESIGN CALCULATIONS"); sw.WriteLine("------------------------------------------------------------"); #endregion #region STEP 1 : THICKNESS OF STEINING sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 1 : THICKNESS OF STEINING"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); sw.WriteLine("Minimum thickness of steining is given by"); sw.WriteLine(); sw.WriteLine(" h = K * (Di + 2*h)*√L"); sw.WriteLine("Or, h = (K * Di * √L) + (K * 2*h * √L)"); sw.WriteLine(); sw.WriteLine("Or, h * (1 - K * 2 * √L) = (K * Di * √L) "); double h = ((K * Di * Math.Sqrt(L)) / ((1 - (K * 2 * Math.Sqrt(L))))); h = double.Parse(h.ToString("0.000")); sw.WriteLine("Or, h = ((K * Di * √L)/(1 - K * 2 * √L))"); sw.WriteLine("Or, h = (({0} * {1} * √{2})/(1 - {0} * 2 * √{2}))", K, Di, L); sw.WriteLine(); sw.WriteLine("Or, h = {0} m = {1} mm", h, (h * 1000)); double Ts = (int)(h * 10.0); Ts = Ts * 100; if (Ts < 500) { Ts = 500; } sw.WriteLine(); sw.WriteLine("Adopt a steining of {0} mm", Ts); #endregion #region STEP 2 : REINFORCEMENT IN STEINING sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 2 : REINFORCEMENT IN STEINING"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); double De = (Di + (2 * (Ts / 1000.0))); De = double.Parse(De.ToString("0.000")); _outer_dia = string.Format("Di + 2 x {0} = {1} m", (Ts / 1000.0), De); sw.WriteLine("De = (Di + (2 * (Ts / 1000.0)))"); sw.WriteLine(" = ({0} + (2 * ({1} / 1000.0)))", Di, Ts); sw.WriteLine(" = {0} m", De); sw.WriteLine(); sw.WriteLine("For RCC wells, Minimum longitudinal reinforcement"); sw.WriteLine(); sw.WriteLine("Asc = 0.2% of gross cross sectional area"); sw.WriteLine(); double Asc = (0.2 / 100) * ((Math.PI / 4.0) * (((Di + (2 * (Ts / 1000.0))) * (Di + (2 * (Ts / 1000.0)))) - (Di * Di))) * 10E5; Asc = double.Parse(Asc.ToString("0")); sw.WriteLine(); sw.WriteLine(" = (0.2/100)*[(π/4)*(De*De - Di*Di)]*10^6"); sw.WriteLine(" = (0.2/100)*[(π/4)*({0}*{0} - {1}*{1})]*10^6", De, Di); sw.WriteLine(); double Asc_by_2 = Asc / 2.0; Asc_by_2 = double.Parse(Asc_by_2.ToString("0")); sw.WriteLine(" = {0} sq.mm for both faces or {1} sq.mm for eachfaces.", Asc, Asc_by_2); sw.WriteLine(); sw.WriteLine("Use {0:f0} mm diameter bars at 300 mm centres on both faces. Marked as (A) in the Drawing", D1); // For drawing _bars_A = string.Format("Use {0:f0} mm diameter bars at 300 mm centres on both faces.", D1); sw.WriteLine(); sw.WriteLine("Hoop reinforcement ≥ 0.04% of volume / unit length"); double H_r = (0.04 / 100) * ((Math.PI / 4.0) * (De * De - Di * Di)); H_r = double.Parse(H_r.ToString("0.0000000")); sw.WriteLine(" ≥ (0.04/100)[(π/4)*(De*De - Di*Di)]"); sw.WriteLine(" ≥ (0.04/100)[(π/4)*({0}*{0} - {1}*{1})]", De, Di); sw.WriteLine(" ≥ {0} cu.m/m", H_r); double H_r_1 = H_r * 7200.0; H_r_1 = double.Parse(H_r_1.ToString("0.000")); sw.WriteLine(" ≥ {0} * 7200 kg/m", H_r); sw.WriteLine(" ≥ {0} kg/m", H_r_1); sw.WriteLine(); sw.WriteLine("Using {0} mm diameter bars", D2); sw.WriteLine(); double avg_cir_hoop = Math.PI * 3.1; avg_cir_hoop = double.Parse(avg_cir_hoop.ToString("0.000")); double avg_dia = 3.1; sw.WriteLine("Using hoops of average diameter = {0} m", avg_dia); sw.WriteLine("Average circumference of the hoop = π * 3.1 = {0} m", avg_cir_hoop); //sw.WriteLine(" = {0} m", avg_cir_hoop); double wt_one_hoop = (0.62 * avg_cir_hoop); wt_one_hoop = double.Parse(wt_one_hoop.ToString("0")); sw.WriteLine(); sw.WriteLine("Weight of one hoop = (0.62 * {0}) = {1} kg.", avg_cir_hoop, wt_one_hoop); sw.WriteLine(); double no_hp_per_mtr = H_r_1 / wt_one_hoop; no_hp_per_mtr = double.Parse(no_hp_per_mtr.ToString("0.00")); sw.WriteLine("No of hoops per metre = ({0}/{1}) = {2}", H_r_1, wt_one_hoop, no_hp_per_mtr); sw.WriteLine(); double spcng_hoop = (1000.0 / no_hp_per_mtr); spcng_hoop = double.Parse(spcng_hoop.ToString("0")); sw.WriteLine("So, Spacing of hoops = (1000/{0}) = {1} mm", no_hp_per_mtr, spcng_hoop); sw.WriteLine(); sw.WriteLine("Use {0} diameter hoops at {1} mm centres on both faces. Marked as (B) in the Drawing", D2, Ts); // For drawing _bars_B = string.Format("Use {0:f0} diameter hoops at {1} mm centres on both faces.", D2, Ts); sw.WriteLine(); #endregion #region STEP 3 : WELL CURB sw.WriteLine(); sw.WriteLine(); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine("STEP 3 : WELL CURB"); sw.WriteLine("------------------------------------------------------------"); sw.WriteLine(); sw.WriteLine(); double min_renf = 72; sw.WriteLine("Minimum reinforcement = {0} kg/cu.m", min_renf); sw.WriteLine(); sw.WriteLine("Proving a curb, {0} mm deep with a bottom width of {1} mm.", Lc, Tc); sw.WriteLine(); double f12 = ((Ts / 1000) - 0.15); f12 = double.Parse(f12.ToString("0.000")); double f13 = (Di + 0.15); f13 = double.Parse(f13.ToString("0.000")); double vol_con_curb = ((Math.PI / 4.0) * (De * De - Di * Di)) - (0.5 * f12 * 0.85 * Math.PI * f13); vol_con_curb = double.Parse(vol_con_curb.ToString("0.000")); sw.WriteLine("Volume of concrete in curb"); sw.WriteLine(" = (π/4)*((De*De - Di*Di)) - (0.5 * ((Ts/1000) - 0.15)*0.85*(Di+0.15))"); sw.WriteLine(" = (π/4)*(({0}*{0} - {1}*{1})) - (0.5 * (({2}/1000) - 0.15)*0.85*({1}+0.15))", De, Di, Ts); sw.WriteLine(" = {0} cu.m", vol_con_curb); sw.WriteLine(); double tot_qnty_stl = min_renf * vol_con_curb; tot_qnty_stl = double.Parse(tot_qnty_stl.ToString("0")); // (C3/4)*(F9*F9-F10*F10)-(F7*F11*F12*C3*F13) sw.WriteLine("Total quantity of steel in Curb = {0} * {1} = {2} kg", min_renf, vol_con_curb, tot_qnty_stl); sw.WriteLine(); sw.WriteLine("Using hoops of average diameter = {0} m", avg_dia); sw.WriteLine(); sw.WriteLine("Weight of one hoop of 20 mm diameter = (π * 3.1 * 2.47) = 24 kg Marked as (C) in the Drawing"); double val1, val2; val1 = tot_qnty_stl / 2.0; val2 = val1 / 24.0; val2 = 1000.0 / val2; val2 = (int)((val2 / 10) + 1); val2 = (val2 * 10); //Weight of one hoop of 20 mm diameter = (π * (Di+2x0.300) * 2.47) = (π * 3.1 * 2.47) = 24 kg, and Spacing = 160 mm c/c _C = string.Format("Weight of one hoop of 20 mm diameter = (π * (Di+2x0.300) * 2.47) = (π * 3.1 * 2.47) = 24 kg, and Spacing = {0:f0} mm c/c", val2); sw.WriteLine("Weight of one hoop of 16 mm diameter = (π * 3.1 * 1.58) = 15.38 kg Marked as (D) in the Drawing"); val2 = val1 / 15.38; val2 = 1000.0 / val2; val2 = (int)((val2 / 10) + 1); val2 = (val2 * 10); //Weight of one hoop of 16 mm diameter = (π * (Di+2x0.300) * 1.58) = (π * 3.1 * 1.58) = 15.38 kg, and Spacing = 110 mm c/c _D = string.Format("Weight of one hoop of 16 mm diameter = (π * (Di+2x0.300) * 1.58) = (π * 3.1 * 1.58) = 15.38 kg, and Spacing={0:f0} mm c/c", val2); sw.WriteLine("Weight of one tie of 8 mm diameter 3 m long = (3 * 0.39) = 1.17 kg Marked as (E) in the Drawing"); //val2 = val1 / 15.38; _E1 = string.Format("Weight of one tie of 8 mm diameter 3 m long = (3 * 0.39) = 1.17 kg"); sw.WriteLine(); sw.WriteLine("Adopting a spacing of 300 mm for ties"); _E2 = string.Format("Adopting a spacing of 300 mm for ties"); sw.WriteLine(); sw.WriteLine("Number of ties required = (π*3.1/0.3) = 33"); sw.WriteLine(); sw.WriteLine("Weight of ties = (33 * 1.17) = 39 kg"); sw.WriteLine("Weight of 8 hoops of 20 mm diameter = (8 * 24) = 192 kg"); sw.WriteLine("Weight of 6 hoops of 16 mm diameter = (6 * 15.38) = 92 kg"); sw.WriteLine(); if (tot_qnty_stl < 323) { sw.WriteLine("Total quantity of steel provided in the Curb = (39 + 192 + 92)"); sw.WriteLine(" = 323 kg > {0} kg, OK", tot_qnty_stl); } else { sw.WriteLine("Total quantity of steel provided in the Curb = (39 + 192 + 92)"); sw.WriteLine(" = 323 kg < {0} kg, NOT OK", tot_qnty_stl); } sw.WriteLine(); #endregion #region END OF REPORT sw.WriteLine(); sw.WriteLine(); sw.WriteLine("---------------------------------------------------------------------------"); sw.WriteLine("--------------------- END OF REPORT --------------------------"); sw.WriteLine("---------------------------------------------------------------------------"); #endregion } catch (Exception ex) { } finally { sw.Flush(); sw.Close(); } }