80 likes | 189 Views
Hints for Deforming Grid. x(k)=r*cos(theta); y(k)=r*sin(theta); xold(k)=x(k); yold(k)=y(k);. Set up grid assuming a small initial radius r = 1.1 say, set Dt = 0.005 ( say ). 2. %definitial delt=0.005; St=1; for i=1:nodes T(i)=0; Told(i)=0; end.
E N D
Hints for Deforming Grid x(k)=r*cos(theta); y(k)=r*sin(theta); xold(k)=x(k); yold(k)=y(k); • Set up grid • assuming a • small initial radius • r = 1.1 say, set • Dt = 0.005 (say) 2 %definitial delt=0.005; St=1; for i=1:nodes T(i)=0; Told(i)=0; end
Iteration in a time step (Between 20 and 50) Calculate and store coefficients for k=1:loopcount k1=sup(i,k); k2=sup(i,k+1); xL(1) = x(i); %xL=local x-coordinate xL(2) = x(k1); xL(3) = x(k2); yL(1) = y(i); %yL=local y-coordinate yL(2) = y(k1); yL(3) = y(k2); xLold(1) = xold(i); xLold(2) = xold(k1); xLold(3) = xold(k2); yLold(1) = yold(i); yLold(2) = yold(k1); yLold(3) = yold(k2); %grid velocity contributions vxL(1)=(xL(1)-xLold(1))/delt; vxL(2)=(xL(2)-xLold(2))/delt; vxL(3)=(xL(3)-xLold(3))/delt; vyL(1)=(yL(1)-yLold(1))/delt; vyL(2)=(yL(2)-yLold(2))/delt; vyL(3)=(yL(3)-yLold(3))/delt; %CV Volunme v=xLold(2)*yLold(3)-xLold(3)*yLold(2)-xLold(1)*yLold(3)... +xLold(1)*yLold(2)+yLold(1)*xLold(3)-yLold(1)*xLold(2)/2; Volpold(i)=Volpold(i)+v/3;
%Diffusion Contributions Face 1 ap(i) = ap(i) - Nx(1) * dely + Ny(1) * delx; apdis(i)=apdis(i)-Nx(1) * dely + Ny(1) * delx; a(i,k) = a(i,k) + Nx(2) * dely - Ny(2) * delx; adis(i,k) = adis(i,k) + Nx(2) * dely - Ny(2) * delx; a(i,k+1) = a(i,k+1) + Nx(3) * dely - Ny(3) * delx; adis(i,k+1) = adis(i,k+1) + Nx(3) * dely - Ny(3) * delx; %GRID ADVECTION CONTRIBUTION CENTRAL DIFF vxf=(5*vxL(1)+5*vxL(2)+2*vxL(3))/12; vyf=(5*vyL(1)+5*vyL(2)+2*vyL(3))/12; vxf=(5*vxL(1)+5*vxL(2)+2*vxL(3))/12; vyf=(5*vyL(1)+5*vyL(2)+2*vyL(3))/12; qf=vxf*dely-vyf*delx; ap(i)= ap(i) +St*((5/12)*qf+(2/12)*qf); a(i,k) = a(i,k) + St*((5/12)*qf); a(i,k+1)=a(i,k+1)+St*(2/12)*qf);
%SET BOUNDARY FOR Temp for i=1:nodes BC(i)=0; %coefficient part BB(i)=0; %constant part end for k=1:n_b(4) BC(B(4,k))=1e18; BB(B(4,k))=1e18; end for k=1:n_b(2) BC(B2,k))=1e18; end %code for Transient for i=1:nodes apt(i)=St*Volpold(i)/delt; end
%Solve for T for iter=1:50 for i= 1:nodes RHS=apt(i)*Told(i)+BB(i); for k=1:n_s(i) RHS=RHS+a(i,k)*T(sup(i,k)); end T(i)=RHS/(apt(i)+ap(i)+BC(i)); end end
Adjust Points on melt Front for k=1:n_b(2) %global boundary point index point=B(2,k); %signed length if k==1 delx=(x(B(2,k+1))-x(B(2,k)))/2; dely=(y(B(2,k+1))-y(B(2,k)))/2; end if k>1 & k < n_b(2) delx=(x(B(2,k+1))-x(B(2,k-1)))/2; dely=(y(B(2,k+1))-y(B(2,k-1)))/2; end if k==n_b(2) delx=(x(B(2,k))-x(B(2,k-1)))/2; dely=(y(B(2,k))-y(B(2,k-1)))/2; end %Heat flow into volue around boundary point RHS=0; for i=1:n_s(point) RHS=RHS+a(point,i)*T(S(point,i)); end c=-delx/(dely+1e-6); if k==1 c=1e-6; end if k==n_b(2) c=1e6; end if abs(c)<abs(1.0/c) adjx(point)=delt*RHS/(dely-c*delx); adjy(point)=c*adjx(point); else adjy(point)=delt*RHS/((1.0/c)*dely-delx); adjx(point)=(1.0/c)*adjy(point); end end i Dy Dx
%Adjust x positions of Nodes for i=1:nodes BC(i)=0; %coeficient part BB(i)=0; %constant part end for k=1:n_b(3) BC(B(3,k))=1e18; end for k=1:n_b(3) BC(B(2,k))=1e18; BB(B(2,k))=1e18*adjx(B(2,k)); end for k=1:n_b(4)(4) BC(B(4,k))=1e18; end Calculate and store coefficients for iter=1:50 for i= 1:nodes RHS=BB(i); for k=1:n_s(i) RHS=RHS+adis(i,k)*adjx(sup(i,k)); end adjx(i)=RHS/(apdis(i)+BC(i)); end end Similar for y adjust in BUT take care to identify boundaries %defupdate for i=1:nodes x(i)=x(i)+0.4*(xold(i)+adjx(i)-x(i)); y(i)=y(i)+0.4*(yold(i)+adjy(i)-y(i)); end END OF ITS GO BACK TO Calculate and store coefficients
After 20-50 its Finish Time step Before next time step swap old for new %oldnew for i=1:nodes xold(i)=x(i); yold(i)=y(i); Told(i)=T(i); r(i)=sqrt(x(i)^2+y(i)^2); end