Phƣơng pháp Particle-based

Một phần của tài liệu mô phỏng hiệu ứng sóng nước trong thực tại ảo (Trang 37 - 65)

2.3.1. Giới thiệu

Phƣơng pháp Particle-based (hay còn gọi là phƣơng pháp Lagrangian) mô tả chất lỏng sử dụng các phần tử (Particles). Bằng cách trực tiếp theo dõi

từng phần của quá trình các phần tử di chuyển qua những miền trống.

Phƣơng pháp particle không chú trọng việc bảo toàn khối lƣợng và cung cấp khái niệm mô phỏng khung đơn giản, linh hoạt.

Mô phỏng Particle-based sử dụng cách tiếp cận luân phiên – SPH (Smoothed Particle Hydro Dynamics), đƣợc phát triển đầu tiên bởi Lucy, Gingold và Monaghan

Với cách tiếp cận này những phần tử trong khối chất lỏng duy trì các thuộc tính khác nhau ví dụ nhƣ mật độ, khối lƣợng, vận tốc.v.v…Và đƣợc theo dõi trong suốt quá trình mô phỏng.

Phƣơng pháp Particle-based ổn định hơn phƣơng pháp Physically-based nhƣng vẫn yêu cầu bộ nhớ tƣơng đối lớn.

2.3.2. Tiến trình mô phỏng

Chất lỏng đƣợc biểu diễn bằng cách phát triển các phần tử trong suốt không gian và thời gian. Mô phỏng particle thƣờng đi qua các bƣớc: đầu tiên các lực khác nhau đƣợc tính và đƣợc tích lũy cho mỗi particle. Sau đó những lực này đƣợc sử dụng để thay đổi vận tốc và cuối cùng chúng đƣợc sử dụng để cập nhật vị trí của particle.

Ở bƣớc cuối cùng, vận tốc đƣợc tính lại bằng cách lấy vị trí đã giãn ra trừ đi vị trí trƣớc đó. Lý do phải tính lại vận tốc là độ giãn (the relaxation displacements) tƣơng đƣơng với xung lực đƣợc áp dụng với vận tốc lúc bắt đầu bƣớc tiếp theo. Những xung lực này đƣợc tính ở vị trí gần vị trí cuối cùng (ở chỗ giữa vị trí đã dự đoán và vị trí cuối cùng).

Nhƣ vậy, tính không nén đƣợc và không nhóm đƣợc đƣợc thể hiện bằng cách thực hiện thủ tục nới lỏng (làm giảm - relaxation) mật độ kép, hiệu ứng của chất dẻo đàn hồi và không tuyến tính thu đƣợc bằng cách thêm lực co dãn vào khoảng trống giữa các phần tử.

1. For each particle i 2. // apply gravity

3. vi vi + tg

4. // modify velocities with pairwise viscosity impulses

5. applyViscosity 6. foreach particle i

7. // save previous position

8. xi prev

xi

9. // advance to predicted position

10. xi xi + tvi

11. // add and remove springs, change rest lengths

12. adjustSprings

13. // modify positions according to springs,

14. // double density relaxation, and collisions

15. applySpringDisplacements 16. doubleDensityRelaxation 17. resolveCollisions

18. foreach particle i

19. // use previous position to compute next velocity

20. vi (xi –xi prev

)/ t

 Đầu tiên, chúng ta update vận tốc của particle tùy theo trọng lực và vận tốc (dòng 1 đến 5).

 Ghi lại vị trí trƣớc đó và di chuyển particle tùy theo vận tốc của chúng.

 Dòng 12 đến 15: thay đổi spring (lực co dãn) dựa vào độ dài và sử dụng lực spring thay thế particle.

 Đảm bảo tính bảo toàn khối lƣợng và tính không nhóm đƣợc (dòng 16).

 Cuối cùng, sự va chạm giữa các particle và các vật thể tĩnh/động đƣợc giải quyết và vận tốc particle đƣợc tính lại.

Minh họa:

Áp đặt trọng lực và tính nhớt cho particles

 Áp đặt trọng lực và tính nhớt cho particles

 Dự đoán vị trí

 Áp đặt trọng lực và tính nhớt cho particles

 Dự đoán vị trí

 Đặt lại vị trí mới cho mỗi particles

 Áp đặt trọng lực và tính nhớt cho particles

 Dự đoán vị trí

 Làm giảm- relax (mật độ và lực co dãn- density and spring)

 Đặt lại vị trí và thu đƣợc vận tốc mới

Để thực hiện đƣợc thuật toán trên, ta cần giải quyết 3 vấn đề lớn: - Làm giảm mật độ kép (dòng 16)

- Biểu diễn đƣợc mặt phân cách (dòng 5,12,15) - Giải quyết vấn đề va chạm với đối tƣợng (dòng 17)

2.3.3. Giảm mật độ kép 2.3.3.1. Mật độ và áp suất 2.3.3.1. Mật độ và áp suất

Trong phạm vi SPH, mục đính chính là tối thiểu hóa hệ số nén, chuyển thành ràng buộc cục bộ để duy trì mật độ không đổi. Chúng ta có công thức tính mật độ ở particle i là : ij 2 ( ) (1 / ) i j N i r h (1) Rij = | rij | ; rij = xj - xi

N(i) : biểu thị tập hợp các particle hàng xóm nằm trong phạm vi của bán kính tƣơng tác h. J: các hàng xóm của particle i.

Quan niệm về mật độ này không hoàn toàn đúng với đặc tính vật lý, nó đơn giản chỉ là 1 con số xác định số lƣợng các particle có quan hệ với hàng xóm của nó. Ngƣời ta đã cố gắng đƣa ra cách nhìn nhận khác về mật độ, ví dụ nhƣ tập hợp các particle xung quanh 1 particle khác (mật độ ) có dạng là một không gian giới hạn bởi đa thức (r/h)-2, hoặc có dạng hình cái chuông với đa thức (1-(r/h)2

(1-r/h)2. Chúng ta định nghĩa áp suất giả Pi tỷ lệ với hiệu của mật độ hiện tại ρi và mật độ nguyên của ρ0:

Pi = k(ρi - ρ0) (2) k: độ cứng (stiffness)

Để làm cho công thức này đơn giản và khả thi, chúng ta kết hợp hằng số tỷ lệ với mật độ trong SPH với các tham số k và ρ0. Ngoài ra, ta coi nhƣ tất cả các particle đều có khối lƣợng giống nhau. Theo cách này thì khối lƣợng đƣợc đƣa ra ngoài và không có mặt trong phƣơng trình.

2.3.3.2. Phục hồi tính không nén đƣợc (Incompressibility Relaxation)

Phục hồi tính không nén đƣợc đƣợc thực thi nhƣ là vòng lặp toàn cục trên mỗi particle i. Phép lặp của vòng lặp này bao gồm 2 bƣớc trên mỗi hàng xóm j của particle i. Bƣớc đầu tiên, ƣớc lƣợng mật độ cục bộ ở particle i bằng cách tính tổng trọng lƣợng của các hàng xóm của chúng (phƣơng trình 1). Nếu mật độ này cao hơn ρ0, những hàng xóm này sẽ bị đẩy ra xa, nếu thấp hơn chúng sẽ đƣợc kéo vào gần hơn. Việc đẩy hoặc kéo các hàng xóm đƣợc thực hiện trong bƣớc 2 trên những hàng xóm của particle i, trong đó mỗi cặp i,j đổi chỗ cho nhau. Việc giảm mật độ di chuyển giữa 2 particle tỷ lệ với áp suất giả và trọng lƣợng theo phƣơng trình tuyến tính sau:

2

ij i(1 ij / )ˆij

D t P r h r (3)

rˆij: là véc tơ đơn vị từ particle i đến j Γt2

: lƣu thời gian độc lập của từng bƣớc.

Chúng ta áp dụng việc đổi chỗ này bằng cách thay đổi vị trí dự đoán của particle j. Việc đổi chỗ ngƣợc lại đƣợc áp dụng cho particle i, làm cho bản chất hành động đƣợc hoạt động liên tục và do đó xung lực tuyến tính đƣợc bào tồn. Sự dịch chuyển này có hƣớng dọc theo rij, động lƣợng đƣợc bảo tồn.

2.3.3.3. Near – Density and Near- Pressure

Nhƣ đã trình bày, tiến trình làm giảm mật độ không ngăn chặn đƣợc việc nhóm cụm các particles. Một particles có thể vƣơn đến miền có mật độ dừng (rest density) bằng cách đẩy mạnh một số hàng xóm của nó. Khi đó chất lỏng tách thành 1 tập hợp các nhóm độc lập, biểu hiện tính không cố kết (không dính với nhau). Ngƣời ta cố gắng để ngăn chặn sự nhóm cụm bằng cách thêm vào một khoảng cách – một lực đẩy độc lập, nhƣng nó lại là nguyên nhân của hiện hữu những phần thủ công khi mô phỏng chất lỏng có tính nhớt thấp.

Ngƣời ta giải quyết vấn đề nhóm cụm bằng cách thêm vào một áp suất thứ hai phụ thuộc vào bối cảnh đó ( by adding instead a second context- dependent pressure term). Lực mới này không phụ thuộc vào khoảng cách giữa các particle nhƣng phụ thuộc vào mật độ mới – gọi là near density, và mật độ mới này đƣợc tính theo công thức sau:

3 ij ( ) (1 / ) near i j N i r h (4)

Nó dùng một nhân với mục tiêu giả hơn mật độ đơn lẻ của chính nó. Với lại, khi chúng ta thử với những mục tiêu giả khác nhau hình lập phƣơng đơn này sẽ cho kết quả tốt khi khiểm tra.

Để tạo ra lực giành riêng cho việc đẩy (lực đẩy) ngƣời ta định nghĩa near – pressure nhƣ sau:

near near near

i i

Phƣơng trình này tƣơng tự phƣơng trình (2) nhƣng nó không còn mật độ thƣa (rest density). Near – pressure đem lại sự dịch chuyển cho mỗi cặp trong bƣớc 2 của quá trình làm giảm mật độ. Lúc này phƣơng trình 3 trở thành:

2 2

ij i(1 ij/ ) inear(1 ij/ ) ˆij

D t P r h P r h r (6)

Ở đây kernel bậc 2 cho thấy lực đẩy (near – repulsion ) đƣợc áp dụng cho hàng xóm nhƣ thế nào. Ngoài ra, the near – pressure kernel tƣơng ứng (bằng) đạo hàm của near – density kernel.

Thuật toán 2 sau đây, tổng kết lại phƣơng pháp gần đúng tính bảo toàn khối lƣợng và tính nhóm cụm. Với mỗi particles, density và near – density đƣợc tính (phƣơng trình 1 và 4), sau đó đƣợc đánh giá bằng phƣơng trình 2 và phƣơng trình 5. Cuối cùng, vòng lặp thứ 2 trên các hàng xóm của nó áp dụng sự dịch chuyển cho các particles (phƣơng trình 6). Hàng xóm của j đƣợc dịch chuyển ngay lập tức, nhƣng chúng ta chỉ cộng lại những sự di chuyển của particle i và áp dụng chúng trong bƣớc cuối của sự nới lỏng (Relaxation). Thứ tự particle i đƣợc giãn là ngẫu nhiên nhƣng nó không đƣợc thay đổi trong suốt quá trình mô phỏng. Kết quả của việc giãn mật độ kép là biểu diễn đƣợc chất lỏng cố kết.

Minh họa: quá trình giảm mật độ kép

Áp suất giả khi ρ0 > ρi:

P 0 i i 0 ~ i i P

Áp suất giả khi ρ0 < ρi :

Sự hoán đổi vị trí phụ thuộc vào khoảng cách nhân

Bảo toàn động lƣợng về hƣớng và góc độ dịch chuyển của mỗi Particles:

0 ~ i i P P 0 i i i i h r P D ~ i 1 ij h r i

Giảm sự nhóm cụm:

2.3.3.4. Sức căng bề mặt

Chúng ta đã theo dõi cách làm giảm sự nhóm cụm, ngoài ra phƣơng pháp của chúng ta còn cung cấp một lợi ích quan trọng khác đó là hiệu ứng sức căng mặt ngoài. Sức căng bề mặt là một qui luật tự nhiên, nó đƣợc sinh ra do lực hút giữa các phân tử.

Trong chất lỏng thì lực hút này hƣớng ra ngoài, riêng đối với các phần tử nằm gần với bề mặt thì lực này có chiều hƣớng về phía chất lỏng. Sự không đối xứng trong việc phân bố hàng xóm cho các phần tử này dẫn đến lƣới lực non – zero. Sự không đối xứng này thay đổi phụ thuộc vào độ cong của bề

mặt. Nhìn dƣới góc độ vật lý sức căng bề mặt thƣờng đƣợc xem là ngoại lực có chiều hƣớng về phƣơng ngƣợc với phƣơng pháp tuyến của bề mặt (the nagative surface normal) với cƣờng độ tƣơng ứng với độ cong bề mặt. Chúng ta có thể hình dung đƣợc tổ hợp tác dụng của pressure và near – pressure nhƣ thế nào để xử lý sức căng bề mặt. Giả sử rằng mật độ ở vị trí của 1 particle nhỏ hơn rest density, những particle hàng xóm sẽ đƣợc kéo vào bởi pressure với xung lực tƣơng ứng với linear kernel, và sau đó đƣợc đẩy ra bởi near – pressure với mục tiêu giả lân cận nhân (sharp spiked quadractic kernel). Lực đẩy của những particle gần nhất là nguyên nhân gián tiếp gây ra sức hút từ khoảng cách dài.

2.3.4. Biểu diễn bề mặt (Viscoelasticity)

Viscoelastic behavior đƣợc giới thiệu trong mô hình của chúng ta gồm 3 tiến trình con: elasticity (tính co giãn, tính đàn hồi), plasticity (tính dẻo), và viscosity (tính nhớt).

Tính đàn hồi đƣợc thể hiện bằng cách thêm tính co giãn vào giữa các particles.

Tính dẻo đạt đƣợc khi chiều dài co giãn đạt tới độ nghỉ (rest-density). Tính nhớt đƣợc thể hiện bằng cách trao đổi bán kính tƣơng tác đã đƣợc

xác định bởi vận tốc các particles khác nhau (exchanging radial impluses determined by particles velocity differences.)

2.3.4.1. Tính đàn hồi

Để mô phỏng đặc tính dẻo (elastic behavior), chúng ta thêm lực co dãn (spring) vào giữa các cặp particles gần nhau. Lực co dãn tạo ra sự dịch chuyển cho 2 particles đính kèm với nó, cƣờng độ dịch chuyển tƣơng ứng với L - r, với r là khoảng cách giữa các particles còn L là độ dài của spring. Nó đƣợc chia với hệ số 1- L/h và giảm dần đến 0 khi áp dụng cho spring dài.

Thuật toán 3: Spring displacements (dịch chuyển lực co dãn) đƣợc mô tả chi tiết theo tiến trình sau:

1. foreach spring i j

2. D t k2 spring(1 Lij / )(h Lij r rijij

3. xi xi D / 2

4. xj xj D/ 2

2.3.4.2. Tính dẻo (plasticity)

Những chất dẻo luôn đƣợc thiết đặt trƣớc mẫu ngừng - rest shape, và gạt bỏ ngoại lực để giành đƣợc nó. Một cách khác, những chất dẻo tuyệt đối coi hình dạng hiện tại nhƣ là một mẫu ngừng (rest shape).

Ở mỗi bƣớc, lực co dãn đƣợc thêm vào hoặc bỏ đi, và rest length của chúng thay đổi tùy thuộc vào độ dài hiện tại của chúng.

Tỷ lệ thay đổi tƣơng ứng với sự biến dạng:

r L ) ( ~ L r F ) ( 1 ~ L r h L

ΓL = Γt.α (r - L) (7) Α : là hằng số chất dẻo (plasticity constant). Thuật toán 4 : Sự điều chỉnh spring:

Mô hình plastic spring đƣợc đƣa ra bởi điều kiện VonMises, với trạng thái mà dòng chảy chất dẻo chỉ xảy ra khi sự biến dạng đủ lớn. Chuyển sang hệ thống spring, nó có nghĩa là L chỉ đƣợc thay đổi khi | r – L | lớn hơn những phần nhỏ của L. Phân số này là lý thuyết (specified ) đƣa ra bởi số truyền độ cong, có nghĩa là γ, cho mỗi đặc trƣng đƣợc chọn một giá trị nằm giữa 0 và 0.2. Độ dài (The rest length) gia tăng có thể đƣợc viết:

ΓL = Γt.α.sign (r- L) max (0, |r - L| - 8L) (8) Phƣơng trình (8) sẽ trở thành phƣơng trình (7) khi γ =0

Với chất lỏng chuyển động, spring phải đƣợc thêm vào và bỏ đi. Spring đƣợc thêm vào giữa hai particles nếu khoảng cách giữa chúng nhỏ hơn bán

kính tác dụng h, và sau đó đƣợc bỏ đi nếu rest length lớn hơn h. Giải mã quá trình hiệu chỉnh lực co dãn rồi đƣa vào thuật toán 4.

Ngoài ra, cách điều chỉnh đặc trƣng của tính dính nhớt (viscoelastic behavior) có thể đạt đƣợc bằng cách sử dụng những giá trị riêng biệt của α và γ cho sự nén và giãn. Ví dụ, chất liệu dính (nhớt) có thể đƣợc mô phỏng bằng cách thiết lập γnén = 0 và γgiãn ≠ 0

2.3.4.3. Tính nhớt

Tính nhớt có tác dụng trong việc làm đồng đều trƣờng vận tốc. Nó đƣợc áp dụng nhƣ lực liên kết xuyên tâm giữa những phần tử gần nhau. Những xung lực này làm thay đổi vận tốc particles vào thời điểm bắt đầu của mỗi bƣớc, trƣớc khi di chuyển chúng đến vị trí dự đoán.

Thuật toán 5: Viscosity impluses

Thuật toán 5 cho ta thấy viscosity làm thay đổi vận tốc particlex nhƣ thế nào. Sự phụ thuộc của xung lực vào khoảng cách đƣợc nắm bắt bởi linear kernel (1-rij/h) và nhân tố (σu+ βu2) điều khiển tuyến tính của chất dính nhớt và sự phụ thuộc bậc 2 vào vận tốc. Phát biểu này đƣợc sáng tạo ra từ công nghệ SPH. Nếu một đặc tính cao của dính nhớt (a highly viscous behavior) đƣợc yêu cầu, σ có thể đƣợc tăng lớn hơn. Với những chất lỏng có độ nhớt thấp, chỉ cần β phải thiết lập giá trị khác 0.

2.3.5.1. Va chạm

Với mỗi đối tƣợng, trƣờng khoảng cách đƣợc lấy mẫu và đƣợc lƣu trong cấu trúc lƣới. Với mỗi particles chúng ta vẫn thêm vào khoảng cách d. Sự va chạm đƣợc xác định khi d nhỏ hơn bán kính va chạm R. Ngƣời ta đề xuất 3 bƣớc cho quá trình tƣơng tác nhƣ sau:

Và thuật toán tƣơng tác particle-body nhƣ sau: Thuật toán 6:

Trong bƣớc đầu (từ dòng 1 đến 7), vị trí của mỗi phần tử (body position) đƣợc chuyển lên phía trƣớc và lực đẩy phụ thuộc vào những phần sắc xảo (penetrating particles) đƣợc tích luỹ trọng lực vào bộ nhớ tạm.

Trong bƣớc thứ 2 (từ dòng 8 đến 11), vận tốc v và vận tốc góc ω của mỗi body đƣợc cập nhật sử dụng lực và vận tốc góc đã tích lũy. Những bodies đƣợc tiến xa hơn lần nữa từ cấu hình ban đầu tùy theo vận tốc mới của chúng, nhƣng những vị trí của những particles va chạm chƣa đƣợc thay đổi. Thông thƣờng, sự va chạm và trạng thái tiếp xúc đƣợc giải quyết tiếp sau đó, và bodies vƣơn tới vị trí và vận tốc cuối cùng của chúng.

Trong bƣớc 3 (từ dòng 12 đến 15), update vị trí particles để loại bỏ quá

Một phần của tài liệu mô phỏng hiệu ứng sóng nước trong thực tại ảo (Trang 37 - 65)

Tải bản đầy đủ (PDF)

(65 trang)