Thuật toán AFT

Một phần của tài liệu các phương pháp tạo lưới tự động và ứng dụng trong tính toán cơ học (Trang 26 - 36)

Đặc điểm chính của thuật toán AFT đó là sự sinh ra đồng thời của các nút lưới và các ô lưới tam giác. Mỗi một tam giác mới ngay khi vừa sinh ra sẽ được kiểm tra một cách địa phương. Dưới đây là các bước của thuật toán AFT:

1. Thiết lập một ’front’ lưới ban đầu và một tập hợp các đoạn thẳng định hướng liên kết các điểm đã được chọn trên biên. Nội suy các tham số lưới cho tất cả các nút trên front. Tất cả các nút trên front hiện tại được gọi là các nút hoạt động.

2. Lựa chọn mặt ngắn nhất của front với chiều dàil. Giá trị củaδlà trung bình các giá trị nội suy củaδtương ứng với hai nút.

3. Xác định vị trí của điểm lý tưởngKideal trên đoạn thẳng trực giao của mặt này sao cho một tam giác đều được tạo thành vớiKideal là một đỉnh.

4.Dựng đường tròn tâmKideal, bán kínhrđược lấy theo kinh nghiệmr =

0.8∗δ′, trong đó δ′ =          0.55∗l δ< 0.55∗l δ 0.55∗l≤ l≤ 2.0∗l 2.0∗l δ> 2.0∗l

δnhận giá trị địa phương của nó. Công thức này giúp chúng ta tránh được việc tạo ra các tam giác bị méo mó và đảm bảo tính tương thích hình học.

5. Tìm các nút hoạt động nằm bên trong đường tròn này và tính khoảng cách của các nút tớiKideal. Điểm nào gầnKideal nhất được chọn là đỉnh thứ ba của tam giác tiếp theo.

6. Nếu không có các nút hoạt động thì tam giác đều có một đỉnh là Kideal

cần phải được kiểm tra theo các yêu cầu sau:

• ĐiểmKideal không nằm bên trong một phần tử tam giác khác.

• Các mặt của tam giác mới không giao với bất kì một mặt đã tồn tại của front hoạt động.

Nếu tam giác không thỏa mãn các điều kiện trên, ta tìm một nút hoạt động cho một tam giác có hình dạng tốt nhất.

7. Nếu bước 6 thất bại, xắp xếp lại trật tự của front, lấy mặt hoạt động ngắn thứ hai và quay trở lại bước3.

8. Nếu bước 56 thành công, một tam giác mới được sinh ra và làm mới lại front (mặt ngắn nhất được chọn đã bị xóa bỏ). Trong trường hợp bước

6 thành công với Kideal là một đỉnh (đồng thời Kideal cũng trở thành một nút hoạt động của front mới). Nội suy tham số lưới tổng quát cho điểm mới này.

9. Sau khi làm mới front, quay trở lại bước3và lặp lại quá trình, tiếp tục cho đến khi không có cạnh nào còn lại trong front. Khi đó tất cả các cạnh đều trở thành không hoạt động và miền tính toán đã tạo thành hệ tam giác đầy đủ.

Ví dụ.

Chúng ta xét một ví dụ đơn giản trong không gian hai chiều, miền tính toán là hình vuông ABCD bị khuyết một nửa đường tròn như hình vẽ

Lưới nền gồm hai tam giác ACD, ABD và tham số lưới của lưới nền được xác định là δ = 1,s = 1,nx = 1,ny = 0, tại mỗi nút A, B, C, D. Tiếp theo ta sẽ trình bày một cách đơn giản từng bước một của quá trình tạo lưới.

Chọn các nút từ 1 đến 8 và front ban đầu như hình vẽ trên. Một trong hai mặt ngắn nhất (1-2) được chọn và dựng đường tròn tâm Kid bán kínhδ′. Đường tròn này không chứa điểm nút nào bên trong, tam giác đềuKid12chấp nhận được nên điểm Kid được chọn là điểm mới, front được làm mới lại và ta có:

• Các nút hoạt động: 1, 9, 2, 3, 4, 5, 6, 7, 8

• Các mặt hoạt động: 1-9, 9-2, 2-3, 3-4, 4-5, 5-6, 6-7, 7-8, 8-1 • Các nút không hoạt động: Không

• Tổng số điểm nút: 9

• Tổng số phần tử được tạo ra: 1 • Tổng số điểm nút còn lại: 9

Tiếp theo mặt 2-3 được chọn, ta tiến hành tương tự như bước trước Điểm Kideal chấp nhận được và trở thành nút mới, front được làm mới như hình vẽ dưới đây.

• Các nút hoạt động: 1, 9, 2, 10, 3, 4, 5, 6, 7, 8

• Các mặt hoạt động: 1-9, 9-2, 2-10, 10-3, 3-4, 4-5, 5-6, 6-7, 7-8, 8-1 • Các nút không hoạt động: Không

• Các mặt không hoạt động: 1-2, 2-3 • Tổng số điểm nút: 10

• Tổng số phần tử được tạo ra: 2 • Tổng số điểm nút còn lại: 10

Ở bước tiếp theo ta chọn mặt 10-3, nhưng điểmKidkhông nằm trong miền tính toán, tam giác đều không được chấp nhận. Vì vậy điểm Kid không thỏa mãn. (adsbygoogle = window.adsbygoogle || []).push({});

Chúng ta sử dụng nút hoạt động đã tồn tại là nút 4 và chọn mặt 10-4 là mặt mới. front được làm mới lại và có các đặc điểm sau:

• Các nút hoạt động: 1, 9, 2, 10, 4, 5, 6, 7, 8

• Các mặt hoạt động: 1-9, 9-2, 2-10, 10-4, 4-5, 5-6, 6-7, 7-8, 8-1 • Các nút không hoạt động: 3

• Các mặt không hoạt động: 1-2, 2-3, 3-4 • Tổng số điểm nút: 10

• Tổng số phần tử được tạo ra: 3 • Tổng số điểm nút còn lại: 9

Tiếp theo mặt 2-10 đã được chọn, nhưng đường tròn tâmKid có chứa nút 9, vì vậy nút 9 được chọn là đỉnh của phần tử tiếp theo.

Front được làm mới lại với các đặc điểm: • Các nút hoạt động: 1, 9, 10, 4, 5, 6, 7, 8

• Các mặt hoạt động: 1-9, 9-10, 10-4, 4-5, 5-6, 6-7, 7-8, 8-1 • Các nút không hoạt động: 2, 3

• Các mặt không hoạt động: 1-2, 2-3, 3-4 • Tổng số điểm nút: 10

• Tổng số phần tử được tạo ra: 4 • Tổng số điểm nút còn lại: 8

Tiếp theo, mặt 1-9 được chọn. Thực hiện tương tự như quá trình chọn mặt 10-3. Kết quả front được làm mới lại và có các đặc điểm sau:

• Các nút hoạt động: 9, 10, 4, 5, 6, 7, 8

• Các mặt hoạt động: 9-10, 10-4, 4-5, 5-6, 6-7, 7-8, 8-9 • Các nút không hoạt động: 1, 2, 3

• Các mặt không hoạt động: 8-1, 1-2, 2-3, 3-4 • Tổng số điểm nút: 10

• Tổng số điểm nút còn lại: 7

Tiếp theo ta chọn mặt 8-9. Lần này điểmKid được tìm thấy bên ngoài miền tính toán và bị loại bỏ vì một cạnh của tam giác mới tạo thành cắt biên.

Đường tròn tâm Kid có chứa nút 7, vì vậy nút 7 được chọn và front được làm mới lại với các đặc điểm:

• Các nút hoạt động: 9, 10, 4, 5, 6, 7

• Các mặt hoạt động: 9-10, 10-4, 4-5, 5-6, 6-7, 7-9 • Các nút không hoạt động: 8, 1, 2, 3

• Các mặt không hoạt động: 7-8, 8-1, 1-2, 2-3, 3-4 • Tổng số điểm nút: 10

• Tổng số phần tử được tạo ra: 6 • Tổng số điểm nút còn lại: 6

Tiếp theo mặt 7-9 được chọn, tam giác đều mới được chấp nhận. Vì vậy điểmKid trở thành điểm mới

• Các nút hoạt động: 9, 10, 4, 5, 6, 7, 11

• Các mặt hoạt động: 9-10, 10-4, 4-5, 5-6, 6-7, 7-11, 11-9 • Các nút không hoạt động: 8, 1, 2, 3

• Các mặt không hoạt động: 7-8, 8-1, 1-2, 2-3, 3-4 • Tổng số điểm nút: 11

• Tổng số phần tử được tạo ra: 7 • Tổng số điểm nút còn lại: 7

Tiếp theo mặt 11-9 được chọn. Tam giác đều vừa được xây dựng cắt mặt 9-10 của front, vì vậy điểmKid không được thỏa mãn.

Thay vào đó, nút hoạt động gần nhất là nút 10 được chọn, và front được làm mới lại với các đặc điểm:

• Các nút hoạt động: 7, 11, 10, 4, 5, 6

• Các mặt hoạt động: 7-11, 11-10, 10-4, 4-5, 5-6, 6-7 • Các nút không hoạt động: 8, 1, 2, 3 (adsbygoogle = window.adsbygoogle || []).push({});

• Các mặt không hoạt động: 7-8, 8-1, 1-2, 2-3, 3-4 • Tổng số điểm nút: 11

• Tổng số phần tử được tạo ra: 8 • Tổng số điểm nút còn lại: 6

Thực hiện thuật toán trên thêm 4 bước nữa, ở mỗi bước mặt ngắn nhất được chọn, chúng ta thu được hệ tam giác như hình bên dưới và front cuối cùng có các đặc điểm: • Các nút hoạt động: Không • Các mặt hoạt động: Không • Các nút không hoạt động: 1, 2, 3, 4, 5, 6, 7, 8 • Các mặt không hoạt động: 1-2, 2-3, 3-4, 4-5, 5-6, 6-7, 7-8, 8-1 • Tổng số điểm nút: 11

• Tổng số phần tử được tạo ra: 12 • Tổng số điểm nút còn lại: Không

Chú ý rằng, trong trường hợp tổng quát, khi một điểm mới được tìm thấy mà quá gần với một nút hoạt động trên front, thì điểm mới đó được thay thế bằng nút này. Điều này sẽ loại bỏ được các tam giác có những cạnh nhỏ.

Một phần của tài liệu các phương pháp tạo lưới tự động và ứng dụng trong tính toán cơ học (Trang 26 - 36)