2 poin oleh GN⁺ 2023-12-20 | 1 komentar | Bagikan ke WhatsApp
  • Catatan dan source code (GitHub) tentang matematika, algoritme, dan metode yang terkait dengan simulasi fluida seperti api dan asap secara real-time

1. Simulasi Fluida

  • Sebelum mensimulasikan api, kita perlu mensimulasikan fluida
  • Masalah menjadi jauh lebih sederhana jika kita mengasumsikan fluida bersifat inkompresibel dan non-viskos

1.1 Dasar-Dasar Dinamika Fluida

  • Fluida mengisi suatu wilayah DDD di ruang, dan pada waktu ttt kecepatan fluida adalah u(x,t)
  • Medan kecepatan 2D u dapat direpresentasikan sebagai grid N×N
  • Apa yang terjadi jika setetes pewarna dijatuhkan ke dalam fluida?
  • Definisikan medan skalar ψ(x,t) yang merepresentasikan kerapatan pewarna, dan perpindahannya oleh kecepatan fluida disebut advection
  • Naive Method untuk menghitung advection adalah memindahkan setiap titik grid dan memperbarui titik grid terdekat, tetapi metode ini sulit diparalelkan dan tidak stabil

Persamaan diferensial parsial untuk advection

  • Untuk menurunkan advection secara stabil, kita memerlukan ekspresi PDE yang eksplisit
  • Total massa pewarna di dalam wilayah ruang tetap WWW adalah ∫WψdV, dan perubahan massanya terhadap waktu adalah ddt∫Wψ(x,t)dV
  • Berdasarkan hukum kekekalan massa, ddt∫WψdV=−∫Sψu⋅ndA
  • Dengan menerapkan teorema divergensi, diperoleh ∫W[∂ψ∂t+∇⋅(ψu)]dV=0, dan untuk subwilayah satuan W=dV diperoleh ∂ψ∂t+∇⋅(ψu)=0
  • Ini memberikan PDE eksplisit yang harus kita selesaikan

Metode stabil untuk advection

  • Jika melihat eqn. (1) lebih dekat, ruas kanan adalah turunan arah ke arah −u
  • Metode ini disebut Semi-Lagrangian advection dan ditemukan oleh Jos Stam pada 1999
  • Karena setiap titik grid hanya diperbarui satu kali, metode ini sangat mudah diparalelkan dan stabil tanpa syarat

1.2 Persamaan Navier-Stokes

  • Kita telah menemukan model untuk bagaimana sifat skalar fluida berevolusi terhadap waktu, tetapi bagaimana dengan aliran fluidanya sendiri?
  • Persamaan Navier-Stokes mendefinisikan bagaimana medan kecepatan u berubah terhadap waktu pada suatu titik di dalam fluida
  • Kita mengasumsikan fluida non-viskos, sehingga μ=0, dan gaya eksternal juga dapat diabaikan untuk sementara
  • Karena itu, kita hanya menyisakan dua suku: self-advection dan pressure
  • Dengan menghitung dan menjumlahkan suku-suku ini secara numerik pada setiap timestep, kita dapat mensimulasikan fluida

Menyelesaikan pressure

  • Karena kita tidak tahu apakah medan kecepatan baru memenuhi kendala inkompresibilitas, suku pressure p harus memperbaikinya
  • Untuk itu, kita perlu menyelesaikan persamaan Poisson
  • Untuk menyelesaikan persamaan Poisson, kita dapat menggunakan algoritme iteratif seperti metode Jacobi
  • Metode Jacobi dapat dijalankan secara paralel di GPU sehingga implementasinya sangat sederhana

Ringkasan: simulasi Navier-Stokes

  • Matematika Navier-Stokes bisa sedikit rumit, tetapi menyelesaikan persamaannya untuk mensimulasikan fluida dapat diringkas menjadi beberapa prosedur pembaruan utama

1.3 Vorticity Confinement

  • Menyimpan medan kecepatan menggunakan grid sangatlah praktis, tetapi saat menginterpolasi nilai di antara titik grid, terjadi smoothing numerik yang tidak diinginkan
  • Akibatnya, pusaran turbulen dalam aliran menghilang sehingga aliran fluida menjadi terlalu halus dan "membosankan"
  • Vorticity confinement adalah proses untuk memperkuat vortisitas yang hilang ini
  • Vorticity confinement dirancang untuk menyelesaikan medan aliran yang sangat kompleks pada bilah helikopter
  • Vortisitas dihitung pada setiap titik dengan mengambil curl dari u, dan untuk memperkuat vortisitas, aliran melingkar ditambahkan pada setiap titik

Curl-Noise Turbulence

  • Curl noise adalah metode yang mirip dengan vorticity confinement; alih-alih mengukur dan memperkuat vortisitas medan kecepatan, metode ini menggunakan fungsi noise untuk membuat medan vortisitas skalar sejak awal
  • Fluida yang bergerak cepat dan sangat turbulen paling banyak mendapatkan manfaat dari vorticity confinement dan curl noise

2. Simulasi Api

  • Untuk mensimulasikan api dan asap, kita perlu menambahkan kanal yang merepresentasikan bahan bakar dan temperatur, lalu memodelkan pembakaran bahan bakar untuk menghasilkan panas
  • Kita juga perlu menangani bagian fluida yang lebih panas agar naik sesuai model buoyancy termal, serta merender nyala api dengan benar

2.1 Model Pembakaran Dasar

  • Secara kimia, api terjadi akibat reaksi oksidasi pada material bahan bakar, yang melepaskan panas dan cahaya
  • Definisikan medan skalar ρ yang merepresentasikan kerapatan bahan bakar dan medan skalar T yang merepresentasikan temperatur
  • Bahan bakar terbakar dan menambahkan temperatur ke sistem, lalu temperatur berdifusi dari daerah panas ke daerah dingin
  • Konveksi panas didefinisikan sebagai gabungan dari dua proses ini, dan kita sudah memiliki model matematis untuk memodelkannya - advection!

Pendapat GN⁺:

  1. Artikel ini menjelaskan proses kompleks untuk mensimulasikan fluida seperti api dan asap secara real-time, yang merupakan topik sangat penting dalam computer graphics dan pengembangan game.
  2. Dengan kemajuan GPU belakangan ini, simulasi fluida yang kompleks kini dapat diproses secara real-time, yang berkontribusi pada pembuatan game yang menarik secara visual dan efek khusus film.
  3. Artikel ini membahas konsep matematika tingkat lanjut seperti persamaan Navier-Stokes dan vorticity confinement, sehingga memberikan informasi yang bermanfaat bagi software engineer pemula yang tertarik pada bidang ini.

1 komentar

 
GN⁺ 2023-12-20
Komentar Hacker News
  • Sebagai seseorang yang meraih gelar PhD di bidang CFD (computational fluid dynamics), ia mengakui belum pernah menemukan metode vorticity confinement maupun turbulensi curl-noise. Ini benar-benar mengingatkannya bahwa selalu ada hal baru untuk dipelajari setiap hari.
    • Dalam CFD industri, karena berurusan dengan bilangan Reynolds yang tinggi, menerapkan noise untuk mengimbangi disipasi artifisial dari metode numerik bukanlah hal yang diinginkan. Faktanya, banyak orang justru menginginkan disipasi artifisial untuk menstabilkan simulasi dengan bilangan Reynolds tinggi. Kebutuhan di bidang computer graphics lebih menitikberatkan pada tampilan yang terlihat benar daripada akurasi fisika.
  • Ada komentar tentang simulasi api dan asap untuk game serta simulasi fluida di GPU. Jika efek seperti ini harus dijalankan di game, muncul pertanyaan apakah GPU tidak sudah sibuk. Menyelesaikan masalah CFD sekaligus melakukan rendering terlihat seperti pekerjaan yang sangat berat.
    • Ada pertanyaan apakah simulasi seperti ini bisa dijalankan di iGPU agar dGPU dapat menangani lebih banyak pekerjaan terkait rendering, atau apakah iGPU terlalu lemah sehingga lebih baik beralih ke CPU.
  • Ada yang mengatakan orang lain bernama "10 Minute Physics" sangat bagus dalam menjelaskan topik seperti ini.
  • Ada pendapat dari seseorang yang beralih dari jurusan matematika menjadi software engineer, tertarik pada simulasi CFD, dan ingin mempelajari bidang ini meskipun kemampuan matematikanya sudah cukup berkarat karena lama tidak menyentuh kalkulus vektor maupun persamaan diferensial parsial.
  • Baru-baru ini ada yang menonton video implementasi simulasi fluida sederhana, dan merasa itu sangat menarik.
  • EmberGen adalah software luar biasa yang melakukan simulasi api dan asap secara real-time pada GPU konsumen, serta mendukung workflow berbasis node sehingga mudah membuat efek baru.
    • Workflow-nya telah membaik sehingga pekerjaan yang dulu memakan waktu berjam-jam kini bisa diselesaikan hanya dalam beberapa menit.
    • Ada sedikit kekecewaan bahwa EmberGen tidak mendapat banyak perhatian di Hacker News. (Pendapat dari pelanggan puas yang tidak terkait dengan EmberGen/JangaFX)
  • Meski bukan inti utama artikel, ada pendapat bahwa pengantar yang menyatakan bahwa memilih simulasi berarti melepaskan kendali artistik dan harus melakukan negosiasi menyakitkan melalui jumlah kontrol yang sering kali berlebihan, agak keliru.
    • Untuk adegan kunci seperti Balrog, mereka tidak akan memilih simulasi dan lebih menyukai kendali penuh atas setiap frame.
    • Sebagai contoh fantasi Tolkien, adegan lanskap dengan sungai berkelok-kelok, beberapa batu, dan sesekali ikan melompat lebih cocok untuk simulasi.
  • Meski memiliki RAM 64GB, ada yang mengalami masalah halaman tersebut membuat tab browser tertutup sepenuhnya.
  • Ada tautan video yang memberikan penjelasan bagus tentang mengapa ledakan di computer graphics terlihat buruk.
  • Ada yang sangat terkesan dengan output dari template dan sistem pembangun halaman distill.pub, dan menyayangkan bahwa proyek itu dihentikan pada 2021 sehingga tidak lagi dipelihara.