htrdr 0.7.0



htrdr-combustion - simulate radiative transfer in combustion medium


htrdr-combustion [option]... -m tetrahedra -p thermoprops -r refract_ids


The purpose of htrdr-combustion is to perform radiative transfer computations in a scene representing a semi-transparent medium enlightened by a laser sheet. The combustion medium may be surrounded by solid boundaries (inner limits of the combustion chamber). The program will currently compute, in the visible at a given frequency, the monochromatic image or the radiative flux density of the combustion medium: collected light comes from the laser, and is scattered by soot aggregates within the flame before eventually reaching the sensor.

Data about the gaseous medium have to be provided on the vertices of a unstructured tetrahedral mesh: pressure, temperature and concentrations of H2O, CO2 and CO have to be provided for every spatial position used to define this mesh. These data have to be provided in anticipation of future developments for the longwave range: since the gas is assumed to be transparent in the visible, it is not currently used.

Soot optical properties are computed using the Rayleigh-Debye Gans theory, for Fractal Aggregates (RDG-FA) [1]. This requires the knowledge of: soot volumic fraction, soot number density (number of primary particles per aggregate) and primary particles diameter, over each vertex of the tetrahedron mesh. For any position in the volume, these quantities are first interpolated from the values retrieved at the nodes of the current tetrahedron, and are then interpolated for the position of interest. Which then makes possible to compute the absorption and scattering cross-sections of soot aggregates, as well as their scattering function.

The Monte-Carlo algorithm that accounts for the visible intensity is inspired from the algorithm used for solar radiation in the htrdr-atmosphere(1) command. It was adapted to partially illuminated scenes in order to solve convergence issues. The algorithm is presented in the following article: "Null-collision meshless Monte-Carlo - a new reverse Monte-Carlo algorithm designed for laser-source emission in absorbing/scattering inhomogeneous media". M. Sans et al, JQSRT, 2021 [2].

In htrdr-combustion the spatial unit 1.0 corresponds to one meter while the estimated monochromatic radiances and flux densities are saved in W/sr/m2 and W/m2 respectively. Computed images are stored in the htrdr-image(5) file format.

htrdr-combustion implements a mixed parallelism: on one computer (i.e. a node) it uses a shared memory parallelism, and it relies on the message passing interface [4] to parallelize the computations between several nodes. We can thus launch htrdr-combustion either directly, or via a process launcher like mpirun(1) to distribute the rendering over several nodes.


-C <camera-parameter:...>

Define the rendering point of view. Available camera parameters are:


Vertical field of view of the camera in [30, 120] degrees. By default angle is set to 70 degrees.


Position of the camera. By default it is set to {0,0,0}.


Position targeted by the camera. By default it is set to {0,1,0}.


Up vector of the camera. By default it is set to {0,0,1}.

-D flux_density

Flux density of the laser in W/m^2. By default it is set to 1.

-d <laser|octree>

When define with the laser argument, write in output the geometry of the laser sheet saved in the VTK file format [3]. With the octree argument, write in output a VTK file that stores the octree leaves of the space partitioning data structure used to speed up the radiative transfer computations in the combustion medium. Each leaf stores the minimum and the maximum of the extinction coefficients of the tetrahedra that the leaf overlaps.

-F <fractal-coefficients:...>

Fractal parameters of the RDG-FA model. This option disable the -I option if it was previously set. Available fractal coefficients are:


Fractal dimension. By default it is set to 1.80.


Fractal prefactor. By default it is set to 1.30.


Force overwrite of the output file.

-g <geometry-parameter:...>

Define the geometry of the combustion chamber. Note that this geometry does not prevent the camera from viewing the medium or the laser from illuminating it, even if they are outside the combustion chamber. The rendering algorithm ensures that they are not occluded by this geometry like with a two-way mirror. When the laser is out of geometry, its emissive surface is seen as if it were following the interior surface of the chamber. Likewise, the radiance seen by the camera outside the chamber is the radiance that reaches it as if its image plane were following the surface of the geometry. Available geometry parameters are:


Path to the htrdr-materials(5) that defines the media and materials used by the combustion chamber geometry.


Path to the htrdr-obj(5) file that represents the mesh of the combustion chamber. Following the htrdr-obj(5) fileformat, the interface of the submitted mesh must be defined as a thin interface, i.e. it must be composed of 3 components separated by the : character. By convention, htrdr-combustion expects the outside environment to be called "air" and the medium inside the combustion chamber to be called "chamber". No assumption is made on the name of the surface material excepted that it has to reference a valid material.


List short help and exit.


Use an isotropic phase function rather than the RDG-FA model.

-i <image-parameter:...>

Define the sensor array. Available image parameters are:


Definition of the image. By default the image definition is 320x240.


Number of samples per pixel estimation. By default, spp is set to 1.

-l <laser-parameter:...>

Define the laser surface emission. Available laser parameters are:


Position of the center of the surface emission. By default it is set to {0,0,0}.


Position targeted by the laser, i.e. tgt - pos is normal of the laser surface. By default it is set to {0,0,1}.


Up vector of the laser surface. By default it is set to {0,1,0}.


Size of the laser surface. By default it is set to {1,1}.

-m tetrahedra

Path to the sth(5) file that stores the volumetric mesh of the combustion medium.


Precompute the normals of the tetrahedra. This option should speed up the computation since the normals are computed once per tetrahedron rather than reevaluated each time a tetrahedron is queried at a given position. On the other hand, the storage required by these normals increases the memory footprint.

-O cache

Path to the file used to cache the acceleration structure that partitions the combustion medium. If the cache file does not exist, it is created and populated with the octree built from the tetrahedra, thermoprops and refract_ids input files. This cached acceleration structure can then be reused in future runs as long as the input data provided on the command line is the same as that used to configure the cache; leading to a significant acceleration of the pretreatment step. If cache contains data generated from input data that is not that submitted on the command line, an error is notified and execution is stopped, thus avoiding the use of bad cached data.

-o output

Path to the file where htrdr-combustion writes the output data. If not set, data is written to standard output.

-p thermprops

Path to the atrtp(5) file that stores the thermodynamic properties of the combustion medium.

-R <rectangle-parameter:...>

Compute a radiatve flux density map rather than an image. The rectangular sensor onto which the flux is integrated is defined by the following parameters:


Position of the center of the rectangle. By default it is set to {0,0,0}.


Position targeted by the rectangle, i.e. tgt - pos is the rectangle normal. By default it is set to {0,0,1}.


Up vector of the rectangle. By default it is set to {0,1,0}.


Size of the rectangle. By default it is set to {1,1}.

-r refract_ids

Path the the atrri(5) file that lists the spectrally varying refractive indices of the combustion medium.


Use of Single Instruction, Multiple Data (SIMD) instruction sets if available. This should speed up the computation time.


Optical thickness used as threshold criteria to build the acceleration structure the combustion medium. By default its value is 1.0.

-t threads-count

Hint on the number of threads to use. By default use as many threads as CPU cores.

-V <definition>

definition of the grid of the upper bound field of radiative coefficients from which the volumetric acceleration structure is built. The grid extent corresponds to the axis aligned bounding box of the volumetric mesh representing the combustion medium. Grid definition can be set in two ways:


Explicitly set the grid definition along the X, Y, and Z extents.


Provide an hint on the expected definition of the grid along its major extent. The definition along the two remaining axes are then internally computed. This is the default comportment with an hint set to 256.


Make htrdr-combustion verbose.


Define the wavelength of the laser in nanometre. By default it is set to 532.


Images calculated by htrdr-combustion are saved in the htrdr-image(5) file format. This section describes the nature and arrangement of image data depending on the type of calculation performed by htrdr-combustion.

Shortwave monochromatic image

For a monochromatic image rendering, the expected value and the standard deviation of the pixel radiance (in W/sr/m^2) are saved on the first and the second components. All other components are unused excepted the seventh and eighth components that store the estimate of the radiative path computation time in microseconds and its standard error.

Shortwave flux density map

A flux density map (option -R) is saved in an htrdr-image(5) storing the expected value and the standard error of the pixel radiative flux density (in W/m^2) on its first and second component. All other components are unused excepted the seventh and eighth components that store the estimate of the radiative path computation time in microseconds and its standard error.


Make htrdr-combustion verbose (option -v) and render an image of a combustion medium whose tetrahedral mesh is stored in tetra.sth and its associated thermodynamic properties are saved in thermprops.atrtp. The spectrally varying indices of the medium are listed in the refract_ids.atrri file. The center of the laser surface emission is positioned at the origin and its direction is aligned to the Y axis. The definition of the rendered image is 800 by 600 pixels and the monochromatic radiance of each pixel is estimated at 500 nanometre with 64 Monte-Carlo realisations. The resulting image is written to output excepted if it already exists; in this case an error is notified, the program stops and the output file remains unchanged.

$ htrdr-combustion -v \
  -m tetra.sth \
  -p thermprops.atrtp \
  -r refract_ids.atrri \
  -l pos=0,0,0:tgt=0,1,0:up=0,0,1:sz=0.001,0.2 \
  -w 500 \
  -C pos=0.06,0,0.01:tgt=0.05,0,0.01:up=0,0,1:fov=30 \
  -i def=800x600:spp=64 \
  -o output

Add a combustion chamber to the previous example: its mesh is defined in chamber.obj while its materials are listed in materials.mtls. Save the volumetric acceleration structure in octree.cache or reused it if it was already populated in a previous run with compatible input data. Set the finest resolution of this acceleration structure to 1000 along the major extend of the medium and use a optical thickness criterion of 5 to build it. Use the -f option to force the overwrite of the output file if it exists and use -s to speed up the rendering with the available SIMD instruction sets.

$ htrdr-combustion -v \
  -m tetra.sth \
  -p thermprops.atrtp \
  -r refract_ids.atrri \
  -g obj=chamber.obj:mats=materials.mtls \
  -l pos=0,0,0:tgt=0,1,0:up=0,0,1:sz=0.001,0.2 \
  -w 500 \
  -C pos=0.06,0,0.01:tgt=0.05,0,0.01:up=0,0,1:fov=30 \
  -i def=800x600:spp=64 \
  -O octree.cache \
  -V 1000 \
  -T 5 \
  -o output -f -s

Compute a flux density map whose definition is 500 by 500 pixels. The flux density per pixel is estimated with 64 realisations; the flux density for the entire sensor is thus calculated with 16 million realisations (500 * 500 * 64). The sensor on which the flux density is calculated is a square with sides measuring 0.05 meter. Its center is positioned at the origin and points to the Z axis.

$ htrdr-combustion -v \
  -m tetra.sth \
  -p thermprops.atrtp \
  -r refract_ids.atrri \
  -l pos=0,0,0:tgt=0,1,0:up=0,0,1:sz=0.001,0.2 \
  -w 500 \
  -R pos=0,0,0:tgt=0,0,1:up=0,1,0:sz=0.05,0.05 \
  -i def=500x500:spp=64 \
  -O octree.cache \
  -V 1000 \
  -T 5 \
  -o map.txt -f -s

Write into octree.vtk a representation of the volumetric acceleration structure.

$ htrdr-combustion -v \
  -m tetra.sth \
  -p thermprops.atrtp \
  -r refract_ids.atrri \
  -O octree.cache \
  -d octree -o octree.vtk


1. Effects of multiple scattering on radiative properties of soot fractal aggregates. J. Yon et al, JQSRT 133, 374-381, 2014 -

2. Null-collision meshless Monte-Carlo - a new reverse Monte-Carlo algorithm designed for laser-source emission in absorbing/scattering inhomogeneous media. M. Sans et al, JQSRT, 2021 -

3. VTK file format -

4. MPI specifications -


Copyright © 2018, 2019, 2020, 2021 |Meso|Star> <>.

Copyright © 2018, 2019, 2021 CNRS.

Copyright © 2018, 2019 Université Paul Sabatier <>.


htrdr-combustion is free software released under the GPLv3+ license: GNU GPL version 3 or later You are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


atrtp(5), atrri(5), htrdr-atmosphere(1), htrdr-image(5), htrdr-obj(5), htrdr-materials(5), mpirun(1), sth(5)