development - CST-Modelling-Tools/fluxtracer GitHub Wiki

ABSTRACT

The light collection and concentration subsystem (LCCS) of any concentrating solar thermal (CST) system is composed of the surfaces that collect and concentrate the sunlight and of the input surfaces of the receivers, or receivers’ envelopes, where the light is concentrated. For all commercial CST technologies the LCCS is, together with the power block, the subsystem that has more influence in the overall performance and cost. Thus, its optimisation is critical to increase the cost-competitiveness of these systems. This optimisation requires, in many cases, the optimisation of the position, geometry and size of a very large number of solar collecting and concentrating surfaces as well as the optimisation of the shape and size of the input surfaces of the receivers where the sunlight is concentrated. Because a full optimisation requires the exploration of a configuration space with a very large number of dimensions, the traditional approach consist in making many initial assumptions to drastically reduce the number of dimensions of the configuration space to a handful, so that the optimisation can be carried out using conventional high-end workstations in a matter of hours.

However, to achieve relevant breakthroughs and to substantially increase the cost-competitiveness of CST systems a bolder approach is needed, where sophisticated design and analysis tools, engineered from the start to be used in High Performance Computering (HPC), will be combined with sophisticated optimisation strategies targeted to explore and find optimal solutions in very high dimensional configuration spaces.

The tool, called FluxTracer, is a post-processor for Monte Carlo ray tracing results which partitions the three-dimensional space in which the LCC subsystem under analysis is immersed into volumetric pixels (voxels) and computes the radiant energy flux that traverses each voxel as a function of time by post-processing the set of rays that a Monte Carlo ray tracer generates during the simulation of the optical behaviour of the LCCS. FluxTracer integrates the power density in every voxel over time, providing detailed information on how the radiant energy flows in space in a given LCCS and in a given period of time.

APPROACH

Researchers at both the Energy Division of CYI and the Solar Thermal Group of ANU are fully convinced that groups should openly share the software they develop and allow others full access to the source code so that they can further enhance it, identify and correct errors in the code, and contribute to its further development. Both organisations are committed to contributing to unleash the creativity of the CST research community and the public at large by

developing advanced computer tools for the analysis and design of LCC subsystems of CST solar tower systems, and making them fully open source and available to anyone interested in using and / or improving them. Because of their above shared belief, CYI and ANU have agreed to make and treat FluxTracer from the start as a fully-fledged C++ open source program. A conscious effort is being made to minimize the program’s dependencies on external libraries. This is expected to facilitate the set-up of the programming environment needed to contribute to the development of the program and, therefore, to facilitate contributions to the program from the CST research community and the public at large. The goal is that FluxTracer as well as the rest of advanced computer tools that CYI and ANU are developing to assist in the analysis, design and optimization of CST systems will not be the property of any individual or institution but the common property of the CST research community as a whole.

Currently, FluxTracer is being developed in two 'flavours':

FluxTracerCPP17, based solely on the C++ 2017 standard with no dependencies on external third party libraries, FluxTracerQt5, based on the C++ 2011 standard and heavily dependent on the Qt 5.11 library Both of these FluxTracer flavors are console programs and should provide the same functionality. However, currently, FluxTracerQt5, has implemented more functionality than FluxTracerCPP17. Because of this, it is the program's flavour that has been run to produce all the results presented on this article.

The reason to develop the program in two different flavours is that each approach has advantages and disadvantages; it is not clear, a priori, which flavour will deliver better performance when used in HPC environments, and which one will be easier to maintain for easier for community contribution. The advantage of FluxTracerCPP17 is that it does not depend on third party libraries, only on the pure C++ computer language. To achieve this elegantly, the latest version of the C++ Language, C++ 2017, was chosen, but this was found to be rather problematic, due to still rather limited support for the C++ 2017 standard in available compilers.

In both flavors, FluxTracer is targeted to run on the CyI and ANU HPC facilities, or any other similar facility. The initial test of FluxTracer is being performed at the CyI HPC facility, 'CyTera'. This facility consists of 116 nodes, each with 12 cores and 48 GB of memory. Each node has two hexacore sockets with Intel Westmere X5650 processors, each having 12MB Cache, a speed of 2.66 GHz, and an Intel QPI bus with a speed of 6.40GT/s.

Currently, FluxTracer runs on the mentioned HPC cluster using a bash script. The script creates and runs instances of the program in as many nodes as requested by the user or allowed by the system. It is envisioned, however, that future versions of the program will run in a less embarrassingly parallel mode and will make use of Open MPI to implement more advanced and efficient parallelization.