HTRDR 0.1.0-r1 is available
- Build from sources: git
High Tune: RenDeRer (
htrdr) is a part of the High-Tune project: it illustrates
the implementation of radiative transfer algorithms in inhomogeneous
media. It is actually an image renderer in the visible part of the
spectrum, for scenes composed of an atmospheric gas mixture, clouds and a
ground. It uses spectral data that should be provided for the pressure and
temperature atmospheric vertical profile, the liquid water content in
suspension within the clouds that is a result of Large Eddy Simulation
computations, and the optical properties of water droplets that have been
obtained from a Mie code.
htrdr evaluates the intensity incoming on each pixel of the
sensor array. The underlying algorithm is based on a Monte-Carlo method:
it consists in simulating a given number of optical paths originating from a
camera, directed to the atmosphere, taking into account light absorption and
scattering phenomena. The computation is performed over the whole visible part
of the spectrum, for the three components of the CIE 1931 XYZ colorimetric
space that are subsequently recombined in order to obtain the final color for
each pixel, and finally the whole image of the scene as seen from the required
During the simulation,
htrdr dynamically loads/unloads
cloud properties and thus it can handle clouds whose data do not feat in main
memory. Furthermore, in addition of a shared memory parallelism,
htrdr relies on the Message
Passing Interface specification to parallelise its computations in a
distribute memory environment; the
htrdr binary can thus be
run either directly or through a MPI process launcher like
A straight interface
htrdr is a command-line tool that performs computations
on input data, writes the rendered image and nothing more. No assumption is
made on how input data are created excepted that they have to follow the
expected file formats. In the same spirit, the output image is written in plain
text, as a list of raw pixel estimations, making easier the processing of its
This thin interface is, by nature, particularly well suited to be
extended and integrated into a any workflow. For instance, one
can save the cloud properties directly in the "High-Tune: cloud properties"
format (htcp) or use the les2htcp tool to convert cloud properties
from NetCDF to
htcp. In the same way, the output image can be post-treated
through gnuplot or converted in a regular
PPM image by the htpp program, and then
visualised in an image viewer as for instance feh or display.
No pre-compiled version of
htrdr is provided; it must be
compiled directly from its source tree. A simple way is to rely on the
high_tune branch of the Star-Engine
project: it provides CMake scripts that automate the download, the compilation
and the installation of
htrdr and its dependencies. This build
procedure assumes the following prerequisites:
- git source control as well its Large File System extension.
- GNU Compiler Collection in version 4.8 or higher.
- CMake in version 3 or higher.
- NetCDF library and headers in version 4 or higher.
- OpenMPI library and headers.
- Optionally, the AsciiDoc tool suite to generate the man pages of the reference documentation.
Assuming that the aforementioned prerequisites are available, the build procedure is summed up to:
~ $ git clone -b High-Tune-0.1.0-r1 \ https://gitlab.com/meso-star/star-engine.git High-Tune-0.1.0-r1 ~ $ mkdir High-Tune-0.1.0-r1/build; cd High-Tune-0.1.0-r1/build ~/High-Tune-0.1.0-r1/build $ cmake ../cmake ~/High-Tune-0.1.0-r1/build $ make
Once built, the
htrdr installation can be packaged in an
archive that can then be deployed on compatible systems, i.e. systems
whose C library, NetCDF library and MPI implementation are compatibles with the
ones available on the system used to build
~/High-Tune-0.1.0-r1/build $ make pkg ~/High-Tune-0.1.0-r1/build $ ls package/High-Tune-0.1.0-r1* # list packages
htrdris installed in the
High-Tune-0.1.0-r1. Source the provided
high_tune.profilefile to register
htrdragainst the current shell.
~ $ source ~/High-Tune-0.1.0-r1/local/etc/high_tune.profile ~ $ htrdr -h
If the AsciiDoc tool suite was installed on
invocation, the reference documentation of the
program and its associated file formats should be available through man pages.
man command-line to consult them.
~ $ man htrdr ~ $ man htrdr-image ~ $ man htcp ~ $ man htmie
Refer to the High-Tune: Starter Pack to
quickly run a
htrdr rendering; this archive provides input data
and scripts that are good starting points to use
- Add the
-Voption that fixes the maximum definition of the octrees used to partitioned the radiative properties of the clouds.
- Add a per pixel estimation of the per radiative path computation time.
- Fix the computation of the surface scattering: there was a bug in how Russian roulette was implemented at surface scattering leading to an underestimation of the surface reflection.
- Update the thread allocation policy: by default, the number of threads is now
defined as the maximum between the number of processors detected by OpenMP
and the number of threads defined by the
OMP_NUM_THREADSenvironment variable. This variable can be used to counteract the number of processors detected by OpenMP that can be lower than the real number of processors of the system.
- Fix compilation on systems with a GNU C Library whose version is less than 2.19.
- Fix a possible invalid memory access to cloud data leading to segmentation faults.
htrdr is free software released under the GPLv3+ license: GNU
GPL version 3 or later. You can freely study, modify or extend it. You are
also welcome to redistribute it under certain conditions; refer to the license for details.