Blender Mantaflow gas fire and smoke simulation - Adaptive Domain problem!

Hello Blender community,
I would like to use Blender Mantaflow gas fire and smoke simulation with a moving Flow object.
So I have created Adaptive Domain which position is moving exactly as the Flow object is moving.
I must use the Adaptive Domain because the Flow object moves at large distances.

The idea is that some trail of smoke and fire will be seen after moving Flow object
and at the end of this trail the smoke will dissolve over time
so the Adaptive Domain does not expand beyond its boundaries.

Domain object main parameters

Domain Type → Gas
Noise → ON
Domain Dissolve → ON
Time → 25
Slow → ON
Adaptive Domain → ON
Add Resolution → large number like 500 (in case of Adaptive Domain temporary expands beyond its boundaries)
Threshold → 0.001 → 0.0001 → 0.00001

Flow object main parameters

Flow Type → Smoke + Fire
Flow Behavior → Inflow

Adaptive Domain is moving and due to Dissolve → ON the smoke is dissolving over time.
So that Adaptive Domain does not expand beyond its boundaries (maybe temporary only)
and from time to time it shrinks as intended.
those shrinks are visible
as you can see at picture
“Adaptive Domain problem.png”

Lowering the Threshold → 0.001 → 0.0001 → 0.00001
does not solve the problem.

How to solve this?
Any ideas except turning off Adaptive Domain?

From memory - you cannot move the domain. I may be wrong. Do some research on the domain moving during animation.

1 Like

Thank you Matakani,
I have tried to make a big static domain (do not move the domain) and use Adaptive Domain property ON.
The situation has improved but sometimes the Adaptive Domain jumps to one side as a whole during one frame
and the smoke is suddenly displaced a little bit from the Flow object
which is noticeable for the viewer and ugly.
I have still problems to use moving Flow object and Adaptive Domain.

My aim was just animate flying insect with burning wing.
See “insect.png”

I found two problems with Mantaflow simulator in Blender
(tested in versions 3.3.1 and 3.4.1.).

  1. Adaptive Domain shrinks problem
  2. Adaptive Domain jumps problem

Adaptive Domain shrinks problem

Adaptive Domain ON & Noise ON & Dissolve Time (25) & Slow ON

Domain moves

Adaptive Domain is moving and due to Dissolve → ON the smoke is dissolving over time.
Adaptive Domain from time to time shrinks as intended,
but those shrinks are sometimes visible
which is noticeable for the viewer and not acceptable.
Lowering the Threshold → 0.001 → 0.0001 → 0.00001
does not solve the problem.
Increasing inflow Sampling Substeps → 3 → 10 → 50
does not solve the problem.

See “Adaptive Domain boundary shrinks.png”
See “Adaptive Domain problem.png” (in previous discussion)

Noise OFF

Adaptive Domain jumps problem

(even if Domain is static - must be much larger)

sometimes Adaptive Domain position
jumps between two consecutive frames
and smoke jumps too
which is noticeable for the viewer and not acceptable.

See “Adaptive Domain jump problem.png”
See “Adaptive Domain and Dissolve jump problem.png” or “Noise ON OFF.png”
… the camp fire simulation according to the book
“Learn Blender Simulations the Right Way”.

Noise OFF

Seems Noise OFF is solution to these problems
but then smoke does not look good.
Or Adaptive Domain OFF but then render time is soaring.

I am afraid that in my simulation parameters combination,
Mantaflow simulator is producing such erroneous results
and I can do nothing with this.

I hate to be the guy, but I say it anyways: Mantaflow is hot garbage - borderline unusable for anything more complex than a slow moving smoke stack.
Nevertheless I have an idea - it’s a shot in the dark since I refuse to use Mantaflow but fluid sims work on the same principles so there is a chance it might work.
What you can try is simulate with a higher density (make the smoke thicker) so that your smoke trail is longer - then you lower the density in the shader which will cut off density from the trail.
This might do the trick and push the adaptive boundary glitchiness further away from your visible smoke.


You have lowered the threshold. So, density is not the limiting factor of domain size.
Dissolving smoke is also modifying density.
Increasing Dissolve Time may smooth animation. But that should not be the cause of jump.

So, if noise is the problem, that may be solved by tweaking noise settings.
Basically Mantaflow noise consists in adding turbulence to basis by upraising resolution.
The more, you increase Upres Factor. The more, you obtain turbulence details. But also the less, final simulation stays faithful to base simulation.

By playing with Gas settings ( Buoyancy Density, Heat, Vorticity) and by adding force fields, you can make basic flow more turbulent.
So, without noise, it is possible to obtain smoke that looks good. But that is requiring lots of resolution divisions. That may corresponds to a time consuming caching.

Maybe, it is possible to find a better balance between Upres factor of noise, Resolution Divisions of base simulation, Additional Resolution of Adaptive domain.
How did you set those parameters ?

Hello. The noise upres is applied on the simulation, that is, once the fluid is resolved, the upres is applied on it. What happens is that when applying the noise, the simulation varies a lot in its appearance since the noise acts as a displacement. By adjusting the thresold correctly, the problem should be solved, what you should be careful is with the upres. For this reason, you should increase the size of the domain and its margin. Currently, Mantaflow has no active development. There are several issues with respect to the adaptive domain in particular currently.


Adaptive Domain:
Add Resolution … 0
Margin … 4
Threshold … 0.0001

Buoyancy Density … 1
Heat … 1
Vorticity … 0.1

Time … 20
Slow … ON

Upres Factor … 3
Strength … 1
Scale … 2
Time … 0.1

even if
Adaptive Domain: Add Resolution … 500
Noise: Upres Factor … 3
then still AD shrinks

even if
Adaptive Domain: Add Resolution … 0
Noise: Upres Factor … 2
then still AD shrinks

even if
Adaptive Domain: Add Resolution … 500
Noise: Upres Factor … 2
then still AD shrinks

You forgot an important basic setting Resolution Divisions.

That is the basis. The other settings about resolution are relative to this setting.
Adapative Domain Add Resolution are added to this basis.
Upres Factor from noise is a power of 2 of this addition.

If Resolution Divisions setting is let to default of 32 and you expect a simulation made of (32+500)x 8 = 4256 Divisions, that is normal to observe a lot of difference between basis and result too large for a render that will not be 4256 pixels wide.
If you multiple domain size by 4 to have smoke cells as big as pixels, try Resolution Divisions at 64, add 436 AD divisions and an Upres at 2, you will obtain a result closer to basis for same quality.
That is too much. A smoke voxel is made of several slices. It is not a problem to have it bigger than a pixel.
You need to have just amount of divisions, necessary to see turbulence in basic flow, without noise.
Turbulences that can be created with force fields or difference between gas setting.
The higher you set base resolution to perceive smoke, the lesser you have to upres noise, and the lesser result will be different than basis.

Anyways, with big resolution like that, you have ability to increase Margin to avoid interferences.
Margin makes the AD jump at each frame. But that is not important as long as that is not smoke that is jumping.
Margin of AD like subsampling of emitter should help to reduce differences between successive frames.

To me, issue is not related to resolution, but to dissolving.
There is a contradiction between time of dissolution of smoke and time of creation of vortices.
Time of dissolution is too short. So vortices are popping up, only during one frame.

Thank you Zeauro.

In the case of
“Adaptive Domain boundary shrinks.png”

the Domain was 220x60x120 Blender units large
Resolution Divisions was 256 so voxel was 0.86 Blender unit big
and the Domain was via the location constraint attached to the moving object.

For the parameters in previous message
at Frame N the Adaptive Domain was 102x26x41 Blender units
At Frame N+1 the Adaptive Domain was 81x26x38 Blender units - jumps minus 21 units and gas was cut off.

Noise Upres Factor was 3
and Add Resolution was 0 - OK because the Adaptive Domain never reached Domain original size
so overall divisions (256+0)x8 = 2048

According to your advice
I run the same data except the Adaptive Domain Margin changed from 4 to 24 (what was maximum)
and there was no improvement.
Finally I run the same data except the Dissolve Time changed from 20 to 80
but then the Domain was too small to show all gas and gas was cut off.

I see something wrong is with the use of noise.

Time to learn Houdini?

That proves that problem is related to that.
If jumping was related to something else and not to that, issue would have persist.

So, you can affine your settings.
You can try to find a Dissolve Time value between 20 and 80.
You can scale down domain and add a little bit of additional divisions.
That should ease the finding of a correct Dissolve Time value.
You can also try to lower Noise Strength, change its scale or animate its Time value.
Noise is little bit similar to a 4D procedural texture. Animating Time value is modifying it like animating W factor of a 4D texture.
You can obtain very different results by tweaking Noise settings. Maybe you can find a combination that is not problematic.