Houdini 20.0 Nodes Geometry nodes

FLIP Solver geometry node

Evolves an object as a FLIP fluid object inside a SOP network.

On this page
Since 19.5

A FLIP solver is a type of hybrid between a particle based and volume based fluid simulations. All fluid data is stored in the particles and only particles need to persist frame to frame, ensuring no unwanted mixing or loss of fluid can occur. However, the pressure projection step is done on a volume that is created just in time. The fluid is represented by particles with their pscale, and can be moved around with POP and DOP forces.

When FLIP fluids are solved, a temporary velocity field is made. The particle velocities are transferred to this grid and the grid is used to perform the fluid projection. This is what prevents the particles from all going on top of each other and start moving in similar directions.

The advantage of the FLIP Solver is that you run with only a few time steps per frame while other methods require anywhere from 5 to 10 time steps or more per frame to stabilize. FLIP utilizes a few grids (volume fields) to help tame the instantaneous impulses that can arise in a fluid sim. This way you can run far fewer points at far fewer time steps and the inter-spacing between particles can be random. You can introduce new particles at any time with little to no consequence.

Parameters

Reset Simulation

Click this button to refresh the simulation and remove all cached data from the RAM. Already simulated frames will be lost unless they're cached to disk.

Start Frame

Specify a frame for the simulation to start. Until then, no calculations are performed. If you cache the simulation to disk, empty frames are written until Start Frame is reached.

Setup

General

Particle Separation

Particles can end up closer together than their pscale attribute. When this happens, internal forces can’t separate the particles. This results in the fluid compressing over time. For correct results, take the Particle Separation value from the FLIP Container SOP node and use it here.

Grid Scale

A fudge factor to account for the inability for the particles to actually pack at the pscale amount due to the sphere packing problem. To test different values, run a FLIP solve without any volume or particle forces and see which values cause your initial particles to retain the desired volume.

Time Scale

A scaling factor for time inside this solver. A value of 1 is normal speed, a value greater than 1 makes the FLIP simulation appear sped up, and a value less than 1 makes the simulation appear to be in slow motion.

You can use expression functions such as doptime, dopframe, dopsttot, and dopttost to convert between global times and simulation times.

Note

Changing the Time Scale only affects the timestep of the simulation. If adding velocities calculated in SOPs to the simulation for collisions or pumps with the Volume Source DOP, scale the incoming velocities by 1/timescale to match the timestep of the simulation.

Simulation

Global Substeps

Use this parameter to overwrite Minimum Substeps and Maximum Substeps. More substeps lead to longer simulation times.

Min Substeps

The FLIP solver will always enforce this minimum number of substeps.

This should rarely need to be changed.

Max Substeps

The FLIP solver will not break the simulation down to more substeps than this value.

Cache Memory (MB)

The amount of RAM, reserved for caching a simulation to memory.

Waterline

Waterline

Waterline

Turn on this option to create an initial water volume, e.g. to partially fill a container or create a water surface for interaction with objects or fluid sources.

By default, you can only see a layer of water with a certain thickness, because of the solver’s narrow band option. Narrow band is an effective method to speed up a simulation and reduce its memory footprint while maintaining the fluid’s behavior and quality. In narrow band simulations, the fluid below the waterline is represented by volumes and fields (e.g. velocity and surface).

If you want to perform a waterline check in VEX or VOPs, for example if a displaced particle is above the waterline, you have to take pscale into account. In DOP-based FLIP fluids, particles are created up to 0. In SOP-based fluids, Waterline creates particles up to -pscale. So, the correct expression is v@P.y>-f@pscale. To get the current pscale value, please check the Geometry Spreadsheet pane.

Note

In simulations with boundary transfer through the solver node’s 4th input you have to turn off Waterline. The water surface is created by the connected node, e.g. Ocean Spectrum SOP and Ocean Evaluate SOP nodes.

Note

When turned on, you see a particle band around the domain’s outside. This band represents the outside environment and injects velocity and pressure to the fluid inside the domain. New particles are also sourced from this layer. Note that the particle layer is taken into account when you surface the fluid particle. You can adjust the width of this layer with Source Band.

Water Origin

By default, water origins at 0,0,0. With Water Origin you can change this position and add an offset, for example in Y direction. The fluid is then simulated in the space between Water Origin and Waterline.

Waterline

Drag the slider to move the waterline along the Y axis or enter a value. The waterline has to be inside the FLIP Container SOP’s boundaries.

Additional Velocity

You can add an initial velocity and direction to the waterline particles, e.g. to create a stream of water similar to a river. New particles are constantly sourced and removed at the domain’s boundaries.

Boundary Condition

Type

Type determines how particles, interacting with the domain’s boundaries, are handled. With both types, water vanishes once it hits the domain’s boundaries, while new particles are sourced to maintain an equilibrium. Sourcing and deleting of particles happens within the Source Band around the domain’s outside. The parameter is also relevant in simulations with boundary transfer, e.g. the creation of rolling ocean waves or up-ressing scenarios. For simulations without contact to the domain’s boundaries, e.g. when you fill a glass, Type doesn’t have to be considered.

Results can turn out completely different depending on which Type you're using. Pressure Driven boundaries tend to be more splashy.

Pressure Driven

With this option, fluids tend to be more splashy and turbulent, but also less stable.

Velocity Driven

Velocity driven fluids are less turbulent, but more stable.

Initial Surface

The way, how the domain is filled, depends on a combination of Initial Surface, Waterline, and Enable Particle Narrow Band in the Advanced sub-pane.

  • When you turn on Waterline, you see a water surface by default.

  • Turn off Enable Particle Narrow Band to get a particle volume.

  • With all three parameters turned off, the domain remains empty.

  • If you only turn off Initial Surface, a particle band is created around the domain.

Velocity Band

Pressure Band

Source Band

When you turn on Waterline, you can see a water surface inside the domain and a particle area around the outside - the source band. The source band is the area where new particles are sourced and this parameter controls its size.

Collisions

Collision Behavior

Particle Collisions

Which mode you have to use depends on the collision object’s geometry, but also the FLIP Collide SOP node’s Volume Collide and Surface Collide settings. The default mode works for closed 3D objects and volumes.

None

Disables particle-object collision for the entire simulation.

Particle

Use this mode if there is 2D or open 3D geometry involved.

Move Outside Collision

Use this mode with closed 3D objects and volumes.

Transparency

Surface Extrapolation

When the fluid surface is within this voxel distance of a collision, the solver will consider it part of the collision object. This extrapolation helps fluid flow smoothly along curved surfaces, but can create a slight stickiness. Decreasing this value can create more dynamic splashes from collisions, especially as objects enter the fluid.

Note

Setting this to 0 is not recommended.

Stick on Collision

Stick on Collision

Causes the fluid’s velocity to match the collision velocity when close to collision objects. See the Gas Stick On Collision DOP for more information.

Stick Scale

The amount of collision velocity to blend into the fluid’s velocity, where a value of 1 indicates fully matching the collision velocity.

Max Distance

Specifies the world-space distance within which to apply the effect.

Max Cells

Specifies the maximum number of voxels within which to apply the effect.

Stick Bias

Controls how quickly within the stick distance the effect will reach the full Stick Scale. Values closer to 1 will have more effect throughout the stick distance.

Normal Scale

Scale the amount of velocity adjustment in the direction normal to the collision surface.

Tangent Scale

Scale the amount of velocity adjustment in the direction tangent to the collision surface.

Control Field

Scale the effect by this spatially varying field, which should match the collision field in resolution.

Ground

Add Ground Plane

You can add a ground object and make it interact with the fluid particles.

None

No ground plane will be added.

Ground Plane

Adds a ground plane to the simulation.

Height Field

Adds a heightfield static object to the simulation.

Height Field

SOP path to the height field geometry.

Ground Position

The location of the center of the ground plane.

Ground Up

The orientation of the ground plane.

Fluid Behavior

Velocity Transfer

The Velocity Transfer parameter lets you choose between the default FLIP (Splashy) and APIC (Swirly). FLIP (Splashy) is typically used for high energy, noisy large FLIP simulations like rivers or oceans, where the surface from FLIP noise isn’t a problem. APIC is typically used for high vorticity simulations where you need to reduce surface noise as much as possible while still retaining the swirling nature of the simulation. For example, for small scale fluids where surface noise can be really distracting or for lava type simulations.

Air Incompressibility

Enforce Air Incompressibility

The divergence free constraint will now also be applied to the air volume. This will prevent air volumes from collapsing and create rising bubbles. This is useful for capturing realistic air-liquid interaction like a glugging watercooler.

Note

This does not work with Pressure Adaptivity.

Apply Moving Collision

Moving collisions can interact indirectly with the liquid through an air pocket. Any compression applied to the air pocket by the collision is compensated for at the liquid surface of the air pocket.

Min Air Region Voxels

Air regions containing fewer voxels than the minimum will not have their incompressibility enforced. This is useful for preventing small bubbles from emerging along collision surfaces.

Note

The Enforce Air Incompressibility feature does not solve for the velocity in the air volume. It simply constrains the velocity of the liquid from compressing or expanding the air volume. This approach makes the simulation much mor efficient than fully simulating the entire air-volume.

Note

Bubbles submerged in the fluid could disappear during the render stage when using the default settings in Particle Fluid Surface. Activate the Preserve Bubbles in Particle Fluid Surface to maintain the bubbles inside the fluid.

Apply Particle Separation

Despite the velocity projection stage, particles can end up closer together than their pscale attribute. When this happens, internal forces can’t separate the particles because the velocity projection will remove those forces. This results in the fluid compressing over time.

Separation Iterations

The number of times to perform the separation relaxation step. This value can usually be set to 1 since successive frames of separation will have the same effect.

Separation Rate

How far to move the particles towards their desired separation locations. This can be reduced to get the effect of a fractional iteration.

Separation Scale

A fudge factor to account for the inability for the particles to actually pack at the pscale amount due to the sphere packing problem. To test different values, run a FLIP solve without any volume or particle forces and see which values cause your initial particles to retain the desired volume.

Reseeding

Reseeding

Create new particles in voxels where the particle count has dropped too low to properly represent the fluid surface, and delete particles in voxels that have become too crowded. Reseeding can help avoid collapsing pockets of air forming in the fluid near collisions, as well as provide a smoother surface from which to generate a polygonal mesh.

Note

Reseeding cannot be turned off if Enable Particle Narrowband is turned on.

Birth Threshold

Particles will be added to a voxel once the current number drops below the product of this parameter and the goal number of particles.

Death Threshold

Particles will be deleted from a voxel once the current number rises above the product of this parameter and the goal number of particles.

Oversample At Boundaries

Oversample within Oversampling Bandwidth voxels of the fluid volume boundaries. This setting helps avoid collapsing pockets of fluid at the boundaries of a “Tank”-type simulation.

Surface Oversampling

The goal number of particles will be scaled by this amount when within Oversampling Bandwidth of the surface.

Oversampling Bandwidth

Oversample within this number of voxels from the surface or any Surface volume boundaries, if Oversample at Boundaries is enabled.

Random Seed

A seed that controls the time-varying random function used to generate new particle positions when reseeding. Because high-frequency splashes in a simulation are strongly influenced by particle positions, varying this value (e.g. with a Wedge ROP) can generate multiple simulations with similar bulk motion but different splash behavior from otherwise identical simulation parameters.

Visualization

Show Collision

Turn on the checkbox to display a wireframe representation of the collision objects' surface to check for leaks or insufficient resolution.

Particles

Points as Spheres

When turned on, particles are displayed as small spheres.

Color by Speed

Use Max Speed and the Visualization Ramp to dye the particles according to their speed and enhance areas of interest like splashes.

Max Speed

Use this parameter to visualize the fluid’s velocity differences. All particles with velocities equal to or greater than the adjusted value will be displayed with the same color.

Visualization Ramp

The speed values will be fed through this ramp to obtain a particle color.

Point No.

The number of ramp’s color sliders.

Position

The current position of the active color slider. Values range from 0 (leftmost color) to 1 (rightmost color).

Color

The base color for this set. You can choose a color from a palette or define numerical RGB through the input fields.

Interpolation

Choose a method from the dropdown menu to determine, how the curve between the color points should be interpolated.

Advanced

Solving

Enable Particle Narrow Band

A narrow band of FLIP particles will be used to update the fluid’s surface and velocity volumes within the Bandwidth of the fluid surface. Any particles deeper into the fluid than the Bandwidth will be removed from the simulation.

Use Multigrid Preconditioner

When this checkbox is turned on, the pressure system is preconditioned using algebraic multigrid to speed up the solution. This option greatly reduces the number of iterations required to converge, at the expense of increasing the cost of each iteration. This typically greatly speeds up the solve, but does not support Air Incompressibility or distribution.

Solve Pressure with Adaptivity

When turned on, the pressure solver uses adaptive timesteps where possible to decrease simulation time. If you observe instabilities or exploding particles, try to turn off this option.

This mode can’t be used in conjunction with Fluid Behavior ▸ Air Incompressibility. You also have to turn off this option in simulations with point variable density.

Solve Viscosity with Adaptivity

When turned on, the viscosity solver uses adaptive timesteps where possible to decrease simulation time. If you observe instabilities or exploding particle, try to turn off this option. If the problems persist, consider increasing Solver ▸ Global Substeps.

Checkpoints

Save Checkpoints

Normally when the Allow Caching to Disk is enabled and the simulation hits the memory limit, the simulation is saved to files in the temp directory. While these are valid .sim files, they can be hard to manage. When this options is on, each frame is immediately cached to the specified directory. It is still kept in memory until the Cache Memory is hit, but at that point it is not saved to disk (since it’s already on disk). The advantage of checkpointing is that if a cache frame already exists DOPs will not cook that frame, even if the simulation has been reset. Instead it will load that frame. Further, it only needs to cook the frames after the last valid checkpoint frame before the requested frame. So if you have cache_50.sim and try to cook frame 100, cooking can start at frame 50.

Using save checkpoints is similar to using a File DOP in Automatic Mode. However, when you try to jump to frame 50 with a File DOP it must load the first 50 frames. With checkpoints it can skip this step.

Checkpoint Files

The file sequence to save the checkpoints to. These are .sim files, loadable with the File DOP or File SOP. The variable $SF must be used to specify the frame number - $F cannot be used because this is working in simulation space. $SF4 is also supported.

Checkpoint Trail Length

How much of a history to keep before the checkpoint files are deleted. A value of 0 will never delete cache files. Otherwise, frames older than this value will be erased from disk.

Note that only checkpoint files created by this session of Houdini will be deleted. If you restart Houdini with an existent cache files, they will not be deleted. This is done because you were likely restarting from a crashed location and will want to guarantee you can once again restart there if it crashes again.

Checkpoint Interval

The frame interval between checkpoints. Setting this to a value of 1 will save a checkpoint every frame. Setting this to higher values will save a checkpoint after every number of frames specified. For example setting this to 5 will save a checkpoint every 5 frames.

This can be done to save disk space if you are running a large simulation.

Inputs

Sources

Expects the fluid’s particles.

Container

Expects the geometry from the FLIP Container SOP as a surface field.

Collisions

Expects all collision objects from the FLIP Collide SOP nodes as surface and velocity fields.

Boundary Flow

This input can be used to transfer boundary pressure or velocity information, for example for up-res simulations. It’s also possible to connect an ocean spectrum as an external source to create rolling waves.

Outputs

Sources

Contains the fluid particles.

Container

Contains the geometry from the FLIP Container SOP as a surface field.

Collisions

Contains all collision objects from the FLIP Collide SOP nodes as surface and velocity fields.

Geometry nodes