I got the error: Subscript indices must either be real positive integers or logicals. Could I have your help please?
1 view (last 30 days)
Show older comments
Hi supporters.
I have the error mentioned above in line 33 of the following script
function f=femRHS2d(x,y,u)
element_order = 3;
xmin = 0; xmax=1; ymin = 0; ymax = 1;
nx=3;
ny=3;
node_num = nx * ny;
element_num = 2 * ( nx - 1 ) * ( ny - 1 );
node_xy = zeros(2 , node_num);
element_node = zeros(element_order , element_num);
v=zeros(node_num , 1);
u_old=ones(node_num , 1);
%
k = 0;
for j = 1 : ny
for i = 1 : nx
k = k + 1;
node_xy(1,k) = ( ( nx - i ) * xmin + ( i - 1 ) * xmax ) / ( nx - 1 );
node_xy(2,k) = ( ( ny - j ) * ymin + ( j - 1 ) * ymax ) / ( ny - 1 );
end
end
%
for e = 1 : element_num
i1 = element_node(1,e);
i2 = element_node(2,e);
i3 = element_node(3,e);
32- area = 0.5 * ...
33- ( node_xy(1,i1) * ( node_xy(2,i2) - node_xy(2,i3) ) ...
34- + node_xy(1,i2) * ( node_xy(2,i3) - node_xy(2,i1) ) ...
35- + node_xy(1,i3) * ( node_xy(2,i1) - node_xy(2,i2) ) );
%
% Consider each quadrature point.
% Here, we use the midside nodes as quadrature points.
%
for q1 = 1 : 3
q2 = mod ( q1, 3 ) + 1;
nq1 = element_node(q1,e);
nq2 = element_node(q2,e);
xq = 0.5 * ( node_xy(1,nq1) + node_xy(1,nq2) );
yq = 0.5 * ( node_xy(2,nq1) + node_xy(2,nq2) );
wq = 1.0 / 3.0;
%
% Consider each test function in the element.
%
for ti1 = 1 : element_order
ti2 = mod ( ti1, 3 ) + 1;
ti3 = mod ( ti1 + 1, 3 ) + 1;
nti1 = element_node(ti1,e);
nti2 = element_node(ti2,e);
nti3 = element_node(ti3,e);
qi = 0.5 * ( ...
(node_xy(1,nti3)-node_xy(1,nti2))*(yq-node_xy(2,nti2)) ...
-(node_xy(2,nti3)-node_xy(2,nti2))*(xq-node_xy(1,nti2))) ...
/ area;
dqidx = - 0.5 * ( node_xy(2,nti3) - node_xy(2,nti2) ) / area;
dqidy = 0.5 * ( node_xy(1,nti3) - node_xy(1,nti2) ) / area;
v = rhs(u_old);
f(nti1) = f(nti1) + area * wq * rhs * qi;
end
end
end
0 Comments
Answers (1)
Torsten
on 17 Apr 2022
Edited: Torsten
on 17 Apr 2022
You initialized "element_node" as a matrix of zeros. That's why you try to access node_xy(1,0),node_xy(2,0) in the area calculation.
But MATLAB indexing starts at 1, not 0, which results in the error message.
3 Comments
Torsten
on 17 Apr 2022
If I knew what the matrix "element_node" is supposed to do, maybe I could answer.
See Also
Categories
Find more on Number Theory in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!