The SOLSTICE SOFTWARE is an executable producing flux maps (and other data in ascii) based on input files (.yaml) defining the geometry (e.g. reflecting, refracting parametric surfaces or Computer Assisted Design, CAD, geometry in STL format).

Its fast computation capability (Intel library Embree, and parallelization) allows researchers and engineers to design solar concentrating systems.

Inserting CAD geometries for critical components in SOLSTICE simulations enables thermomechanical stress and Computational Fluid Dynamics (CFD) couplings to be performed on representative geometries.

The main objectives of the SOLSTICE SOFTWARE are to predict the concentrated solar flux distributions in solar facilities:

  • To simulate all types of concentrating optics (reflecting or refracting materials).

  • To design and to study reflectors and receivers by

    • Computing the optical efficiency of any single or groups of reflectors

    • Computing the flux map on any surfaces (reflecting, absorbing, refracting or virtual)

      • for the optimization of receiver geometry (CAD geometry) by combining heat and CFD analysis,

      • for thermomechanical stress studies.

  • To optimize the aiming strategy in solar tower facilities.

  • To characterize the heliostat canting errors.

  • To compute Incidence Angle Modifiers from any linear concentrating system.

Commissioners and developers

The capabilities of the SOLSTICE SOFTWARE were designed from the needs of the PROMES-CNRS research laboratory.

Meso-Star SAS was chosen as the developer of the SOLSTICE SOFTWARE.

The SOLSTICE SOFTWARE was funded by the French "Investments for the future" program managed by the National Agency for Research under contract ANR-10-LABX-22-01-SOLSTICE (LABEX SOLSTICE).


The SOLSTICE SOFTWARE is an Open Source and Free GPL GNU License program.

It is running on Windows and GNU/Linux operating systems (dedicated download files are available).

The executable “solstice” is a command-line tool that requires defining few options and input files to produce output files. This command line could be used alone in a Terminal/command Prompt or inside any program by using a system command enabling to run the executable “solstice”. For example, a program designed to optimize a heliostat field would change the location of each heliostat, run “solstice”, post-process the output and iterate again with new heliostat locations.

To obtain a cutting-edge ray-tracing computation, and have fully Open Source Software, the algorithm used results from research (PROMES, LAPLACE, RAPSODEE laboratories scientific articles [1-3]), and the Embreelibrary from INTEL was used. In addition, The SOLSTICE SOFTWARE is fully parallelizable in shared-memory architecture.

INPUT files are necessary to describe the scene useful to the computation of flux maps and contain all the material properties and surface geometry (including paths for the STL geometry) written thanks to a dedicated language (see documentation) in a YAML format. These input files could be written and modified manually but they could be produced by any program: e.g., when large input files should be created depending on large data size, a program (C, Python, Matlab, Scilab, Fortran, Java, etc.) is useful to print the ascii input file in YAML.

OUTPUT files are generated depending on the options defined with the command “solstice” and include the flux maps, ray paths and the geometry that could be visualized in Paraview (Open Source and Free Software).

[1] J. Delatorre, G. Baud, J.J. Bézian, S. Blanco, C. Caliot, J.F. Cornet, C. Coustet, J. Dauchet, M. El Hafi, V. Eymet, R. Fournier, J. Gautrais, O. Gourmel, D. Joseph, N. Meilhac, A. Pajot, M. Paulin, P. Perez, B. Piaud, M. Roger, J. Rolland, F. Veynandt, S. Weitz, Monte Carlo advances and concentrated solar applications, Solar Energy, 103, 2014, p. 653-681,

[2] B. Piaud , C. Coustet , C. Caliot , E. Guillot , G. Flamant, Application of Monte-Carlo sensitivities estimation in Solfast-4D, SolarPaces Conference 2012, Marrakech, Marocco, 2012, p 1-9.

[3] J P Roccia, B Piaud, C Coustet, C Caliot, E Guillot, G Flamant, J Delatorre, SOLFAST, a Ray-Tracing Monte-Carlo software for solar concentrating facilities. Journal of Physics: Conference Series, 369, 012029, 2012.

[4] C. Caliot, H. Benoit, E. Guillot, J.-L. Sans, A. Ferriere, G. Flamant, C. Coustet, B. Piaud. Validation of a Monte Carlo Integral Formulation Applied to Solar Facility Simulations and Use of Sensitivities. ASME. Journal of Solar Energy Engineering 2015; 137(2): 021019-021019-8. doi:10.1115/1.4029692.


  • Download the latest version of SOLSTICE (Windows version)

Note that you don’t need to install an executable, only download and save the zip-files.

  • Extract the files from with any archiver software (X.X is the versions numbers). Then find the folder “bin” and open it. Copy the address of this directory and add it to the Path environment variable of your computer:

1 : View of the window for the "add to path" step

To check if the solstice command is added to the Path and could be called from any directory, open a new command prompt, enter the command “solstice -h” and check the following output is obtained:

2: Helping window of solstice in VS prompt

Next, additional free tools are needed to visualize the SOLSTICE outputs and compile C files:

Be careful to download all the modules to compile C programs.

  • Run “developer prompt” of Visual Studio “as an administrator”.

To check if the C compilator is OK, enter the command “cl “ in the developer prompt:

3: command to check the good installation of C compilator in VS

If it’s different please check the installation of C and C++ compiler of Visual Studio.

First EXECUTION of Solstice Software

  • Run Solstice to create result files

    • Download the files (.yaml) and save them in a directory. Unzip the files in a Directory named “MICROSOLR”. Download the files for the post-processing of Solstice ( Additional resources page, and download the Sources tarball in the Post-Processes section), extract all the files and save them in the same directory as the .yaml previous files (solmaps.c, solpp.c, solpp.h, solpaths.c, solppraw.c, Makefile is for Linux OS).

    • Open the READ-ME.txt file. Copy it and save it as ‘run.bat’ in the MICROSOLR directory, this will be the list of command to obtain all the results of this tutorial.

    • Open your C compiler VS2017 (Run as administrator) Developer Command Prompt for VS 2017.

    • Change directory (“cd path_to_MICROSOLR” command) to the MICROSOLR directory where the .bat, .yaml and post-processing (*.c) files are located.

    • Enter “run” in the Developer Command Prompt for VS 2017 and hit Enter.

    • The following results should be displayed:

    4: View of the developer prompt when you execute the .bat file

    • Please check that 7 files were created: 270-40-miscellaneaous.obj, 270-40-primaries.vtk, 270-40-receivers.vtk, 270-40-raw-results, solpp.obj, solppraw.obj, solpaths.obj.

    Visualization of the results using Paraview

    • Run Paraview

    • Open the .vtk (270-40-primaries.vtk , 270-40-receivers.vtk) and miscellaneous.obj files that Solstice has created (“File/Open/…”)

    5 : Paraview visualization of the results

    • Click Apply in the Properties panel

    • To see the absorber, select the “miscellaneous.obj” and reduce the opacity. It’s also possible to select the receiver and change the type of visualization (coloring, change “solid color” and select the desired visualization).

    : Visualization of the “FRONT_ABSORBED_map” on the receiver

Study of a Fresnel mirror system for CSP with Solstice software

Fresnel system and geometry

The Fresnel system parameters and the geometry are obtained from the following article: G. Zhu, New adaptive method to optimize the secondary reflector of linear Fresnel collectors, Solar Energy, 144, p117-126, 2017.

This article was chosen because the Fresnel mirrors are flat with a small width. All parameters used are included in Table 1 of the article. However, in the proposed configuration, we define arbitrarily a secondary concentrator that is not optimized and that is not the one depicted in the article of G. Zhu. The purpose was only to show a way to include a secondary concentrator in Solstice software.

A zip file containing all the necessary files to obtain the results given below should be downloaded here.

Features of this example

Compared to the parabolic trough system (MICROSOLR) given as an example in the tutorial “First execution of Solstice Software”,several novelties are introduced:

  • The .yaml files are generated using a C program. It is important to note that any programming language may be used, we choose C because the post-processing of Solstice is in C. In addition, a program is convenient to write the yaml files because generating many entities by hands is laborious. It also allows the user to change easily the parameters of the installation (number of modules, lines, etc.).

  • The model uses spectral quantities (DNI and mirror reflectivity).

  • The extremities of the cylindrical glass envelope surrounding the absorber tube were modified. Because the cylinder geometry includes a disk at both extremities, when the inner and outer cylindrical interfaces are defined the inner cylinder should have a smaller length. Otherwise, the disks at the ends of the inner and outer cylinders would be superimposed and Solstice would not be able to identify correctly the interface: an error message (“inconsistent medium description”) will be displayed at the execution.

  • At those cylinders ends, dampers are inserted to include a sealing component of the absorber tubes.

Figure 1: Damper schematic (dimensions are in meters) imported as an .stl file in Solstice software


Steps to run the Fresnel example

Once the basic “Installation” of Solstice and the first tutorial “First execution of Solstice Softwareare done with success, you are ready to run this example.

  1. Download the files containing the C program, the STL geometry and the post-process files.
  2. Unzip those file to a directory called “FRESNEL_SYSTEM”.
  3. Edit and save the READ_ME file to “run.bat”.
  4. Open a VS window (as administrator), change directory to “FRESNEL_SYSTEM” and type “run.bat” then hit Enter.

Visualization on Paraview

  • Run Paraview; Open all the .vtk and miscellaneous.obj files that solstice generated in the working directory.
  • Click Apply. The following results should be displayed:

  • To see the absorber, select the“miscellaneous.obj”and reduce the opacity. It is also possible to select the receiver and change the quantity to visualize (coloring, change “solid color” and select the desired variable).

Study of heliostat field in solar tower CSP technology with Solstice software

Heliostat field around a solar tower

In this example of Solstice software utilization in CSP (Concentrated Solar Power), the solar tower technology is addressed and the simulation of heliostat fields more specifically. A zip file containing all the necessary files to obtain the results given below should be downloaded here.

To create heliostat fields, different algorithms were used:

  • The MUEEN algorithm was implemented based on the article from Siala and Elayeb (2001) [1].

  • The phyllotaxis spiral arrangement was obtained following the expression used in Noone et al. (2012).

  • For the radial staggered and the corn field arrangement of heliostat positions, in-house routines were used.

It is worth mentioning that the codes are delivered “AS IS” and no warranty applies with their uses or performances. All these algorithms are given in the Matlab language which is commercial software. But to run them and produce the file of the heliostat positions, the OCTAVE free software may be used. This software should be installed (if you don’t have Matlab software) to read and execute “.m” files. Anyway, the files containing the heliostat positions are given for a specific configuration of about 400 heliostats.

[1] F. M. F. Siala and M. E. Elayeb, Mathematical formulation of a graphical method for a no-blocking heliostat field layout, Renewable Energy, 23, 2001, p. 77-92.

[2] C. J. Noone, M. Torrilhon, A. Mitsos, Heliostat field optimization: A new computationally efficient model and biomimetic layout, Solar Energy, vol. 86, 2012, p. 792-803.


Matlab files generating the heliostat fields

A main Matlab program calls four functions to produce four heliostat fields:

  • The main matlab program is named “heliostat_field_creation.m”.
  • The function “mueen_fun.m” writes the file “MUEEN_Hgrid.dat” containing the X, Y, Z coordinates of the heliostat center.
  • The function “radial_staggered_fun.m” writes the file “RADSTAG_Hgrid.dat”.
  • The function “corn_field_fun.m” writes the file “CORN_Hgrid.dat”.
  • The function “phyllotaxis_fun.m” writes the file “BIOMIM_Hgrid.dat”.

Polar or annular heliostat fields may be created based on the PSImax parameter. The following pictures are displayed for a field with about 400 heliostats:

Figure 1. Plots of the heliostat fields obtained with different algorithms: a) MUEEN; b) Radial staggered; c) Phyllotaxis; d) Corn.

C files to produce the input YAML and the receiver YAML

The two .yaml files used by solstice are created by a C program that help creating many templates and entities of heliostats based on their features and positions.

The receiver was chosen cylindrical for circular fields and four aiming points were given to four groups of heliostats. The focal of each heliostat was calculated using its position (x, y, z) read from the data file and an aiming point (Fig. 2) was given to each heliostat depending on which quadrant it belongs.

Figure 2. Aiming points for each heliostat group belonging to a quadrant

To change the shape of a field, in Matlab main program (heliostat_field_creation.m), PSImax (Pi corresponds to a circular field), Rmax and Rmin may be changed.

At the beginning of the C program, there is a section called “Extract and record the heliostats positions data“, where the data file is opened and used. To modify the name of the input data file, it’s necessary to change the name of the files twice (variables “file” and “fichier”):

After running Matlab main program and Solstice (using the READ_ME file converted in run.bat), .vtk, .txt and .obj files should have been created.

Visualization on Paraview

  • Run Paraview. File/open/ …. Open all the .vtk and miscellaneous.obj files that solstice generated in the working directory.
  • The results obtained depend on the field used.

The following results are obtained using all the algorithms, changing the coloring of the receiver from solid color to FRONT_INCOMING_MAP and the primaries from solid color to cos_factor.

Radial staggered






Corn field