4
$\begingroup$

A simple tank (fluid obstacle) is filled by an inflow object.

If the inflow object is positioned inside the tank at about half the tank's depth, it begins filling the tank at a reasonable rate, but then the level stagnates despite the inflow's continuing constant rate.

Inflow object inside tank

If all is identical, except that the inflow object is positioned just above the tank. It fills the tank at a reasonable rate and then overflows (reasonably correct behavior).

enter image description here

(I am only allowed two links, so can't post the blend file)

Why does the first case fail to fill the tank?

Other Info:

  • Scene is set to Blender units.
  • The domain dimension are 1.1x, 0.8y, 0.8z
  • The domain Real World Size is 0.5m (Setting it to 1.1 makes little difference)
  • All scales have been applied.
  • All normals are correct and meshes are manifold.
  • The inflow Volume Initialization is set to Volume, with an inflow velocity of z = -0.5
  • The obstacle Volume Initialization is set to Shell.
  • Bake resolution is 80 (Running at 200 makes little difference)

I have varied the obstacle impact factor, the domain optimization grid levels and compressibility, simulation speed, and a few other things. The only things that have significant effect are the height of the inflow object, a significant decrease in domain real world size, or a significant increase in inflow velocity.

In the real world, if I remember, the inflow velocity would equate to some sort of velocity head. And I suppose if this is low, the inflow might be cut off due to increasing static head on the inflow object. But I didn't think the fluid simulator took account of these types of things(?). That is, I thought the inflow velocity was supposed to be non-changing.

Thanks for any explanations.

EDIT: Attempting to upload .blend for case where inflow is inside tank.

Blend file for inflow object inside tank (Second upload try)

$\endgroup$
  • $\begingroup$ Very interesting...could you post the .blend? $\endgroup$ – JakeD Nov 18 '16 at 18:58
  • $\begingroup$ I have tried to attach the blend, but I don't think it is going to work (link to dropbox) $\endgroup$ – PSBDave Nov 18 '16 at 23:41
3
$\begingroup$

I had posted this question on blenderartists.org a week or so before posting it here. I just received a particularly good answer from the fluid sim coders themselves. You can read their response in the link below.

In summary, this is a known limitation of the fluid simulator. They discuss the low-level details and propose possible modifications to the simulator code. In the meantime, fluid inflow objects generally should not be submerged, and (I gather) should also not be at an elevation lower than the final fluid level of something they are intending to fill (even if they are outside the vessel to be filled). Of course, this all depends on the level of accuracy of the simulation you are after.

Here's the link.

https://blenderartists.org/forum/showthread.php?410338-Fluid-Inflow-Fails-To-Fill-Simple-Tank-Depending-On-Position-In-Tank

$\endgroup$
0
$\begingroup$

Explanation

I made some test and got the same behaviour. Think of the "Inflow" like this: every calculation step, the selected area of the inflow object (shell, volume or both) will be filled with fluid. Like one "Fluid" on object every frame. That's why the water stops flowing in once the height of the inflow object is reached: it can't add water since there is only water.

Apparently, adding some velocity doesn't add some kind of "pressure" like it would do in real world. Changing it will set the speed of the fluid at its start - nothing more. That's probably also why you always get some turbulence with lower water level behind the source: The still water is replaced with fast moving water, like a pump.

Solution (kind of)

Set a positive Z value to your "Initial Velocity". This will look a bit weird, but at least your tank will get completely filled :)

$\endgroup$
  • $\begingroup$ Thanks! But if I change the inflow from -0.5Z to +0.5Z, it still doesn't fill the tank. I know that increasing the inflow rate will eventually result in a full tank, but for future reference, I'm trying to understand why things behave the way they do. I once tried an inflow velocity in the +X direction. I forget the rate, but fluid rose to notch and then jetted across the top of the notch in a horizontal direction and impacted the side of the domain. It seems that the fluid voxels seem to retain a memory of the initial inflow fluid momentum (but I hardly know what I'm talking about). $\endgroup$ – PSBDave Nov 18 '16 at 23:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.