|
|
|
|
|
|
|
|
| fc = input('Compressive strength of concrete, fc (ksi): ');
|
| fy = input('Yield strength of steel, fy (ksi): ');
|
| b = input('Width of the beam, b (in): ');
|
| d = input('Effective depth to centroid, d (in): ');
|
| dt = input('Depth to extreme tension layer, dt (in): ');
|
|
|
| As_choice = input('Input steel area: [1] Area [2] Bar Size: ');
|
|
|
| if As_choice == 1
|
| As = input('Steel area, As (in^2): ');
|
| else
|
| Asq = input('Number of bars: ');
|
| Asd = input('Bar size: ');
|
| As = Asq * (pi * (Asd/8)^2) / 4;
|
| fprintf('As: %.3f in^2\n', As);
|
| end
|
|
|
| Es = input('Modulus of Elasticity, Es (ksi): ');
|
| Ecu = 0.003;
|
|
|
|
|
| T = As * fy;
|
| fprintf('T: %.2f kips\n', T);
|
|
|
|
|
| if fc <= 4
|
| beta1 = 0.85;
|
| elseif fc > 4 && fc <= 8
|
| beta1 = 0.85 - 0.05 * (fc - 4);
|
| else
|
| beta1 = 0.65;
|
| end
|
|
|
|
|
| a = T / (0.85 * fc * b);
|
| c = a / beta1;
|
| fprintf('a: %.3f in\n', a);
|
| fprintf('c: %.3f in\n', c);
|
|
|
|
|
| Strain_y = fy / Es;
|
| Strain_s = Ecu * (d - c) / c;
|
| fprintf('Ey: %.5f\n', Strain_y);
|
| fprintf('Es: %.5f\n', Strain_s);
|
|
|
|
|
| if Strain_s >= Strain_y
|
| fprintf('Steel yielded. Assumption OK.\n');
|
| Mn = T * (d - a/2);
|
| else
|
| fprintf('Steel did NOT yield. Recalculating c...\n');
|
| A_quad = 0.85 * fc * b * beta1;
|
| B_quad = As * Es * Ecu;
|
| C_quad = -As * Es * Ecu * d;
|
| c = (-B_quad + sqrt(B_quad^2 - 4 * A_quad * C_quad)) / (2 * A_quad);
|
| a = beta1 * c;
|
| Strain_s = Ecu * (d - c) / c;
|
| T = As * (Es * Strain_s);
|
| Mn = T * (d - a/2);
|
| fprintf('Exact c: %.3f in\n', c);
|
| fprintf('Exact T: %.2f kips\n', T);
|
| end
|
|
|
|
|
| Mn_ft = Mn / 12;
|
| fprintf('Mn: %.2f kip-in\n', Mn);
|
| fprintf('Mn: %.2f kip-ft\n', Mn_ft);
|
|
|
|
|
| fc_psi = fc * 1000;
|
| fy_psi = fy * 1000;
|
| limit_check = 3 * sqrt(fc_psi);
|
| if limit_check < 200
|
| As_min = (200 / fy_psi) * b * d;
|
| else
|
| As_min = (limit_check / fy_psi) * b * d;
|
| end
|
| fprintf('As_min: %.3f in^2\n', As_min);
|
|
|
| if As >= As_min
|
| fprintf('As >= As_min. OK.\n');
|
| else
|
| fprintf('As < As_min. FAILED.\n');
|
| end
|
|
|
|
|
| Strain_t = Ecu * (dt - c) / c;
|
| fprintf('Et: %.5f\n', Strain_t);
|
|
|
| if Strain_t >= 0.005
|
| phi = 0.90;
|
| elseif Strain_t < 0.002
|
| phi = 0.65;
|
| else
|
| phi = 0.65 + (Strain_t - 0.002) * (250 / 3);
|
| end
|
| fprintf('phi: %.2f\n', phi);
|
|
|
|
|
| phi_Mn = phi * Mn_ft;
|
| fprintf('M: %.2f kip-ft\n', phi_Mn);
|
|
|