یک مثال از انتقال حرارت در MATLAB
- 1392/11/08
- 67 دیدگاه
هدف از این مثال بدست آوردن توزیع انتقال حرارت در صفحه زیر با برنامه MATLAB می باشد. توزیع درجه حرارت در یک صفحه مستطیلی با دمای مرز بالای 0 درجه زانکین و دمای مرز پایین 100 رانکین و دمای مرزهای راست و چپ 0 درجه رانکین به دست آورده شده است.
Heat Transfer in MATLAB
ابعاد صفحه مستطیلی 1 فوت در 2 فوت است. تمام شرایط مرزی از نوع دما ثابت هستند. هندسه صفحه مستطیلی در شکل زیر نشان داده شده است.
معاله دیفرانسیلی پاره ای برای انتقال حرارت دوبعدی دایم به شکل زیر است:
پس از گسسته سازی معادله دیفرانسیل جریی فوق با روش تفاضلات محدود (Finite Deference) گام های مکانی را 0.5 در نظر می گیریم که در اینصورت IM=21 و JM=41 می باشد. در نتیجه توزیع دما را برای 741 گره بایستی پیدا کرد. شرایط اولیه را برای همه نقاط داخلی T=0 در نظر گرفته می شود.
کد برنامه MATLAB:
% ******************************************
% 2D Heat Equation Programming using MATLAB
% EngPedia.ir
% ******************************************
clear all
clc
n = 20;
m=40;
x = linspace(0,1,n+1); dx = x(2)-x(1);
y = linspace(0,2,m+1); dy =y(2)-y(1);
T(1,1:21) = 100; %BOTTOM
T(1:41,1) = 0;%LEFT
T(1:41,21) = 0; %RIGHT
T(41,1:21) = 0; %TOP
dt = dx^2/4;
for k=1:1:inf
Told = T;
for i = 2:m
for j = 2:n
T(i,j) = dt*((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/dx^2 …
+ (Told(i,j+1)-2*Told(i,j)+Told(i,j-1))/dy^2) …
+ Told(i,j);
end
end
error = max(max(abs(Told-T)));
if error <1e-2
break
end
end
iteration=k
subplot(2,1,1),contour(x,y,T),
title(‘Temperature (Steady State)’),xlabel(‘x’),ylabel(‘y’),colorbar
subplot(2,1,2),pcolor(x,y,T),shading interp,
title(‘Temperature (Steady State)’),xlabel(‘x’),ylabel(‘y’),colorbar
% ******************************************
% EngPedia.ir
% ******************************************
برنامه با حلقه for نوشته شده است. در نهایت کانتورهای دما به شکل زیر در می آید.
مطالب مرتبط
برچسب ها : heat transfer example, Matlab, انتقال حرارت, انتقال حرارت در MATLAB, پروژه انتقال حرارت, روش تفاضل محدود, متلب, مثال Finite Deference, مثال انتقال حرارت
دیدگاهتان را بنویسید
نشانی ایمیل منتشر نخواهد شد
سلام اررور میدهد
ans =
bottom
ans =
left
ans =
top
ans =
right
Undefined function or variable ‘dx’.
Error in Heat (line 10)
dT=dx^2/4;
لطفا راهنمایی کنید
سلام
کل کد رو کپی کردین و ران کردین؟
نتیجه ای که بصورت عکس قرار دادیم، نتیجه ای هست که پس از Run گرفتن گذاشتیم.
ممنون یه جا رو اشتباه تابپکردم
خواهش میکنم.
موفق باشید 🙂
با سلام خدمت مدیر محترم سایت.
ممنون از سایت خیلی خوبتون
یک سوال داشتم در مورد خط 25
برای گسسته سازی معادله لاپلاس dt چرا گذاشتید در صورتی که در معادله لاپلاس صحبتی از زمان نشده.
و یک سوال دیگر من اگر بخواهم تولید حرارت در خود جسم داشته باشم چه کار باید بکنم؟
ببخشید طولانی شد
ممنون میشم راهنمایی کنید.
سلام
خواهش میکنم.
منظور از dt همون dx^2/4 هست که در واقع یه نام گذاری هست. منظور زمان نیست!
اگر حرارت در خود جسم داشته باشین، که معمولا با نام Heat Generation شناخته میشه، کافیه معادله اون رو تو معادله اولیه لحاظ کنید. منظور از معادله، همون معادله بقای انرژی هست.
موفق باشید.
با سلام و خسته نباشید’
اگر بخوام جوری برنامه نویسی کنم که برای هر هندسه ورودی کانتور دما رسم کنه باید چیکار کنم?!
سلام
ممنون
باید معادله هندستون رو بصورت یه شرط تو حلقه تعریف کنید.
سلام
جناب یه سوال داشتم!
من اگه بخوام دمای هر گره را بدست بیارم چیکار باید بکنم مثلاT(5.6(
سلام
خیلی ساده
راهنمایی:
دمای هر نقطه تو کدوم ماتریس ذخیره شده؟
اگر دمای نقطه (5و6) رو میخواین، درایه همون ماتریس رو بررسی کنید.
جناب میشه بگید این dt چی هستش چون تو فرمول همچین چیزی نداریم؟ آیا همون خطای قطع کردن است؟
احتمالا مربوط به روش تفاضلات محدود هست.
سلام . ممنون از پست این مطلب. جناب مهندس اگه زمان داشته باشیم باید چطوری مسئله رو بنویسیم؟ انتقال حرارت گذرا یک بعدی با گام های زمانی 0.001…
میشه راهنمایی کنید؟
سلام
باید اول معادله کلی رو بر حسب زمان بدست بیارین.
بعش در هر بازه زمانی معادله رو حل کنید.
یعنی در هر step زمانی باید یکبار معادله رو برای کل جسم بنویسین…
مثلا در زمان 1 ثانیه دمای هر گره چقدر هست. اگر استپ شما 0.1 هست، در زمان 1.1 ثانیه دمای هر گره چقدر میشه..
data بدیت اومده در روش گذرا بیشتر هست.
چون در هر زمان، نیاز به داشتن دمای گره ها در یک استپ زمانی قبل هستیم، باید در هر اصتپ زمانی یکبار معادله کامل حل بشه.
موفق باشید.
با سلام وخسته نباشید
من می خوا برای یک دیوار تو خالی توزیع دما بدست بیارم ولی هر کاری کردم تا یک هندسه برای دیوار توخالی بکشم نتونستم
تا اینکه دو تا هندسه جداگانه کشیدم که مکمل هم بودن و هندسه مورد نطرم بدست اومد ولی حالا که می خوام از دستور کانتور استفاده کنم فقط می تونم دو تا مختصات(مربوط به یکی از هندسه ها)رو تو دستور کانتور همراه دما بذارم آیا راهی هس که بشه این دو هندسه رو باهم تبدیل به یک هندسه مجزا کرد یا راهی هس که بشه تو دستور کانتور بشه دوتا هندسه رو باهم بکشه وتوزیع دما رو روی اونا رسم کنه؟
سلام
با دستور hold on کانتور قبلی رو نگه دارین و کانتور جدید رو روی اون رسم کنید.
سلام
hold on رو گذاشتم ولی نشد!
آیا راهی هس که هندسه ها یکی بشن؟
هندسه هاس من اینان
(x,y )
(b,d)
که وقتی تو پلات می برl یک هندسه بهم میده ومن میخوام همین هندسه تو کانتوربیاد
منظورتون رو متوجه نمیشم..
با axis محورها رو محدود کنید. hold on بزارین.
با دستور axis محورها رو محدود کنید. hold on هم بزنین ببینین چی میشه!
سلام خیلی ممنون درست شد باaxisرفتم درست شد.ممنون
خوشحالیم 🙂
با سلام
میخوام dq را از فرمول q=-kdT/dx بدست بیارم و به dT^2/dz برسم که اروور میده لطفا راهنمایی کنید با چه دستوری بنویسم ؟ من با دستور dsolve مینویسم. در نهایت میخوام به یک T برسم که با بشه بهش مقدار داد عدد یا مثل l/2 ؟
با دستور dsolve امکان پذیر هست.
http://www.mathworks.com/help/symbolic/dsolve.html
این تعداد 21 و 41 چطوری با گام 0.5 به دست آمدند و چرا تعداد گره ها 19*39 است؟
فکر نمی کنید وقتی صورت مسأله گفته T اولیه صفر است یعنی مسأله را زمانی حل کرده و dt واقعا متغیر زمانی است؟
باسلام
من یک مربع دارم که دو طرفش عایق و دو طرف دیگه اش دماهاش 400و 600 است
باید چه تغییری تو برنامه بدم
(خواهشا کمکم کنیدamasoud36@yahoo.com)
مشخصه. شرایط مرزیشو تغییر بدین
توی این پروژه من باید کد cfdرو توی fluentهم باید ببریم +باید برای مش ها 3*3 و30*30 و120*120و80*80 حل کنم
اگه میشه کمکم کنید
کد کاملا مشخصه
نمیدونم شما چی میخواین
n = 20;
m=40;
m و n برای مش هاست.
کد زیر هم برای دمای مرزهاست.
T(1,1:21) = 100; %BOTTOM
T(1:41,1) = 0;%LEFT
T(1:41,21) = 0; %RIGHT
T(41,1:21) = 0; %TOP
امکانش هست یک ایمیل بهم بدید من صورت پوژه رو براتون امیل کنم؟ که منظورم رو بفهمید
info@engpedia.ir
واقعا ممنونم
فایل رو با موضوع”درخواست کمک”
براتون ایمیل کردم
امیدوارم بتونید کمکم کنید
سلام.
من از همین برنامه با شرایط مرزی و اندازه های متفاوت استفاده کردم. توی برنامه من لبه سمت چپ دمای متفاوقتی داره.
واسه دستور contour ارور میده:
Error using contour (line 84)
The size of X must match the size of Z or the number of columns of Z.
Error in Untitled3 (line 31)
subplot(2,1,1),contour(x,y,T),
باید چی کار کنم؟توی منابع دستور کانتور درست توضیح داده نشده.
ممنون
مشکلی نداره
تست شده قبلا
برنامه من اینه: میشه بگید چرا جواب نمیده؟ راه حل چیه؟
format short
clc
clear all
clear history
disp ‘in the name of GOD’;
pause (2);
disp ‘written by AMIN’;
n = 48;
m=6;
x = linspace(0,48,17); dx = x(2)-x(1);
y = linspace(0,6,3); dy =y(2)-y(1);
T(1:3,1) = 100;%cahp
T(1,2:21) = 30; %bala
T(2,2:21) = 30; %vasat
T(3,2:21) = 30; %paien
dt = dx^2/4;
for k=1:1:inf
Told = T;
for i = 2:2
for j = 2:20
T(i,j) = dt*((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/dx^2 + (Told(i,j+1)-2*Told(i,j)+Told(i,j-1))/dy^2) + Told(i,j);
end
end
error = max(max(abs(Told-T)));
if error <1e-2
break
end
end
iteration=k;
subplot(2,1,1),contour(x,y,T),
title('Temperature (Steady State)'),xlabel('x'),ylabel('y'),colorbar
subplot(2,1,2),pcolor(x,y,T),shading interp,
title('Temperature (Steady State)'),xlabel('x'),ylabel('y'),colorbar
چه اروری میده؟
باسلام
می خواستم بدونم اگه یکی از دیواره ها عایق باشه چه تغییری در کد های بالا بوجود می آید
قید عایق بودن رو قرار بدین
du/dx=0
تو کدوم قسمت برنامه باس داد این قیدو؟
سلام
سوال من به شکل دیگه هست
که کانداکشن هم داره و دمای محیط اطراف هم باید منظور بشه
از یک طرف همکانوکشن داره
چه تغییراتی باید داد؟
رابطه انتقال حرارت همرفت مشخصه
در حلقه بررسی کنین که اگر به مرز رسید از اون معادله استفاده کنه
یکم پیچیده است قضیه
میشه یه ایمیل برام بزنید تا صورت اصلی مسئله رو به شما نشون بدم؟
یا شما ایمیلتون رو بدید
ممنون واقعا
فرم تماس با ما
با سلام
با نهایت تشکر از برنامه مفیدتون
موفق باشید
ببخشید من این قسمتهارو متوجه نشدم ، ممنون میشم راهنمایی کنید
dx = x(2)-x(1
dy =y(2)-y
T(i,j) = dt*((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/dx^2 …
+ (Told(i,j+1)-2*Told(i,j)+Told(i,j-1))/dy^2) …
+ Told(i,j);
با سلام
من میخواهم کد متلب تبدیل انرژی حرارتی به انرژی الکتریکی را بنویسم… چهارچوب کار برام نا اشناست. میشه لطفا راهنماییم کنید من چیکار کنم؟ از کجا شروع کنم؟ با تشکر فراوان.
سلام
پروژه دانشگاهی من در مورد شبیه سازی انتقال حرارت است به روش تفاضل محدود ،میخواستم کتابهای رو در زمینه شبیه سازی با برنامه متلب برام معرفی کنین ممنون
سلام میشه بگید چطور گام های مکانی را ۰.۵ در نظر می گیریم که در اینصورت IM=21 و JM=41 می باشد. در نتیجه توزیع دما را برای ۷۴۱ گره بایستی پیدا کرد. شرایط اولیه را برای همه نقاط داخلی T=0 در نظر گرفته می شود. چطور Im, Jm روبه دست اوردید؟ الان طول صفحه باشه 1 وگامو بگیریم 0.2 چندن اینا؟؟
سلام دوستان من یه راهنمایی میخواستم
میخوام این معادله رو تو متلب بنویسم چه جوری میشه
من تو این معادله هدفم بدست اوردن ضرایب k,n هستش و مقادیر y, t روهم دارم dy/dt=k(y^n)
با سلام .
میشه برنامرو بازی بنویسیم که عدد بیوت هم به عنوان ورودی باشه تا بتونیم فقط یه نمودار به ازای عدد بایوت مشخص رسم بشه
عددرا به عنوان ورودی بگیرین
با دستور input
سلام و خسته نباشید واقعا فایل مفیدی بود ممنونم….یه سوال داشتم و دو روزه دارم تو سایتا میچرخم و تنها سایتی که متلب مرتبط داشت سایت شما بود و تا اینجای کار جای شکر داره و سپاس گذارم.خدمتتون عارض بشم میخام توزیع دما برای حالت پایا وsteadyدر یک ورقه دو بعدی که دمای چپ و راستش مشخصه و بالا و پایینش عایقه و همچنین یک سوراخ در وسط ِ ورقه هست ک سوراخ هم از قضا عایقه.من کد کتلب برای حالت بدون سوراخ رو نوشتم و توزیع دمایی هم درسته حالا میخام شرط سوراخ و مهم تر عایق بودن سوراخ رو اعمال و به ملب وارد کنم و نمیتونم. در واقع تو تفاضل محدود در حالتی که یک جداری یا یک خطی از نقاط عایقع باید بگیم دمای هرنود با نودِ قبلیش برابره و خوب برای نود بالا و پایین ساده س ولی برای تعریف عایق بودن دایره چون دایره بصورت مختصات دایره ای تعریف میشه و دماهای بقیه نقاط صفحه در مختصات دکارتی تعریف میشه یجور نداخل میخوره.تو کتاب محاسبات عددی چپرا هم یه متلب مشابه پیدا کردم ولی نتونستم خوب درکش کنم.حالا از شما کمک میخام که کمکم کنید چجوری میتونم شرط عایق بودن دایره رو به متلب اعمال کنم….خدا خیرتون بده.ممنون میشم کمکم کنید
https://www.dropbox.com/s/xp3fuj8k1401pjv/photo_2016-11-03_12-56-56.jpg?dl=0
https://www.dropbox.com/s/r34a46t344pcvn7/Untitled1221.png?dl=0
اگه امکانش هست انتقال حرارت یک بعدی رو برای یک صفحهبه صورت فوروارد و بک وارد بنویسین و عدد بیوت رو هم دخالت بدین
بله
حتما
کی میتونین بذارین تو سایت ؟!
انتقال حرارت یک بعدی فوروارد و بک وارد با تاثیر غرب بیوت
تو رو خدا اگه میشه انتقال حرارت یک بعدی رو با او روش بک وارد و فوروارد برای عدد بیوت مشخص انجام بدین واقعا هیشکی نیست جوابمو بده
سلام . خسته نباشید من دنشجوی رشته ی مکانیک هستم . درس انتقال قدرت یه پروژه به ما داده که باید پنج دیوار رو کدنویس کنیم یه چیزی مثل ماشین حساب بسازیم و….. الان نمیدونم چی به چیه از کجا باید شروع کنم.کمک میکنید لطفا
سلام ببخشین یه سوال اگه ازما بخوان که بعد حل معادله توزیع دما مقدار حرارت منتقل شده به صورت جابجایی به محیط رو محاسبه کنیم باید چیکار کنیم؟
این سزال بنده هم هست.لطفا ادمین پاسخگو باشید
Consider the FD scheme for the 1D steady state convection-diffusion equation ǫu′′−u′ =−1, 0 < x < 1, (2.70) u(0) = 1, u(1) = 3. (2.71)
(a) Verify the exact solution is u(x) = 1 + x +ex/ǫ −1 e1/ǫ −1. (2.72) (b) Compare the following two FD methods for ǫ = 0.3, 0.1, 0.05, and 0.0005. (1) Central finite difference scheme:
ǫ
Ui−1 −2Ui + Ui+1 h2 −
Ui+1 −Ui−1 2h
=−1. (2.73)
(2) Central-upwind finite difference scheme:
ǫ
Ui−1 −2Ui + Ui+1 h2 −
Ui −Ui−1 h
=−1. (2.74) Do the grid refinement analysis for each case to determine the order of accuracy. Plot the computed solution and the exact solution for h = 0.1, h = 1/25, and h = 0.01. You can use Matlab command subplot to put several graphs together. (c) From your observations, in your opinion which method is better?
چطوری باید برنامه اینوبنویسم؟میشه راهنمایی کنید؟ لطفا
این ارورو داد و چیزی اجرا نکرد:
Warning: Too many FOR loop iterations. Stopping after 9223372036854775806 iterations.
سلام معادله یک بعدی گرما رو هم میشه بزارید تو سایت؟
clear all
clc
close all
%%
n = 10;
m=10;
x = linspace(0,1,n+1); dx =1;
y = linspace(0,1,m+1); dy = 1 ;
h= 30;
k=17.5;
T1=25;
T(n+1,1:m+1) = 500; %TOP
dt = 1/4;
for k=1:1:inf
Told = T;
for i = 1:m+1
for j = 1:n+1
if ( i==1 &&j~=1 && j~=m+1 )
T(i,j) = ( .5*Told(i+1,j) +1+.25*(Told(i,j-1)+Told(i,j+1))) ;
end
if (j==1 && i ~=1 && i ~=n+1 )
T(i,j) = ( .5*Told(i,j+1) +.25*(Told(i-1,j)+Told(i+1,j))) ;
end
if ( j==m+1 && i ~=1 && i ~=n+1)
T(i,j) = ((2*Told( i,j-1)+Told(i+1,j)+Told(i-1,j)+2*(h*dy*T1/k)))/(4+2*h*dy/k);
end
if (i ==1 && j==1)
T(1,1) = (((k/2)*(T1+Told(2,1))+0*(dy/2)*T1)/(k+0*(dy/2)));
end
if (i ==1 && j==m+1)
T(1,m+1) = (((k/2)*(T1+Told(2,m+1))+h*(dy/2)*T1)/(k+h*(dy/2)));
end
%
if(i~=1 && j~=m+1 &&j~=1 &&i~=n+1)
T(i,j) = dt*((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/dx^2 …
+ (Told(i,j+1)-2*Told(i,j)+Told(i,j-1))/dy^2) …
+ Told(i,j);
end
end
end
error = (max(abs(Told-T)));
if error <1e-2
break
end
end
z=T
pcolor(x,y,T),shading interp,
title('Temperature (Steady State)'),xlabel('x'),ylabel('y'),colorbar
سلام این کد برای دو شرط عایق بودن و یه طرف دما 500 ثابت و دیگری انتقال حرارت جابه جایی می باشد که از کد ادمین الهام گرفته شده …جا داره همین جا هم به خاطر کدی که ایشون در اختیار دیگران قرار داد تشکر کنم
سلام .سوال من یک میله هست با قطر۳mmوطول۱۰cm اول در درجه حرارت ۲۰۰ بوده در زمان صفر .بعد یک سر میله درجه ۲۰۰ نگه داشته و سر دیگه ش داخل سیال فرو برده و دماش۴۰بوده وh=۵۰.حالا توزیع درجه حرارت بعد از ۱۰۰ثانیه رو میخواد.
K=۵۰وp=۷۸۰۰وc=۰/۴۷
میشه کمکم کنین حلش کنم؟
من همین کد رو وارد کردم ولی ارور میده
یکی برای خط ۲۰ وارنینگ میده یه ارورم میده که نوسته
comman failed: octave qf no window system demo
اطلاعی نداریم
مطالب جدید
مطالب پربازدید
مطالب تصادفی
شبکه های اجتماعی
دانشنامه تخصصی مهندسی ایران را در شبکه های اجتماعی دنبال کنید
همکاران ما