|
|
|
|
|
|
|
|
| clc; clear;
|
| disp('Singly Reinforced Beam Calculator');
|
|
|
|
|
| fc = input('Concrete strength f''c (ksi): ');
|
| fy = input('Steel yield strength fy (ksi): ');
|
| b = input('Beam width b (in): ');
|
| h = input('Beam depth h (in): ');
|
| cover = input('Clear cover to centroid of bottom bars (in): ');
|
| n_bars = input('Total number of bars: ');
|
| a_bar = input('Area per bar (in^2): ');
|
|
|
|
|
| As = n_bars * a_bar;
|
| fprintf('Total As: %.3f in^2\n', As);
|
|
|
|
|
| layers = input('Double layer? (y/n): ', 's');
|
| if lower(layers) == 'y'
|
| n_bot = input('Number of bars in bottom layer: ');
|
| n_top = input('Number of bars in top layer: ');
|
| spacing = input('Spacing between layers (in): ');
|
|
|
|
|
| g = (n_bot * a_bar * cover + n_top * a_bar * (cover + spacing)) / As;
|
| d = h - g;
|
| dt = h - cover;
|
| fprintf('Centroid g: %.3f in\n', g);
|
| fprintf('Effective d: %.3f in\n', d);
|
| else
|
| d = h - cover;
|
| dt = d;
|
| end
|
|
|
|
|
| Es = 29000;
|
| Ecu = 0.003;
|
|
|
|
|
| if fc <= 4
|
| beta1 = 0.85;
|
| elseif fc > 4 && fc <= 8
|
| beta1 = 0.85 - 0.05 * (fc - 4);
|
| else
|
| beta1 = 0.65;
|
| end
|
|
|
|
|
| T = As * fy;
|
| a = T / (0.85 * fc * b);
|
| c = a / beta1;
|
|
|
|
|
| eps_y = fy / Es;
|
| eps_s = Ecu * (d - c) / c;
|
|
|
| if eps_s < eps_y
|
| fprintf('Steel did not yield. Solving for exact c...\n');
|
| A_q = 0.85 * fc * b * beta1;
|
| B_q = As * Es * Ecu;
|
| C_q = -As * Es * Ecu * d;
|
| c = (-B_q + sqrt(B_q^2 - 4 * A_q * C_q)) / (2 * A_q);
|
| a = beta1 * c;
|
| eps_s = Ecu * (d - c) / c;
|
| T = As * (Es * eps_s);
|
| end
|
|
|
|
|
| Mn = T * (d - a/2) / 12;
|
| fprintf('a: %.3f in\n', a);
|
| fprintf('c: %.3f in\n', c);
|
| fprintf('Mn: %.2f kip-ft\n', Mn);
|
|
|
|
|
| As_min = max(3 * sqrt(fc * 1000), 200) / (fy * 1000) * b * d;
|
| fprintf('As_min: %.3f in^2\n', As_min);
|
| if As >= As_min
|
| disp('As >= As_min: OK');
|
| else
|
| disp('As < As_min: FAILED');
|
| end
|
|
|
|
|
| eps_t = Ecu * (dt - c) / c;
|
| if eps_t >= 0.005
|
| phi = 0.90;
|
| elseif eps_t <= 0.002
|
| phi = 0.65;
|
| else
|
| phi = 0.65 + (eps_t - 0.002) * (250 / 3);
|
| end
|
| fprintf('phi: %.3f\n', phi);
|
| fprintf('Design Strength (phi*Mn): %.2f kip-ft\n', phi * Mn);
|
|
|