31 weergaven (laatste 30 dagen)
Toon oudere opmerkingen
Altibano Ortenzi op 17 juni 2024 om 2:14
Becommentarieerd: Altibano Ortenziongeveer 17 uur geleden
Open in Matlab online
Hieronder staan de sleepfuncties die worden gebruikt om de tijd te berekenen om de temperatuur te vergroten.Volgens de ingangen: L1, L2, L3 en Heat+Power.De initiële waarden waren: 0,05 m;0,1 m;Respectievelijk 0,05 m en 500W.Maar met andere waarden retourneert het resultaat hetzelfde: Inifinite seconden!Ik heb de resultaten nodig in termen van plotten.
functietime_to_increase_temperature = calculate_time_to_increase_temperature (...
rho_concrete, rho_air, k_concrete, k_air, ~, cp_concrete,...
cp_air, t_initial, t_surface, l1, l2, l3, volume_p1_p3, ~,...
NX, NT, Delta_T, Heat_power)
% Bereken de totale dikte
Total_thickness = l1 + l2 + l3;
% Thermische diffusiviteiten
alpha_concrete = k_concrete / (rho_concrete * cp_concrete);% m²/s
alpha_air = k_air / (rho_air * cp_air);% m²/s
% Discretisatieparameters
dx = total_thickness / nx;% Ruimtelijke stapgrootte
dt = 6 / nt;% Tijdstapgrootte
% Preallocate temperatuurarrays
T = t_initial * ones (nx, 1);
T_new = t;
% Definieer materiaaleigenschappen op elk punt
len_p1 = round (nx * l1 / total_thickness);% Lengte van betonlaag P1
len_p2 = round (nx * l2 / total_thickness);% Lengte van luchtlaag P2
alleen_p3 = nx - alleen_p1 - alleen_p2;% Lengte van betonlaag P3
% Zorgt ervoor dat LEN_P3 correct is aangepast als afronding problemen heeft veroorzaakt
alsalleen_p1 + alleen_p2 + alleen_p3 ~ = nx
alleen_p3 = nx - alleen_p1 - alleen_p2;
einde
% Preallocate materiële array
materiaal = nullen (nx, 1);
materiaal (1: Len_p1) = alpha_concrete;
materiaal (Len_P1+1: Len_P1+Len_P2) = alpha_air;
materiaal (LEN_P1+LEN_P2+1: nx) = alpha_concrete;
tijd om de temperatuur te verhogen = in f;% Initialiseer om de tijd op te slaan om de temperatuur te verhogen
% Bereken warmte -invoer per ruimtelijk punt
hitte_input_per_point = heat_power * dt / (rho_concrete * cp_concrete * volume_p1_p3 / nx);
% Tijdintegratie met behulp van de eindige verschilmethode (FDM)
tijd = 0;% Initialiseer de tijd
voorn = 1: nt
voorI = 2: NX-1
T_new (i) = t (i) + materiaal (i) * dt / dx^2 * (t (i + 1) - 2 * t (i) + t (i -1));
% Grensvoorwaarden
T_new (1) = t (1) + alpha_concrete * dt / dx^2 * (t (2) - t (1)) + heat_input_per_point * (t_surface - t (1));
T_new (nx) = t (nx-1);
% Updatetemperatuur
T = t_new;
tijd = tijd + dt;
% Controleer of de temperatuur aan de rechterkant van P3 T_INITIAL + DELTA_T bereikt
alsT (nx)> = t_initial + delta_t
time_to_increase_temperature = time;
pauze;
einde
einde
% Retourneer de tijd om de temperatuur met 1 K aan de rechterkant van P3 te verhogen
einde
Functie main_process:
functiemain_process ()
% Parameters met vaste waarden
rho_concrete = 2500;% kg/m³
rho_air = 1293;% kg/m³
k_concrete = 1,35;% W/(m · k)
k_air = 0.024;% W/(m · k) uitgaande van typische waarde voor lucht
cp_concrete = 0,92 * 1000;% J/(kg · k)
Cp_air = 1.005 * 1000;% J/(kg · k)
T_initial = 300;% Initiële temperatuur in K
T_surface = 411;% Oppervlaktetemperatuur in k
volume_p1_p3 = 0.00488;% Volume van elke betonnen plaat in m³
Nx = 100;% Aantal ruimtelijke punten
NT = 1000;% Aantal tijdstappen
delta_t = 1;% Temperatuurstijging in K
% Vraag de gebruiker om specifieke invoerparameters
% L1 = input ('Voer de dikte van de eerste betonlaag in (m):');
% L2 = input ('Voer de dikte van de luchtlaag in (m):');
% L3 = input ('Voer de dikte van de tweede betonlaag in (m):');
% heat_power = input ('Voer het warmtevermogen in (w):');
L1 = 1;
Nee = 1;
L = 1;
heat_power = 1;
% Bel de functie
time_to_increase_temperature = calculate_time_to_increase_temperature (...
rho_concrete, rho_air, k_concrete, k_air, [], cp_concrete,...
cp_air, t_initial, t_surface, l1, l2, l3, volume_p1_p3, [],...
NX, NT, Delta_T, Heat_power);
% Geeft het resultaat weer
fprintf ('Tijd om de temperatuur met 1 K aan de rechterkant van P3 te verhogen: %.2f seconden \ n', time_to_increase_temperature);
% Plot het resultaat
Total_thickness = l1 + l2 + l3;
x = linspace (0, total_thickness, nx);% Ruimtelijke punten
y = linspace (0, time_to_increase_temperature, nx);% Tijdelijke punten voor het plotten
Plot (X, Y,'Weergavenaam',,'Tijd om de temperatuur met 1 K te verhogen');
xlabel ('Positie (M)');
YLabel ('Keer)');
legende('show');
titel('Tijd om de temperatuur met 1 K aan de rechterkant van P3 te verhogen');
einde
main_process ()
Tijd om de temperatuur met 1 K aan de rechterkant van P3 te verhogen: Inf seconden
1 reactie Show -1 oudere commentshide -1 oudere opmerkingen
Show -1 oudere commentshide -1 oudere opmerkingen
Altibano Ortenzi ongeveer 13 uur geleden
Directe link naar deze opmerking
https://www.mathworks.com/matlabcentral/answers/2129191-the-follow-code-was-create-to-calculate-the-time-to-increase-the-temperature-but-when-i-run- het-de#comment_3189956
Ik heb de code gewijzigd, met uw suggesties, maar werkte niet.Ik zal een andere aanpak proberen, omdat de temperatuur met de tijd niet veranderde, of de resterende tijd ongewijzigd.
Bedankt.
Log in om commentaar te geven.
Log in om deze vraag te beantwoorden.
Antwoorden (2)
Ongeluk op 17 juni 2024 om 5:06
Open in Matlab online
Hoi@Altibano Ortenzi,,
Op basis van mijn begrip probeert u de tijd te berekenen die nodig is om de temperatuur met 1 K te verhogen. Bij het beoordelen van uw code heb ik gemerkt dat de variabele time_to_increase_temperature is voor dit doel bedoeld.Het is in eerste instantie ingesteld op inferen (Infinity) en wordt later als volgt bijgewerkt binnen een IF-statement:
% Controleer of de temperatuur aan de rechterkant van P3 T_INITIAL + DELTA_T bereikt
alsT (nx)> = t_initial + delta_t
time_to_increase_temperature = time;
pauze;
einde
Gegeven de ingangen:L1(0,05),Nee (0,1),,(05), en voorWarmtevermogen (500), het komt voor dat T (nx) overschrijdt nooit de som van T_initial(300) en delta_t(1).
Vervolgens, time_to_increase_temperature blijft ongewijzigd en behoudt zijn initiële waarde van oneindig.Ik stel voor om de code te bekijken om ervoor te zorgen dat alles correct is geconfigureerd en om te controleren of de voorwaarden voor wijzigentime_to_increase_temperature worden voldaan zoals verwacht.
1 reactie Show -1 oudere commentshide -1 oudere opmerkingen
Show -1 oudere commentshide -1 oudere opmerkingen
Altibano Ortenzi op 17 juni 2024 om 13:22
Directe link naar deze opmerking
https://www.mathworks.com/matlabcentral/answers/2129191-the-follow-code-was-create-to-calculate-the-time-to-increase-the-temperature-but-when-i-run- het-de#comment_3188286
Bedankt Animesh.Eigenlijk kan de temperatuur over het P3 -oppervlak niet> = t (nx) zijn, omdat deze moet worden verhoogd door de warmtevoedingbron.Dus ik moet de code herschrijven om deze vergelijking te voorkomen.
Log in om commentaar te geven.
Surya Venu op 17 juni 2024 om 5:14
Open in Matlab online
Hoi,
Om de oneindige tijd aan te pakken, resulteert u in de berekening van uw temperatuurstijging, overweeg deze punten voor correctie:
- Warmte -invoerberekening: De formule voor"heat_input_per_point "Het is mogelijk niet correct de warmtevermogen over de ruimtelijke punten verdeeld.Vereenvoudig deze berekening.
- Grensvoorwaarden: De manier waarop warmte -input wordt toegevoegd in de grensconditie, kan het fysieke proces mogelijk niet nauwkeurig modelleren.Bekijk en pas dit aan om ervoor te zorgen dat het weerspiegelt hoe warmte daadwerkelijk op het systeem wordt toegepast.
Hier zijn de dingen die u kunt proberen:
- Herzie warmte -invoer: Verdeel direct de warmtekracht over de ruimtelijke punten zonder de complexe verdeling.Zorg ervoor dat het correct wordt toegevoegd aan de grens of door het hele volume zoals bedoeld.
- Pas de grenstoestand aan: Zorg ervoor dat de grensconditie de warmte -toevoeging nauwkeurig modelleert.Dit kan betekenen dat de temperatuur direct wordt verhoogd op basis van de warmteingang of de warmteflux correct modelleren.
Hier is een vereenvoudigde aanpak voor de berekening van de warmte -invoer:
% Vereenvoudigde warmte -invoerberekening
hitte_input_per_point = heat_power / (rho_concrete * cp_concrete * volume_p1_p3);
En voeg voor de grensconditie de warmte -ingang rechtstreeks toe:
T_new (1) = t (1) + (alpha_concrete * dt / dx^2 * (t (2) - t (1))) + heat_input_per_point;
Zorg ervoor dat deze wijzigingen de feitelijke fysieke instelling weerspiegelen en het model opnieuw evalueren.
Hoop dat het helpt.
1 reactie Show -1 oudere commentshide -1 oudere opmerkingen
Show -1 oudere commentshide -1 oudere opmerkingen
Altibano Ortenzi op 17 juni 2024 om 13:32
Directe link naar deze opmerking
https://www.mathworks.com/matlabcentral/answers/2129191-the-follow-code-was-create-to-calculate-the-time-to-increase-the-temperature-but-when-i-run- het-de#comment_3188311
Bedankt@surya venu!Ik zal proberen de code te wijzigen met de regels die u moet wijzigen om de calculi te wijzigen, maar nu zie ik dat het punt dat wordt beschreven door@Animeshkan ook een van de codeproblemen zijn.Hoe dan ook, ik zal je beide suggesties proberen.
Log in om commentaar te geven.
Log in om deze vraag te beantwoorden.
Er is een fout opgetreden
Kan de actie niet voltooien vanwege wijzigingen in de pagina.Laad de pagina opnieuw om de bijgewerkte status te zien.
Selecteer een website
Kies een website om vertaalde inhoud te krijgen waar beschikbaar en zie lokale evenementen en aanbiedingen.Op basis van uw locatie raden we u aan te selecteren:.
U kunt ook een website selecteren in de volgende lijst
Amerika
- Latijns Amerika(Español)
- Canada(Engels)
- Verenigde Staten(Engels)
Europa
- België(Engels)
- Denemarken(Engels)
- Deutschland(Deutsch)
- Ruimte(Español)
- Finland(Engels)
- Frankrijk(Frans)
- Ierland(Engels)
- Italië(Italiaans)
- Luxemburg(Engels)
- Nederland(Engels)
- Noorwegen(Engels)
- Oostenrijk(Deutsch)
- Portugal(Engels)
- Zweden(Engels)
- Zwitserland
- Deutsch
- Engels
- Frans
- Verenigd Koninkrijk(Engels)
Aziatisch-Pacifisch
- Australië(Engels)
- India(Engels)
- Nieuw-Zeeland(Engels)
- China
- Japan Japans(Japans)
- Korea Koreaans(Koreaans)
Neem contact op met uw plaatselijke kantoor