17 - How to write an Eulerian fluid simulator with 200 lines of code.

Поділитися
Вставка
  • Опубліковано 23 січ 2025

КОМЕНТАРІ • 341

  • @Pjx1989
    @Pjx1989 2 роки тому +482

    As a fluid dynamic engineer, I’m very aware of the complexity of CFD. It’s absolutely stunning not just that you wrote a basic cfd code in 200 lines, but that it even runs on a browser and, most of all, that you could explain it in 10 minutes. Astonishing

    • @nathan87
      @nathan87 2 роки тому +17

      It's a nice piece of code, but it's literally CFD 101. Everybody's first fluid sim looks like this.

    • @mastrake
      @mastrake 2 роки тому +36

      @@nathan87 Perhaps intended for people like me who are new to the topic?

    • @ProjectPhysX
      @ProjectPhysX 2 роки тому +17

      Lattice Boltzmann is even simpler, a basic C implementation is 100 lines. Yet it's a lot faster and much more accurate :)

    • @mastrake
      @mastrake 2 роки тому +5

      @@ProjectPhysX This is super cool stuff for someone just learning about it.

    • @abebuckingham8198
      @abebuckingham8198 2 роки тому +2

      As a functional programmer I see a great deal of redundancy and excess in this code so it could be shortened too. It's rather impressive that they kept it so small.

  • @TenMinutePhysics
    @TenMinutePhysics  2 роки тому +143

    Hi all, thanks so much for all your positive feedback! A great motivation to do more videos!

    • @nolram
      @nolram 2 роки тому +4

      Glad to see this channel finally get the attention it deserves :)
      PS: Matthias, consider putting the Discord server in the description of these, since we have a bunch of people there willing to help out others and discuss these videos.

    • @DogeMultiverse
      @DogeMultiverse 2 роки тому

      These r awesome! Physicist content creator

    • @djwine_official
      @djwine_official 2 роки тому

      Incredible!!!

    • @LJ_Dev
      @LJ_Dev 2 роки тому

      yes please

    • @King-mj2bn
      @King-mj2bn Рік тому

      It would be great if you could use variables names that were slightly more self-describing. Readability is far more important than brevity.

  • @notapplicable7292
    @notapplicable7292 2 роки тому +57

    These videos are such a nice breath of fresh air after reading simulation papers

  • @CosineKitty
    @CosineKitty 2 роки тому +99

    This is exactly what I have wanted to understand for years now. I have long thought it would be so cool to simulate a lava lamp, or the waves on the surface of a swimming pool. Every time I try to read about fluid mechanics, it's page after page of differential equations. You have made this so clear and intuitive. Thank you so much!

  • @kathmanducity
    @kathmanducity 2 роки тому +6

    I have been looking for this eloquent lecture for the last 15 years.

  • @joepeters8746
    @joepeters8746 2 роки тому +114

    I know that you have little views, but the content you makes me delightet! It is very hard to find University level tutorials or explanations for fluids and softbodies, so your well made videos are a treasure!
    Especially for me as a Games Engineer it is very funny to know the math and algorythms.

    • @voxelltech
      @voxelltech 2 роки тому +4

      absolutely

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +12

      I am glad you like it. The numbers will go up with more videos. 3K subs for only 17 videos is actually quite good :-)

    • @adrianalanbennett
      @adrianalanbennett 2 роки тому +1

      This is the shortest, clearest explanation I have ever heard of method like this. Do you have any sources I could look into to learn more? Thanks.

  • @snsacharya1737
    @snsacharya1737 2 роки тому +9

    A great video for aspiring numerical analysts. Amazing to see how you covered incompressibility to the Gauss-Seidel method within 10 minutes and a code that demonstrates all that 👏

  • @pixel_physics
    @pixel_physics 2 роки тому +32

    Ohh my, i never thought i will see a tutorial from THE Matthias Müller. Im such a huuuuuuuuuge fan of your works and papers! You are probably the most cited person in my bachelor and masters thesis - both about fluids. And damn i like your research. So awesome!
    Keep up your work! Youre freakn awesome in what youre doing!

  • @erang42
    @erang42 2 роки тому +13

    Love your videos, Matthias! Such a great initiative to create this video series, and to use web-based tech so that it's easy to play around with your interactive demos. Keep up the great work. ~ Eran.

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +1

      Thanks! I am happy to hear that people like it and will definitely make more videos

  • @j1d7s
    @j1d7s 2 роки тому +4

    I just stumbled on your channel. It is great how much good explanations you pack into a dozen minutes. I will recap all the videos in your series and try out the code.

  • @joxterjones2563
    @joxterjones2563 2 роки тому +3

    Great video, thanks for posting this. I first wrote a MAC-type simulation for incompressible viscous flow back in the early 1980's. Seeing what you have done in 200 lines of code is amazing - we have come a long way! Your explanations are excellent and are a first rate introduction to a complex topic.

  • @abonham82
    @abonham82 2 роки тому +1

    Quite appreciate the way you articulate variables. “Boldface V”, “italic u and v”. Great work

  • @AlienXtream1
    @AlienXtream1 9 місяців тому

    THANKYOU! SO many talks about fluid simulations (and fluid/water in general) mistakingly claim (orimply) that water *is* incompressable. this is the first time i've seen someone correctly assert its "functionally incompressable" XD

  • @halihammer
    @halihammer 2 роки тому +7

    Thank you so much for this information! This is such valuable content for people who are interested but don't have the opportunity or time to acquire this knowledge at a university or by reading specialist literature!

  • @deathTurgenev
    @deathTurgenev 2 роки тому +2

    So glad I got this channel recommended to me. The videos along with the PDF overviews are amazing. I'm looking to try them in another language and will be happy to share

  • @jabaadams4734
    @jabaadams4734 2 роки тому +1

    I've read Bridson's book on Fluid Simulation for Computer Graphics, but you give an excellent and brief, yet detailed explanation. It cleared some things up for me. Thank you! Subscribed.

  • @akinaguda
    @akinaguda 2 місяці тому

    I was learning about this years ago and came across some papers you wrote/where involved with. So happy you are making videos on this too

  • @harrymattah418
    @harrymattah418 2 роки тому

    I just can't decide what impresses me most. The conciseness of the code, or that of your explanations.

  • @GeoffryGifari
    @GeoffryGifari 2 роки тому +1

    really appreciate that you go all the way with the instructions, AND put the whole source code out for the public

  • @marcinszydowski5563
    @marcinszydowski5563 Місяць тому

    Hello Matthias. Thank you for this tutorial - it's very helpful and informative. Currently I'm playing with it and I noticed that you probably wrote it in GL and then adapted to simpler version for make it compact and be able to fit in about 200 lines. What struck me at the first time was that the code in a pure JS is many times faster than in Python, thanks to specialised typed arrays of floats. I also noticed, that changing tables to 64bit floats reduces conversions in JS and let save another bunch of FPS of frames. Adapting code to workers and WebGL also made it so fast that in practice it's the best solution for visualising and presenting physical simulations with relative small effort.

  • @humblerambler
    @humblerambler 2 роки тому +1

    So effective! 15 years ago I was doing these simulations with industrial level CFD software and I was writing much more code just to analyze results. [feels nostalgic]

  • @stefdevs
    @stefdevs 2 роки тому +2

    You're doing god's work here. Thank you! Your XPBD research and educational media is enabling me to make a game that I would otherwise not be able to.

  • @tantumDicoQuodCogito
    @tantumDicoQuodCogito 2 роки тому

    Description of physical behavior of particle is perfect for free interpretation on code by programmers, for me is most important than explaining mathematical. Good video.

  • @spaderzone
    @spaderzone 3 місяці тому

    Please keep making videos and resources like you have been! You are an absolute gold mine.

  • @maverick.laurel
    @maverick.laurel 11 місяців тому

    Thank you so much for the great contents and I have been rewatching the videos many times! ❤ Definitely looking forward to the upcoming tutorials for viscous liquids and other fluid simulation methods.

  • @sietsebuijsman8523
    @sietsebuijsman8523 2 роки тому +2

    That was very interesting! I’ve been wanting to work towards a fluid simulation for a while, and your explanation really helped!

  • @rstknives2423
    @rstknives2423 2 роки тому +677

    Everything is easy when you are both a programmer and a physicist

    • @Premrajcfd7
      @Premrajcfd7 2 роки тому +34

      Me too..I am a mechanical engineer with a ardent interest and hands-on working knowledge of python,C,C++ to simulate physics

    • @wallbrick2170
      @wallbrick2170 2 роки тому +19

      you forgot mathematicians ;-;

    • @this_is_mayhem
      @this_is_mayhem 2 роки тому +12

      @@wallbrick2170 yeah, mostly methematician, because if you know math then you are able understand physics as well

    • @krishnakarthik4752
      @krishnakarthik4752 2 роки тому +29

      @@this_is_mayhem Well, not really

    • @multiarray2320
      @multiarray2320 2 роки тому +10

      @@this_is_mayhem meth?

  • @irtizahussain5001
    @irtizahussain5001 2 роки тому +1

    Its so beautiful. I am just going to cry with joy.

  • @veitheld167
    @veitheld167 2 роки тому +4

    Awesome! That is the little programm that I always wanted to write myself to simulate the flow around airfoils or sails, but I never managed to get this done. I got a s far as translating the equations to discrete cells, but then I always ended up with very large scarce equation systems, which needed an engine like Matlab to solve. Your choice of the staggered grid and all the other tricks are so elegant and make the solution so lean and efficient. Too bad that you did not post this video years ago, it would have saved me a lot of time. Great job!! Now I am looking forward to your solution of the full Navier-Stokes equations. OK, I'll give you a budget of 300 lines of code for that...😀

    • @miguelguerrero3394
      @miguelguerrero3394 Рік тому +1

      You cant find analytic solutions to fluid dynamics unless in some very simple cases like laminar flow through a pipe, which your case definitely isn't. The only solution is discrete CFD simulation and then verify it is close enough to reality

    • @veitheld167
      @veitheld167 Рік тому +2

      ​@@miguelguerrero3394 Yes, I know that. Thats why solving the Navier-Stokes equations is on the list of the Millennium Problems, for which the Clay Mathematics Institute offered a US $7 million prize fund ($1 million per problem). CFD is the only option to approach these problems for now...

    • @miguelguerrero3394
      @miguelguerrero3394 Рік тому

      @@veitheld167 oh ok, nevermind then.

  • @skippythemagnificent8103
    @skippythemagnificent8103 2 роки тому +1

    This is exceptionally well and clearly explained, many thanks, now to work out how to make the force flow around a 2D planet .....

  • @noertri618
    @noertri618 2 роки тому

    Man, thinking about ball hanging motion make my head hurt, but you make simulation of fluid, that is amazing

  • @supersaiyan9616
    @supersaiyan9616 2 роки тому +2

    Hello Matthias, Thank you so much for your video series

  • @Trust_me_I_am_an_Engineer
    @Trust_me_I_am_an_Engineer 11 місяців тому

    Thank you so much for this explanation, Matthias! I just found this video : it's fascinating. I've subscribed (of course) and now I'll get a (large) mug of coffee and watch your other videos. Actually, you only need 1000 kgf /cm² to compress water more than 3% , but only an engineer who works in high pressure hydraulics would notice that. Don't worry. 😁

  • @alansmithee419
    @alansmithee419 2 роки тому +10

    Something I've noticed in my physics course is that simulations of complex systems can be incredibly simple.
    The difficult bit is determining what is the best way to program something, so that it is both accurate and has reasonable computation costs. The programming itself will almost invariably result in a very short program.
    From what I can tell the huge thousands-of-lines projects that people spend years developing are tools which have many different methods of doing many different things for many different purposes. Each thing is short, the collation of them all into one widely useable toolkit so that no one ever has to code any of it again is not.

  • @j.j.maverick9252
    @j.j.maverick9252 2 роки тому

    finally youtube recommended something good! Thanks for a clear and still concise explanation, the staggered grid approach is new to me also

  • @7177YT
    @7177YT 2 роки тому

    Brilliant, I could follow along pretty easily. The simple simulation strategy and clear visualisations helped. please prepare more projects simulating closed little systems like this!
    Thank you!

  • @hoytvolker3
    @hoytvolker3 2 роки тому +1

    Elegant as always, thanks for taking the time to share such informative videos.

  • @rodrigocarvalho51542
    @rodrigocarvalho51542 2 роки тому

    As a physicist who moved to CS this is a delight!

  • @ArnoldStefanek
    @ArnoldStefanek 6 місяців тому

    Wow, it's really good. It's very attractive and the AD is very interesting

  • @lucas-coutinho
    @lucas-coutinho Рік тому

    Wow that's amazing! I'm really excited about your channel! Thanks for sharing your knowledge

  • @georgen9755
    @georgen9755 6 місяців тому

    Fluid pressure in a tank demo
    Advection
    Pressure distribution
    Guass seidel method
    Water tunnel
    Wind tunnel
    Divergence = 0
    Pixels
    Pixels of television
    Depends on the resolution of the television
    Great sir thank you

  • @lamienkassienou4177
    @lamienkassienou4177 5 місяців тому

    I didn't ask for more. What can I say except a very big thank you. Tank you really.

  • @skhelladi
    @skhelladi 2 роки тому +1

    Nice job Matthias! I developed the same code in c++ based in part on yours, I put a demo on youtube.

  •  Рік тому

    Thank you very much. Greetings from Popayan, Colombia.

  • @lobo151075
    @lobo151075 6 місяців тому

    Congratulation!!! Greetings from Bolivia.

  • @kiaranritchie3021
    @kiaranritchie3021 2 роки тому +1

    Another excellent tutorial. Thank you very much for this!

  • @manuelnovella39
    @manuelnovella39 2 роки тому

    Ok, you definitely earned yourself a new subscriber. Keep it up, man, and congrats for your work 👌🏽

  • @youtubeicin2836
    @youtubeicin2836 2 роки тому

    Just discovered your channel and tried out the simulator, so fun! Keep up the good work :)☺

  • @sciencefordreamers2115
    @sciencefordreamers2115 Рік тому

    Thank you so very much man, absolutely valuable content, thank you for generously sharing the code too!

  • @SmartAndSecureWay
    @SmartAndSecureWay 2 роки тому

    Excellente vidéo et démo ! 👋 Un plaisir de découvrir votre vidéo et maintenant de vous suivre.

  • @CharlesVanNoland
    @CharlesVanNoland Рік тому

    Ah, a staggered grid. I never heard of that little trick! Thanks! :D

  • @kingofmaglos3
    @kingofmaglos3 2 роки тому

    Excellent video and a really interesting channel. Defo going to check out more of your videos!

  • @kqiesaw.9385
    @kqiesaw.9385 2 роки тому +2

    This is amazing. I'm going to see if I can reimplement this in unity with as much optimization I can shove into it and see what is the largest resolution I can simulate in real time.

  • @Havealot
    @Havealot 2 роки тому +1

    @Matthias: Talking about divergence, in theory your video should be five times more informative than the ones on "Two Minute Papers". However, I find this so much more interesting and useful. So, thanks for the additional information inflow. Keep up the great work!

  • @linjianru
    @linjianru 2 роки тому

    What an amazing channel! I'm very interested in physics simulation, and your channel is awesome! Thank you so much.

  • @olbtube
    @olbtube 2 роки тому

    Great video, good explanations and the result is beautiful! Subscribed!

  • @andrewsheehy2441
    @andrewsheehy2441 2 роки тому +1

    This is really great! Thank you and well done!

  • @Elta305
    @Elta305 2 роки тому +2

    Very good vidéo ! Just a little remark, Lagrange was born in Italy but worked in France with "L'Académie des Sciences", lived through the French Revolution and his body is actually in the Pantheon so it should probably be Franco-Italian. (the concept of nationality came with the Revolution so it's a bit fuzzy)

  • @AsmageddonPrince
    @AsmageddonPrince 2 роки тому +1

    Omg, are you the same Matthias who used to present awesome physics simulation stuff as an Nvidia researcher years and years ago? If yes, I can't believe I found another of your channels after so many years haha :-)

  • @IgneousGorilla
    @IgneousGorilla 2 роки тому +1

    Why do "n iterations" when forcing incompressibility for the whole grid (6:20)? How is the value of "n" chosen?

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +1

      Gauss-Seidel is an iterative method. When you fix one cell you might "unfix" a neighbor cell. With multiple iterations the solution converges to a global one. You could measure the total error and if it goes below a threshold you stop iterating. Or, typical for real-time apps, you just choose a fixed number.

  • @KlaudiusL
    @KlaudiusL 2 роки тому

    Your channel is gold! .. new subs, thank you

  • @blinded6502
    @blinded6502 2 роки тому +1

    I've read paper named "Real-time fluid dynamics for games" before, which follows similar idea
    This explanation is a lot more insightful though

  • @blacklistnr1
    @blacklistnr1 2 роки тому +4

    I don't understand why the pressure can be calculated like that. What am I missing?
    If it's incompressible d will be 0 "after projection"(@7:03), and if you mean the d before the projection then the liquid is no longer incompressible(it compresses/expands momentarily before propagating the corrected values).

    • @ThePopeOfAllDope
      @ThePopeOfAllDope 13 днів тому

      Incompressible simply means that the overal density cannot be increased. Temporary local changes in density are fine.
      Lemme know if that answers your question.

  • @adidanusaputra4761
    @adidanusaputra4761 9 місяців тому

    Very impressive make me build an interest in programming

  • @cobaltxii
    @cobaltxii 2 роки тому +1

    Beautiful video, subscribed

  • @ianglenn2821
    @ianglenn2821 Рік тому +1

    3:11 The staggered grid is sometimes called the Arakawa grid, after Akio Arakawa, the scientist who popularized it during the nascent years of fluid simulations.

  • @samanthaqiu3416
    @samanthaqiu3416 2 роки тому

    looking forward for upcoming tutorials!

  • @joshuabeattie6246
    @joshuabeattie6246 2 роки тому

    Thanks for the great information. Hope you're doing well.

  • @Croesquared
    @Croesquared 2 роки тому +3

    Cool stuff, just finished my aerospace engineering masters. My favorite course was a class in CFD theory. Maybe you could make some videos on the finite volume method as well, or finite elements.

    • @mghemke
      @mghemke 2 роки тому +1

      This **was** finite volume (the volume we are talking about is one Cell) - for each volume (cell) you are enforcing applying body forces, the divergence is zero (incompressible fluid and no sources or sinks) and the advection of velocities.

  • @segunda_parte
    @segunda_parte 7 місяців тому

    Awesome, very very awesome. Thank you so much.

  • @ricard458
    @ricard458 2 роки тому

    Amazing! Please teach us how to do other types of simulations. I will try all for sure. Thanks for your time.

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +1

      Many videos will follow. I am currently working on one about flip water simulation.

  • @Neutrioms
    @Neutrioms 2 роки тому

    Instantly subscribed. Thank you.

  • @MissPiggyM976
    @MissPiggyM976 8 місяців тому

    Very well done, many thanks!

  • @muggzzzzz
    @muggzzzzz 2 роки тому

    Karman vortex street is one of the possible explanations of the wave-particle duality of light.
    These vortices act as particles and waves at the same time.
    Imagine that photons are just ether vortices appearing when the ether flows through atoms.

  • @TheAmazingFlint
    @TheAmazingFlint 2 роки тому

    Amazing explanation!

  • @tunahandogan5309
    @tunahandogan5309 2 роки тому

    Super Content and Nicely Done 👌👌

  • @fCauneau
    @fCauneau 2 роки тому

    Great... Great... Great job guy !! Thanks so much for sharing !!! (I wrote such simulator for meteorological applications long time ago, but the code was far from this beauty...)

  • @zaqk2
    @zaqk2 Рік тому

    at 9:44 , the subscript of weights of last 2 terms seems like typo. Its w00w11 and w01w11.
    This was an amazing tutorial thou... Most understandable vdo... Thanks for making this.

  • @bajsejohannes
    @bajsejohannes 2 роки тому +1

    Really nice explanation! I feel like I can go implement it immediately. A small typo at 4:04, g should be in m/s^2, not m/s

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +2

      Thanks! Yes I noticed it before. There are other typos which I all fixed in the slides.

    • @bajsejohannes
      @bajsejohannes 2 роки тому

      @@TenMinutePhysics Ah, I see now that the slides are updated. Thanks again for a great explanation :)

  • @ogibinedi
    @ogibinedi 2 роки тому

    i see the code with html 779 line of code .... i just do not know how did you figured out all of those stuff sir, you are incredible...

  • @antoine1407
    @antoine1407 2 роки тому +1

    It would be awesome if you could make a playlist on how to write such kind of codes for CFD! Thanks for such great video

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +1

      I am glad you like it. In my pipeline are videos about flip, sph and more...

    • @Nosirrbro
      @Nosirrbro 2 роки тому

      @@TenMinutePhysics A video on SPH would be awesome!

  • @nolram
    @nolram 2 роки тому +2

    I would still love to see a video about rigidbodies, since they tend to be the most common type of simulation in games and film :) Maybe a more detailed tutorial (especially in regards to angular velocity) based on your XPBD bodies paper could be possible ?

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому

      Sure, eventually I will cover everything I have been doing. However, since people seem to like fluid sim a lot the next one will be about FLIP 🙂

  • @mytino
    @mytino 2 роки тому

    Fantastic tutorial!

  • @benjaminlehmann
    @benjaminlehmann 8 місяців тому

    That was so great. Thanks

  • @azscab
    @azscab Рік тому

    This may have changed my life.

  • @jplanet8
    @jplanet8 2 роки тому

    This is very informative!!!!! 😃

  • @peterhall6656
    @peterhall6656 2 роки тому

    That was insightful.

  • @Brandonator24
    @Brandonator24 9 днів тому

    can someone explain why overrelaxation works? How does multiplying by a scalar between 1 and 2 make all this work?

  • @AchiragChiragg
    @AchiragChiragg 2 роки тому

    5:12 I can't seem to make sense of the signs. Can you explain/elaborate?

  • @prot0form775
    @prot0form775 2 роки тому +1

    I love this and will attempt to recreate this on Python, I only wish we would've gotten an explanation as you were writing the code. I feel sometimes equations and stuff aren't so obvious when implemented into a programming language.

    • @fiveoneecho
      @fiveoneecho 2 роки тому +1

      Yeah, the code itself is actually quite poorly-written. I counted at least one variable that was defined, not used, and then redefined in the same scope among many other issues. That's ignoring the random bits of code that are used and never explained in this or a previous tutorial.

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому

      I don't write the examples in one go from top to bottom. Getting simulation code right and debugging it is tricky. So I don't spend much time on the beauty of the code. But if you have the time it would be great if you could go over future examples before I publish them. Just let me know (tenminphysics at gmail dot com).

  • @shilo_kulo
    @shilo_kulo Рік тому

    great tutorial

  • @urquizagabe
    @urquizagabe 6 місяців тому

    Why do you have to multiply the pressure, computed as the divergent, by that factor rho h / dt?

  • @Joe-zw9ep
    @Joe-zw9ep 2 роки тому +1

    Amazing

  • @thecarlostheory
    @thecarlostheory 2 роки тому

    U are a great person.

  • @veitheld167
    @veitheld167 3 місяці тому

    This is very impressive! However, there seems to be something wrong with the handling of the velocities within the obstacle or maybe only with the streamlines. When I move the ball around a bit I can change the flow, I can even make streamlines come straight out of the solid obstacle. If I move the ball to the left it appears to be alright, but if I push it to the right a bit then you see the flow coming out of the ball. So I checked the code and deactivated the c.fill() command that fills the ball with the grey color. Now I could see that some sreamlines get started from within the ball with a velocity in the direction of my last push. And when this line then crosses the surface of the obstacle it gets pushed in the direction of the flow around it.
    Maybe I can fix that myself. (I am currently trying derive a version of this tool where the ball is replaced with the NACA-profile of a Cessna wing. If I can make that work this should be a great tool to demonstrate all sorts of aerodynamical effects, like e.g. the increased lift in ground effect when flying very low.).
    Edit: Meanwhile I found half a fix. It appears that the script registers the movement of the obstacle and sets the internal velocity accordingly. When you stop shoving the ball around it should set all the internal airspeeds to zero, which it sometimes fails to do. Hoewer, if you grab the obstacle a second time with your mouse, click the left mouse button without moving then it will correctly set the internal speeds to zero and the streamlines fit.
    But now I am wrestling with another problem: If I use my NACA-profile instead of the circle then I get a dead water zone behind the wing and the streamlines do not follow the shape of the wing. That is a result of neglecting viscosity, because the air above the wing can easily slide over the air in that bubble, without any frcition dragging the air with it and ultimately enforcing the correct flow pattern. So, I now need to find a way to include viscosity. Matthias had actually dropped a remark that he might do that himself in a future video ... :)

  • @reik2006
    @reik2006 Рік тому

    9:43 Small correction to your slide on the general grid interpolation which doesn't effect your simulation, since you calculate the average velocity according to 9:30 in your code on lines 211 and 219. I'm referring to the slides on your website and think the weights in the last two terms should be: v = w00*w10*vij + w01*w10*vi+1,j + w00*w11*vi,j+1 + w01*w11*vi+1,j+1
    Lerp in x direction for y = 0 and y = h:
    v(y=0) = w00*vij + w01*vi+1,j
    v(y=h) = w00*vi,j+1 + w01*vi+1,j+1
    Lerp in y direction:
    v(0

    • @reik2006
      @reik2006 Рік тому

      *Just want to add that I loved the video :) Thanks for sharing

  • @MrTomyCJ
    @MrTomyCJ 2 роки тому +1

    If you adjust the velocities of a cell using the divergence so that they add up to zero, then wouldn't the velocity of the left edge get messed up again when you adjust the velocities on the cell that's on the left of it? That's the part I don't get: how does the operation work for the edges given that they are part of two cells, each one with a different divergence value

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому +2

      Good question! I should have addressed this point in the video. You are right with your remark. After one pass the cells are not divergence free. The Gauss-Seidel method simply goes through the cells multiple times (the iterations) which reduces the errors in every pass.

  • @Veptis
    @Veptis 4 дні тому

    I think this one would easily run as a fragment shader. I tried to come up with something like this - but it ended up with a falling sand cellular automata. I had density and velocity vecotrs per cell. So now they are height and gradient. Which are somewhat inverse of themselves.

  • @wile9763
    @wile9763 2 роки тому

    Very interesting approach! But as has been mentioned a few times already, the Euler equations shouldn't cause vortex shedding, since shedding is a consequence of fluid viscosity. It seems the shedding in this simulation appears due to numerical viscosity.

    • @TenMinutePhysics
      @TenMinutePhysics  2 роки тому

      Correct. I do mention numerical damping later in the video.

  • @artemiyf9078
    @artemiyf9078 2 роки тому

    Thank you so much for this tutorial, sir. Can you please explain where you took the equation for the pressure on 7:04?