Fiber-Based Axial-Moment Interaction Analysis of Arbitrary 3D shaped Shear Wall Using MATLAB
- Adisorn O.
- 3 hours ago
- 4 min read
Title: Generalized Fiber-Based PMM Interaction Analysis for 3D Shape Shear Walls Using MATLAB
Author: Adisorn Owatsiriwong | April 2025
Abstract: This article presents a generalized, extensible fiber-based method to analyze the axial and biaxial bending capacity (PMM interaction) of arbitrarily shaped reinforced concrete shear walls, including L-, T-, C-, and core-shaped sections. Using MATLAB, the wall is discretized into fiber elements, and strain compatibility principles are applied to derive axial load (P) and biaxial moment (Mx, My) interaction relationships. The method assumes linear-elastic-plastic stress-strain relations for concrete and steel, and supports curvature sweeps to generate full PMM interaction surfaces. This approach is comparable to the internal mechanics of commercial tools like ETABS and PERFORM-3D, while remaining transparent and open-source.

1. Introduction Walls with complex shapes, such as T-, L-, and C-shaped shear walls, are common in mid- to high-rise buildings. Understanding their 3D axial-bending interaction (PMM surface) is essential for seismic and gravity load design. This paper presents a MATLAB-based computational engine that supports any wall geometry via fiber discretization and strain compatibility.
2. Section Geometry Modeling Wall geometry is defined by a set of line segments forming the perimeter of the cross-section. Each leg or edge is discretized into fibers and positioned in a global coordinate system. The algorithm supports:
Arbitrary shape input (not limited to T or L)
Centroid calculation based on composite fiber areas
Uniform thickness or variable material assignment
3. Fiber Discretization Each boundary segment is discretized into ndiv fiber slices. Each fiber is stored using midpoint coordinates:
x_vals = linspace(x1, x2, ndiv+1);
y_vals = linspace(y1, y2, ndiv+1);
xy(:,1) = (x_vals(1:end-1) + x_vals(2:end))/2;
xy(:,2) = (y_vals(1:end-1) + y_vals(2:end))/2;
Each leg is stored as:
leg(i).xy = [x_centers(:), y_centers(:)];
4. Strain Compatibility Model Strain at each fiber is computed using:
ε=ε0+ϕxy−ϕyx
Where:
ε0: Axial strain
ϕx, ϕy: Curvatures about X and Y axes
strain = eps0 + phix * leg(i).xy(:,2) - phiy * leg(i).xy(:,1);
5. Stress Model The material behavior assumes elastic-plastic response:
fc = min(Ec * strain, 0.85 * fc); % Concrete
fs = min(Es * strain, fy); % Steel
Note: This can later be enhanced with tension cutoff or nonlinear parabolic stress blocks.
6. Force Equilibrium and PMM Interaction To compute axial and moment demands:
Ai = width * height_per_fiber; % For uniform thickness
P = sum(fc .* Ai); % Axial force
Mx = sum(fc .* Ai .* leg(i).xy(:,2)); % Moment about X
My = sum(fc .* Ai .* leg(i).xy(:,1)); % Moment about Y
For full section analysis, sum across all legs:
P_total = sum(P_all_legs);
Mx_total = sum(Mx_all_legs);
My_total = sum(My_all_legs);
7. MATLAB Implementation Modular functions include:
% Function: Generate fiber locations along a segment
function leg = generate_leg_fibers(pt1, pt2, ndiv)
x_vals = linspace(pt1(1), pt2(1), ndiv+1);
y_vals = linspace(pt1(2), pt2(2), ndiv+1);
leg.xy(:,1) = (x_vals(1:end-1) + x_vals(2:end)) / 2;
leg.xy(:,2) = (y_vals(1:end-1) + y_vals(2:end)) / 2;
end
% Function: Compute strain and stress for given curvature
function leg = compute_leg_strain_stress(leg, eps0, phix, phiy, Es, fy, Ec, fc_)
strain = eps0 + phix * leg.xy(:,2) - phiy * leg.xy(:,1);
leg.strain = strain;
leg.stress_c = min(Ec * strain, 0.85 * fc_);
leg.stress_s = min(Es * strain, fy);
end
Main Script Example:
% Define geometry
leg = generate_leg_fibers([0, 0], [0, 3.0], 20);
% Material
Es = 200e3; fy = 420;
Ec = 25e3; fc = 30;
% Strain parameters
eps0 = 0; phix = 0.001; phiy = 0;
% Evaluate
leg = compute_leg_strain_stress(leg, eps0, phix, phiy, Es, fy, Ec, fc);
% Forces
t = 0.2; % thickness
A = t * 3.0 / 20;
P = sum(leg.stress_c * A);
Mx = sum(leg.stress_c .* leg.xy(:,2) * A);
My = sum(leg.stress_c .* leg.xy(:,1) * A);
8. Example Verification A single vertical wall leg, 3.0 m tall and 0.2 m thick is analyzed with curvature: ϕx=0.0033.0=0.001\phi_x = \frac{0.003}{3.0} = 0.001 This gives maximum strain of 0.003 at the bottom, and zero at the top. Stress follows a bilinear envelope, and PMM values are computed by summing over fiber forces.
9. Conclusion This MATLAB-based model offers a robust and flexible tool to evaluate PMM capacity for shear walls of any shape. It provides transparency for design checks, and a platform for future automation or integration into AI-assisted structural design tools.
10. Future Work
Tension cutoff and cracking for concrete
Reinforcement layers integration
3D visualization of PMM surface
GUI and export utilities for design documentation
Appendix: Key Code Snippets
% Fiber Discretization
x_vals = linspace(x1, x2, ndiv+1);
y_vals = linspace(y1, y2, ndiv+1);
x_centers = (x_vals(1:end-1) + x_vals(2:end)) / 2;
y_centers = (y_vals(1:end-1) + y_vals(2:end)) / 2;
xy = [x_centers(:), y_centers(:)];
% Superposition of Strain
strain = eps0 + phix * xy(:,2) - phiy * xy(:,1);
% Stress Function
fc = min(Ec * strain, 0.85 * fc); % Concrete stress
fs = min(Es * strain, fy); % Steel stress
% Force Calculations
A = b * h / ndiv; % Fiber area
P = sum(fc .* A);
Mx = sum(fc .* A .* xy(:,2));
My = sum(fc .* A .* xy(:,1));
Keywords: Shear wall, fiber model, PMM interaction, MATLAB, curvature, strain compatibility, axial-bending surface, 3D wall shape