While there are a few CFD solvers in Julia, like ViscousFlow.jl and WaterLily.jl, the field of usage is somewhat limited: As far as I understand, WaterLily works well only for low Reynolds numbers. Is there anybody else here on Discourse interested in an improved CFD solver, written in Julia?
Ideas:
Based on WaterLily.jl, add the feature to use octree grids. As far as I know, this might increase the range of usable Reynold numbers by one or two orders of magnitude
develop a RANS CFD solver
Could anybody point me to literature and/or software in other languages that could be used as a starting point for such a development?
An honorable mention is the NIST Fire Dynamics Simulator. Honorable mention because I think it is limited to LES for turbulence. But it is very complete and documented for its application. And it is very useful for ventilation.
As for literature. It is extensive. Here is a list of books on CFD that I like:
Notes on Computational Fluid Dynamics: General Principles written by Greenshields and Weller. One of the author is one of the original authors of OpenFoam. This book should be considered the Theoretical Manual of OpenFoam. It doesn’t go into details but it is very thourough, going into almost every aspect of the solver. Very good reference.
I would be interested in learning whether there are any developments in Julia regarding Stokes flow problems involving the simulation and modeling of biophysical phenomena, such as red blood cells, droplets, capsules, microorganisms\microswimmers, and active/passive compound particles.
If anyone has experience with these types of problems, has developed code, and could point me to some initial points of investigation, that would be awesome.
Newtonian or non-Newtonian? Shear-thinning or shear-thickening?
For the laminar Newtonian case, I expect any of Ferrite.jl, Gridap.jl, Trixi.jl, WaterLilly.jl, VoronoiFVM.jl and other packages to be sufficient versatile. This does not meant the absence of a learning curve.
For the laminar non-Newtonian case, examples in Ferrite.jl and Gridap.jl provides examples of non-linear constitutive equations that might provide inspiration. Other examples surely exist.
For the Reynolds-Averaged turbulent case, the absence of established implementations that handle boundary effects through wall functions spoil the fun (or provide space for user contributions).
That is right, incompressible flows are not really target of the code. That, however, does not technically rule out low Mach number flows - so as long you are simulating gases, i.e., something related to aerodynamics, a RANS extension should be possible.
I am mostly interested in the zero-Reynolds-number case, a fluid domain that is incompressible and Newtonian, described by the steady Stokes momentum and continuity equations. Specifically, the problems that I work on involve moving interfaces, so I thought that FEM-based solvers are not very suitable for this kind of simulation. I had some experience with boundary integral methods and was wondering if Julia has anything specific in this domain.
I also want to learn about non-Newtonian fluids, shear-thinning or shear-thickening, and other constitutive models for porous media for the application of microswimmers. I used COMSOL for these situations, which is not ideal. Do you know of any developments in this area?
Indeed that’s exactly where DG method shines, I’m not aware of anything specific in Julia but Ferrite supports DG and steady solving too.
Edit : nevermind if it’s purely Stokes I don’t see why FEM wouldn’t be the best choice here ( together with ALE formulation for the moving interface)
I have seen some impressive work using the Arbitrary Lagrangian-Eulerian formulation in the Finite Element Method for the moving interfaces, but I am personally unfamiliar with it. I definitely need to explore this approach.
The reason I used boundary integral methods was to reduce computational cost by moving from the 3D domain to surface integrals.