Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (992.37 KB, 23 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>PHƯƠNG PHÁP SỐ - ĐỘNG LỰC HỌC LƯU CHẤT </b>
<b>Giảng viên hướng dẫn: Lê Tuấn Phương Nam Lớp: P01 </b>
<b>Sinh viên thực hiện: </b>
<b>Sinh viên thực hiện Mã số sinh viên </b>
<b>Thành phố Hồ Chí Minh, tháng 5 năm 2024 </b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>2. </b> Xác định bước thời gian cho tính ổn định ... 9
<b>2.1. </b> Xác định điều kiện giới hạn của ∆𝑡 theo lý thuyết: ... 9
<b>2.2. </b> Xác định điều kiện giới hạn của ∆𝑡: ... 12
<b>3. </b> Kết luận... 15
<b>4. </b> PHỤ LỤC ... 16
<b>4.1. </b> Code theo thời gian giản đồ Central Scheme Forward – Euler: ... 16
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Ở bài tập lớn 1, nhóm đã khảo sát độc lập lưới và xác định được giá trị lưới hội tụ là
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><small>2Pr Re</small>
<i><small>ii</small></i>
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>1.2. Kết quả khi chạy đoạn code mô phỏng ở Phụ lục </b>
Chọn giá trị ban đầu (t = 0s) của nhiệt độ là 𝑇<sub>𝑜</sub> = 7
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">1.2.1.
∆𝑡 = 0.0001𝑠 𝑡 = 0𝑠
𝑡 = 0.1𝑠
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">𝑡 = 0.5𝑠
𝑡 = 1𝑠
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">1.2.2.
∆𝑡 = 0.001𝑠 𝑡 = 0𝑠
𝑡 = 0.1𝑠
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">𝑡 = 0.5𝑠
𝑡 = 1𝑠
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>2.1. Xác định điều kiện giới hạn của ∆𝒕 theo lý thuyết: </b>
Tương tự với các phần tử ở phần 1, ta thiết lập được bảng số liệu sau:
<i><b><small>Table 1: Δt thỏa điều kiện bị chặn của từng loại phần tử theo tính tốn lý thuyết </small></b></i>
<b>Phần tử số </b> <i><b>Δtmax thỏa điều kiện bị chặn </b></i>
<i><b>Vậy với giá trị Δt =0.0001s thỏa điều kiện bị chặn của tất cả các phần tử, thỏa </b></i>
<i><b>mãn ổn định cho tất cả các phần tử. Giá trị Δt =0.001s vẫn thỏa điều kiện bị chặn </b></i>
do các điều kiện ∆𝑡 ở bảng trên trên chỉ giả định các vận tốc u,v là cực đại (=1) trong khi đó ở mỗi vị trí giá trị vận tốc sẽ nhỏ hơn giá trị giả định nên điều kiện của bước thời gian có thể lớn hơn
Từ các đồ thị Figure 1,Figure 2 và Figure 3 có thể thấy rằng giá trị T tại hai
<i>mốc Δt không quá khác nhau, với sai số lớn nhất chỉ khoảng 1%. Điều này sảy ra là vì giá trị Δt =0.001s, hệ số CFl = 1.299 so với phần tử có Δt<small>max</small></i> nhỏ nhất tương đương
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">với việc lưới thô hơn lưới đang xét là 1.299 lần và mức lưới đó vẫn đang là mức lưới hội tụ.
<b><small>Figure 1:Giá trị nhiệt độ tại y = 1 và t = 0.1s ở hai giá trị Δt </small></b>
<b><small>Figure 2:Giá trị nhiệt độ tại y = 1 và t = 0.5s ở hai giá trị Δt </small></b>
<small>012345678</small>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b><small>Figure 3: Giá trị nhiệt độ tại y = 1 và t=1s ở hai giá trị Δt </small></b>
<b><small>Figure 4: Sai số nhiệt độ giữa các mức thời gian </small></b>
<i>Ở mức Δt =0.001s hội tụ và đạt giá trị ổn định tại t > 6s, ở mức Δt =0.0001s </i>
hội tụ và đạt giá trị ổn định tại t < 5s.
<small>0.00E+005.00E-031.00E-021.50E-022.00E-022.50E-02</small>
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b>2.2. Xác định điều kiện giới hạn của ∆𝒕: </b>
- Ta thấy miền nhiệt độ sẽ đạt ổn định sau khoảng 6 s. Vậy, ta có thể tăng dần bước thời gian ∆𝑡 từ giá trị 0.001s và kiểm ta điều kiện hội tụ và ổn định tại giây thứ 10:
<b><small>Bảng 1: Giá trị sai số ∆𝑻 theo từng bước thời gian </small></b>
<b><small>Bảng 2: Sai số ∆𝑻 theo từng bước thời gian (∆𝒕 ≤ 𝟎. 𝟎𝟎𝟐𝟑𝒔) </small></b>
<small>-2.00E-030.00E+002.00E-034.00E-036.00E-038.00E-031.00E-021.20E-021.40E-021.60E-021.80E-02</small>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b><small>Bảng 3: Sai số ∆𝑻 theo từng bước thời gian (∆𝒕 = 𝟎. 𝟎𝟎𝟐𝟒𝒔) </small></b>
<i>- Nhận xét: Với ∆𝑡 ≤ 0.0023𝑠 kết quả cho ra sai số thỏa mãn điều kiện hội tụ </i>
và cho ra kết quả ổn định sao khoảng 6s. Với ∆𝑡 = 0.0024𝑠 Sai số tăng mạnh và kết quả khơng hội tụ. Điều này cịn có thể kiểm chửng bới các Hình
<i>1, Hình 2 và Hình 3. </i>
<i>- Vậy điều kiện để bước thời gain ở định là ∆𝑡 ≤ 0.0023𝑠 </i>
<small>-5.00E+760.00E+005.00E+761.00E+771.50E+772.00E+772.50E+77</small>
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><b><small>Hình 1: 𝒕 = 𝟏𝟎𝒔; ∆𝒕 = 𝟎. 𝟎𝟎𝟏𝒔 (hội tụ và ổn định) </small></b>
<b><small>Hình 2: 𝒕 = 𝟏𝟎𝒔; ∆𝒕 = 𝟎. 𝟎𝟎𝟐𝟑𝒔 (hội tụ và ổn định) </small></b>
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">- Với 𝛥𝑡 = 0.0001𝑠 mơ hình ổn định nhanh hơn 𝛥𝑡 = 0.001𝑠.
- Khi lưới được chia đủ mịn và kết quả mơ phỏng cho dịng ổn định là hội tụ. Bước thời gian thỏa mãn cho tính hội tụ là ∆𝑡 ≤ 0.0023𝑠 và kết quả đạt ổn định sau 6s.
- Bước thời gian càng nhở thì thời gian đạt ổn định càng nhanh nhưng thời gian sinh tốn sẽ lâu và tốn tài ngun máy tính hơn. Do đó để tối ưu, nhóm đưa ra kết luận khi mơ phỏng bài tốn nên lựa chọn ∆𝑡 = 0.0023
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>4.1. Code theo thời gian giản đồ Central Scheme Forward – Euler: </b>
% BTL 2% Input
dt = 0.0025;dx = 1/a;dy = 2/b;V = dx*dy;
N = a*b; % Number of cells
% Domain matrix
Domain = T0*ones(b,a);Domain_new = ones(b,a);Domain_old = ones(b,a);% Matrix coorndinatX = dx/2;
fluxw = 0-(1/(Pr*Re))*dy*((Domain(1,1)-0)/(0.5*dx));
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">% Y axis% North face
v = cos(pi*X(1))*sin(pi*(Y(b)+dy/2)); fluxn = v*dx*Domain(1,1);
% South face
v = cos(pi*X(1))*sin(pi*(Y(b)-dy/2));
fluxs = (1/(Pr*Re))*(dx/dy)*(Domain(1,1)-Domain(2,1));
v*dx*0.5*(Domain(1,1)+Domain(2,1))-Domain_new(1,1) = Domain(1,1) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
% Top-Right corner boundary (1,a)% X axis
% Est face
u = -sin(pi*(X(a)+dx/2))*cos(pi*Y(b));
fluxe = Domain(1,a));
% West face
u = -sin(pi*(X(a)-dx/2))*cos(pi*Y(b));
fluxw = (1/(Pr*Re))*(dy/dx)*(Domain(1,a)-Domain(1,a-1));
u*dy*0.5*(Domain(1,a-1)+Domain(1,a))-% Y axis% North face
v = cos(pi*X(a))*sin(pi*(Y(b)+dy/2)); fluxn = v*dx*Domain(1,a);
% South face
v = cos(pi*X(1))*sin(pi*(Y(b)-dy/2));
fluxs = (1/(Pr*Re))*(dx/dy)*(Domain(1,a)-Domain(2,a));
v*dx*0.5*(Domain(2,a)+Domain(1,a))-Domain_new(1,a) = Domain(1,a)+dt*-(fluxn - fluxs + fluxe - fluxw)/V;
% Bottom-Left corner boundary b,1% X axis
% Est face
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">u = -sin(pi*(X(1)+dx/2))*cos(pi*Y(1));
fluxe = (1/(Pr*Re))*(dy/dx)*(Domain(b,2)-Domain(b,1));% West face
fluxw = 0-(1/(Pr*Re))*dy*(Domain(b,1)-0)/(0.5*dx);
% Y axis% South face
v = cos(pi*X(1))*sin(pi*(Y(1)-dy/2)); fluxs = v*dx*Domain(b,1);
% North face
v = cos(pi*X(1))*sin(pi*(Y(1)+dy/2));
fluxn = (1/(Pr*Re))*(dx/dy)*(Domain(b-1,1)-Domain(b,1));
v*dx*0.5*(Domain(b-1,1)+Domain(b,1))-Domain_new(b,1) = Domain(b,1) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
% Bottom-Right corner boundary (b,a)% X axis
% Est face
u = -sin(pi*(X(a)+dx/2))*cos(pi*Y(1));
fluxe = Domain(b,a));
% West face
u = -sin(pi*(X(a)-dx/2))*cos(pi*Y(1));
fluxw = (1/(Pr*Re))*dy*(Domain(b,a)-Domain(b,a-1))/dx;% Y axis
u*dy*0.5*(Domain(b,a)+Domain(b,a-1))-% South face
v = cos(pi*X(a))*sin(pi*(Y(1)-dy/2)); fluxs = v*dx*Domain(b,a);
% North face
v = cos(pi*X(a))*sin(pi*(Y(1)+dy/2));
fluxn = (1/(Pr*Re))*dx*(Domain(b-1,a)-Domain(b,a))/dy;
v*dx*0.5*(Domain(b,a)+Domain(b-1,a))-Domain_new(b,a) = Domain(b,a) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">% Left Boundary (i,1)
% X axis % Est face
u = -sin(pi*(X(1)+dx/2))*cos(pi*Y(b-i+1)); fluxe = u*dy*0.5*(Domain(i,1)+Domain(i,2))-(1/(Pr*Re))*(dy/dx)*(Domain(i,2)-Domain(i,1)); % West face
fluxw = 0-(1/(Pr*Re))*(dy/(0.5*dx))*(Domain(i,1)-0);
% Y axis
% North face
v = cos(pi*X(1))*sin(pi*(Y(b-i+1)+dy/2));% North face
fluxn = (1/(Pr*Re))*(dx/dy)*(Domain(i-1,1)-Domain(i,1)); % South face
v*dx*0.5*(Domain(i,1)+Domain(i-1,1))-v = cos(pi*X(1))*sin(pi*(Y(b-i+1)-dy/2)); fluxs = v*dx*0.5*(Domain(i+1,1)+Domain(i,1))-(1/(Pr*Re))*(dx/dy)*(Domain(i,1)-Domain(i+1,1));
Domain_new(i,1) = Domain(i,1) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
% Right Boundary (i,a)
% X axis% Est face
u = -sin(pi*(X(a)+dx/2))*cos(pi*Y(b-i+1)); fluxe = u*dy*1-(1/(Pr*Re))*(dy/(0.5*dx))*(1-Domain(i,a));
% West face
u = -sin(pi*(X(a)-dx/2))*cos(pi*Y(b-i+1)); fluxw = u*dy*0.5*(Domain(i,a-1)+Domain(i,a))-(1/(Pr*Re))*(dy/dx)*(Domain(i,a)-Domain(i,a-1));% Y axis
% North face
v = cos(pi*X(a))*sin(pi*(Y(b-i+1)+dy/2));
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">fluxn = (1/(Pr*Re))*(dx/dy)*(Domain(i-1,a)-Domain(i,a));% South face
v*dx*0.5*(Domain(i,a)+Domain(i-1,a))-v = cos(pi*X(a))*sin(pi*(Y(b-i+1)-dy/2)); fluxs = v*dx*0.5*(Domain(i+1,a)+Domain(i,a))-(1/(Pr*Re))*(dx/dy)*(Domain(i,a)-Domain(i+1,a));
Domain_new(i,a) = Domain(i,a) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
% Top Boundary (1,j)
% X axis% Est face
u = -sin(pi*(X(j)+dx/2))*cos(pi*Y(b));
fluxe = (1/(Pr*Re))*dy*(Domain(1,j+1)-Domain(1,j))/dx;% West face
u*dy*0.5*(Domain(1,j)+Domain(1,j+1))-u = -sin(pi*(X(j)-dx/2))*cos(pi*Y(b));
fluxw = (1/(Pr*Re))*dy*(Domain(1,j)-Domain(1,j-1))/dx;% Y axis
u*dy*0.5*(Domain(1,j-1)+Domain(1,j))-% North face
v = cos(pi*X(j))*sin(pi*(Y(b)+dy/2)); fluxn = v*dx*Domain(1,j);
% South face
v = cos(pi*X(j))*sin(pi*(Y(b)-dy/2));
fluxs = (1/(Pr*Re))*dx*(Domain(1,j)-Domain(2,j))/dy;
v*dx*0.5*(Domain(2,j)+Domain(1,j))-Domain_new(1,j) = Domain(1,j) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
% Bottom Boundary (b,j)
% X axis% Est face
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">u = -sin(pi*(X(j)+dx/2))*cos(pi*Y(1));
fluxe = (1/(Pr*Re))*dy*(Domain(b,j+1)-Domain(b,j))/dx; % West face
u*dy*0.5*(Domain(b,j)+Domain(b,j+1))-u = -sin(pi*(X(j)-dx/2))*cos(pi*Y(1));
fluxw = (1/(Pr*Re))*dy*(Domain(b,j)-Domain(b,j-1))/dx;% Y axis
u*dy*0.5*(Domain(b,j-1)+Domain(b,j))-% South face
v = cos(pi*X(j))*sin(pi*(Y(1)-dy/2)); fluxs = v*dx*Domain(b,j);
% North face
v = cos(pi*X(j))*sin(pi*(Y(1)+dy/2));
fluxn = (1/(Pr*Re))*dx*(Domain(b-1,j)-Domain(b,j))/dy;
v*dx*0.5*(Domain(b,j)+Domain(b-1,j))-Domain_new(b,j) = Domain(b,j) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
u = -sin(pi*(X(j)+dx/2))*cos(pi*Y(b-i+1));
fluxe = (1/(Pr*Re))*dy*(Domain(i,j+1)-Domain(i,j))/dx;% West face
u*dy*0.5*(Domain(i,j)+Domain(i,j+1))-u = -sin(pi*(X(j)-dx/2))*cos(pi*Y(b-i+1));
fluxw = (1/(Pr*Re))*dy*(Domain(i,j)-Domain(i,j-1))/dx;% Y axis
u*dy*0.5*(Domain(i,j-1)+Domain(i,j))-% North face
v = cos(pi*X(j))*sin(pi*(Y(b-i+1)+dy/2));
fluxn = (1/(Pr*Re))*dx*(Domain(i-1,j)-Domain(i,j))/dy;% South face
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">v = cos(pi*X(j))*sin(pi*(Y(b-i+1)-dy/2));
fluxs = (1/(Pr*Re))*dx*(Domain(i,j)-Domain(i+1,j))/dy;
v*dx*0.5*(Domain(i+1,j)+Domain(i,j))-Domain_new(i,j) = Domain(i,j) + dt*-(fluxn - fluxs + fluxe - fluxw)/V;
Domain_old = Domain;Domain = Domain_new;
[X, Y] = meshgrid(x, y);% Generate Temp Fielcontourf(X, Y, Domain);
</div>