# Poisson Equation with Mixed Boundary Condition - MatlaB

by pinks
Tags: boundary, condition, equation, matlab, mixed, poisson
 P: 1 Hi guys, I'm solving a Poisson Equation with Mixed Boundary condition. But I have trouBle with that mixed BC in MATLAB. Anyone can help to fix? Thanks a lot! dT^2/dx^2+dT/dy^2=-Q(x,y)/k Rectangular domain (HxL), BC: Top: T(x,H)=Th, Left: dT/dx=0, Bottom: dT/dy=q, Right: dT/dx+B(T-Tinf)=0 Q(x,y) = 200*sin((2*pi/L)*x) + 175*sin((2*pi/H)*y) nx ny L H q B k Th Tinf 20 30 2 3 -25 1 1 100 50 Coding: I tried 3 ways to define the mixed BC But it doesn't work. Nx=20; %input('value of Nx:') Ny=30; %input('value of Ny:') L=2; %input('value of L:') %input initial value of Nx,Ny,L,H,Q,q,B H=3; %input('value of H:') q=-25; %input('value of q:') B=1; %input('value of B:') k=1; %input('value of k:') Th=100; %input('value of Th:') Tinf=50; %input('value of Tinf:') err=1; tol=0.0001; iter=0; itmax=5000; %set initial error, tolerance, iteration limitation. T=zeros(Nx+1,Ny+1); T(:,Ny+1)=Th; % BOUNDARY CONDITION FOR TOP EDGE dx=L/Nx; dy=H/Ny; beta=(dx^2)/(dy^2); x=0:dx:L; y=0:dy:H; Q=zeros(Nx+1,Ny+1); for k=1:Nx+1 for l=1:Ny+1 Q(k,l)=200*sin((2*pi/L)*x(k)) + 175*sin((2*pi/H)*y(l)); end end while (err > tol) iter=iter+1; Told=T; for i=1:Nx,j=1:Ny; if i==Nx+1 ; %---Tried 3 ways below but it doesn't work----- %T(i,j) = (dx^2*Q(i,j)/k+(T(i-1,j)-2*dx*B*(T(i,j)-Tinf))+T(im1,j)+beta*T(i,jp1)+beta*T(i,jm1))/(2+2*beta); %T(i,j) = (dx^2*Q(i,j)/k+2*T(i-1,j)+2*dx*B*Tinf+beta*T(i,jp1)+beta*T(i,jm1))/(2+2*beta+dx*B); %T(i+1,j)=T(i-1,j)-2*dx*B*(T(i,j)-Tinf); else ip1=i+1; end if i==1; im1=2; % dT/dx=0 at left edge else im1=i-1; end for j=1:Ny; jp1=j+1; if j==1; jm1=2; T(i,j) = (dx^2*Q(i,j)/k+ T(ip1,j)+T(im1,j)+beta*T(i,jp1)+beta*(T(i,jm1)-2*q*dy))/(2+2*beta); else jm1=j-1; end T(i,j) = (dx^2*Q(i,j)/k+ T(ip1,j)+T(im1,j)+beta*T(i,jp1)+beta*T(i,jm1))/(2+2*beta); %value of T we get from the equation end end err=max(max(T-Told))/max(max(T)); if iter > itmax, break, end end Unu_Iterative=T'; [xp,yp]=meshgrid(x,y); subplot(2,1,1); surf(xp,yp,T') subplot(2,1,2); contour(x,y,T',20)

 Related Discussions General Physics 0 Calculus & Beyond Homework 2 Differential Equations 0 Calculus & Beyond Homework 2