MATLAB Answers

Keep getting error message on my ODE function

2 views (last 30 days)
I am currently working on coding polymerization of PLA in a batch reactor keep getting error message. My professor helped my group get to this point but eveytime we run it we get,
Error using horzcat
Dimensions of arrays being concatenated are not consistent.
We have tried everything we can think of to fix this problem but we arent sure why this is happening or how to fix it.
Error in sad_girl_Project (line 46)
u0=[P0 zeros(N,1) 0] ;
function sad_girl_Project
T = 180+273.15; %Temperature [K]
Keq=10;
%% Calculations
lk1=-(6810.3/T)+6.1928
k1=exp(lk1) %rate constant for Polymerization (L/mol*s)
km1=k1/Keq %rate constant for depolymerization (L/mol*s)
P0=10;
N=100; %degree of polimerzation
% u=[P1, P2, .... PN, W]
function dudt=deq(t,u)
P= u(1:N);
W= u(N-1);
sum3= sum(P);
sum4=0;
for ii=1:N
sum1 = 0;
for jj=1:ii-1
sum1= sum1 + P(ii-jj)*P(jj);
end % for jj
%disp([ii, P(1:2), sum1])
sum2= sum(P(ii+1:N));
dudt(ii)= k1*sum1 + 2*km1*W*sum2 - ...
2*k1*P(ii)*sum3 - km1*W*(ii-1)*P(ii);
sum4 = sum4 + (ii-1)*P(ii);
%disp([ii, sum1, sum2 sum3])
end % for ii
dudt(N+1)= k1*sum3^2 - km1*W*sum4;
dwdt(N+1)=0;
dudt=[dudt; dwdt];
end % deq
m=[0 24*3600] ;
u0=[P0 zeros(N,1) 0] ;
[t,u]=ode15(@deq,m,u0) ;
%% Plot
figure(1)
plot(t,u)
title('Time Vs. Molecular Weight')
xlabel('Time []')
ylabel('Concentration []')
end

  2 Comments

darova
darova on 27 Nov 2019
DId you try to change the name of a function?
function happy_girl_Project
How do you want u0 vector should looks like?
u0=[P0 zeros(N,1) 0] ;
% P0 = 10;
% zeros(N,1) - column vector
% 0 = 0
Jan
Jan on 28 Nov 2019
I've formatted the text and the code to improve the readability.

Sign in to comment.

Accepted Answer

Jan
Jan on 28 Nov 2019
u0 = [P0, zeros(1, N + 1)];

More Answers (1)

Kristin Cynthia Hansel
Kristin Cynthia Hansel on 2 Dec 2019
Thank you!

  0 Comments

Sign in to comment.

Sign in to answer this question.

Tags

Products