0% found this document useful (0 votes)
2 views3 pages

Document 1

The document is a MATLAB function for calculating the moment-curvature curve of a reinforced concrete (RC) beam according to EBCS EN 1992 standards. It allows user inputs for material properties, dimensions, reinforcement details, and loading conditions, and computes the resulting moment and curvature values. The function also includes options for tension stiffening and strain hardening effects, and visualizes the results in a plot.

Uploaded by

mubarekhassen242
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views3 pages

Document 1

The document is a MATLAB function for calculating the moment-curvature curve of a reinforced concrete (RC) beam according to EBCS EN 1992 standards. It allows user inputs for material properties, dimensions, reinforcement details, and loading conditions, and computes the resulting moment and curvature values. The function also includes options for tension stiffening and strain hardening effects, and visualizes the results in a plot.

Uploaded by

mubarekhassen242
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

1 clc;

2 clear;
3 close all;
4 % NAME MUBAREK UMER
5 % ID NUMBER 8457/17
6 % MASTERS OF SCIENCE IN CIVIL ENGINEERING (STRUCTURAL ENGINEERRING)
7 % MOMENT- CURVATURE CURVE FOR RC BEAM ACCORDING TO EBCS EN 1992
8 function Mphi_RC_EBCS_EN()
9
10 % ---- User Inputs ----
11 fck = input('fck [MPa]: ');
12 fyk = input('fyk [MPa]: ');
13 Es = 200e3; % Steel modulus (MPa)
14 Ecm = 22*(fck/10)^0.3*1e3; % Eurocode modulus for concrete
15 eps_cu = 0.0035;
16 eps_0 = 0.002;
17
18 b = input('Width b [mm]: ');
19 h = input('Height h [mm]: ');
20 cover = input('Concrete cover [mm]: ');
21
22 % Tension Reinforcement
23 n_t = input('Number of tension bars: ');
24 phi_t = input('Tension bar diameter [mm]: ');
25 As_t = n_t * pi * phi_t^2 / 4;
26 d = h - cover - phi_t/2;
27
28 % Doubly Reinforced Section
29 doubly = input('Is the section doubly reinforced? (1 = Yes, 0 = No): ');
30 if doubly == 1
31 n_c = input('Number of compression bars: ');
32 phi_c = input('Compression bar diameter [mm]: ');
33 As_c = n_c * pi * phi_c^2 / 4;
34 d_prime = cover + phi_c/2;
35 else
36 As_c = 0;
37 d_prime = 0;
38 end
39
40 % Axial Load
41 consider_N = input('Include axial load? (1 = Yes, 0 = No): ');
42 if consider_N
43 N_axial = input('Axial load N [kN] (+ve = compression): ') * 1e3;
44 else
45 N_axial = 0;
46 end
47
48 % Tension Stiffening & Strain Hardening
49 include_ts = input('Include tension stiffening? (1 = Yes, 0 = No): ');
50 include_sh = input('Include strain hardening? (1 = Yes, 0 = No): ');
51
52 % Cracking moment
53 fctm = 0.3 * fck^(2/3);
54 I_g = b * h^3 / 12;
55 M_cr = fctm * I_g / (h/2);
56 phi_cr = M_cr / (Ecm * I_g);
57
58 % Loop setup
59 eps_c_list = linspace(1e-6, eps_cu, 50);
60 phi = zeros(size(eps_c_list));
61 M = zeros(size(eps_c_list));
62
63 for i = 1:length(eps_c_list)
64 eps_c = eps_c_list(i);
65 c_guess = h / 2;
66 options = optimset('Display','off');
67
68 c = fsolve(@(c) equilibriumFull(c, eps_c, fck, eps_0, eps_cu, ...
69 b, d, As_t, As_c, d_prime, fyk, Es, N_axial, include_ts, fctm), c_guess, options);
70
71 eps_s = eps_c * (d - c) / c;
72 eps_sc = doubly * eps_c * (c - d_prime) / c;
73
74 % Steel tension
75 if include_sh
76 fs_t = bilinearSteel(eps_s, Es, fyk, 0.01);
77 else
78 fs_t = min(Es * eps_s, fyk);
79 end
80
81 % Steel compression
82 if doubly
83 if include_sh
84 fs_c = bilinearSteel(eps_sc, Es, fyk, 0.01);
85 else
86 fs_c = min(Es * eps_sc, fyk);
87 end
88 else
89 fs_c = 0;
90 end
91
92 % Concrete stress block
93 [Cc, Mc] = concreteForceSimple(c, eps_c, fck, eps_0, eps_cu, b, d, 100);
94
95 % Tension stiffening (approx)
96 if include_ts && eps_s > 0
97 fct_eff = max(fctm * (1 - eps_s / 0.002), 0);
98 T_ts = fct_eff * As_t;
99 else
100 T_ts = 0;
101 end
102
103 Mt = As_t * fs_t * (d - c);
104 Mcs = As_c * fs_c * (c - d_prime) * doubly;
105 M(i) = (Mc + Mt + Mcs + T_ts * (d - c)) / 1e6;
106 phi(i) = eps_c / c;
107 end
108
109 % Plot
110 figure;
111 plot(phi, M, 'b', 'LineWidth', 2); hold on;
112 plot(phi_cr, M_cr / 1e6, 'ro', 'MarkerSize', 8);
113 xlabel('Curvature [mm^{-1}]'); ylabel('Moment [kN·m]');
114 title('Moment-Curvature Curve (EBCS-EN)');
115 legend('M-φ Curve','Cracking Moment','Location','southeast');
116 grid on;
117 end
118
119 function R = equilibriumFull(c, eps_c, fck, eps_0, eps_cu, b, d, As_t, As_c, d_prime, fyk, Es, N,
include_ts, fctm)
120 [Cc, ~] = concreteForceSimple(c, eps_c, fck, eps_0, eps_cu, b, d, 100);
121 eps_s = eps_c * (d - c) / c;
122 eps_sc = eps_c * (c - d_prime) / c;
123
124 fs_t = min(Es * eps_s, fyk);
125 fs_c = min(Es * eps_sc, fyk);
126
127 if include_ts && eps_s > 0
128 fct_eff = max(fctm * (1 - eps_s / 0.002), 0);
129 T_ts = fct_eff * As_t;
130 else
131 T_ts = 0;
132 end
133
134 R = Cc + As_c * fs_c - As_t * fs_t - T_ts - N;
135 end
136
137 function [C, M] = concreteForceSimple(c, eps_c_max, fck, eps_0, eps_cu, b, d, n)
138 y = linspace(0, c, n); dy = c / (n-1); C = 0; M = 0;
139 for i = 1:n
140 eps_c = eps_c_max * y(i) / c;
141 if eps_c <= eps_0
142 sigma = fck * (2*(eps_c/eps_0) - (eps_c/eps_0)^2);
143 else
144 sigma = fck * (1 - 0.15 * (eps_c - eps_0) / (eps_cu - eps_0));
145 end
146 dC = sigma * b * dy;
147 C += dC;
148 M += dC * (d - y(i));
149 end
150 end
151
152 function fs = bilinearSteel(eps, Es, fyk, eps_u)
153 if abs(eps) <= fyk / Es
154 fs = Es * eps;
155 else
156 % Strain hardening past yield
157 fsh = fyk + 0.01 * Es * (abs(eps) - fyk / Es);
158 fs = sign(eps) * min(fsh, 1.15 * fyk);
159 end
160 end

You might also like