% PARETE
% Applicazione per il calcolo della distribuzione di temperatura 
% entro una parete composta, con il metodo delle differenze finite
% I parametri possono essere modificati solo all'interno dello
% script


nx = 11; %numero di righe
ny = 31; %numero di colonne
dx = 0.04; %passo dx (verticale)
dy = 0.04; %passo dy (orizzontale)
Lx=(nx-1)*dx;
Ly=(ny-1)*dy;

OK = 0;
chk = 0.05; % approssimazione

T1 = 20; %Temperatura sulla faccia inferiore
T2 = 0; %Temperatura sulla faccia superiore
h1 = 7.7; %Coeff. di scambio convettivo inferiore
h2 = 25; %Coeff. di scambio convettivo superiore

k1 = 0.7; % mattoni
k2 = 2.5; % cls
k3 = 0.05; % isolante

% Per assegnare le conducibilità ai nodi 
% modificare le righe sottostanti individuando le aree
% omogenee

Kk(1:nx,1:ny) = k1; %tutto omogeneo
Kk(1:nx,11:20) = k2; %striscia intermedia di cls (pilastro)
Kk(10:11,1:ny) = k3; %fascia di isolante superiore
% ----------------------------------------------------

% Plottaggio della mappa delle conducibilità
contourf(Kk(1:nx,1:ny),10)
colorbar
pause

% Calcolo delle trasmittanze relative a ogni nodo *******
% Kz(n,m,i) i da 1 a 4

Kz(1,1:ny,1)=h1*dy; %Resistenza liminare interna
Kz(2:nx,1:ny,1)=(Kk(2:nx,1:ny)+Kk(1:nx-1,1:ny))/2;

Kz(1:nx,1:ny-1,2)=(Kk(1:nx,1:ny-1)+Kk(1:nx,2:ny))/2;
Kz(1:nx,ny,2)=0; % Piano adiabatico
Kz(1,1:ny,2)=Kz(1,1:ny,2)*0.5; %spessore dimezzato
Kz(nx,1:ny,2)=Kz(nx,1:ny,2)*0.5; %spessore dimezzato

Kz(1:nx-1,1:ny,3)=(Kk(1:nx-1,1:ny)+Kk(2:nx,1:ny))/2;
Kz(nx,1:ny,3)=h2*dy; %Resistenza liminare esterna

Kz(1:nx,2:ny,4)=(Kk(1:nx,2:ny)+Kk(1:nx,1:ny-1))/2;
Kz(1:nx,1,4)=0; %Piano adiabatico
Kz(1,1:ny,4)=Kz(1,1:ny,4)*0.5; %spessore dimezzato
Kz(nx,1:ny,4)=Kz(nx,1:ny,4)*0.5; %spessore dimezzato

% assegnazione temperatura iniziale
T(1:nx,1:ny)=(T2+T1)/2;

% routine di calcolo iterativo
while OK == 0
   
   Tz(1,1:ny,1)=T1;
   Tz(2:nx,1:ny,1)=T(1:nx-1,1:ny);
   Tz(1:nx,1:ny-1,2)=T(1:nx,2:ny);
   Tz(1:nx-1,1:ny,3)=T(2:nx,1:ny);
   Tz(nx,1:ny,3)=T2;
   Tz(1:nx,2:ny,4)=T(1:nx,1:ny-1);
   for i=1:nx
      for j=1:ny
         KT(i,j)=sum(Kz(i,j,1:4).*Tz(i,j,1:4));
         Tn(i,j)=KT(i,j)/sum(Kz(i,j,1:4));
      end
   end
   DT = abs(Tn(1:nx,1:ny)-T(1:nx,1:ny));
   T(1:nx,1:ny)=Tn(1:nx,1:ny);
  
   if DT < chk
      OK = 1;
   end
end

% Plottaggio risultati-------------------------
[px,py]=gradient(T(1:nx,1:ny));
px=-px; py=-py;
%pcolor(T(1:nx,1:ny))
contourf(T(1:nx,1:ny),20)
%shading flat
axis tight
colormap('jet')
colorbar
%[c,h]=contourf(T(1:nx,1:ny),10); clabel(c,h,'manual')
hold on

pause
% disegna le linee di flusso
quiver(px,py)
hold off


%Qi(1:ny)=h1*dy*(T1-T(1,1:ny));
%Qt=sum(Qi)
