انتقال حرارت همرفتی با تناوب شبه

View Categories

انتقال حرارت همرفتی با تناوب شبه

13 min read

PDF

انتقال حرارت همرفتی با تناوب شبه
معرفی
این مثال انتقال حرارت همرفتی را در کانالی پر از آب شبیه سازی می کند. همچنین تکنیکی را برای کاهش نیاز به حافظه با حل مدل مکرر در بخش شبه دوره‌ای از کانال نشان می‌دهد. هر محلول مربوط به بخش متفاوتی است و قبل از هر مرحله محلول دمای مرز خروجی از محلول قبلی به مرز ورودی نگاشت می شود.
تعریف مدل
هندسه نمایانگر قسمت داخلی یک لوله به طول 1 متر است. طول کل لوله 6 متر است.
کانال پر از آبی است که با سرعت 1 میلی متر بر ثانیه جریان دارد. برای در نظر گرفتن جریان سیال در معادله انتقال حرارت از یک پروفیل سرعت آرام در اصطلاح همرفتی استفاده کنید. چنین نمایه ای را می توان به عنوان تابعی از موقعیت شعاعی با توجه به
آب در کانال از طریق دیوارها گرم می شود. این گرمایش را با اعمال یک شار حرارتی 100 W/m 2 در این مرزها مدل کنید.
برای محلول اول دمای ثابت 283 کلوین را در مرز ورودی تنظیم کنید. برای محلول های بعدی، توزیع دمای خروجی را از محلول قبلی به مرز ورودی اعمال کنید.
دو روش را برای ارزیابی دما در مرز خروجی اجرا و مقایسه کنید:
1
در روش اول شما یک شبکه نقطه ای روی مرز مشخص می کنید. سپس دما با درون یابی در شبکه مشخص شده ارزیابی می شود.
2
در روش دوم شما دما را در نقاط گره مش به دست می آورید.
نتایج و بحث
شکل 1 توزیع دما را در مدل برای هر محلول، مربوط به 6 بخش لوله نشان می دهد. اینها را می توان در کنار هم قرار داد تا توزیع دما را در کل طول لوله مشاهده کند. با عبور آب از لوله به حداکثر دمای 294 کلوین می رسد.
شکل 1: توزیع دما در طول لوله، ورودی از قسمت 1 در مرز سمت چپ است.
شکل 2 توزیع دما در پایین لوله را نشان می دهد (لبه شماره 5). خط آبی مربوط به دمای خروجی به دست آمده با توجه به روش درون یابی است. خط قرمز مربوط به دمای خروجی ارزیابی شده در نقاط گره مش است. شما می توانید تفاوت جزئی را در محلول مشاهده کنید. انتظار می رود خط قرمز دقیق تر باشد، زیرا ارزیابی دما در نقاط گره مش دقیق تر از درون یابی در شبکه نقطه است.
شکل 2: توزیع دما در امتداد خط پایین لوله. در آبی محلول با استفاده از مقادیر دمای خروجی درون یابی شده، در قرمز محلول با استفاده از دمای خروجی در نقاط گره مش ارزیابی می شود.
نکاتی درباره پیاده سازی COMSOL
این مثال نحوه نگاشت داده ها از یک دامنه به دامنه دیگر و از یک راه حل به راه حل دیگر را نشان می دهد. این شامل نوشتن داده ها در فایل، سپس استفاده از یک تابع درونیابی برای خواندن فایل و اعمال داده ها در مدل است.
کارآمدترین رویکرد برای این شبیه‌سازی، شروع با تنظیم مدل در رابط کاربری گرافیکی COMSOL Desktop® است . سپس می توانید فایل مدل *.mph را ذخیره کنید، که به راحتی می توانید آن را در MATLAB ® بارگذاری کنید ، جایی که به پیاده سازی اسکریپت برای حل مشکل ادامه می دهید.
توابع Wrapper استفاده شده توسط اسکریپت:
mphopen برای بارگذاری فایل مدل *.mph.
mpheval برای ارزیابی دمای خروجی در نقاط گره مش.
mphinterp برای ارزیابی دمای خروجی در نقاط مشخص شده.
mphplot برای نمایش نمودارها.
مسیر کتابخانه برنامه: LiveLink_for_MATLAB/Tutorials/pseudoperiodicity_llmatlab
دستورالعمل های مدل سازی – MATLAB®
در این بخش توضیح دقیقی از دستوراتی که باید در خط فرمان متلب وارد کنید تا شبیه سازی را اجرا کنید، پیدا می کنید.
1
COMSOL را با MATLAB شروع کنید .
اکنون دو امکان برای ادامه دارید:
هر دستور را از مرحله 2 زیر در خط فرمان MATLAB وارد کنید.
اسکریپت مدل کامل موجود در بخش Model M-File را در یک ویرایشگر متن قرار دهید، سپس فایل را با پسوند “.m” ذخیره کنید و در نهایت این فایل را در MATLAB اجرا کنید.
2
با بارگیری شی مدل حاوی تنظیمات پایه مدل فیزیک شروع کنید و دستور را وارد کنید:
model = mphopen(‘pseudoperiodicity_llmatlab’);
توجه: برای آموزش مدل‌سازی فایل .mph pseudoperiodicity_llmatlab.mph به بخش دستورالعمل‌های مدل‌سازی — COMSOL Desktop مراجعه کنید .
حل با دمای خروجی درون یابی شده
1
یک حلقه for تنظیم کنید که برای 6 تکرار اجرا شود:
برای i = 1:6
2
اولین عملیاتی که در حلقه اجرا می شود، محاسبه راه حل است:
model.study(‘std1’).run;
3
پس از محاسبه راه حل اول، شی مدل نیاز به تغییراتی دارد تا راه حل قبلی را در نظر بگیرد. برای اعمال این تغییرات فقط یک بار از دستور if استفاده کنید، همانطور که در زیر نشان داده شده است:
اگر i==1
4
اکنون یک گره ویژگی تابع درون یابی به نام inletTemp را به شی مدل اضافه کنید. این فایل pseudoperiodic_data.txt را می خواند که حاوی توزیع دما در مرز خروجی است. شما فایل را در مرحله 13 زیر تولید می کنید. دستورات زیر را تایپ کنید:
int1 = model.func.create(‘int1’, ‘Interpolation’);
int1.model(‘comp1’);
int1.set(‘source’, ‘file’);
filename = fullfile(tempdir,’pseudoperiodic_data.txt’);
int1.set(‘نام فایل’، نام فایل);
int1.set(‘nargs’, ‘2’);
model.func(‘int1’).setIndex(‘funcs’, ‘inletTemp’, 0, 0);
5
دما را در مرز ورودی بر روی تابع درون یابی inletTemp(x,y) تنظیم کنید :
temp1 = model.physics(‘ht’).feature(‘temp1’);
temp1.set(‘T0′,1,’inletTemp(y,z)’);
6
برای ایجاد نمودار 1 بعدی دما در امتداد لبه 5 نوع:
pg1 = model.result.create(‘pg1’, ‘PlotGroup1D’);
lngr1 = pg1.feature.create(‘lngr1’, ‘LineGraph’);
lngr1.selection.set(5);
lngr1.set(‘xdata’, ‘expr’);
متغیر lngr1 یک میانبر برای نمودار خطی گروه نمودار pg1 در مدل است.
7
اکنون یک نمودار سطح سه بعدی دما را تنظیم کنید و محدوده رنگ را تغییر دهید:
pg2 = model.result.create(‘pg2’, 3);
pg2.set(‘titleactive’, ‘on’);
surf1 = pg2.feature.create(‘surf1’, ‘Surface’);
surf1.set(‘expr’, {‘T’});
surf1.set(‘rangecoloractive’, ‘on’);
surf1.set(‘rangecolormin’, ‘283.15’);
surf1.set(‘rangecolormax’, ‘294’);
8
دستور if را ببندید:
پایان
9
عبارت را برای داده های محور x نمودار خطی lngr1 تعریف و اعمال کنید :
str = sprintf(‘x+10*R*(%d-1)’,i);
lngr1.set(‘xdataexpr’, str);
10
برای نمایش گروه نمودار pg2 وارد کنید:
شکل 1)
طرح فرعی (3،2،i)
str = sprintf(‘دما (K)، بخش %d’,i);
pg2.set(‘title’, str);
mphplot (مدل، ‘pg2’)
11
یک شکل متلب جدید ایجاد کنید تا گروه نمودار pg1 را در یک شکل جداگانه نمایش دهید:
شکل 2)
mphplot (مدل، ‘pg1’)
صبر کن
12
سپس دما را در مرز خروجی استخراج کنید. از تابع mphinterp استفاده کنید که مستلزم آن است که مختصات ارزیابی در قالب شبکه مش تعریف شده باشد. دستورات زیر را وارد کنید:
x = 1;
y = -1e-1:1e-2:1e-1;
z = -1e-1:1e-2:1e-1;
[xx,yy,zz] = meshgrid(x,y,z);
coord = [xx(:),yy(:),zz(:)]’;
[y0,z0,T] = mphinterp(model,{‘y’,’z’,’T’},’coord’,coord);
13
دما و داده مختصات را در یک فایل فرمت شده برای تابع درون یابی گره int1 ذخیره کنید ، مرحله 4 را در بالا ببینید:
fid = fopen(نام فایل،’wt’);
fprintf(fid،’%%yz T\n’);
برای j = 1: طول (T)
   if ~isnan(y0(j))||~isnan(z0(j))
      fprintf(fid،’%f %f %f\n’,y0(j),z0(j),T(j));
   پایان
پایان
fclose(fid);
14
اکنون تابع درون یابی را با فایل جدید ایجاد شده به روز کنید:
model.component(‘comp1’).func(‘int1’).refresh;
15
حلقه for را ببندید و پیامی حاوی شماره تکرار فعلی را نمایش دهید:
disp(sprintf(‘پایان تکرار شماره%d’,i));
پایان
در صورتی که دستورات بالا را مستقیماً در خط فرمان متلب وارد کرده باشید، حلقه for اجرا می شود و دو شکل متلب نمایش داده می شود. آنها به ترتیب با شکل 1 و شکل 2 مطابقت دارند . در این مرحله نمودار مربوط به شکل 2 فقط منحنی را بر اساس محلول با دمای خروجی درون یابی شده نشان می دهد. بقیه دستورالعمل های زیر را دنبال کنید تا دوباره مدل را حل کنید، این بار دمای خروجی را در نقاط گره مش ارزیابی کنید.
حل با دمای خروجی ارزیابی شده در نقاط گره مش
1
First, re-initialize the inlet temperature condition to the constant value T0. Also, change the line color to red in the line graph. Type:
temp1.set(‘T0′,1,’T0’);
lngr1.set(‘linecolor’, ‘red’);
2
Initialize the for-loop for 6 iterations and compute the solution:
for i = 1:6
   model.study(‘std1’).run;
3
At the first iteration change the inlet temperature condition to inletTemp(x,y):
   if i==1
      temp1.set(‘T0′,1,’inletTemp(y,z)’);
   end
4
Evaluate the temperature on the outlet, boundary 6, at the mesh node points using the mpheval function:
   data = mpheval(model,’T’,’edim’,2,’selection’,6,’refine’,2);
   T = data.d1;
   y = data.p(2,:);
   z = data.p(3,:);
5
You can now save the data in a file:
   fid = fopen(filename,’w’);
   fprintf(fid,’%%y z T\n’);
   for j = 1:length(T)
      fprintf(fid,’%f %f %f\n’,y(j),z(j),T(j));
   end
   fclose(fid);
6
Next, plot the plot group pg1 in the second figure that has been generated in the previous loop (see step 11 on page 7), enter the commands below:
   figure(2)
   str = sprintf(‘x+10*R*(%d-1)’,i);
   lngr1.set(‘xdataexpr’, str);
   mphplot(model,’pg1′)
7
Now refresh the interpolation function with the newly created file:
model.component(‘comp1’).func(‘int1’).refresh;
8
Finally, to close the for-loop enter:
   disp(sprintf(‘End of iteration No.%d’,i));
end
7
اکنون تابع درون یابی را با فایل جدید ایجاد شده به روز کنید:
model.component(‘comp1’).func(‘int1’).refresh;
8
در نهایت برای بستن حلقه for وارد کنید:
   disp(sprintf(‘پایان تکرار شماره%d’,i));
پایان
مدل M-FILE
در زیر اسکریپت کامل مدل را مشاهده می کنید. می توانید آن را کپی کرده و در یک ویرایشگر متن جایگذاری کنید و با پسوند “.m” ذخیره کنید. برای اجرای اسکریپت در MATLAB مطمئن شوید که مسیر پوشه حاوی اسکریپت در متلب تنظیم شده است، سپس نام فایل را بدون پسوند “.m” در اعلان MATLAB تایپ کنید.
model = mphopen(‘pseudoperiodicity_llmatlab’);
for i = 1:6
   model.study(‘std1’).run;
   if i==1
      int1 = model.func.create(‘int1’, ‘Interpolation’);
      int1.model(‘comp1’);
      int1.set(‘source’, ‘file’);
      filename = fullfile(tempdir,’pseudoperiodic_data.txt’);
      int1.set(‘filename’, filename);
      int1.set(‘nargs’, ‘2’);
      model.func(‘int1’).setIndex(‘funcs’, ‘inletTemp’, 0, 0);
      temp1 = model.physics(‘ht’).feature(‘temp1’);
      temp1.set(‘T0′,1,’inletTemp(y,z)’);
      pg1 = model.result.create(‘pg1’, ‘PlotGroup1D’);
      lngr1 = pg1.feature.create(‘lngr1’, ‘LineGraph’);
      lngr1.selection.set(5);
      lngr1.set(‘xdata’, ‘expr’);
      pg2 = model.result.create(‘pg2’, 3);
      pg2.set(‘titleactive’, ‘on’);
      surf1 = pg2.feature.create(‘surf1’, ‘Surface’);
      surf1.set(‘expr’, {‘T’});
      surf1.set(‘rangecoloractive’, ‘on’);
      surf1.set(‘rangecolormin’, ‘283.15’);
      surf1.set(‘rangecolormax’, ‘294’);
   end
   str = sprintf(‘x+10*R*(%d-1)’,i);
   lngr1.set(‘xdataexpr’, str);
   figure(1)
   subplot(3,2,i)
   str = sprintf(‘Temperature (K) , section %d’,i);
   pg2.set(‘title’, str);
   mphplot(model,’pg2′)
   figure(2)
   mphplot(model,’pg1′)
   hold on
   x = 1;
   y = -1e-1:1e-2:1e-1;
   z = -1e-1:1e-2:1e-1;
   [xx,yy,zz] = meshgrid(x,y,z);
   coord = [xx(:),yy(:),zz(:)]’;
   [y0,z0,T] = mphinterp(model,{‘y’,’z’,’T’},’coord’,coord);
   fid = fopen(filename,’wt’);
   fprintf(fid,’%%y z T\n’);
   for j = 1:length(T)
      if ~isnan(y0(j))||~isnan(z0(j))
         fprintf(fid,’%f %f %f\n’,y0(j),z0(j),T(j));
      end
   end
   fclose(fid);
   model.component(‘comp1’).func(‘int1’).refresh;
   disp(sprintf(‘End of iteration No.%d’,i));
end
temp1.set(‘T0′,1,’T0’);
lngr1.set(‘linecolor’, ‘red’);
for i = 1:6
   model.study(‘std1’).run;
   if i==1
      temp1.set(‘T0′,1,’inletTemp(y,z)’);
   end
   data = mpheval(model,’T’,’edim’,2,’selection’,6,’refine’,2);
   T = data.d1;
   y = data.p(2,:);
   z = data.p(3,:);
   fid = fopen(filename,’w’);
   fprintf(fid,’%%y z T\n’);
   for j = 1:length(T)
      fprintf(fid,’%f %f %f\n’,y(j),z(j),T(j));
   end
   fclose(fid);
   figure(2)
   str = sprintf(‘x+10*R*(%d-1)’,i);
   lngr1.set(‘xdataexpr’, str);
   mphplot(model,’pg1′)
   model.component(‘comp1’).func(‘int1’).refresh;
   disp(sprintf(‘End of iteration No.%d’,i));
end
دستورالعمل های مدل سازی – COMSOL Desktop
از COMSOL Desktop برای راه اندازی شبیه سازی انتقال حرارت استفاده کنید. بعداً می توانید این مثال را با استفاده از LiveLink™ در MATLAB بارگذاری کنید تا پیاده سازی مدل را ادامه دهید.
از منوی File ، New را انتخاب کنید .
جدید
در پنجره جدید ، روی  Model  Wizard کلیک کنید .
مدل جادوگر
1
در پنجره Model  Wizard ، روی  3D کلیک کنید .
2
در درخت Select  Physics ، Heat  Transfer>Heat  Transfer  in  Fluids  (ht) را انتخاب کنید .
3
روی افزودن کلیک کنید .
4
 روی مطالعه کلیک کنید .
5
در درخت انتخاب  مطالعه ، General  Studies>Stationary را انتخاب کنید .
6
 روی Done کلیک کنید .
تعاریف جهانی
پارامترهای 1
1
در پنجره Model  Builder ، در قسمت Global  Definitions روی Parameters  1 کلیک کنید .
2
در پنجره تنظیمات برای پارامترها ، بخش پارامترها را پیدا کنید .
3
در جدول تنظیمات زیر را وارد کنید:
 
نام
اصطلاح
ارزش
شرح
آر
10[cm]
0.1 متر
شعاع لوله
u0
1[cm/s]
0.01 متر بر ثانیه
حداکثر سرعت
T0
283.15 [K]
283.15 K
دمای ورودی
q0
100[W/m^2]
100 وات بر متر مربع
شار حرارتی به سمت داخل
تعاریف
متغیرهای 1
1
در نوار ابزار صفحه اصلی ، روی  متغیرها کلیک کنید و متغیرهای محلی  را انتخاب کنید .
2
در پنجره تنظیمات برای متغیرها ، بخش متغیرها را پیدا کنید .
3
در جدول تنظیمات زیر را وارد کنید:
 
نام
اصطلاح
واحد
شرح
r
sqrt(y^2+z^2)
متر
پارامتر شعاع
هندسه 1
سیلندر 1 (cyl1)
1
در نوار ابزار Geometry ، روی  Cylinder کلیک کنید .
2
در پنجره تنظیمات سیلندر ، بخش اندازه  و  شکل را پیدا کنید .
3
در قسمت متن Radius ، R را تایپ کنید .
4
در قسمت متن ارتفاع ، 10*R را تایپ کنید .
5
قسمت Axis را پیدا کنید . از لیست نوع محور  ، x-axis را انتخاب کنید .
فرم اتحادیه (فین)
در پنجره Model  Builder ، روی Form  Union  (fin) کلیک راست کرده و Build  Selected را انتخاب کنید .
مواد
در پنجره Model  Builder ، در قسمت Component   (comp1) روی Materials کلیک راست کرده و Browse  Materials را انتخاب کنید .
مرورگر مواد
1
در پنجره Material  Browser ، Built-in>Water,  fluid in the tree را انتخاب کنید.
2
 روی Add  to  Component کلیک کنید .
3
 روی Done کلیک کنید .
انتقال حرارت در سیالات (HT)
مایع 1
1
در پنجره Model  Builder ، در قسمت Component   (comp1)>Heat  Transfer  in  Fluids  (ht) روی Fluid  1 کلیک کنید .
2
در پنجره تنظیمات برای Fluid ، بخش Heat  Convection را پیدا کنید .
3
بردار u را به صورت مشخص کنید
 
(1-r/R)^2*u0
ایکس
0
y
0
z
دما 1
1
در نوار ابزار Physics ، روی  Boundaries کلیک کنید و Temperature را انتخاب کنید .
2
فقط مرز 1 را انتخاب کنید.
3
در پنجره تنظیمات دما ، قسمت دما را بیابید .
4
در قسمت متنی 0 ، T0 را تایپ کنید .
خروجی 1
1
در نوار ابزار Physics ، روی  Boundaries کلیک کنید و Outflow را انتخاب کنید .
2
فقط مرز 6 را انتخاب کنید.
شار حرارتی 1
1
در نوار ابزار Physics ، روی  Boundaries کلیک کنید و Heat  Flux را انتخاب کنید .
2
فقط مرزهای 2-5 را انتخاب کنید.
3
در پنجره تنظیمات Heat  Flux ، بخش Heat  Flux را پیدا کنید .
4
در قسمت متن 0 ، q0 را تایپ کنید .
مش 1
مثلثی رایگان 1
1
در نوار ابزار Mesh ، روی  Boundary کلیک کنید و Free  Triangular را انتخاب کنید .
2
فقط مرز 1 را انتخاب کنید.
توزیع 1
1
روی Free  Triangular  کلیک راست کرده و Distribution را انتخاب کنید .
2
فقط لبه های 1 و 4 را انتخاب کنید.
3
در پنجره تنظیمات برای توزیع ، بخش توزیع را پیدا کنید .
4
در قسمت متنی Number  of  Elements عدد 15 را تایپ کنید .
اندازه
1
در پنجره Model  Builder ، در قسمت Component   (comp1)>Mesh  1 روی Size کلیک کنید .
2
در پنجره تنظیمات برای اندازه ، قسمت اندازه عنصر  را پیدا کنید .
3
از لیست از پیش تعریف شده ، Extremely  fine را انتخاب کنید .
جارو 1
1
در نوار ابزار Mesh ، روی  Swept کلیک کنید .
2
در پنجره تنظیمات برای Swept ، روی  Build  All کلیک کنید .
مدل را ذخیره کنید
1
اکنون می توانید مدل را در قالب COMSOL ذخیره کنید، از منوی File گزینه Save را انتخاب کنید .
2
به دایرکتوری مراجعه کنید که کدام مسیر در MATLAB تنظیم شده است و domain_activation_llmatlab را در قسمت متن فایل نام وارد کنید .
3
روی ذخیره کلیک کنید .