I have a scene where I am using a fluid simulation to splash water into an invisible diamond shape. I'm using a boolean modifier to remove (subtract) the jagged edges from the outside of the water. However, the modifier only works on some frames. On others, it causes most of the water to be completely flattened into a diamond shape, effectively deleting the surface of the water where it should not be touched by the modifier.
Basically, this is what I'm starting with:
I'm using a boolean modifier to subtract this from the water mesh:
This is the intended result (on a previous frame where it works):
And this is what I get instead on some frames:
Here is the .blend file, for reference:
I have made sure that the normals of the mesh I am subtracting are correct. I have also tried applying the fluidsim modifier on the frame I want, removing doubles and making normals consistent with ctrl+N, but the result is the same.
What is causing the boolean difference modifier to behave like this? Is there anything I can do in my project to fix it?