commit ba6a41193f12ec42bc9732179959edb1e9bedeea
parent 0c15a04fd2ad60e1282ccb22c56fe0acb0acbd6f
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Tue, 19 May 2026 16:33:00 +0200
Merge branch 'release_0.10' into develop
Diffstat:
| M | README.md | | | 66 | +++++++++++++++++++++++++++++++++++++++++++++--------------------- |
| M | config.mk | | | 2 | +- |
2 files changed, 46 insertions(+), 22 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
diff --git a/config.mk b/config.mk
@@ -1,5 +1,5 @@
VERSION_MAJOR = 0
-VERSION_MINOR = 9
+VERSION_MINOR = 10
VERSION_PATCH = 0
VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)