## How Can I Speed up a loop that solves a pde?

### David Koenig (view profile)

on 21 Nov 2014
Latest activity Commented on by Jan

### Jan (view profile)

on 24 Nov 2014
Hello,
I am solving the 4th order pde for plate vibration and after discretizing the pde and solving for W(x,y,t) or W(k,m,n+1) as a function of W(k,m,n) and W(k,m,n-1) I get a double for loop like
for k=3:K-3
for m=3:M-3
Wnp1(k,m)=coe(1,3)*Wn(k-2,m)...
+ coe(2,2)*Wn(k-1,m-1) + coe(2,3)*Wn(k-1,m) + coe(2,4)*Wn(k-1,m+1)...
+coe(3,1)*Wn(k,m-2) + coe(3,2)*Wn(k,m-1)+coe(3,3)*Wn(k,m)...
+coe(3,4)*Wn(k,m+1)+coe(3,5)*Wn(k,m+2)...
+coe(4,2)*Wn(k+1,m-1)+coe(4,3)*Wn(k+1,m)+coe(4,4)*Wn(k+1,m+1)...
+coe(5,3)*Wn(k+2,m)...
+cNm1*Wnm1(k,m)+SWW(k,m);
end
end
where coe is a 5x5 matrix with several zeros that contains the coefficients in the finite difference approximation to the pde and Wn(k,m) represents the displacement at position k,m at time n.
I was hoping to find a way to use matrix multiplication that might speed things up but I am stumped. Does anyone have any suggestions?
Thanks,
Dave

Jan

### Jan (view profile)

on 24 Nov 2014
Do you pre-allocate the output Wnp1?