12

Click here to load reader

BTL Tinh Toan Khoa Hoc Team Super Hero

Embed Size (px)

Citation preview

Page 1: BTL Tinh Toan Khoa Hoc Team Super Hero

1. Phương trình khuếch tán

Xét một ví dụ, ta quan tâm đến tiến trình khuếch tán của một chất lỏng hóa học. Giả thiết chất lỏng này có nồng độ c (mol /m3), đồng thời nó chỉ vận chuyển bằng cách khuếch tán tự do trong dung môi (ta loại bỏ các yếu tố cơ học chất lưu khác và tính hòa tan hợp chất trong môi trường lỏng). Như vậy, khuếch tán sẽ là yếu tố duy nhất để chất lỏng dịch chuyển.

Như mô tả ở hình 1, trong đó xét theo khuynh hướng nồng độ ∇ c, thông lượng J là một lượng chất đi qua một diện tích trên một đơn vị thời gian, đơn vị là (số mol)/(m2 s¿.

Định luật Fick: J=−D∇c [1]

Hình 1 Do khuynh hướng nồng độ ∇ cgây ra thông lượng J

Hình 2 Một khối siêu nhỏ dxdydz

Ta xét trên một khối nhỏ vô hạn dV =dxdydz (Hình 2) và ta sẽ xác định lượng khuếch tán vào ra qua thể tích khối lập phương này. Đỗi với trục x, thông lượng đi vào khối lập phương trên một đơn vị thời gian được tính (J x ( x )−J x ( x+dx ) )dydz, tương tự với 2 trục dy ,dz. Từ đó ta xác định được tổng lượng chất tăng trên một đơn vị thời gian phải bằng tổng lượng chất khuếch tán đi vào khối lập phương (−∇ ⋅J ), do đó,

∂c∂ t

dV =(J x ( x )−J x ( x+dx ) )dydz+(J y ( y )−J y ( y+dy ) )dzdx+(J z ( z )−J z ( z+dz ) )dxdy [2]

Page 2: BTL Tinh Toan Khoa Hoc Team Super Hero

[ Phương pháp lặp Jacobi ]

Ở đây, t là thời gian. Chia cả 2 vế của [2] cho dV , và cho giới hạn dx ,dy ,dz→0, ta có,

∂c∂ t

=−∂ J x

∂ x−

∂ J y

∂ y−

∂J z

∂ z=−∇⋅J [3]

Từ phương trình [1], kết hợp với [3], ta thu được phương trình khuếch tán dưới đây:

∂c∂ t

=D ∇2 c . [4]

Lưu ý, ở phương trình [1], về mặt thời gian (t) và không gian ta hoàn toàn có thể xác định được bằng các phương pháp kĩ thuật đo lường, vì vậy, ta cần giải phương trình [4] với nghiệm c theo không gian và thời gian.

Xét theo một chiều chính −∞<x<∞ trong không gian. Phương trình phân tán [4] rút gọn thành: ∂c /∂ t=D∂2 c /∂x2 [5]. Giả thiết ta xác định trước các giá trị tại x=0 và t=0, tức là, với hàm δ (x ) thỏa mãn điều kiện1:

δ (x )=0 , x ≠0 ,

∫−∞

δ ( x )dx=1

Điều kiện khởi tạo ban đầu: c ( x , t )=0 ,∀ t<0 và c ( x , t=0 )=δ ( x ). Giải nghiệm phương trình phân tán [5], ta thu được,

c ( x , t )= 1√4 πDt

exp (−x2

4Dt ) [6 ]Trong phương trình [6], khi t→0, c dần tiến đến δ (x ), Với t>0, ta nhận thấy đường cong rất mịn dần trở nên rộng hơn với biên độ nhỏ dần (xem hình 3)

1 Do ở thời điểm ban đầu, nguồn chất lỏng chỉ tập trung tại vị trí x=0, đo đó nồng độ ở các vị trí khác x=0 tại thời điểm t=0 là 0. Đồng thời, tại mọi thời điểm, chất lỏng bị khuếch tán đi đến các vị trí khác nhau nhưng lượng chất lỏng đó vẫn không hề thay đổi trong dung môi (bảo toàn).

2

Page 3: BTL Tinh Toan Khoa Hoc Team Super Hero

Phương trình khuếch tán

Hình 3 Tiến trình của nồng độ khuếch tán (Phương trình [6]) phụ thuộc hàm Dt (ở đây, đường liền nét ứng với Dt=0.1, đường đứt khúc ứng với Dt=0.2 và đường chấm ứng với Dt=0.4, điều này hoàn toàn dễ hiểu vì hàm exp tăng trưởng nhanh hơn hàm tuyến tính theo biến 1/√4 πDt ).

Thay vì áp dụng duy nhất 1 xung tại t=0, ta có thể thiết lập giá trị hằng cho nồng độ, bắt đầu tại điểm t=0. Điều kiện biên này sẽ mô phỏng một hồ chứ vô số các chất hòa tan với một nồng độ hằng nhất định. Ta giả định trên một môi trường nửa vô hạn, tức là, 0≤ x≤∞. Điều kiện biên có thể biểu thức hóa bởi hàm H (t ), xác định bởi,

H (t )={0 , t<01 , t ≥0

Khi đó, ta có thể biểu diễn điệu kiện biên và khởi tạo với c ( x , t )=0 ∀ t<0 và c ( x=0 , t )=H ( t ). Phương trình khuếch tán giờ trở thành

c ( x , t )=erfc ( x2√Dt ) [7 ]

Ở đây, hàm bù vi sai erfc (x )=1−erf ( x )=1−∫0

x

e−t2dt. Biểu diễn nghiệm như hình 4

dưới đây. Ta nhận thấy các đường cong mịn, từ từ lấp dần do sự khuếch tán dòng chảy của hợp chất, khi t→∞, nồng độ c→1 ở mọi nơi (bão hòa).

3

Page 4: BTL Tinh Toan Khoa Hoc Team Super Hero

[ Phương pháp lặp Jacobi ]

Hình 4 Tiến trình của nồng độ khuếch tán (Phương trình [6]) phụ thuộc hàm Dt (ở đây, đường liền nét ứng với Dt=0.005, đường đứt khúc ứng với Dt=0.1 và đường chấm ứng với Dt=0.4, và đường liền nét trên cùng ứng với Dt=1.0).

Như vậy, ở hai điều kiện ban đầu khởi tạo khác nhau, ta thu được kết quả nghiệm khác nhau. Phương trình chính xác cho cả 2 trường hợp, với c ( x , t )=0 ,∀ t<0 , c ( x=0 , t )=0 và c ( x=1 ,t )=H ( t ),

c ( x , t )=∑i=0

∞ [erfc( 1−x+2 i2√D t )+erfc (1+x+2 i

2√D t )][8]2. Phương trình khuếch tán phụ thuộc thời gian

*Phép rời rạc

Xét trong không gian 2 chiều x , y phương trình khuếch tán phụ thuộc thời gian tương đương với,

∂c∂ t

=D ( ∂2 c∂x2+ ∂2c∂ y2 ) [9 ]

Xét 0≤ x , y ≤1, trong một khoảng thời gian nhỏ δt và bước nhỏ δx trong không gian, ta xác định miền không gian và thời gian rời rạc

t=nδtx=l δxy=mδx

n=0,1,2 ,…,l=0,1,2,…, L , vớiδx=1/L

m=0,1,2 ,…,L

Ký hiệu,

c (lδx ,m δx ,nδt )≡c l , mn

4

Page 5: BTL Tinh Toan Khoa Hoc Team Super Hero

Phương trình khuếch tán

Xét khai triển Taylor bậc 1 cho biểu thức c (x , y , t+δt ),

c ( x , y , t+δt )=c (x , y ,t )+δt δc(x , y , t)δt

+O (δ t 2) .

Với δt nhỏ, ta có thể lấy xấp xỉ vi phân của c theo thời gian,

∂c (x , y , t)∂ t

=c ( x , y , t+δt )−c (x , y , t)

δt,

Hay,

∂c l ,mn

∂ t=

c l ,mn+1−cl , m

n

δt[10]

Để vi phân không gian ta dùng khai triển Taylor cấp 2,

c ( x+δx , y , t )=c ( x , y , t )+δ xδc ( x , y ,t )

δ x+ 12δ x2

δ 2c ( x , y ,t )δ x2

+O (δ t3 ) ,

c ( x−δx , y ,t )=c ( x , y , t )−δxδc(x , y ,t)

δx+ 12δ x2

δ 2c (x , y ,t)δ x2

+O (δ t 3 ) ,

Cộng tương ứng 2 vế của 2 biểu thức trên, ta thu được,

∂2 cl , mn

∂x2=

cl−1 , mn −2c l ,m

n +cl+1 ,mn

δ x2[11]

Tương tự,

∂2 cl , mn

∂ y2=

cl ,m−1n −2c l ,m

n +cl , m+1n

δ x2

Trừ tương ứng 2 vế của [10] cho [11], kết hợp với [9] ta thu được phương trình khuếch tán trong không gian 2 chiều với xấp xỉ hàm hiện sai phân hữu hạn,

c l , mn+1=c l ,m

n + δtD

δ x2[ c l−1, m

n +c l+1 , mn +c l ,m−1

n +c l ,m+1n −4c l ,m

n ].[12]

Từ phương trình [12], cho thấy, nếu ta xác định được giá trị nồng độ c tại thời điểm n thì ta hoàn toàn xác định được tại thời điểm n+1, từ đó ta có tính toán được chuỗi kết quả nồng độ c theo thời gian t đo được tại các thời điểm.

5

Page 6: BTL Tinh Toan Khoa Hoc Team Super Hero

[ Phương pháp lặp Jacobi ]

Rõ ràng là các ý đồ sai phân hữu hạn hiện phụ thuộc vào lớp điều kiện của các giải thuật bền vững. Điều này được chứng mình đơn giản bằng cách dùng phân tích bền vững von Neuman. Trong trường hợp này, ta chứng minh trực tiếp với phương trình [12], ta nói đến tiêu chuẩn bền vững Courant-Friedrichs-Lewy hay tiêu chuẩn CFL (xem chứng minh bên dưới).

Phân tích bền vững von Neuman được dựa trên ý tưởng cho việc biểu diễn nghiệm của phương trình sai phân hữu hạn dưới dạng chuỗi Fourier và việc phân tích từng chuỗi Fourier. Xét khai triển một chuỗi Fourier dưới đây (|ξ|≤1 ):

U l , mn =ξn ei k xlδx e i k ymδx .

Thế vào phương trình [13] thu được,

ξn+1 e i k x lδxe i k ymδx=ξn ei kx lδx ei k ymδx+ δtD

δ x2ξn [ei k xlδx e i k ymδx+e i k x (l−1 )δx e i k ymδx+ei k xlδx e i ky (m+1) δx+ei kx lδx ei k y (m−1 ) δx−4 ei k xlδx e i kymδx ]

Chia cả 2 vế cho ξn ei k xlδx e i kymδx, ta có,

ξ=1+ δtD

δ x2[ei kx lδx+e−i kx lδx+e i ky lδx+e−i ky lδx−4 ]=1+ δtD

δ x2[2cos (kx δx )−2+2cos (k yδx )−2 ]=1−4 δtD

δ x2 [sin2( 12 k xδx)+sin2( 12 k y δx)] .Chú ý điều kiện để khai triển Fourier là |ξ|≤1, do đó ta thu được kết quả được gọi là tiêu chuẩn CFL sau đây:

δtD

δ x2≤14

3. Phương trình khuếch tán độc lập với thời gian

Từ phương trình [4], phương trình khuếch tán độc lập với thời gian là:

∇2 c=0[13]

do vế trái [4] là 0, và D là một hằng số khác 0.

6

Page 7: BTL Tinh Toan Khoa Hoc Team Super Hero

Phương trình khuếch tán

Xét trong không gian 2 chiều và phép rời rạc như ở phần trước, nhưng nồng độ c không phụ thuộc vào thời gian, ta cũng kí hiệu tương tự cho c l , m. Từ phương trình [11], thay vào [13] ta có:

c l , m=14

[c l+1 , m+c l−1, m+c l ,m+1+c l ,m−1 ] ,∀ ( l ,m )[14 ]

Phương trình [14] bao gồm một tập (L+1 )× (L+1 ) phương trình tuyến tính với (L+1 )× (L+1 ) ẩn. Các ẩn này là giá trị của nồng độ cho tất cả các điểm lưới (biểu diễn trên mặt phẳng). Ta phải giải hệ gồm các phương trình này. Có thể biểu diễn lại hệ như sau,

Ax=b , [15 ]

trong đó, A là ma trận (N ×N ) và x ,b là các vector (N ×1 ). Xét trong không gian một chiều trục 0≤ x≤1 và vi phân với δx=1/L, thỏa mãn c l=c (lδx ) ,∀0≤ l¿. Ngoài ra ta giả thiết nồng độ tại các miền biên là không đổi, hay c0=C 0 và c L=CL. Phương trình Lapalce trong không gian một chiều xác định ∂2 c /∂ x2=0, từ đó các phương trình sai phân hữu hạn trở thành

c l−1−2c l+c l+1=0 ,0≤ l≤ L .

Viết theo cách khác,

C0−2c1+c2=0c1−2c2+c3=0⋮c L−3−2c L−2+cL−1=0c L−2−2cL−1+CL=0

hay ¿

4. Phương pháp lặp Jacobi

Ý tưởng chung là sử dụng phương pháp lặp để tìm kiếm nghiệm x ở phương trình [15]. Nghiệm x sẽ được xác định theo dạng x (n+1)=Φ ( x(n) ) , n=0,1,2,…với n là bước lặp. Biết trước nghiệm x (0 ) và hàm lặp Φ, khi nghiệm x hội tụ đến một giá trị thì Φ hàm đồng nhất. Tức là ‖x (n+1)−x (n)‖<ε, với ε đủ nhỏ.

7

Page 8: BTL Tinh Toan Khoa Hoc Team Super Hero

[ Phương pháp lặp Jacobi ]

Khi đó, ta có hệ phương trình tuyến tính Ax=b với thủ tục lặp xác định nghiệm x xác định như sau:

Ax=b→Bx+ (A−B ) x=b

Đặt,

Bx (n+1 )+( A−B ) x (n)=b

hay

x (n+1)=( I−B−1 A ) x (n )−B−1b

Trong đó, Blà ma trận khả nghịch nào đó, ta có thể xác định trước.

*Phương pháp lặp Jacobi

Ta trở lại trong trường hợp không gian 2 chiều, với Phương trình Laplace [14],

c l , m(n+1)= 1

4[ cl+1 ,m(n) +cl−1 , m

(n) +c l ,m+1(n ) +cl , m−1

(n) ][16 ]

Trong đó n là chỉ số lặp. Nếu ta chọn tiêu chuẩn CFL là điều kiện cho phép bước

thời gian với cực đại (cố định bước nhảy), hay δtD /δ x2=14 và dùng phương trình

[12], ta áp dụng phép lặp Jacobi trong phương trình [16].

Giả sử rằng trên một miền vuông, với biên tuần hoàn theo trục x và cố định biên theo trục y, ngoài ra ta xác định điều kiện dừng,

maxij

|cijn+1−c ijn|<ε .

Tức là, sai khác về nồng độ giữa hai lần lặp liên tiếp trên tất cả các điểm lưới cần nhỏ hơn số ε đủ nhỏ. Dưới đây là giải thuật tuần tự với phương pháp lập Jacobi.

/* Jacobi update, square domain, periodic in x, fixed *//* upper and lower boundaries */Do{

δ = 0for i=0 to max {

for j=0 to max {if(c ij is a source) c ij

(n+1) = 1.0

else if(c ij is a sink) c ij(n+1) = 0.0

8

Page 9: BTL Tinh Toan Khoa Hoc Team Super Hero

Phương trình khuếch tán

else {/* periodic boundaries */west = (i==0) ? cmax−1, j

(n ) :c i−1 , j(n )

east = (i==max) ? c1 , j(n ) : ci+1 , j

(n)

/* fixed boundaries */south = (j==0) ? c0 : c i , j−1

(n)

north = (j==max) ? cL : c i , j+1(n)

c i , j+1(n) = 0.25 * (west + east + south + north)

}/* stopping criterion */if(|c ij

(n+1)−cij(n)| > tolerance) δ = |c ij

(n+1)−cij(n)|

}}while (d > tolerance)

Giải thuật Jacobi lặp tuần tự

Xét trong miền vuông trong không gian 2 chiều 0≤ x , y ≤1 với điều kiện biên tuần hoàn theo trục x, c ( x , y )=c ( x+1 , y ), và cố định giá trị cận trên và cận dưới của biên, c ( x , y=0 ) và c ( x , y=1 )=1. Do tính đối xứng nên lời giải sẽ không phụ thuộc vào tọa độ x, và nghiệm chính xác là phương trình tuyến tính đơn giản: c ( x , y )= y . Ta quan tâm đến số lần lặp lại cần thiết cho sự hội tụ của nghiệm, với việc tính toán trước nghiệm giúp ta có thể đo được sai số trong phương pháp lặp như tiêu chuẩn cho tính dừng của giải thuật được áp dụng.

Đặt ε là số đủ nhỏ cho điều kiện dừng, cỡ ε=10−p, p là một số nguyên dương. Ta tính số lần lặp cần thiết cho việc hội tụ, kết quả dưới đây ứng với kích thước ma trận N=40 và N=80 (ở đây, N=L+1).

9

Page 10: BTL Tinh Toan Khoa Hoc Team Super Hero

[ Phương pháp lặp Jacobi ]

Hình 5 Số lần lặp cho phép lặp Jacobi tương đương hàm điều kiện dừng và như là hàm số lưới điểm dọc theo mỗi chiều.

10