| HTRDR-PLANETS(1) | General Commands Manual | HTRDR-PLANETS(1) | 
NAME
htrdr‑planets —
    simulate radiative transfer in 3D planetary
    atmosphere
SYNOPSIS
htrdr‑planets | 
    [-dfhNv] [-a
      aerosol_opt[:aerosol_opt
      ...]] [-b
      accel_struct_build_opt[:accel_struct_build_opt
      ...]] [-C
      persp_camera_opt[:persp_camera_opt
      ...]] [-G
      ground_opt[:ground_opt
      ...]] [-i
      image_opt[:image_opt
      ...]] [-o
      output] [-P
      ortho_camera_opt[:ortho_camera_opt
      ...]] [-r
      volrad_budget_opt[:volrad_budget_opt
      ...]] [-S
      source_opt[:source_opt
      ...]] [-s
      spectral_opt[:spectral_opt
      ...]] [-t
      thread_count] -g
      gas_opt[:gas_opt
      ...] | 
  
DESCRIPTION
htrdr‑planets simulates the radiative
    transfer of a terrestrial planet in the visible or the infrared part of the
    spectrum. The planet's ground (option -G) can be any
    set of triangles with BRDFs and temperatures defined per triangle. The
    atmosphere is composed of a gas mixture (option -g)
    and a potentially empty set of aerosols (option -a).
    Both can have arbitrary tetrahedral meshes with per-node radiative
    properties. Rayleigh is used as a gas phase function. The temperature of the
    gas is defined on the mesh nodes. Aerosol phase functions (Henyey and
    Greenstein or user defined) are also defined per node.
htrdr‑planets is a renderer that
    calculates an image (option -i) for a given
    observation position (option -C). In addition to
    rendering images, it can also be used to estimate the volumic radiative
    budget for a set of tetrehedra (option -r). Its
    algorithms are based on Monte Carlo integration, which involves simulating a
    given number of optical paths for each estimate, taking into account light
    absorption and scattering phenomena. Thanks to the Monte Carlo,
    htrdr‑planets calculates not only the quantities of
    interest, but also their uncertainty (standard deviation of the distribution
    of weights) at no extra cost.
htrdr‑planets offers three ways to perform
    spectral integration (option -s). By default, it
    calculates an image for the visible part of the spectrum between 380 and 780
    nanometers, for the three components of the CIE 1931 XYZ color space which
    are then recombined to obtain the final color for each pixel. The other two
    methods are to explicitly define the longwave or shortwave spectral range to
    be integrated and continuously sample a wavelength in this range. In fact,
    longwave and shortwave are keywords that mean that the source of radiation
    is either internal or external to the medium, respectively. In shortwave,
    only radiance is evaluated and stored in the output image. For longwave
    rendering, this estimated radiance is then converted to brightness
    temperature and both are recorded in the image.
In htrdr‑planets, the spatial unit 1.0
    corresponds to one meter and temperatures are expressed in Kelvin. The
    estimated radiances are given in W/sr/m^2, except for monochromatic
    calculations where the calculated spectral radiance is defined in
    W/sr/m^2/nm. Finally, the estimated volumic radiative budgets is given in
    W/m^3.
htrdr‑planets implements mixed
    parallelism. On a single computer (that is, a node), it uses shared memory
    parallelism while it relies on Message Passing Interface (MPI) to
    parallelize calculations between multiple nodes.
    htrdr‑planets can therefore be launched either
    directly or via a process launcher such as
    mpirun(1) to distribute the
    rendering on several computers.
The options are as follows:
-aaerosol_opt[:aerosol_opt ...]- Define an aerosol. Use this option once per aerosol, and duplicate it as
      many times as necessary.
    
The aerosol options are as follows:
mesh=volume_mesh- Aerosol tetrahedral mesh saved in smsh(5) format.
 name=string- Name assigned to the aerosol.
 radprop=radiative_properties- Radiatve properties of the aerosol saved in
          sars(5) format. Radiative
          properties are defined per volumetric mesh node. This file and the
          tetrahedral mesh (option 
mesh) must therefore be consistent with each other, i.e. the nodes must be listed in the same order. phasefn=phase_functions_list- List in rnsl(5) format of
          phase functions to be loaded. Each phase function is saved in
          rnsf(5) format. The
          correspondence between these phase functions and the nodes of the
          volumetric mesh is defined in another file (option
          
phaseids). phaseids=per_node_phase_function- Path to the rnpfi(5)
          file that stores the index of the phase function to be used per
          volumetric mesh node. The list of phase function is defined in another
          file (option 
phasefn). Note that this file and the tetrahedral mesh (optionmesh) must be consistent with each other, i.e. the nodes must be listed in the same order. 
 -baccel_struct_build_opt[:accel_struct_build_opt ...]- Configure the building of the acceleration structures.
    
The acceleration structures building options are as follows:
def=definition- Advice on the definition of the atmospheric acceleration structures. Default is 512.
 nthreads=threads_count- Advice on the number of threads to use. This number is different from
          that defined by the 
-toption, as the construction of acceleration structures is not based on the same parallelization model as Monte Carlo integration. This construction may not benefit from too many threads, on the contrary.The default value is 8, i.e. a maximum of 8 threads are used to build acceleration structures.
 proc=processes- This option is only used when 
htrdr‑planetsis run with multiple processes (see mpirun(1)). It defines the processes that must build the acceleration structures.The value
allmeans that all processes build their own set of acceleration structures. This is the de facto configuration when no storage is used (i.e. thestorageparameter is not set).If acceleration structure storage is defined (
storageparameter), a value ofallshould only be used if each process has its own disk space on which its own set of acceleration structures is stored. If processes share a common disk space, the value should bemaster. This means that only the main process builds the acceleration structures, which are in fine shared with the other processes by storing the saved acceleration structures on a common disk space.The default value is
master. storage=accel_struct_file- File where atmospheric acceleration structures are stored/loaded.
        
If accel_struct_file does not exist, it is created and is used to store the built acceleration structures.
If accel_struct_file exists, acceleration structures are loaded from it rather than built from scratch, resulting in significant acceleration of the preprocessing step. Note that if the data structures stored in accel_struct_file are not as expected (that is, the input atmospheric data or construction parameters are different), an error is notified and execution is stopped, thus avoiding the use of incorrect acceleration structures.
By default, no storage file is used, i.e. acceleration structures are built from scratch and stored in memory.
 tau=optical_thickness- Optical thickness used as threshold criterion for building the acceleration structures. Default is 1.
 
 -Cpersp_camera_opt[:persp_camera_opt ...]- Set up a pinhole or thin-lens perspective camera.
    
The options for a perspective camera are as follows:
focal-dst=distance- Distance to focus on with a thin lens camera, that is, a camera whose
          
lens-radiusis not zero. The default focal distance is 1 meters. focal-length=length- Focal length of a camera lens. It is another way to control the field
          of view of a thin lens camera. By default, the field of view is set
          through the 
fovparameter. fov=angle- Vertical field of view of the camera in ]0.0, 180.0[ degrees. The default field of view is 70 degrees.
 lens-radius=radius- Radius of the camera lens. A non-zero radius means that the camera is a thin lens camera while a zero radius defines a pinhole camera. The default lens radius is 0.
 pos=x,y,z- Camera position. Default is 0,0,0.
 tgt=x,y,z- Targeted position Default is 0,1,0.
 up=x,y,z- Upward vector that the top of the camera is pointing towards. Default is 0,0,1.
 
 -d- Write atmospheric acceleration structures to output.
      Each structure is saved in legacy VTK format. To divide the resulting
      output into N files (N > 1), each storing an acceleration structure,
      one can use the csplit(1)
      command as below:
    
csplit -f octree -k output %^#\ vtk% /^#\ vtk/ \ {$(($(grep -ce "^# vtk" output)-2))} -f- Force overwriting of output file.
 -Gground_opt[:ground_opt ...]- The planet's ground.
    
The ground options are as follows:
brdf=brdfs_list- List in rnsl(5) format of
          the BRDFs to be loaded. Each BRDF is saved in
          mrumtl(5) format. The
          correspondence between these BRDFs and the triangles of the surface
          mesh is defined in another file (option
        
prop). mesh=surface_mesh- Ground triangular mesh saved in smsh(5) format.
 name=string- Name assigned to the ground.
 prop=surface_properties- Ground surface properties, i.e. BRDF index and temperature, both
          defined by triangle. The list of BRDF is defined in another file
          (option 
brdf). Note that this file and the surface mesh must be consistent (optionmesh), i.e. the triangles must be listed in the same order. 
 -ggas_opt[:gas_opt ...]- Gas mixture.
    
The gas options are as follows:
mesh=volumetric_mesh- Gas tetrahedral mesh saved in smsh(5) format.
 ck=correlated_k- Correlated K fof the gas saved in
          sck(5) format. The
          correlated K are defined per volumetric mesh node. This file and the
          tetrahedral mesh (option 
mesh) must therefore be consistent with each other, i.e. the nodes must be listed in the same order. temp=temperature- Gas temperatures saved in
          rngt(5) format. The
          temperature is defined per volumetric mesh node. This file and the
          tetrahedral mesh (option 
mesh) must therefore be consistent with each other, i.e. the nodes must be listed in the same order. 
 -h- Display short help and exit.
 -iimage_opt[:image_opt ...]- Configure sensor image.
    
The image options are as follows:
 -N- Precalculate tetrahedron normals. This speeds up runtime performance by calculating normals once and for all rather than re-evaluating them every time a tetrahedron is queried at a given position. In return, the memory space used to store normals increases the memory footprint.
 -ooutput- Output file. If not defined, data is written to standard output.
 -Portho_camera_opt[:ortho_camera_opt ...]- Set up an orthographic camera.
    
The options for an orthographic camera are as follows:
height=lenght- Image plane height. Its width is calculated from this length and the
          image ratio to guarantee square pixels (see 
-ioption). pos=x,y,z- Camera position. Default is 0,0,0.
 tgt=x,y,z- Targeted position. Default is 0,1,0.
 up=x,y,z- Upward vector that the top of the camera is pointing towards. Default is 0,0,1.
 
 -rvolrad_budget_opt[:volrad_budget_opt ...]- Define the calculation of the volumic radiative budget. Calculation is no
      longer a rendering: neither a camera (option 
-C) nor an image (option-i) is required.The volumic radiative budget options are as follows:
 -Ssource_opt[:source_opt ...]- Define the external source.
    
The source options are as follows:
lat=latitude- The latitude of the source, i.e. its angle between [-90, 90] degrees about the Y axis. The default latitude of 0 is that of the X axis.
 lon=longitude- The longitude of the source, i.e. its angle between [-180, 180] degrees about the Z axis. The default longitude of 0 is that of the X axis.
 dst=distance- Distance in kilometers from source to origin. Default is 0.
 rad=radiance_distribution- Source radiance distribution saved in
          rnrl(5) format. This
          option is not compatible with the temperature setting of the source
          (option 
temp) which also defines its radiance distribution. radius=real- Source radius in kilometers.
 temp=temperature- Source temperature in Kelvin. When this option is set, the radiance
          distribution of the source is Planck, at the specified temperature.
          This option is not compatible with the 
radoption that explicitly defines the source radiance distribution. 
 -sspectral_opt[:spectral_opt ...]- Configure spectral integration.
    
The spectral integration options are as follows:
cie_xyz- Calculate the radiance for the visible part of the spectrum between [380, 780] nanometers using the XYZ CIE 1931 color matching functions. This is the default behavior.
 lw=wlen_min,wlen_max- Calculate the radiance using the internal source of radiation, i.e.
          the radiance emitted by the medium and its boundaries (ground and
          space).
        
Calculations are performed between [wlen_min, wlen_max] nanometers according to Planck's function for a reference temperature defined as the maximum ground temperature.
If wlen_min and wlen_max are equal, the calculation is monochromatic.
 sw=wlen_min,wlen_max- Calculate the radiance using the external source of radiance (option
          
-S).Calculations are performed between [wlen_min, wlen_max] nanometers according to the radiance distribution of the external source (see
-Soption)If wlen_min and wlen_max are equal, the calculation is monochromatic.
 
 -tthread_count- Advice on the number of threads to use. By default,
      
htrdr‑planetsuses many threads as processor cores. -v- Make 
htrdr‑planetsverbose. 
OUTPUT DATA
The output of htrdr‑planets depends on the
    type of calculation invoked. This section describes the nature and layout of
    these output data.
XYZ image
For an image rendering in the visible part of the spectrum
    (default behavior or option -s
    cie_xyz), the output is an
    htrdr-image(5) whose
    pixel components store 4 estimates.
The first, second, and third pairs of floating point values encode the estimated integrated radiance in W/sr/m^2 for the X, Y, and Z components of the CIE 1931 XYZ color space. The first value of each pair is the expected value of the average radiance of the pixel. The second value is its associated standard deviation.
The fourth and final pair records the microsecond estimate of the computation time per radiative path and its standard error.
Longwave image
For infrared calculations (option -s
    lw=wlen_min,wlen_max)
    the output is an
    htrdr-image(5) whose
    first and second pixel components store the expected value and the standard
    error of the estimated brightness temperature (in K), respectively.
The third and fourth components record the expected value and the standard deviation of the pixel radiance which is either an integrated radiance in W/sr/m^2 or a spectral radiance in W/sr/m^2/nm depending on whether this radiance was calculated for a spectral range or at a single wavelength.
The fifth and sixth pixel components are not used.
Finally, the last 2 components of the pixel record the estimate in microseconds of the computation time per radiative path and its standard error.
Shortwave image
For shortwave calculations (option -s
    sw=wlen_min,wlen_max)
    the output is an
    htrdr-image(5) formatted
    as for a longwave image except that the first and second components of the
    pixels are not used, as no brightness temperature has been evaluated. That
    is, the third and fourth values record the estimated radiance per pixel and
    the seventh and eighth values store the estimate of the calculation time by
    radiative path. The other values are set to 0.
Volumic Radiative Budget
For volumic radiative budget (option -r)
    the output is a list of 15 ASCII values per line, with as many lines as
    there are tetrahedra in the volume mesh as an argument to the
    -r option. The lines follow the order of the input
    meshes.
The total radiative volumic budget is decomposed into its direct and diffuse components. For each component (total, direct and diffuse parts), the following information is recorded: the average [W/m^3], the associated standard deviation [W/m^3], the sum of Monte Carlo weights and the sum of squared weights. The purpose of these last two values is to help calculate the expected value and the standard deviation of the volumic radiative budget for a set of tetrahedra.
After these 12 values, the total number of realisations is recorded.
Finally, the last two values are the estimate and associated standard error of the calculation time per radiative path.
EXIT STATUS
The htrdr‑planets utility exits 0
    on success, and >0 if an error occurs.
EXAMPLES
An htrdr‑planets command line can be
    lengthy due to the options required to describe the system to be simulated.
    For editing reasons, the command lines given as examples in this section
    will take up several lines by using the backslash character
    (\). While there's nothing original about this
    practice, we'd like to emphasize the importance of spaces or their absence
    before the backslash character, particularly for options defining aerosols
    (option -a) or ground (option
    -G): their argument must be a single character
    string with no spaces other than those that may be required for file
  names.
The following command line runs
    htrdr‑planets in a verbose way (option
    -v) to calculate an 800
    by 600 pixel image by sampling
    64 radiative paths per pixel (option
    -i) for the 3 components of the CIE 1931 XYZ color
    space (option -s). The external source is positioned
    at -45 degrees longitude and 50
    degrees latitude relative to the absolute referential (option
    -S). The camera (option -C)
    looks at the origin
    (tgt=0,0,0)
    and is positioned at 1.5e7 meters along the Y axis
    with an image plane aligned along the Z axis
    (up=0,0,1).
    Its vertical field of view is 70 degrees. The gas of
    the planetary atmosphere is described by the tetrahedral mesh recorded in
    the gas.smsh file, while its spectral data and
    temperature are given by the files gas.sck and
    gas.rngt, respectively. Two aerosols complete the
    planetary atmosphere: one for clouds and one for
    haze. Their respective meshes are stored in the
    clouds_tetrahedra.smsh and
    haze_tetrahedra.smsh files while their radiative
    properties are given by the clouds_properties.sars
    and haze_properties.sars
    files. Finally, their phase functions are described by a set of 2 files: the
    clouds_phase_functions.rnsf
    and
    haze_phase_functions.rnsf files which list the
    aerosol phase functions, and the
    clouds_phase_function_ids.rnpfi
    and
    haze_phase_function_ids.rnpfi files which reference
    them by volumetric mesh node. To speed up rendering time, the normals of the
    tetrahedral meshes of the gas and aerosols are precalculated once and for
    all (option -N). The ground geometry is stored in
    the ground_triangles.smsh file with its triangle
    properties (temperature and BRDF) defined in the
    ground_properties.rnsp file. The referenced BRDFs
    are listed in the ground_brdfs.rnsl file. The
    definition of acceleration structures cannot exceed
    512^3 and its voxels can be merged until their optical
    thickness is greater than 10. These structures are
    either reloaded from storage_cie.bin or built from
    scratch and stored in storage_cie.bin depending on
    whether that file exists or not. Finally, the calculated images are stored
    in the image_CIE_XYZ.ht file even if the file
    already exists (options -fo):
htrdr-planets -v -N \
              -i def=800x600:spp=64 \
              -s cie_xyz \
              -S lon=-45:lat=50:dst=1.5e8:radius=6.9e5:temp=5778 \
              -C pos=0,1.5e7,0:tgt=0,0,0:up=0,0,1:fov=70 \
              -g mesh=gas.smsh:ck=gas.sck:temp=gas.rngt \
              -a name=clouds\
:mesh=clouds_tetrahedra.smsh\
:radprop=clouds_properties.sars\
:phasefn=clouds_phase_functions.rnsf\
:phaseids=clouds_phase_function_ids.rnpfi \
              -a name=haze\
:mesh=haze_tetrahedra.smsh\
:radprop=haze_properties.sars\
:phasefn=haze_phase_functions.rnsf\
:phaseids=haze_phase_function_ids.rnpfi \
              -G name=namek\
:mesh=ground_triangles.smsh\
:prop=ground_properties.rnsp\
:brdf=ground_brdfs.rnsl \
              -b def=512:tau=10:storage=storage_cie.bin \
              -fo image_CIE_XYZ.ht
The next command line is the same as the previous one, except that
    it calculates an infrared image between 10,000 nm and
    20,000 nm (option -s). Note
    that the acceleration structure storage file is no longer the same
    (storage_lw.bin rather than
    storage_cie.bin). Indeed, the previous one records
    the acceleration structures for the spectral range of the CIE 1931 XYZ color
    space (i.e. between [380, 780] nm), while one wants to store/reload the
    acceleration structures for a spectral range between 10 and 20 microns. In
    any case, if the previous storage had been submitted, the command would have
    stopped with an error message, thus avoiding the use of the wrong
    acceleration structures:
htrdr-planets -v -N \
              -i def=800x600:spp=64 \
              -s lw=10000,20000 \
              -C pos=0,1.5e7,0:tgt=0,0,0:up=0,0,1:fov=70 \
              -g mesh=gas.smsh:ck=gas.sck:temp=gas.rngt \
              -a name=clouds\
:mesh=clouds_tetrahedra.smsh\
:radprop=clouds_properties.sars\
:phasefn=clouds_phase_functions.rnsf\
:phaseids=clouds_phase_function_ids.rnpfi \
              -a name=haze\
:mesh=haze_tetrahedra.smsh\
:radprop=haze_properties.sars\
:phasefn=haze_phase_functions.rnsf\
:phaseids=haze_phase_function_ids.rnpfi \
              -G name=namek\
:mesh=ground_triangles.smsh\
:prop=ground_properties.rnsp\
:brdf=ground_brdfs.rnsl \
              -b def=512:tau=10:storage=storage_lw.bin \
              -fo image_infrared.ht
SEE ALSO
htrdr-image(5), mrumtl(5), rngt(5), rnpfi(5), rnrl(5), rnsf(5), sars(5), sck(5), smsh(5)
STANDARDS
International Organization for Standardization / CIE, Colorimetry - Part 1: CIE standard colorimetric observers, ISO/CIE 11664-1:2019, June 2019.
OpenMP Architecture Review Board, OpenMP C and C++ Application Interface, March 2002, version 2.0.
Message Passing Interface Forum, MPI-2: Extensions to The Message-Passing Interface, July 1997.
HISTORY
htrdr‑planets has been developed as part
    of ANR-21-CE49-0020 RaD-net project.
| October 2, 2025 | UNIX |