% wall_sdof.m -- Patlamaya karsi betonarme duvar: Biggs esdeger SDOF (elasto-plastik)
% Kaynak: Biggs (1964); UFC 3-340-02 (2008) Bolum 3-4. Hasar siniri: PDC TR-06-08 (GIRDI)
function wall_sdof()
  t = 0.30; L = 3.0; cover = 0.04;
  rho_s = 0.005; fy = 420e6; fc = 30e6;
  Pr = 830e3; ir = 1800.0;

  Ec  = 4700e6 * sqrt(fc/1e6);
  d   = t - cover;  As = rho_s * d;
  fdy = 1.10 * 1.17 * fy;  fdc = 1.19 * fc;
  a   = As * fdy / (0.85 * fdc);
  Mp  = As * fdy * (d - a/2);
  n   = 200e9 / Ec;  rn = n * rho_s;
  k   = sqrt(rn^2 + 2*rn) - rn;
  Ic  = d^3 * (k^3/3 + rn*(1-k)^2);
  Ia  = (t^3/12 + Ic) / 2;
  ru  = 8 * Mp / L^2;
  KE  = 384 * Ec * Ia / (5 * L^4);
  ye  = ru / KE;
  m   = 2400 * t;
  td  = 2 * ir / Pr;

  KLM = 0.78;
  [ym, T] = solve(KLM, m, KE, ru, Pr, td);
  if ym > ye
    KLM = (0.78 + 0.66) / 2;            % UFC: plastiklesince K_LM ortalamasi
    [ym, T] = solve(KLM, m, KE, ru, Pr, td);
  end
  mu = ym / ye;  theta = atand(2*ym/L);
  fprintf('Mp = %.2f kN.m/m   ru = %.2f kPa   ye = %.3f mm\n', Mp/1e3, ru/1e3, ye*1e3);
  fprintf('T  = %.3f ms   td = %.3f ms   K_LM = %.2f\n', T*1e3, td*1e3, KLM);
  fprintf('ymax = %.3f mm   mu = %.3f   theta = %.3f derece\n', ym*1e3, mu, theta);
end

function [ymax, T] = solve(KLM, m, KE, ru, Pr, td)
  Me = KLM * m;  T = 2*pi*sqrt(Me/KE);
  dt = min(T, td)/2000;  tEnd = td + 3*T;
  y = 0; v = 0; yp = 0; ymax = 0; tmax = 0; tt = 0;
  while tt <= tEnd
    if tt <= td, p = Pr*(1 - tt/td); else, p = 0; end
    r = KE*(y - yp);
    if r > ru,      yp = y - ru/KE; r = ru;
    elseif r < -ru, yp = y + ru/KE; r = -ru; end
    v = v + (p - r)/Me*dt;  y = y + v*dt;
    if y > ymax, ymax = y; tmax = tt; end
    if tt > td && v < 0 && tt > tmax + T/4, break; end
    tt = tt + dt;
  end
end
