clc; clear all; close all;
eX = 2;
eY = 2;
nodesPerElement = 4;
kx = 10;
ky = 10;
L = 0.05;
W = 0.05;
h = 1;
z = 0.01;
Tinf = 25;
graph = meshGrid(eX,eY);
numE = eX*eY;
numN = (eX+1)*(eY+1);
Kglobal = zeros(numN,numN);
Fglobal = zeros(numN,1);
for e = 1:numE
if e == 1
qv = 1000;
else
qv = 0;
end
Kcx = kx*L/(6*W)*[-2 2 1 -1;
2 -2 -1 1;
1 -1 -2 2
-1 1 2 -2];
Kcy = ky*W/(6*L)*[-2 -1 1 2;
-1 -2 2 1
1 2 -2 -1
2 1 -1 -2];
Kh = -L*W*h/(36*z)*[4 2 1 2;
2 4 2 1;
1 2 4 2;
2 1 2 4];
K = Kcx + Kcy + Kh;
F = -(h/z*Tinf + qv)*L*W/4*[1; 1; 1; 1];
for n = 1:nodesPerElement
for m = 1:nodesPerElement
Kglobal( graph(e,n), graph(e,m)) = Kglobal( graph(e,n), graph(e,m)) + K(n,m);
end
Fglobal(graph(e,n)) = Fglobal(graph(e,n)) + F(1);
end
end
T = full(sparse(Kglobal)\sparse(Fglobal));
T = transpose(reshape(T, eX+1, eY+1));
x = linspace(0,eX*W,eX+1);
y = linspace(0,eY*L,eY+1);
[X,Y] = meshgrid(x,y);
surf(X,Y,T);
xlabel('x');
ylabel('y');
zlabel('Temperature (^oC)')
colorbar
axis equal
function [map] = msehGrid(eX, eY)
numElements = eX*eY;
map = zeros(numElements, 4);
for n = 1:eY
for m = 1:eX
e = (n-1)*eX+m;
map(e,1) = m + (n-1)*(eX+1);
map(e,2) = m + 1 + (n-1)*(eX+1);
map(e,3) = m + (n)*(eX+1);
map(e,4) = m + (n)*(eX+1) + 1;
end
end