Moment-Curvature Analysis of a Reinforced Concrete Column Section¤
This example demonstrates how to perform moment-curvature analysis on arbitrary OpenSees sections using anlys.MomentCurvature.
Section geometry : 400 mm x 600 mm rectangular RC column
Concrete cover : 40 mm (to stirrup outer face)
Longitudinal bars : 10 x D25 (rho_l ~ 1.23 %)
Axial load cases : 0, -500, -1000, -2000 kN (compression negative)
1 2 3 4 | |
Output
============================================================
OpenSeesMatlab v3.8.0.1
OpenSees MEX Interface for MATLAB
Copyright (c) 2026, By Yexiang Yan
Type 'help OpenSeesMatlab' in MATLAB for documentation.
Documentation also available at
https://openseesmatlab.readthedocs.io/en/latest/
============================================================
1 2 3 | |
Output
MomentCurvature with properties:
secTag: NaN
P: NaN
phi: [0x1 double]
M: [0x1 double]
FiberData: []
cyclePath: [0x1 double]
NMMresult: [1x1 struct]
1 2 | |
Define opensees section¤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | |
1 | |
Monotonic M-phi for four axial load levels¤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Output
Case 1: N = 0
MomentCurvature: analysis complete.
Case 2: N = -500 kN
MomentCurvature: analysis complete.
Case 3: N = -1000 kN
MomentCurvature: analysis complete.
Case 4: N = -2000 kN
MomentCurvature: analysis complete.
Plot M-phi for all axial load levels
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Yield and ultimate curvature for each case:
1 | |
Output
--- Limit-state identification ---
1 2 | |
Output
Case phi_y[1/m] My[kN.m] phi_u[1/m] Mu[kN.m] mu_phi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | |
Output
Warning: matTag 1 strain -0.016 not reached; last step used.
Warning: Moment has not dropped 20.0%; last step used.
N = 0 0.0090 325.0 0.1500 362.6 16.67 [peak-drop]
Warning: matTag 1 strain -0.016 not reached; last step used.
Warning: Moment has not dropped 20.0%; last step used.
N = -500 kN 0.0095 385.2 0.1500 412.7 15.79 [peak-drop]
Warning: matTag 1 strain -0.016 not reached; last step used.
Warning: Moment has not dropped 20.0%; last step used.
N = -1000 kN 0.0105 446.3 0.1500 448.7 14.29 [peak-drop]
Warning: Moment has not dropped 20.0%; last step used.
N = -2000 kN 0.0125 543.1 0.1215 470.6 9.72 [crushing]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Bilinear approximation for each axial load case
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Output
N = 0 0.0096 347.5
N = -500 kN 0.0100 403.8
N = -1000 kN 0.0105 447.1
N = -2000 kN 0.0113 489.9
1 | |
Plot stress-strain history of fiber points:
1 | |
Ductility summary bar chart
1 2 3 4 5 6 7 8 9 10 11 12 | |
N-My-Mz interaction surface (strong + weak axis)¤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Output
buildNMM: capacityMode=strain, 21 levels x 2 = 42 analyses.
N = -2.400e+06 (1/21)
N = -2.280e+06 (2/21)
N = -2.160e+06 (3/21)
N = -2.040e+06 (4/21)
N = -1.920e+06 (5/21)
N = -1.800e+06 (6/21)
N = -1.680e+06 (7/21)
N = -1.560e+06 (8/21)
N = -1.440e+06 (9/21)
N = -1.320e+06 (10/21)
N = -1.200e+06 (11/21)
N = -1.080e+06 (12/21)
N = -9.600e+05 (13/21)
N = -8.400e+05 (14/21)
N = -7.200e+05 (15/21)
N = -6.000e+05 (16/21)
N = -4.800e+05 (17/21)
N = -3.600e+05 (18/21)
N = -2.400e+05 (19/21)
N = -1.200e+05 (20/21)
N = +0.000e+00 (21/21)
buildNMM: done. (42 OpenSees analyses)
1 | |
Cyclic analysis at N = -1000 kN¤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Output
MomentCurvature: analysis complete.
1 2 3 4 5 6 7 | |
Fiber stress-strain histories (N = -1000 kN, monotonic)
1 2 | |