Reducing the mass flux using HRR freeze method

Skip to first unread message


Sep 7, 2022, 9:25:55 AMSep 7
to FDS and Smokeview Discussions

A huge thank you for the FDS developers who give their valuable time to answer questions on this forum. I have a question but I don't know if it is a good question or worth asking. Anyways, here it goes.

Would it be possible to reduce the mass flux from a vent using the HRR freeze method?
I have a fire specified like this:

&SURF ID='fire',
MASS_FLUX(1)=0.022, /

&RAMP ID='MF_RAMP', T=0, F=0 /
&RAMP ID='MF_RAMP', T=5, F=1 /
&RAMP ID='MF_RAMP', T=60, F=1 /

&VENT ID='BURNER', XB=0.5,1.5,0.5,1.5,0,0, RADIUS=0.5, XYZ=1,1,0, SPREAD_RATE=0.01 /

When a sprinkler I specified activates, I want to reduce the mass flux of the vent to half of its initial value. The ramp values should be like this assuming the sprinkler activates at 30 s.

&RAMP ID='MF_RAMP', T=0, F=0 /
&RAMP ID='MF_RAMP', T=5, F=1 /
&RAMP ID='MF_RAMP', T=30, F=0.5 /
&RAMP ID='MF_RAMP', T=60, F=0.5 /

I visualize the fire as one which continues spreading, as a spread rate is assigned, albeit with a reduced fuel mass flux.

I was thinking of approaching this in the manner that HRR freeze is applied in FDS but I am unsure how I would affect the value of the ramp function.  

Is something like this possible? If yes, how do I go about it?


Randy McDermott

Sep 7, 2022, 9:44:54 AMSep 7
to FDS and Smokeview Discussions
Have a look at section

20.6.2 Freezing the Output Value, Example Case: hrr_freeze

in the user guide.

You received this message because you are subscribed to the Google Groups "FDS and Smokeview Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit


Sep 7, 2022, 10:32:37 AMSep 7
to FDS and Smokeview Discussions
You can do this with control functions.  What you need is a ramp that defines the fire size over time. If the fire is still growing when the sprinklers go off then you need to freeze this ramp when sprinklers operate.  Then you multiply the output of that ramp by either 1 or 0.5.  That 1 or 0.5 is generated by a set of control functions that uses the status of the sprinklers to determine the value.  The final output after multiplying is then used as the input to a linear ramp that is assigned to the fire surface.


Sep 7, 2022, 2:52:00 PMSep 7
to FDS and Smokeview Discussions
Thank you Dr. Floyd and Randy for the response.
I have been trying the same approach you Dr. Floyd suggested but I can't seem to figure out how to obtain the RAMP output.

I cannot provide the RAMP_ID as an input to a control function, so how can I obtain the ramp output.


Sep 7, 2022, 3:26:38 PMSep 7
to FDS and Smokeview Discussions
In addition to having a logical state, the CUSTOM control function will output the value of its RAMP which can then be used as an input other math control functions.


Sep 8, 2022, 11:42:46 AMSep 8
to FDS and Smokeview Discussions
This is a useful piece of information, thank you. I'll get back once I have the answer or if I get stumped again. Hopefully, the former.


Sep 14, 2022, 1:13:36 PMSep 14
to FDS and Smokeview Discussions
So I was finally able to work on this yesterday and I managed to obtain the reduction in HRR as I wanted with a spreading fire.
Now I am trying to create a HRR response like this with a non-spreading fire:
I was following the instructions you had provided in another thread but I am unable to model the constant period in the HRR curve. I have attached my current input file.
I hope you can point out the mistake I am making.
On Wednesday, September 7, 2022 at 9:26:38 PM UTC+2 dr_jfloyd wrote:


Sep 14, 2022, 1:51:02 PMSep 14
to FDS and Smokeview Discussions
Let's work backwards.  Ultimately we want something to multiply an HRRPUA with to get the the correct heat release for the burner.  So we know we need a a surface with an HRRPUA and a RAMP to control the HRRPUA.  But we want to explicitly control the value of that RAMP.  One way to that is to have a linear RAMP.

here we want to set x to be large enough that the fire can grow big enough to operate the sprinkler but not so large that we wind up with bad resolution in the RAMP. By default FDS takes the T and F values and interpolates them to a 5000 row lookup table. 

What do we need CUSTOM_RAMP_MULT to do?  Either it gives the full fire size based on some growth curve, or it gives half that fire size if the sprinkler has gone off.  That is it needs to output 1 or 0.5 depending on the state of the sprinkler activation. CUSTOM_RAMP_MULT is:


FIRE_RAMP is the size of the fire before adjusting for sprinklers. This is just a custom control function whose input is time and whose output is the fire that is frozen when the sprinkler operates:

&RAMP ID='INT_RAMP',T=t1,F=f1/
&RAMP ID='INT_RAMP',T=t2,F=f2/
&RAMP ID='INT_RAMP',T=tn,F=fn/
where the ramp T and F values define whatever fire growth curve you want.  This will give that fire growth until the sprinkler operates at which point the time is frozen and the ramp will just keep returning the same value.

SPRINKLER_FACTOR needs to return a 1 or 0.5 to multiply the output of FIRE_RAMP. One way to do this is to use the DEVC QUANTITY of CONTROL. This outputs 0 when a control function is false and 1 when it is true.  With this we can have the final output of SPRINKER_FACTOR represent 1 - 0.5 * DEVC.  When the sprinkler is off the DEVC is 0 and we get 1. When the sprinkler is on the DEVC is 1 and we get 0.5.  So to get sprinkler factor we need a series of control functions: 


Before the sprinkler operates:
-FREEZE_TIME is just the time
-INT_RAMP returns the current fire size
-SPRINKLER ON is 0 since SPR_ACT is false
-FACTOR_TERM is 0 (0*0.5=0)
-SPRINKLER_FACTOR is 1 (1-0=1)
-CUSTOM_RAMP_MULT is just the fire size (INT_RAMP * 1)
-FINAL FIRE RAMP just returns the same value as CUSTOM_RAMP_MULT
-The HRR at the surface is the normal fire growth size

At sprinkler operation:
-FREEZE_TIME is frozen at the current time
-INT_RAMP now returns the frozen HRR
-SPRINKLER ON is 1 since SPR_ACT is true
-FACTOR_TERM is 0.5 (1-1*0.5=0.5)
-CUSTOM_RAMP_MUL is now half the fire size (INT_RAMP*0.5)
-FINAL FIRE RAMP just returns the same value as CUSTOM_RAMP_MULT
-The HRR at the surface is the 1/2 the frozen heat release rate.

I haven't taken the time to make a case with all this and run it so it might need some tweaks, but I think this should point you in the right directions.


Sep 14, 2022, 4:28:32 PMSep 14
to FDS and Smokeview Discussions
Thank you for this in-depth explanation. This definitely does show me the way.
And I am certain this will be useful for many others as well.
Reply all
Reply to author
0 new messages