Chương 1 KIẾN THỨC CƠ SỞ Trong chương này, chúng tôi xin nhắc lại một số kiến thức cơ sở của phương pháp thể tích hữu hạn, nội dung của chương này được tham khảo từ [12] và [13].1 Định nghĩa Xét miền Ω được bao phủ bởi lưới tam giác, chúng tôi ký hiệu lưới này là lưới P , các phần tử lưới là Pj , j ∈ [j, J], trong đó J là số phần tử của lưới ban đầu. Từ lưới này chúng tôi sẽ sinh lưới đa giác D, các phần tử của lưới này là Di , i ∈ [1, I]. Trong lưới đa giác này, chúng ta có các cạnh Ak , k ∈ [1, K], K là số cạnh trong lưới, ứng với mỗi cạnh chúng ta sẽ có vector pháp tuyến nk , và vecto tiếp tuyến là τk. Chúng tôi sẽ gọi tên lưới ban đầu là T.
Với lưới T , chúng tôi thiết lập một số định nghĩa như sau: nút ban đầu, cạnh ban đầu, phần tử ban đầu. Bên cạnh đó, chúng tôi gọi lưới với các phần tử được sinh ra ứng với các phần tử trong lưới T là D. Với lưới D, chúng tôi thiết lập một số định nghĩa như sau: nút đối ngẫu, cạnh đối ngẫu, phần tử đối ngẫu.2 Phương pháp thể tích hữu hạn trên một lưới bất kì Chúng tôi xin nhắc lại một số khái niệm cơ bản trong phương pháp thể tích hữu hạn. Nguyễn Thị Kim Duyên 4 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng Xét bài toán Laplace: −∆u = f trên Ω, (1.1) Vì miền Ω được rời rạc thành những phần tử Di , nên chúng tôi sẽ xét bài toán trên những phần tử Di này.
Trên mỗi phần tử Di , chúng ta xét phương trình Laplace như sau: −∆u = f trên Di .2) Lấy tích phân 2 vế ta được: 1 1 Z Z − ∇ · ∇udx = f dx (1.3) |Di | Di |Di | Di Xét vế trái biểu thức (1.2): 1 1 Z Z − ∇ · ∇udx = ∇u · ndS |Di | Di |Di | ∂Di 1 X (ui − uk ) = −|Ak | .4) |Di | k∈∂Di d(xk , xi ) Trong đó: • k ∈ ∂Di :k là chỉ số của những phần tử kế bên của phần tử thứ i. • Ak chính là cạnh chung giữa phần tử thứ i và phần tử thứ k. • |Ak | là chiều dài cạnh Ak. • d(xk , xi ) là khoảng cách giữa 2 điểm điều khiển thứ k và thứ i.
• Trong trường hợp i là phần tử nằm trên biên, giá trị của k là không xác định, thì vị trí của điểm điều khiển xk được xác định bằng cách lấy trung điểm của của cạnh Ak , nghĩa là: xm + xn xk = (1.5) 2 Với xm và xn là 2 điểm nằm trên cạnh Ak. Nguyễn Thị Kim Duyên 5 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng Tiếp theo, chúng ta xét vế phải biểu thức (1.6) |Di | Di Với công thức rời rạc (1.6) ta được: AU = B (1.7) Với A ∈ M N ×N , B ∈ RN,1 , U ∈ B ∈ RN,1 PNi ui j=1 |Aj |.8) |Di | −|Aj | uj , i ̸= j d(xj ,xi ) Bi = B(xi ), Ui = ui (1.9) Tiếp theo chúng tôi xin nhắc lại về cách xử lý điều kiện biên trong phương pháp thể tích hữu hạn. Với bài toán Laplace như trên, tùy theo điều kiện biên Diriclet hay Neumann, chúng ta sẽ có những cách xấp xỉ trên biên khác nhau. • Với điều kiện Dirichlet, giả sử bài toán có điều kiện biên nhau: u(x) = g(x) trên ∂Ω (1.10) giá trị uk được tính như sau: uk = g(xk ) (1.11) • Với điều kiện Neumann, giả sử bài toán có điều kiện biên nhau: ∇u(x) = h(x) trên ∂Ω (1.12) thì ta có xấp xỉ như sau: (ui − uk ) − = hk (1.3 Một số khái niệm mở rộng Trong thể tích hữu hạn, chúng ta thường sử dụng một số định nghĩa như sau: • Định nghĩa toán tử divergence: 1 X (∇ · u)i = |Ak |uk · nki (1.15) |Ti | k∈∂D i • Định nghĩa toán tử curl: 1 X (∇ × u)i = |Ak |uk · τki (1.16) |Ti | k∈∂D i Trong đó τki chính là vector tiếp tuyến của cạnh Ak .4 Sự lựa chọn điểm điều khiển trong phương pháp thể tích hữu hạn với lưới tam giác Nếu như với một lưới cấu trúc, tất cả các phần tử là hình chữ nhật hoặc hình vuông thì chúng ta dễ dàng lấy điểm điều khiển của phần tử bằng cách chọn điểm trọng tâm của hình.
Tuy nhiên, với lưới tam giác hay lưới tứ giác thì việc chọn nút điều khiển để cho được kết quả xấp xỉ tốt là điều hết sức khó khăn. Nội dung mục này được tham khảo từ tài liệu [12]. Với mỗi phần tử Di , ta có cạnh Ak là cạnh chung giữa phần tử Di và phần tử Dk (Hình 1. Một lưới được chấp nhận trong phương pháp thể tích hữu hạn nếu thõa các điều kiện sau đây: • Đường thẳng nối 2 điểm điều khiển xi và xk phải luôn vuông góc với cạnh Ak.
Nguyễn Thị Kim Duyên 7 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng Hình 1.1: Phần tử Di có cạnh chung Ak với phần tử Dk Hình 1.2: Lưới được chấp nhận Hình 1.3: Lưới không được chấp nhận • Trong trường hợp phần tử Di có một cạnh nằm trên biên của Ω , thì hình chiếu vuông góc của điểm điều khiển xi phải đi qua cạnh Ak. Nguyễn Thị Kim Duyên 8 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng Chương 2 TÍNH CHẤT CỦA LƯỚI VÀ CẤU TRÚC DỮ LIỆU CHO THUẬT TOÁN Sự rời rạc hóa một miền tính toán liên tục thành các phần tử thể tích là một bước quan trọng trong việc tính toán mô phỏng chất lưu. Trong những năm gần đây, các nhà nghiên cứu thường tập trung vào việc tối ưu hóa bộ nhớ và tốc độ xử lý trong quá trình sinh lưới. Việc thiết kế một cấu trúc dữ liệu tốt cho thuật toán đóng vai trò quan trọng trong việc đẩy nhanh quá trình xử lý.
Chúng tôi cần phải thiết kế cơ sở dữ liệu cho các đối tượng như nút, cạnh, phần tử sao cho quá trình truy vấn diễn ra nhanh chóng. Trong chương này, chúng tôi xin trình bày cấu trúc dữ liệu cho thuật toán.1 Các đối tượng hình học trong lưới Thông tin về cấu trúc lưới cho chúng ta về cái nhìn tổng quát về lưới cũng như về miền hình học tính toán đang xét. Thông tin này nói về mối quan hệ giữa các đối tượng trong lưới. Trong tính toán một chiều các đối tượng sẽ chỉ là nút và cạnh.
Trong tính toán hai chiều, chúng ta sẽ quan tâm đến ba đối tượng đó là: nút, cạnh và phần tử (face hoặc facets). Đặc biệt, trong tính toán ba chiều, chúng ta cần phải quản lý dữ liệu cho 4 Nguyễn Thị Kim Duyên 9 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng đối tượng: nút, cạnh, mặt (face hoặc facets), và phần tử (cell, volumes, regions hoặc solids), thuật ngữ "phần tử" cho lưới 2D khác với lưới 3D, "phần tử" trong 2 chiều là đối tượng được tạo ra bởi các cạnh, ngược lại "phần tử" trong 3 chiều là đối tượng được tạo ra bởi các mặt, các mặt này được tạo ra bởi các cạnh. Trong luận văn này, chúng tôi hướng đến việc sinh lưới đa giác trong miền tính toán hai chiều, do đó cơ sở dữ liệu được thiết kế cho ba giá trị là nút, cạnh và phần tử.2 Thành lập cơ sở dữ liệu Mỗi đối tượng hình học được cấu thành từ đối tượng có cấp thấp hơn một bậc. Phần tử được tạo thành bởi các cạnh, cạnh được tạo thành bởi 2 nút, và thông tin về 1 nút là tọa độ của nút này.
Mối quan hệ này chính là nền tảng để chúng tôi thiết kế cấu trúc dữ liệu cho lưới.1: Mối liên hệ giữa các đối tượng vậy, nhìn vào hình 2.1, chúng tôi thấy được rằng, trong lưới tính toán 2 chiều, chúng ta có bốn mối quan hệ, ứng với mỗi mối quan hệ chúng tôi sẽ tạo ra một mảng hai chiều (cấu trúc mảng hai chiều trong ngôn ngữ lập trình C++,) để xử lý. Mối quan hệ (1), (2) là mối quan hệ từ phần tử cấp cao đến phần tử cấp thấp, và mối quan hệ (3),(4) là mối quan hệ từ phần tử cấp thấp đến phần tử cấp cao. Nguyễn Thị Kim Duyên 10 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng Lưu ý rằng, chúng tôi không sử dụng mối quan hệ giữa các đối tượng cùng cấp với nhau nhằm làm giảm khối lượng lưu trữ tính toán. Dựa vào hình 2.1, chúng tôi sẽ mô tả cách truy vấn dữ liệu như sau: • Từ chỉ số của một cạnh, chúng tôi có thể biết được thông tin của hai nút tạo ra cạnh này (quan hệ (1)).
• Từ thông tin về một nút, chúng tôi có thể truy vấn thông tin của một cạnh được tạo thành bởi nút này (quan hệ (4)). • Bên cạnh đó, thông qua chỉ số của phần tử chúng tôi biết được chỉ số của các cạnh tạo ra phần tử này. • Tương tự như vậy, từ chỉ số của một cạnh, chúng tôi cũng sẽ truy vấn được thông tin về chỉ số của hai phần tử có chung cạnh này. Trong mục tiếp theo, chúng tôi sẽ mô tả chi tiết về các đối tượng dữ liệu (mảng 2 chiều) sẽ được sử dụng trong thuật toán.3 Mô tả chi tiết với các đối tượng Như đã đề cập trong mục trước, những mối quan hệ trong hình 2.1 sẽ trở thành một mảng hai chiều trong cấu trúc code.
Như vậy, chúng ta sẽ khởi tạo bốn mảng 2 chiều theo cấu trúc sau: • Ứng với mối quan hệ (1), chúng tôi đặt tên là mảng 1, mảng này chứa thông tin về chỉ số của các cạnh có chung một nút ( hình 2. Ví dụ, dòng thứ nhất của mảng sẽ chứa thông tin về các chỉ số của các cạnh được tạo thành bởi nút 1. Một cách tổng quát, ta có dữ liệu ở dòng thứ i sẽ chứa thông tin về chỉ số của các cạnh mà cạnh đó được tạo thành bởi nút thứ thứ i. • Ứng với mối quan hệ (4), chúng tôi đặt tên là mảng 2, mảng này chứa thông tin về chỉ số của các nút có chung một cạnh (hình 2.
Nguyễn Thị Kim Duyên 11 Luận văn Thạc sĩ Chuyên ngành Toán ứng dụng Hình 2.2: Mảng 1 Tổng quát, với dòng thứ i trong mảng 2 này, chúng ta sẽ biết thông tin về các nút tạo bởi cạnh thứ i.