solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

commit e647eadd4e499dcc272e4e16243b6f04e5ce3096
parent 0c15a04fd2ad60e1282ccb22c56fe0acb0acbd6f
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Tue, 19 May 2026 16:23:41 +0200

Add the Release notes for release 0.10

Diffstat:
MREADME.md | 66+++++++++++++++++++++++++++++++++++++++++++++---------------------
1 file changed, 45 insertions(+), 21 deletions(-)

diff --git a/README.md b/README.md @@ -1,17 +1,22 @@ # Solstice Solver The purpose of this library is to integrate the solar flux in complex solar -facilities. It has been developed in the scope of the Solstice project, in -collaboration with the -[Laboratory of Excellence Solstice](http://www.labex-solstice.fr) and the -[PROMES](http://www.promes.cnrs.fr/index.php?page=home-en) laboratory of the -National Center for Scientific Research ([CNRS](http://www.cnrs.fr/index.php)). +facilities. It was developed as part of the +[Solstice](https://gitlab.com/meso-star/solstice) project, in collaboration with +the [Laboratory of Excellence Solstice](http://www.labex-solstice.fr) and the +[PROMES](http://www.promes.cnrs.fr/) laboratory of the National Center for +Scientific Research ([CNRS](http://www.cnrs.fr)). Starting in 2026, a new +development effort founded by [Ademe](https://www.ademe.fr/) is ongoing. ## How to build -The Solstice-Solver library relies on the [CMake](http://www.cmake.org) and the -[RCMake](https://gitlab.com/vaplv/rcmake/) package to build. -It also depends on the +This library, as part of the Solstice app, can be built on any POSIX system. + +Note that you will most likely want to build the entire Solstice app rather than +this library alone. If so, a good starting point is the +[start-build](https://gitlab.com/meso-star/star-build) build system. + +The Solstice-Solver library depends on the [RSys](https://gitlab.com/vaplv/rsys/), [Star-3D](https://gitlab.com/meso-star/star-3d/), [Star-3DUT](https://gitlab.com/meso-star/star-3dut), @@ -21,20 +26,39 @@ It also depends on the [OpenMP](http://www.openmp.org) 1.2 specification to parallelize its computations. -First ensure that CMake and a compiler that implements the OpenMP 1.2 -specification are installed on your system. Then install the RCMake package as -well as all the aforementioned prerequisites. Finally generate the project from -the `cmake/CMakeLists.txt` file by appending to the `CMAKE_PREFIX_PATH` -variable the install directories of its dependencies. +First ensure that the make utility and a compiler that implements the OpenMP 1.2 +specification are installed on your system. Then install the above +prerequisites. Finally, edit the config.mk file to meet your needs and build +the project by running: + + make clean install ## Release notes +### Version 0.10 + +Replace CMake with a POSIX Makefile + +The build procedure is now written in POSIX make and can be configured via +the config.mk file. A pkg-config file is also provided to link the +library as an external dependency. + +Compared to the CMake alternative, this Makefile adds support for static +libraries and an uninstall target. It also enables compiler and linker +flags for various hardening features, improving the security and +robustness of generated binaries. More broadly, the motivation for this +rewrite is to rely on a well-established standard with a simple feature +set, available on all UNIX systems - reducing portability concerns and +maintenance burden while remaining significantly lighter. + +Also raise the minimum required version of dependencies. + ### Version 0.9 - Fix self-intersection on meshed mirrors. -- Sets the required version of Star-SampPling to 0.12. This version fixes +- Raise the minimum required Star-SampPling to 0.12. This version fixes compilation errors with gcc 11 but introduces API breaks. -- Sets the required version of Star-3D to 0.8. +- Raise the minimum required Star-3D to 0.8. - Fix compilation warnings detected by gcc 11. ### Version 0.8 @@ -76,7 +100,7 @@ Fix the creation of a glossy BSDF that uses a pillbox microfacet distribution. must be taken into account in the bounces of the optical paths only, not in the energy computations. - Fix the distribution of the pillbox sun: the pdf was wrong. -- Fix the `ssol_sun_pillbox_aperture` function and rename it in +- Fix the `ssol_sun_pillbox_aperture` function and rename it to `ssol_sun_pillbox_set_theta_max`. The submitted parameter, i.e. `theta_max`, is the angular radius but was treated as the angular diameter. - Update the `ssol_solve` API: add a parameter that controls the number of @@ -84,15 +108,15 @@ Fix the creation of a glossy BSDF that uses a pillbox microfacet distribution. ### Version 0.5 -- Improve the performances up to 50% by optimising the allocation of the BSDF - during the optical paths. Performance gains are mainly observed in situations +- Improve performance by up to 50% by optimizing the allocation of the BSDF + along the optical paths. Performance gains are mainly observed in situations where the optical paths are deep, i.e. when they bounce on many surfaces. ### Version 0.4.2 - Energy conservation property might not be ensured when the optical paths were fully absorbed. -- Handle infinite optical paths, i.e. paths that bounces infinitely due to the +- Handle infinite optical paths, i.e. paths that bounce infinitely due to the material properties and/or numerical inaccuracies. Use a Russian roulette to stop the optical random walk without bias. @@ -113,8 +137,8 @@ Fix the creation of a glossy BSDF that uses a pillbox microfacet distribution. ### Version 0.3 - Full rewrite of the estimated values. The global results report the cosine - factor, and the overall flux that is: absorbed by the receivers, atmosphere - or others entities; occluded before it reaches a primary entity; missed + factor, and the overall flux that is: absorbed by the receivers, atmosphere, + or other entities; occluded before it reaches a primary entity; missed because it does not reaches any surface. The per receiver results include the incoming/absorbed flux in 3 situations: all phenomenons are taken into account; the atmosphere is disabled; the material propagate the whole