Analiza modelului de transfer termic al unui ansamblu de cilindri

De la YO3ITI
Sari la navigare Sari la căutare

Acesta este un exemplu simplificat de analiză a transferului termic pe două structuri cilindrice din materiale de conductivitate termică diferită.

%% Analiza transferului termic al unui ansamblu de cilindri
% =======================================
% verifică dacă există suport pentru PDE
% https://www.mathworks.com/matlabcentral/answers/222647-test-if-toolbox-is-installed

close all
clear
clc

if (license('test', 'pde_toolbox'))
    model = createpde('thermal');
else
    msgbox('pde toolbox nu e instalată !','Eroare de licență');
    return;
end

% doi cilindri
% https://www.mathworks.com/help/pde/ug/multicylinder.html
% multicylinder(radii, height, options, coordinates)
geo = multicylinder([20,25,35],20, ...
    'Void',[1,0,0]);
model.Geometry = geo;

% vezi cilindrul, cu tot cu etichete pentru fețe
% FIGURA 1 - TODO- poziționare automată
figure
pdegplot(model, ...
    'FaceLabels', 'on', ...
    'FaceAlpha', 0.5)
title('Multicilindru cu două componente');

pos1 = get(gcf,'Position'); % get position of Figure(1) 
set(gcf,'Position', pos1 - [pos1(1),0,0,0]) % Shift position of Figure(1)
Inel fetze.png
% generează un mesh și vizualizează
% FIGURA 2 - TODO - poziționare automată
generateMesh(model);
figure
pdemesh(model)
title('Mesh generat cu generateMesh (funcție din pde)');

set(gcf, 'Position', pos1 + [0,0,0,0]);
pos2 = get(gcf, 'Position');
Inel mesh.png
%% Proprietățile materialului

% inelul interior (cell 1) are conductibilitate termică de 40
% folosește which <nume funcție> pentru a afla de care toolbox aparține
thermalProperties(model, ...
    'Cell', 1, ...
    'ThermalConductivity', 40);

% inel exterior nu conduce termic
thermalProperties(model, ...
    'Cell', 2, ...
    'ThermalConductivity', 0.15);

%% Boundary conditions - condițiile la limite

% fața 3 este supusă unei temperaturi de 80 de grade celsius
% vezi și opțiunile suplimentare oferite the thermalBC
thermalBC(model, ...
    'Face', 3, ...
    'Temperature', 85);
disp('Set BC interior... temperatura feței interioare setată la 85 grade celsius');

% temperatura feței exterioare este de 4 grade Celsius
thermalBC(model, ...
    'Face', 7, ...
    'Temperature', 4);
disp('Set BC exterior... temperatura feței exterioare setată la 4 grade celsius');


%% Rulare analiză

result = solve(model);

% FIGURA 3 - TODO- poziționare automată
figure
pdeplot3D(model, ...
    'ColorMapData', result.Temperature)

set(gcf,'Position', pos2 + [pos2(1),0,0,0]);
inel heat map