How to idealize a moment curvature plot as a bilinear curve?

14 views (last 30 days)
I have a set of data for moment curvature plot considering those I have to idealize it as a bilinear plot
1. Initial values are (0, 0)
2. Final values are (9.093920000000000e-05, 1.970250000000000e+09)
3. Yield values are (4.133600000000000e-06, 1.630480000000000e+09)
Now the initial and final values will remain the same but yield value can change slightly. The idea is simple that area under
both curve (curve made using MC.txt and bilinear curve (sum of traingular and trapezoidal area)) should be same or minimum.
My code is mentioned below
% Determination of Idealized yield moment and curvature
Firstpoint = [Minitial Phiinitial]; % First point in the idealized plot of MC
Secondpoint = [Myield Phiyield]; % Second point in the idealized plot of MC
Lastpoint = [Multimate Phiultimate]; % Last point in the idelaized plot of MC
K = Secondpoint(:,1)/Secondpoint(:,2); % Stiffness based on second point in the idelaized plot of MC
phiincrement = Phiultimate/2000;
Mincrement = K*phiincrement;
Mfinal = K*Phiultimate;
v = 0:Mincrement:Mfinal;
k = v';
NX = numel(v);
% Iterative procedure to get yield curvature and curvature ductility
for Xi = 1:1:NX
areaCurve = trapz(MC(:,2),MC(:,1));
trainglearea(Xi,1) = 0.5*v(Xi)*(v(Xi)/K);
trapeziumarea(Xi,1) = 0.5*(v(Xi)+Lastpoint(:,1))*(Lastpoint(:,2)-(v(Xi)/K));
Bilineararea(Xi,1) = trainglearea(Xi) + trapeziumarea(Xi);
A(Xi,:) = (abs(areaCurve-Bilineararea(Xi))); % Area difference between idelaized and actual plot
% Idealized yield moment and curvature
[row, col] = min(A);
load momentvalues.txt;
yield = momentvalues(col,1)/K;
ductility = Lastpoint(:,2)/(momentvalues(col,1)/K);
mu(:,1) = ductility ;% Curvature ductility
phiy = Phiultimate/mu; % Yield curvature
My = K*phiy; % Yield moment
% Idealized plot of MC
X = [Firstpoint(:,2) phiy Lastpoint(:,2)];
Y = [Firstpoint(:,1) My Lastpoint(:,1)];
hold on
xlabel('Curvature (1/mm)'); ylabel('Moment (N-mm)');
%axis([0 Lastpoint(:,2) 0 2.0*Lastpoint(:,1)])
dlmwrite('Output.txt',[Y(2) X(2) Multimate Phiultimate (Phiultimate/X(2))],'newline','pc')
hold off
grid on
xlabel('Curvature (1/mm)'); ylabel('Moment (N-mm)');
I am not getting the area 0 or minimum its quite high
Can anyone tell what I am doing incorrect in this code?

Answers (1)

VBBV on 2 Feb 2023
trapeziumarea(Xi,1) = 0.5*(v(Xi)+(Lastpoint(:,2)-Lastpoint(:,1)))*(v(Xi)/K);
Trapezium area may be different as above
  1 Comment
Raj Arora
Raj Arora on 3 Feb 2023
This is not correct Lastpoint(:,2) and Lastpoint(:,1) consist of x and y value, hence cannot be subtracted for calculating trapezium area.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!