[HN Gopher] GPU vendor-agnostic fluid dynamics solver in Julia
       ___________________________________________________________________
        
       GPU vendor-agnostic fluid dynamics solver in Julia
        
       Author : moelf
       Score  : 187 points
       Date   : 2023-05-08 13:44 UTC (9 hours ago)
        
 (HTM) web link (b-fg.github.io)
 (TXT) w3m dump (b-fg.github.io)
        
       | ksec wrote:
       | On related note. Julia [1] announced their v1.9 release.
       | 
       | [1] https://news.ycombinator.com/item?id=35861288
        
         | sdfghswe wrote:
         | What? On the official page it's still on 1.9-rc3
        
           | alhirzel wrote:
           | The home page is not yet updated (probably waiting for the
           | official binaries to be done, which are also not yet on the
           | download bucket).
        
             | sdfghswe wrote:
             | > probably waiting for the official binaries to be done
             | 
             | For 3 weeks? Because that's how old those release notes
             | are.
        
               | Sukera wrote:
               | There's a lot more than release notes going into a
               | release - we've had 3 release candidates for a reason,
               | and those regressions/bugs need to be fixed first.
        
               | sdfghswe wrote:
               | e got it, but doesn't that suggest that just because
               | release notes exist, doesn't mean something has been
               | released? Unless ksec has special inside info for his
               | claim, I think his link doesn't show anything.
        
               | ChrisRackauckas wrote:
               | The release was just cut 9 hours ago, as shown on the
               | releases part of the Github page
               | (https://github.com/JuliaLang/julia/releases/tag/v1.9.0).
               | That then starts the jobs for the creation and deployment
               | of the final binaries, and when that's done the
               | Julialang.org website gets updated to state it's the
               | release, and when that's done the blog post for the new
               | release goes out. You can even follow the last step of
               | the process here (https://github.com/JuliaLang/www.julial
               | ang.org/pull/1875), since it all occurs on the open
               | source organization.
        
               | [deleted]
        
             | Sukera wrote:
             | There will also be a release blogpost, highlighting the new
             | stuff. The release will likely come with that.
        
         | markkitti wrote:
         | This is slightly premature. They only just tagged the release
         | on Github several hours ago. While it does suggest the actual
         | release is imminent, it's not really official until you see
         | here on Discourse:
         | 
         | https://discourse.julialang.org/c/announce/25
        
       | Archit3ch wrote:
       | Success stories like this make a better argument for "Why Lisp?"
       | than abstract blog posts.
       | 
       | We know macros are awesome, but if you're trying to convert
       | others please provide code, screenshots, or even an interactive
       | web demo.
        
         | shakow wrote:
         | > abstract blog posts
         | 
         | If you refer to the blog post that made Top HN yesterday, it is
         | very much backed by actual experience
         | (https://nyxt.atlas.engineer/) and quite a load of code
         | (https://github.com/atlas-engineer/nyxt/tree/master/source).
        
           | mncharity wrote:
           | > the blog post that made Top HN yesterday
           | 
           |  _Why Lisp?_ https://news.ycombinator.com/item?id=35852321
        
           | Archit3ch wrote:
           | Good to know! I skimmed yesterday's article.
        
       | codedokode wrote:
       | The title says "GPU vendor-agnostic". But in fact for AMD only
       | professional (expensive) GPUs are supported (ROCm is officially
       | unsupported on most consumer and integrated GPUs).
       | 
       | To be truly vendor-agnostic it needs to support OpenGL or Vulkan.
       | 
       | Also this is the first time I saw examples of Julia code and the
       | syntax looks worse than C++.
        
         | markkitti wrote:
         | You may be confusing front end APIs and the compiler backends.
         | 
         | Julia is flexible enough that you can essentially define domain
         | specific languages within Julia for certain applications. In
         | this case, we are using Julia as an abstract front end and then
         | deferring the concrete interface to vendor specific GPU
         | compilation drivers. Part of what permits this is that Julia is
         | a LLVM front end and many of the vendor drivers include LLVM-
         | based backends. With some transformation of the Julia abstract
         | syntax tree and the LLVM IR we can connect the two.
         | 
         | That said we are mostly dependent on vendors providing the
         | backend compiler technology. When they do, we can bridge Julia
         | to use that interface. We can wrap Vulkan and technologies like
         | oneAPI.
         | 
         | https://github.com/JuliaGPU/Vulkan.jl
         | https://github.com/JuliaGPU/oneAPI.jl
         | 
         | As for syntax, Julia syntax scales from a scripting language to
         | a fully typed language. You can write valid and performant code
         | without specifying any types, but you can also specialize
         | methods for specific types. The type notation uses `::`. The
         | types also have parameters in the curly brackets. The other
         | aspect that makes this specific example complicated is the use
         | of Lisp-like macros which starts with `@`. These allow for code
         | transformation as I described earlier. The last aspect is that
         | the author is making extensive use of Unicode. This is purely
         | optional as you can write Julia with just ASCII. Some authors
         | like to use `e` instead of `in`.
        
         | DNF2 wrote:
         | > Also this is the first time I saw examples of Julia code and
         | the syntax looks worse than C++.
         | 
         | For someone who writes both Julia and C++, the above comment
         | comes across as an obscene joke.
         | 
         | Possibly, you object to the programming style in that library,
         | the choice of identifiers or whatever? But that has nothing to
         | do with language syntax.
        
       | brlcad wrote:
       | Really? Fluid solver with no pics?
        
         | cl0ckt0wer wrote:
         | Their Github page has it:
         | https://github.com/weymouth/WaterLily.jl
        
         | markkitti wrote:
         | I thought this might be related to the prior Julia to wasm
         | fluid dynamics simulation, but it seems to be independent of
         | that effort.
         | 
         | https://alexander-barth.github.io/FluidSimDemo-WebAssembly/
        
         | ChrisRackauckas wrote:
         | This is computational fluid dynamics, not colorful fluid
         | dynamics /s
        
           | boywitharupee wrote:
           | What is the difference?
        
       | DNF2 wrote:
       | After clicking trough to the repository, I found this part a bit
       | perplexing: "running on a GPU requires initializing the
       | Simulation memory on the GPU, and care needs to be taken to move
       | the data back to the CPU for visualization."
       | 
       | The original purpose of GPUs were visualization, so that seems
       | backwards to me. And, GLMakie is used, which makes it even more
       | counter-intuitive, isn't that _specifically_ built for GPU
       | visualization?
        
       | vrglvrglvrgl wrote:
       | [dead]
        
       | mnky9800n wrote:
       | As a card carrying python-stack scientist who works at the
       | intersection of machine learning and physical sciences for the
       | last decade who now is working on an R package (pro-tip: go where
       | the money is don't bring the money to you), can someone make a
       | convincing argument for me to learn Julia? I would like to hear
       | more than the typical "the code auto-differentiates" or "it's
       | faster" or whatever it is that people have said in the past. I am
       | really not trying to be flippant I just don't see the added value
       | of learning a new language unless it has interesting
       | packages/functionality that my current toolset does not (e.g.,
       | this is why I am working on an R package).
        
         | Sukera wrote:
         | For me personally, I just think it's really fun to write julia
         | code. Granted, I'm neither machine learning nor physical
         | science, but the fact that I can go through the whole stack and
         | choose an abstraction that's right for the problem at hand
         | (Metaprogramming? Regular struct-based abstractions? External
         | program? LLVM optimization? Inline assembly?) and still being
         | able to understand what's going on while getting good
         | performance at the same time, is just magical to me. Maybe
         | that's not for everyone, but to me the ratio of dev time to run
         | time is just really, really good.
        
         | patrickthebold wrote:
         | I think it's fine if you don't learn Julia. When I was in
         | university some of the course work had to be done in MATLAB. I
         | think Julia could definitely be used instead nowadays. Simply
         | being free is reason enough. You could argue that python/numpy
         | would be an option as well.
        
         | shele wrote:
         | > more than the typical "the code auto-differentiates" or "it's
         | faster" or whatever it is that people have said in the past
         | 
         | Why are you asking to be convinced if you don't want to be
         | convinced?
        
         | currymj wrote:
         | if you have to solve mathematical programming/convex
         | optimization problems, JuMP as a frontend for free or
         | commercial solvers is hugely better than any alternative.
         | 
         | likewise if you are solving differential equations,
         | DifferentialEquations.jl is hugely better than any free
         | alternative I know of and arguably better than paid packages.
         | The broader SciML ecosystem that's built up around this has a
         | lot of cool stuff in it too.
         | 
         | other than this it seems like you wouldn't care about the other
         | potential advantages, and might be more put off than average by
         | the disadvantages and occasional rough edges.
        
         | cinntaile wrote:
         | I don't get the money part. Do you mean the people with money
         | have a need for R packages or how are the two related?
        
         | sdfghswe wrote:
         | > I would like to hear more than the typical "the code auto-
         | differentiates" or "it's faster" or whatever
         | 
         | > unless it has interesting packages/functionality that my
         | current toolset does not
         | 
         | Multiple dispatch, code-specialization, JIT compiling,
         | automatic loop fusion, broadcasting, many ways of doing
         | compile-time optimizations.... I'm sure there's more.
         | 
         | But I guess you can dismiss these features the same way that
         | you dismiss "the code auto-differentiates" or "it's faster".
        
         | anigbrowl wrote:
         | Three reasons: Julia feels more like math, there's a huge long-
         | term commitment to the language because it's used for climate
         | modeling, and package management is completely painless.
         | 
         | I love Python, but I can also see eventually doing everything
         | in Julia over the longer term. Mind you, it's entirely possible
         | that AI continues to improve and in 5 years any package will be
         | available in any language, you'll look at code mainly for
         | verification purposes in whatever language you happen to
         | prefer.
        
         | NeuroCoder wrote:
         | If you frequently want to develop and maintain publicly uses
         | functionality that requires writing some in a faster compiled
         | language and then binding to an interactive one like R or
         | Python. Test coverage and multiuser maintenance is way easier
         | when it's all just one language and has a sud package manager.
        
         | nologic01 wrote:
         | One reason to keep an eye on Julia if you are envisioning a
         | long and varied career in the broader computational / data
         | science world is that its not at all clear which will be the
         | leading platform going forward (Python, R, Julia or something
         | else altogether).
         | 
         | This ambivalence might sound absurd on the face of the
         | exponential recent growth of Python (which apparently enticed
         | even some people with serious mojo to get into the act) but
         | take two steps back with me and look at the big (if still hazy)
         | picture:
         | 
         | We are going through a remarkable period where complex
         | algorithmic applications left academia and research labs and
         | diffuse into mainstream society and the economy _like never
         | before_. This process carries enormous risks and opportunities,
         | which are currently basically... ignored (well, the risk side).
         | 
         | Despite its undeniable strengths and loveability, Python is
         | actually a poster child of the move-fast-and-break-things
         | phase. It is not necessarily best placed for the next phase.
         | The next phase will invariably see a re-examination of all
         | aspects of the stack and qualities that will be prized will be
         | those that eliminate the frictions and risks associated with
         | the large scale deployment of algorithms. The stakes are high,
         | which means there will be plenty of resources seeking to create
         | reliable platforms. The future need not look like the past.
         | 
         | None of the usual suspects ticks all the boxes. In fact we
         | don't even know all the boxes yet. Depends how fast and how
         | seriously models and algorithms get deployed at scale. Python,
         | Julia and R have been propelled forward by circumstances as the
         | main algorithm-centric platforms, and they have each their
         | various warts and blessings but the near and mid-term future
         | will test how well they can deliver on aspects they may have
         | not be designed for.
        
           | jstx1 wrote:
           | > its not at all clear which will be the leading platform
           | going forward (Python, R, Julia or something else
           | altogether). This ambivalence might sound absurd on the face
           | of the exponential recent growth of Python
           | 
           | It sounds absurd because trends don't reverse overnight. You
           | can be fairly confident that Python will be the top language
           | in this space for a while and that R will never be the top
           | choice for most applications.
        
             | npalli wrote:
             | Irrespective of whether Julia ends up the winner of the
             | shift or if the shift happens, it is quite possible for
             | trends to reverse very fast. See Perl or Objective-C for
             | that matter.
             | 
             | https://www.tiobe.com/tiobe-index/perl/
             | 
             | https://www.tiobe.com/tiobe-index/objective-C/
             | 
             | In 2006 (for Perl) and 2014 (for Objective-C) it was clear
             | they had the momentum for their particular space however
             | their limitations were well known and as soon as a better
             | language came along the momentum flipped in an equally
             | dramatic manner. Python is much more widespread so it will
             | remain strong in some areas but you could see the flip in
             | ML/DS given challenges productionizing across broad
             | capabilities (not just doing NN's).
             | 
             | As the joke goes -- python is the second best language for
             | everything, if you know only two languages. With ML
             | expanding beyond narrow big tech domains there will be need
             | for specialized languages like Julia (and others perhaps
             | like Mojo etc..)
        
               | jstx1 wrote:
               | Objective C was replaced single-handedly by Apple, it
               | wasn't a natural trend reversal.
        
               | npalli wrote:
               | It was also boosted by Apple in the first place! so
               | nothing natural about these kind of trends. If Google and
               | FB hadn't picked up Python for ML it wouldn't have taken
               | off as much, which is also to say if they (or another
               | large player) back another language you could see a
               | similar decline in Python usage.
        
             | nologic01 wrote:
             | I think so too in the short term (1-2 years at least)
             | Python will gently move into the last stage of its adoption
             | curve (even doing nothing).
             | 
             | But now is a time where at various high places people will
             | say: "Ok you got my attention. What is this snake language
             | you are talking about and explain why I should bet the
             | house on it".
             | 
             | And the answer is not simple.
        
               | jstx1 wrote:
               | What's your argument - that people who don't understand
               | the space at all will dictate rewrites in other
               | languages? It seems very unlikely.
        
               | nologic01 wrote:
               | you obviously have never worked in the corporate world
        
               | jstx1 wrote:
               | The corporate world will want to do $x because $x is in
               | the news, they won't be making nuanced arguments about
               | tradeoffs in a domain they don't understand. Least of all
               | arguments that go entirely against the trends in the
               | industry.
        
           | dS0rrow wrote:
           | > society and the economy like never before. This process
           | carries enormous risks and opportunities, which are currently
           | basically... ignored (well, the risk side)
           | 
           | What risks are you talking about here?
        
             | nologic01 wrote:
             | take the entire stack (including all dependencies,
             | toolchains etc.) and think about scenarios of accidental or
             | malicious malfunction, but also reproducibility,
             | auditability of outcomes, that sort of stuff. The overall
             | ability to provide locked-down, performant, safe, secure
             | deployments of high-quality, validated algorithms without
             | breaking the bank. In other words the risks (but also the
             | frictions / costs) in the "productionising" of algorithms.
        
         | e12e wrote:
         | If you work partially in physical sciences, and TFA doesn't
         | entice you to try Julia (someone with no GPU programming
         | experience realize functionality to do serial, parallel cpu,
         | parallel GPU navier-stokes, all without touching c, c++ or
         | fortran - in mostly similar codesize/loc - achieving a 30x
         | speedup) - i can't imagine what would?
        
         | [deleted]
        
         | adgjlsfhk1 wrote:
         | IMO, the biggest reason for me is that the code looks a lot
         | more similar to the math than in python/R. This comes from a
         | number of places (multiple dispatch, ability to use unicode
         | symbols, you don't have to vectorize everything, etc), but the
         | end result is code that looks a lot like the math you are
         | trying to do (for examples, see
         | https://discourse.julialang.org/t/from-papers-to-julia-
         | code-...)
        
         | mk_stjames wrote:
         | I'll put it this way: I'm just an idiot engineer, not a
         | programmer really- but I've written some blazingly fast code in
         | Julia that would have taken me way, way longer to write and
         | resulted in way, way slower results in other languages I've
         | played in.
         | 
         | I have to shoutout Chris Rackauckas for being a such badass,
         | helpful person too. He'll probably be in this thread any minute
         | because he's the best damn advocate for Julia there is. :-)
        
           | nojonestownpls wrote:
           | Not so sure about that last part. He's definitely an
           | incredible force in terms of coding, project management,
           | stuff like that. The Julia package ecosystem wouldn't be half
           | of what it is without him.
           | 
           | But "best damn advocate" is probably the opposite of how I'd
           | describe him in terms of interactions here (and generally
           | with people outside the core Julia circle). He very often
           | comes across as dismissive, overly defensive, and passive
           | aggressive in comments here. All of that is dwarfed by his
           | package contributions tbh, in terms of impact on Julia. But
           | still, probably half of the negative perception about Julia
           | community that people have, come from reading these
           | interactions.
        
             | kelipso wrote:
             | Reading subtleties in internet comments is a but too much
             | lol. Might as well do palm reading.
        
         | nunuvit wrote:
         | I think the main idea behind Julia is to minimize the burden of
         | doing the necessary but wasteful software engineering parts of
         | scientific computation.
         | 
         | Let the language optimize more so you don't have to write a C++
         | library or figure out how to use it optimally. Don't waste as
         | much time setting up your environment or worrying about
         | platform compatibility. Don't worry about using multiple
         | languages for different types of computation. And make the on-
         | ramp fairly painless by being a convenient glue language.
         | 
         | It fills the gap of otherwise not having a managed and JITed
         | language for general mathematical computation. If it's more
         | burdensome for you to switch, then don't switch.
        
         | JZL003 wrote:
         | You can have nice foreign function interface between R->Julia
         | and Julia ->R. If you're already happy pulling out slow
         | functions into RCpp, then maybe there's no speed benefit. But
         | there are some very nice, very fast libraries in Julia, where
         | if you have a tight inner loop, it could be worth looking into
         | 
         | It reads and writes a lot like python (but nicer IMO), I don't
         | think the learning curve is immense to try it for small
         | optimizations. And it's also not unreadable so other people can
         | verify your code
        
           | mncharity wrote:
           | > nice foreign function interface between R->Julia and Julia
           | ->R
           | 
           | JuliaCall[1] and RCall[2].
           | 
           | Python<->Julia is similarly well exercised with PyCall[1],
           | and recently PythonCall[2].
           | 
           | [1] https://non-contradiction.github.io/JuliaCall/index.html
           | [2] https://github.com/JuliaInterop/RCall.jl [3]
           | https://github.com/JuliaPy/PyCall.jl [4]
           | https://cjdoris.github.io/PythonCall.jl/stable/
        
         | martinsmit wrote:
         | Context: Coming from a statistics background, I learned a bit
         | of R, then a bit of Python for data analysis/science, then
         | found Julia as the language I invested my time in. Over time I
         | keep up with R and Python enough to know what's different since
         | I learned them, but don't use them daily.
         | 
         | What I always tell people is the following:
         | 
         | If you are writing code using existing libraries then use
         | whichever language has those languages. The NN stack(s) in
         | Python are great, the statistical ML stack(s) in R are simple
         | and include SOTA techniques.
         | 
         | If you are writing a package yourself, then I assume you know
         | the core of the idea well enough to be able to write your code
         | from the "top down" i.e. you're not experimenting with how to
         | solve the problem at hand, you're implementing something
         | concretely defined.
         | 
         | In this case, and tailored to your use, I would argue that
         | Julia has more advantages than disadvantages, especially
         | compared to R or Python. Here are a few comments:
         | 
         | 1. Environments, dependencies, and distribution can all be
         | handled by Pkg.jl, the built in package manager. There is no
         | 3rd party tool involved, there is no disagreement in the
         | community on which is better. This is my biggest pain point
         | with Python.
         | 
         | 2. Julia's type system both exists and is more powerful than
         | that of Python (types or classes) and R (even Hadley's new
         | S7(?) system). By powerful I mean generics/parametric types and
         | overloading/dispatch built in. You can code without them, but
         | certain problems are solved elegantly by them. Since working
         | heavily with types in recent years, I find this to be my
         | biggest pain point in R and I wouldn't want to write a package
         | in R, although I like to use it as an end user.
         | 
         | 3. New developments in scientific programming, programming
         | ergonomics, hardware generic code (as in this post), and other
         | cool features happen in Julia. New developments in statistics
         | happen in R (and increasingly Julia), new developments funded
         | by big companies happen in Python.
         | 
         | 4. The Python and R interpreter start up faster than Julia. The
         | biggest problem here is when you are redefining types, which is
         | the only thing in Julia that can't currently be "hot reloaded"
         | i.e. you need to restart Julia to redefine types.
         | 
         | 5. Working with tabular data is (currently) far more ergonomic
         | and effortless in R than Python and Julia.
         | 
         | 6. Plotting is not a solved problem in Julia. Plots.jl is
         | pretty easy and pretty powerful, Makie.jl is powerful but very
         | manual. Time to first plot is longer than R or Python.
         | 
         | 7. Julia has almost zero technical debt, R and Python have a
         | lot. Backwards compatibility is guaranteed for Julia code
         | written in >v1.0 and Pkg.jl handles package compatibility. If I
         | send you code I wrote 4 years ago along with a Project.toml
         | containing [compat] information then you could run the code
         | with zero effort. (This is the theory, in practice Julia
         | programmers are typically scientists first and coders second,
         | ymmv.)
         | 
         | 8. You can choose how low level you want your code to be.
         | Prototyping can be done in Julia, rewriting to be faster can be
         | done in Julia, production code can be done in Julia.
         | Translating Python to C++ production might mean thinking about
         | types for the first time in the dev process. In Julia, going to
         | production just means making sure your code is type stable.
        
         | phonebucket wrote:
         | I do get where you are coming from. Indeed, it makes little
         | sense to use Julia for lots of machine learning when PyTorch
         | and Jax are just so good. And it sounds like you don't want to
         | use Julia, so who am I to try and convince you? Python/R are
         | capable languages.
         | 
         | But, there are still reasons I reach for Julia.
         | 
         | Interesting packages where I prefer Julia over Python/R:
         | Turing.jl for Bayesian statistics; Agents.jl for agent-based
         | modelling; DifferentialEquations.jl for ODE solving.
         | 
         | I would much rather data-munge tabular data in Julia
         | (DataFrames.jl) than Python, though R is admittedly quite nice
         | on this front.
         | 
         | Personally I reach for Julia when I want to use one of the
         | previous packages, or something which I want to code up from
         | scratch, where base Julia is much preferable to me than numpy.
        
       | Sukera wrote:
       | The authors have previously also shown off that this can do 3D
       | visualization in real time:
       | https://twitter.com/gabrielweymouth/status/16486827416201953...
        
         | worldsayshi wrote:
         | Hmm, the 3d render is done in Julia as well right?
         | 
         | I wonder if there's a way to share the data buffer across
         | languages. Would be neat if it was feasible to use the real
         | time model data in a game.
        
           | adgjlsfhk1 wrote:
           | >I wonder if there's a way to share the data buffer across
           | languages
           | 
           | This is pretty much what Arrow is made for.
        
       | samstave wrote:
       | Dope! Can anyone help me with the following, as this has been
       | 'floating' around in my head for nearly a decade ;
       | 
       | Wales (the animal) oft have barnacles on the leading edges of
       | their flippers, which results in an eddy effect which increases
       | efficiency/thrust.
       | 
       | Da Vinci was the earliest known documentor of eddy-based pumps
       | and predicted the eddies in the ventricular systems of the hearts
       | pumping of blood...
       | 
       | What I would like to model is a toroidal propeller with leading
       | edge bumps ('barnacles') while also having the dimpling pattern
       | of a golf ball to reduce drag... and I want to measure if this
       | idea holds water.
       | 
       | I just dont know how to model this using this tool...
       | 
       | help?
        
         | elil17 wrote:
         | Why use this tool? Why not simply build and test the propeller?
         | Your results would be much more reliable - CFD is famously
         | finicky, especially for a situation like a propeller where you
         | have rotating flows.
         | 
         | The point of golf ball dimples is to act as vortex generators
         | and improve flow attachment, so having both barnacles and
         | dimples is redundant.
        
           | DNF2 wrote:
           | Is building and testing an actual propeller going to be
           | easier? I would have thought that setting up and running a
           | simulation could be done in a moderate amount of hours, and
           | could then be quickly iterated on. The only requirements are
           | a laptop and an internet connection.
           | 
           | Building a model, on the other hand, could potentially
           | involve a multi-year effort to re-educate yourself to learn
           | how to build models, having to acquire hardware and
           | materials, and setting up a lab for testing. And _then_
           | building many different actual models.
        
             | samstave wrote:
             | Yep.
             | 
             | and i didnt give the following context:
             | 
             | Like JWST "variential dimples and bumps via hydrolic
             | mechanisms, for optimised flow" now we have the hard part
             | added in. (dimple flexing) and there are more levels than
             | that.....
        
           | pge wrote:
           | +1 to this - Though it has been many years, at one point I
           | helped write CFD code for the US Navy. The disconnect between
           | real-world measurements and simulations was vast for any
           | structure remotely complicated (ie anything but an axially
           | symmetric simple shape like a torpedo). While the CFD code
           | has gotten way better (largely via Moore's law), I expect
           | propellers are still quite hard to simulate, and your best
           | path is to build a model and see how it performs.
        
         | b-fg wrote:
         | As long as you can define a signed distance function, and the
         | function governing the motion of the propeller, WaterLily can
         | simulate it!
        
           | elil17 wrote:
           | I don't think that's true. What about cavitation?
        
             | b-fg wrote:
             | Cavitation has nothing special other than multi-phase flow.
             | And implementing a VOF method is definitely in our roadmap.
             | You can currently simulate it without cavitation to get a
             | feeling of the unsteady flow solution, or wait for us to
             | implement VOF.
        
         | all2 wrote:
         | Leading edge bumps has been done!
         | 
         | - https://en.wikipedia.org/wiki/Tubercle_effect
         | 
         | - https://arc.aiaa.org/doi/abs/10.2514/1.J050631
         | 
         | - https://physics.paperswithcode.com/paper/effect-of-
         | leading-e...
         | 
         | Enjoy!
        
       ___________________________________________________________________
       (page generated 2023-05-08 23:00 UTC)