Simple SPH questions. Kernel interpolation - *(its starting to flow)

Started by
12 comments, last by Peacekeeper 10 years ago

oh sry maybe i misunderstood you. right now the particles move only based on the pressure gradient that is calculated using the spiky kernel. there is no extra kernel for repulsive forces when the particles are close because - as you can see - it works well if the spiky kernel is used on both (density/pressure and pressure forces). i just wonder why it works pretty well that way, as in many papers people tell you to use the poly 6 kernel for the density as it should result in more physically realistic behavior.

so i cant figure out why particles that get too close to each other do not repulse each other as the spiky kernel should provide repulsive forces. the question is why they even start to get so close in the first place. must have something todo with the kernel i do not understand. as if the particles have to get really close to reach the desired density.

edit: what about the ideal gas btw :D?

Advertisement

You are pretty much simulating a gas already (surprise!) but with the density of water and in the vacuum, so it ultimately behaves like water.

Actually very dense gases are not that different from liquids:

EDIT: Well, the "in the vacuum" part is pretty bad explained. In the end if we have a gas we are not in the vacuum, sorry about that. What I meant here is that we only have one phase (just our simulated fluid, without air surrounding it). What really matters here is that for dense gases the action of gravity is stronger than the repulsion forces of pressure until the particles are quite close together.

“We should forget about small efficiencies, say about 97% of the time; premature optimization is the root of all evil” - Donald E. Knuth, Structured Programming with go to Statements

"First you learn the value of abstraction, then you learn the cost of abstraction, then you're ready to engineer" - Ken Beck, Twitter

oh sry maybe i misunderstood you. right now the particles move only based on the pressure gradient that is calculated using the spiky kernel. there is no extra kernel for repulsive forces when the particles are close because - as you can see - it works well if the spiky kernel is used on both (density/pressure and pressure forces). i just wonder why it works pretty well that way, as in many papers people tell you to use the poly 6 kernel for the density as it should result in more physically realistic behavior.

so i cant figure out why particles that get too close to each other do not repulse each other as the spiky kernel should provide repulsive forces. the question is why they even start to get so close in the first place. must have something todo with the kernel i do not understand. as if the particles have to get really close to reach the desired density.

edit: what about the ideal gas btw biggrin.png?

Ah okay, slight misunderstanding. I compute a local density for each interacting particle pair and use that value for a repulsive-only "local" pressure force. Then I sum up all local densities to a "global" density value, which is used in an attractive-repulsive pressure kernel. This is a fail-safe way to 100% avoid clumping. There are many, many different kernels for computing density, pressure, and viscosity, and you are completely free to invent your own. My kernels are self-invented for working without knowing the distance between particles. This way I don't need to normalize vectors and hence not use square-root, which makes the simulation much faster.

In my experience, clumping happens when two particles are pushed very close together, and the kernels aren't capable to separate them; they make each others density kernels reach a value higher than rest-density, resulting in a high pressure. Then the pressure kernel pushes all other particles away from the two, but it doesn't manage to separate the particles causing the high density.

ok thanks for the input :) i´ll stay with my working kernels for now.

do you have any further advice on vicsosity or rigid body collision? there are tony of possibilites aswell. which methods do you use? i´d prefer simple solutions. ;)

This topic is closed to new replies.

Advertisement