asidesi

Finite differencing scheme on 2-D plate

Mar 16th, 2021 (edited)
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.11 KB | None | 0 0
  1. %% Initialisation
  2. dt=0.01;
  3. lt=5/dt+1;
  4. dx=2*pi/100;
  5. dy=2*pi/100;
  6. a=0.1;
  7. B=0.1;
  8. L=4*pi;
  9. H=2*pi;
  10. n=round(L/dx) +1;
  11. m=round(H/dy) +1;  
  12. %% setting up x vector
  13. x=zeros(n,1);
  14. for i=1:n
  15.     x(i)=(i-1)*dx;
  16. end
  17. %% setting up y vector
  18. y=zeros(m,1);
  19. for j=1:m
  20.     y(j)=(j-1)*dy;
  21. end
  22. %% Initial Condition
  23. for i=1:n
  24.     for j=1:m
  25.         T(i,j,1)=20*cos((i-1)*dx)*sin((j-1)*dy);
  26.     end
  27. end
  28. %%  Realisations - seeting up t vector
  29. t=zeros(lt,1);
  30. for k=1:lt
  31. T(k)=(k-1)*dt;
  32. end
  33. %% Time Loop for velocity distribution
  34. v=zeros(n,m,lt);
  35. for i=1:n
  36. for k=2:lt
  37.     V(i,k)=5*(1-(x(i)-2*pi)^2/(4*pi^2))*cos(pi*t(k))*sin(x(i));
  38. end
  39.  
  40. end
  41. %% Discretisation
  42. as=((-B*(dt/dy^2)) + V*(dt/2*dy));
  43. aw=(-a*dt/dx^2);
  44. ap=(1+2*a*(dt/dx^2)+2*B*(dt/dy^2));
  45. an=((-B*(dt/dy^2))-V*(dt/2*dy));
  46. ae=(-a*(dt/dx^2));
  47.  
  48. for k=2:lt
  49. %% T1
  50. for i=2:n-1
  51.     for j=2:m-1
  52.         pointer=(j-1)*n+i;
  53.         A(pointer,pointer-n)=as(i,k);
  54.         A(pointer,pointer-1)=aw;
  55.         A(pointer, pointer)=ap;
  56.         A(pointer,pointer+1)=ae;
  57.         A(pointer,pointer+n)=an(i,k);
  58.     end
  59. end
  60.  
  61. %% T2
  62. for i=1
  63.     for j=2:m-1
  64.         pointer=(j-1)*n+i;
  65.         A(pointer,pointer)=ap;
  66.         A(pointer,pointer+1)=(aw+ae);
  67.         A(pointer,pointer+n)=an(i,k);
  68.         A(pointer,pointer-n)=as(i,k);
  69.     end
  70. end
  71.  
  72. %% T3
  73. for i=n
  74.     for j=2:m-1
  75.          pointer=(j-1)*n+i;
  76.         A(pointer, pointer)=ap;
  77.         A(pointer, pointer-1)=(aw+ae);
  78.         A(pointer, pointer-n)=as(i,k);
  79.         A(pointer, pointer+n)=an(i,k);
  80.     end
  81. end
  82. %% T4
  83. for i=2:n-1
  84.     for j=1
  85.         pointer=(j-1)*n+i;
  86.         A(pointer,pointer)=ap;
  87.         A(pointer,pointer+(m-2)*n)=as(i,k);
  88.         A(pointer,pointer-1)=aw;
  89.         A(pointer,pointer+1)=ae;
  90.         A(pointer,pointer+n)=an(i,k);
  91.     end
  92. end
  93.  
  94. %% T5
  95. for i=2:n-1
  96.     for j=m
  97.         pointer=(j-1)*n+i;
  98.          A(pointer,pointer-m)=as(i,k);
  99.          A(pointer,pointer-1)=aw;
  100.          A(pointer,pointer)=ap;
  101.          A(pointer,pointer+1)=ae;
  102.          A(pointer,pointer-(m+2)*n)=an(i,k);
  103.     end
  104. end
  105.  
  106. %% T6
  107. for i=1
  108.     for j=1
  109.         pointer=(j-1)*n+i;
  110.         A(pointer,pointer+1)=(aw+ae);
  111.         A(pointer,pointer+(m-2)*n)=as(i,k);
  112.         A(pointer,pointer)=ap;
  113.         A(pointer,pointer+n)=an(i,k);
  114.     end
  115. end
  116.  
  117. %% T7
  118. for i=n
  119.     for j=1
  120.         pointer=(j-1)*n+i;
  121.           A(pointer,pointer+(m-2)*n)=as(i,k);
  122.           A(pointer,pointer)=ap;
  123.           A(pointer,pointer-1)=(aw+ae);
  124.           A(pointer,pointer+n)=an(i,k);
  125.     end
  126. end
  127.  
  128. %% T8
  129. for i=1
  130.     for j=m
  131.         pointer=(j-1)*n+i;
  132.           A(pointer,pointer-n)=as(i,k);
  133.           A(pointer,pointer)=ap;
  134.           A(pointer,pointer+1)=(aw+ae);
  135.           A(pointer,pointer+n)=an(i,k);
  136.     end
  137. end
  138.    %% T9
  139. for i=n
  140.     for j=m
  141.         pointer=(j-1)*n+i;
  142.           A(pointer,pointer-n)=as(i,k);
  143.           A(pointer,pointer)=ap;
  144.           A(pointer,pointer-1)=(aw+ae);
  145.           A(pointer,pointer+n)=an(i,k);
  146.     end
  147. end      
  148.         pointer=(j-1)*n+i;
  149.         b(pointer)=f(i,j,k-1);
  150.         Save A\b
  151. end
  152.  
  153. Plot(A\b)
  154.    
  155.  
  156.     (1-((i-1)*dx)^2/4*pi^2)*cos(pi*k)*sin((i-1)*dx);
  157.        
  158.  Contour(x,y)
Add Comment
Please, Sign In to add comment