Stone skipping - Fluid Mechanics - Overset grid - overInterDyMFoam - OpenFOAM 2112
HTML-код
- Опубликовано: 22 авг 2024
- Overset gridding refers to the use of multiple disconnected grids to discretize the flow domain, which can overlap each other. For moving objects, you would typically have a fixed base grid, discretizing the entire flow domain, and a second grid discretizing the zone around the object in greater detail, which would move following the object itself. With that setup you can always have great discretization where you need it, regardless of how much the object moves.
OpenCFD's version of OpenFOAM includes a wide array of Overset-Grid-capable solvers.
In the attached video I show an example of this technique, applied to the universally-loved passtime of stone skipping. I tried to replicate the experimental setup published by Tsai et al. (doi.org/10.101..., using a non-spinning 30mm by 5mm aluminum disk, thrown toward water at 5 m/s, but I might have gotten some of details wrong (no 2nd skip 😔).
The case uses the overInterDyMFoam multiphase solver. The fixed mesh has a 5mm horizontal and 2.5mm vertical discretization (which is too coarse to solve splashing accurately); meanwhile, the mesh around the disk has a 1mm cell size, with further refinement near the surface. The disk motion is solved with six degrees of freedom, without any constraint.
As always, nothing is perfect, and the overset grid technique has some drawbacks.
The main one I found is that the mesh-to-mesh geometric mapping, which needs to be performed every time the object moves (every timestep!), is a bit slow, and accounted for ~ 50% of the simulation time in this case. Without looking into the implementation in depth, I have the impression that it is done from scratch every time, which is probably unnecessary (displacements are small on a single time step), so maybe this could be optimized in the future.
Another commonly pointed limitation is that this technique is not rigorously mass-conserving, but I don't think that is a big problem for cases like this one.
In case you want to take a closer look at how the model is put together, I have uploaded the case to #GitHub:
github.com/est...
#cfd #mesh #multiphase #OpenFOAM #grid #numericalmodeling #computationalhydraulics #mechanicalengineering #mechanical #research #simulation #cae #fluiddynamics #fluidmechanics #turbulence #aerodynamics #automative #aerospace #flow #motorsport #openfoam #ansys #starccm #opensource #technology
"using a non-spinning 30mm by 5mm aluminum disk, thrown toward water at 5 m/s, but I might have gotten some of details wrong "
What you got wrong is that it's not spinning, so it won't keep precession as easily as a spinning one. Try to make it spin and you will get 2nd skip.
The experimental setup I was replicating used non-spinning disks. But, yes, spinning disks are much more stable.
This man has a PhD in stone skipping xD
@@LongTran-em6hc its common sense if u skip stones
If you're really bad at skipping stones!
This is beautiful , i loved to play when i was a child (and still do)🙂
I am myself quite talented and experienced on this... given the perfect sea condition and the stones, I could do up to 20-30 skipping... even I chip and reforming some of the stones.. best is ceramic glossy flat bottom with some mound like shape weights on it ... usually demolished household structures discarded bathroom or kitchen tiled tops
Fantastic! Can you do Barnes Wallis’s bouncing bomb …..Dambusters ?
Hello, That's a fascinating simulation. How did you manage to produce such a beautiful animation (for example, the opening two seconds of the movie and the stone and the gas-liquid interface and 3D channel all combined)? I'd be grateful for some pointers. Thanks
Hi! Everything was rendered using Paraview. Some of the clips (like the first one you mentioned) were generated with the Raytracing option.
Hello Nicolás, at first, thank you for sharing this fantastic simulation. I am using it as a template for my simualtion.
I have two things regarding the dynamicMeshDict which i do not understand and i would be happy if you could look closer on that:
I am not sure what the transform command in the dynamicMeshDict does, but I think it rotates the coordinate system of the moving object. With the values you have chose you are rotating it +10° around the z-axis, but it should be -10° around the y-axis (you also commented it with -10° around the y-axis).
Second thing i would like to mention is that in the calculation of the moment of inertia is a mistake, i think. The diagTensor of the z-component should be "sqrR / 2.0" not "sqrR / 4.0"
It would be really nice if you could tell me whether I am right in my assertions or whether there is another reason for your statements
Great simulation! I'm learning overset mesh and I have a question about the case setup - since the cellSets c0 and c1 are defined using "topoSet" in background folder, is the "topoSet" in moving body still necessary? Thanks in advance :)
Thank you! Now that you mention it, probably not. You may try removing it and see if the case is still set up properly. If you do, please report back.
@ Hi Nicolas, I've run the simulations both with and without the "topoSet" command in moving body, and the results are the same. However, I still have a few questions about the overset mesh setting, I've sent you a message about my questions on researchgate. Looking forward to your reply! :)
eventually, computers will be able to do this in real time, and proper fluid dynamics will end up in video games
It is very cool.
How did you manage to give the projectile trajectory to the object.. Can you recommed me some reference/source.
Hi. The link to the source code of the case is available in the video description. The initial velocity of the object is specified in the dynamicMeshDict file.
yeah thats sick
Interesting work. How do you handle object-free surface interaction? VOF or other technique?
Yes, the free surface is captured via the VOF method.
We need some spin it like round
Hello Nicola, I want to calculate where the piece thrown at a certain angle will fall and view its movement in paraview, how can I do this?
Hello Niclolas I am going through the provided code. I have query can you explain what is the meaning of the following points under prepare file:
transformPoints -rotate-angle '((0 1 0) -10)'
transformPoints -translate '(0 0 0.04)'
he is moving the mesh of the movingObject. First he rotates the mesh around the y-axes with an angle of -10° and after that he is moving the mesh to the origin with the points (0 0 0.4). After these steps the stone is a little bit askew in the flow domain when the simulation starts.
Wow! Was this complicated to do?
make a spin, let see the gyro effecet
I can throw a cat at the water and get two skips.
on all logic it should start spin, wtf
Yes, but this was trying to reproduce the results of an experiment which used non-spinning disks.
@ ah, makes sense :)