Wumpf / blub

3D fluid simulation experiments in Rust, using WebGPU-rs (WIP)
MIT License
392 stars 12 forks source link

Use MAC grid or Rhie Chow interpolation #14

Closed Wumpf closed 4 years ago

Wumpf commented 4 years ago

expecting higher fidelity and faster gradients velocity transfer expected to be slower (ideas?) should be faster overall

need to confirm or disprove all of the above

Wumpf commented 4 years ago

tried a few things. It's really hard to make this happen in an efficient matter: Either we treat velocity as three grids and gather particles independently (trippling the workload on the already quite expensive gather step) or we have a huge gathering area (24 cells in my linked list grid) Failed to find any conclusive resources on the topic. There's few papers even acknowledging how problematic the gather step is to begin with. (note that I haven't profiled any of the performance claims, this is just inferring from amount of expected memory accesses and divergence)

Another solution to fix some of the issues, namely oscillating pressure (checkerboard presesure), with collocated grid is Rhie-Chow interpolation applied during pressure correction

Wumpf commented 4 years ago

This master thesis has some stuff on Rhie-Chow with collocated grid http://publications.lib.chalmers.se/records/fulltext/185027/185027.pdf

Wumpf commented 4 years ago

After reading http://www.fem.unicamp.br/~im450/palestras&artigos/CFD%20of%20Turbulence_Chalmers_Un/chapter_6-1.pdf I think I understood now roughly how Rhie-Chow interpolation computes velocity at grid walls. Which ofc begs the question if velocity at grid center is just wall velocity averaged? Would make sense the way it was defined.

Wumpf commented 4 years ago

Take a close look at equation 54 in http://www.fem.unicamp.br/~im450/palestras&artigos/CFD%20of%20Turbulence_Chalmers_Un/chapter_6-1.pdf .. so yes, just average again. This equation is the complete expression for a single velocity update a P (E == East, W == West, [..])

Wumpf commented 4 years ago

Description of using a uniform (not staggered grid) and makes mention on Rhie-Chow interpolation in a Eurographics paper (i.e., I'm able to understand stuff better than from real CFD paper ;-)) on shallow water equation solver (not quite what we're after here, but close enough) http://isg.cs.tcd.ie/cosulliv/Pubs/LeeShallowEqs.pdf