Deborah R. Fowler
Fluids - Pyro (not sparse)
Updated: May 2
2020
Updated: Feb 13 2022
See Introduction to Pyro
Classic pyro has been renamed legacy and is no longer visible by default from the shelf tool as they move toward using the newer solvers such as sparse.
If you would like to see the lecacy shelf tool it is available as per the "what's new in H19" documentation
OVERALL A classic pyro network and setup is seen below: Node Network / sphere_object1 / AutoDopNetwork / pyro_import
In the setup the sphere is used as the fuel source (if it was smoke it would be density) and is visualized but not rendered. It sets up the initial data needed for the pyro sim and rasterizes the points (converts points to a volume suitable for dop import). The pyro_import brings the data fields out of the simulation for rendering.
In the dopnet (AutoDopNetwork)
- source_fuel_from_sphere_object1 (VolumeSource node) - this is where your source object is referenced. It can be described as "a microsolver that imports and directly applies SOP volume data". (It is possible, if you are an advanced user, to build an entire new solver out of mircosolvers and use that instead). This has different initialization settings.(ie. Flame is Source Fuel, BillowSmoke is Smoke Source)
- note in the volume
source v is changed to vel in pyro
- resize_container (Gas Resize Fluid Dynamics node) - to determine the max size of the voxels being computed
- pyro (SmokeObject node) - controls the voxel resolution (division size), visualization and the other attributes used in the simulation
- pyrosolver - simulation settings, shape, details of the solver
SOURCE
If you take a sphere and select the shelf tool
for pyro (not sparse) you will get a sphere that has points
scattered and the particle separation determines the amount of
points and pscale. Two attributes are added: fuel and temperature.
Next, the add_noise node adds noise
(variation and by default animation) to the fuel and temperature
fields. We are still just using points.
There are parameters add_noise to change the
default behavior as well.The red circles part shows increasing
the hot areas for example.
Pulse duration values that are lower will speed p the animation,
element size will increase the frequency of the node.
You can use the
visualization node and sub in the attribute to be seen as
temperature or fuel.
The rasterize node is what
then converts the points into a volume that can be used in the
pyro simulation as a source. This is now a volume with two
fields, fuel and temperature, but has the potential
to have more.
You would add them in the create_fuel node, for example
velocity.
Voxel size is set as well as seen below.
In the SideFX documentation the volume rasterize node "takes a cloud of points as input and creates VDBs for its float or vector attributes". (If you dive inside it uses the Volume Rasterize Particles SOP).
This source now goes into the dopnetwork. So in the Volume Source node in the dopnet, these fields are referenced.
There are scale factors on the source fuel where you can also adjust the values.
PYRO (Smoke Object)
So far, we only have from our source, temperature and fuel, but if you have seen any pyro visualization you will see on the Smoke Object (labeled pyro) a long list of fields (Density, Temperature, Fuel, Divergence etc.) all related to the combustion model that is being simulated.
The is the pyro (smoke object) job - to create those fields. It is setting up the other attributes (fields) that need to exist to run a combustion simulation. You can dive inside that node and see that it is simply creating these fields (but you don't have to because the tool allows us to visualize them.
On the checklist you can view MultiField (closest to what your final sim will look like when you render it) and then whatever other data you may want to look at.
So below I have visualized velocity only (you can turn off the display of the other objects with the circled in red drop down menu on the viewport upper right.
You can also go to the specific tab and adjust how you are viewing it, for example x-y or y-z slice.
The pyro fields are then taking out of the dop network in the pyro_import for rendering.
PYROSOLVER (not sparse) tabs
So we have fuel and temperature. If temperature is hot enough, it will ignite the fuel. Here is where we start discussing the controls.
Resize container uses the heat field to approximate the container size. Below we will look at the various tabs.
The Advanced tab has two interesting things - turns off gravity on your flames, and has an OpenCL tab. (Currently sparse is better than legacy with OpenCL use and does not work with OpenCL.)
Simulation tab: Temperature is driving the upward force - here are the controls
- TimeScale - as expected 1 is normal,
lower to slow, higher to speed up
- TemperatureDiffusion - is the
inside/outside balance - blurs
- Cooling rate - for example, volcano
set to .1 so that it is not cooling off as fast and
stays longer
- Buoyancy lift/direction - how fast the
smoke rises determines now much "lift" the simulation has
combined with the temperature (like a scale on the
temperature) - for example, volcano set to 3 to slow down
the simulation - higher values, rises faster
Combustion tab: and
subtabs are controlling the combustion process with detail
controls on subtabs
- Ignition Temperature - whether it ignites
- Burn Rate - percent of the fuel that
burns each second - acts like an overall control of how much
flame/smoke is produced (so at .9, some fuel is left over
each second)
- Fuel Inefficiency - how much fuel is
actually used
- Temperature Output - scale on how much temperature is produced
- Gas Released - how much it will expand (divergence)
- Subtabs give finer control ie.
- Flames/Flame Height - higher values more flame, could also link them to the ramp that is controlling your temperature field (evaporation).
- Smoke - if you turn off Emit Smoke -
you will eliminate your density field (so don't).
- smoke amount
- heat cutoff - if heat is lower than that value, you'll create smoke - so the higher value, the more parts of the flame will produce smoke (so higher value, more smoke which will also make your flames look duller)
- Gas - flame/burn contribution
- Temperature
- Fuel - advect fuel - more explosive
flame
Shape
tab: add dissipation, disturbance, turbulence - noise
to influence the shape
- dissipation - how quickly smoke evaporates
Relationships and
Advanced tabs exist as well (OpenCL is on the advanced
tab)
Clearly, there are a large number of
controls - the key is to understanding what controls to
change.