solstice

Compute collected power and efficiencies of a solar plant
git clone git://git.meso-star.com/solstice.git
Log | Files | Refs | README | LICENSE

commit 8505c8c0125a11b742ae22bc89fe429f46c69e2b
parent 746e2dd93b79c1332d112e4898a807eb5f99f5b2
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 22 May 2017 18:40:15 +0200

Convert the solstice-output man from ronn to asciidoc

Diffstat:
Mcmake/doc/CMakeLists.txt | 3++-
Ddoc/solstice-output.5.ronn | 449-------------------------------------------------------------------------------
Adoc/solstice-output.5.txt | 470+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 472 insertions(+), 450 deletions(-)

diff --git a/cmake/doc/CMakeLists.txt b/cmake/doc/CMakeLists.txt @@ -40,7 +40,8 @@ endif() # Copy doc files ################################################################################ set(MAN_NAMES - solstice-input.5) + solstice-input.5 + solstice-output.5) if(A2X OR ASCIIDOC) set(MAN_FILES) diff --git a/doc/solstice-output.5.ronn b/doc/solstice-output.5.ronn @@ -1,449 +0,0 @@ -solstice-output(5) -- output format of `solstice`(1) results -============================================================ - -## DESCRIPTION - -The `solstice-output` describes the output format of the `solstice`(1) program. -All the data generated by a `solstice`(1) invocation are written in a single -file or on the standard output whether an _output_ file is defined through the -`-o` option or not, respectively. Note that submitting several sun directions -to `solstice`(1), through the `-D` option, will produce as many outputs as sun -directions. In other words, invoking `solstice`(1) with N several sun -directions looks like calling `solstice`(1) N times and concatenating their -associated output. - -The type of the data that are generated depends on the mode in which -`solstice`(1) is invoked. By default, `solstice`(1) evaluates the power -collected by the submitted solar plant. When invoked with the `-g` option, -`solstice`(1) converts the solar plant geometries in a list of CAO files. The -`-p` option is used to track the sampled radiative paths while, finally, the -`-r` option allows to render an image of the solar facility. - -## GRAMMAR - -The output values are mainly ASCII data formatted line by line. By convention, -in the following grammar the line data are listed between quote marks. The -grammar may use new lines for formatting constraints, but data are actually on -the same line while a closed quote mark is not defined. - - <output> ::= <simulation-output> - | <dump-geometry-output> # -g option - | <dump-radiative-paths-output> # -p option - | <rendering-output> # -r option - - <simulation-output> ::= <sun-direction> - <counts> - <global> - [ <receivers-list> ] - [ <primaries-list> ] - [ <rcvXprims-list> ] - [ <receiver-maps> ] - [ <simulation-output> ... ] - - <dump-geometry-output> - ::= <sun-direction> - <geometry-data> - [ <dump-geometry-output> ... ] - - <dump-radiative-paths-output> - ::= <sun-direction> - VTK-RADIATIVE-PATHS - [ <dump-radiative-paths-output> ... ] - - <rendering-output> ::= <sun-direction> - PPM-FILE # ASCII PPM with 8-bits per component [1] - [ <rendering-output> ... ] - - ---------------------------------------- - - <sun-direction> ::= "#--- Sun direction: <azimuth> <elevation> (<real3>)" - - <counts> ::= "<#globals> <#receivers> <#primaries> - <#samples> <#failed>" - - <#globals> ::= 7 - <#receivers> ::= INTEGER # in [0, INF) - <#primaries> ::= INTEGER # in [0, INF) - <#samples> ::= INTEGER # in [0, INF) - <#failed> ::= INTEGER # in [0, INF) - - <global> ::= <potential-irradiance> - <absorbed-irradiance> - <cos-factor> - <shadow-loss> - <missing-loss> - <reflectivity-loss> - <absorptivity-loss> - - ---------------------------------------- - - <receivers-list> ::= <receiver> - [ <receiver> ... ] - - <receiver> ::= "<receiver-name> <receiver-id> <area> - <front> <back>" - - <receiver-name> ::= <entity-identifier> - - <receiver-id> ::= INTEGER - - <front> ::= <side> - <back> ::= <side> - - <side> ::= "<absorbed-irradiance> <irradiance> - <reflectivity-loss> <absorptivity-loss> - <efficiency>" - - ---------------------------------------- - - <primaries-list> ::= <primary> - [ <primary> ... ] - - <primary> ::= "<primary-name> <primary-id> <area> <#samples> - <cos-factor> <shadow-loss>" - - <primary-name> ::= <entity-identifier> - - <primary-id> ::= INTEGER - - ---------------------------------------- - - <rcvXprims-list> ::= <rcvXprim> - [ <rcvXprim> ... ] - - <rcvXprim> ::= "<receiver-id> <primary-id> - <rcvXprim-front> <rcvXprim-back>" - - <rcvXprim-front> ::= <rcvXprim-side> - <rcvXprim-back> ::= <rcvXprim-side> - - <rcvXprim-side> ::= "<absorbed-irradiance> <irradiance> - <reflectivity-loss> <absorptivity-loss>" - - ---------------------------------------- - - <receiver-maps> ::= VTK-RECEIVER-MAP - [ <receiver-maps> ... ] - - <geometry-data> ::= OBJ-FILE - [ --- - <geometry-data> ... ] - - ---------------------------------------- - - <area> ::= REAL # in ]0, INF) - - <real3> ::= REAL REAL REAL - - <azimuth> ::= REAL # Degrees in [0, 360[ - <elevation> ::= REAL # Degrees in [0, 90] - - <potential-irradiance>::= <estimate> - <absorbed-irradiance> ::= <estimate> - <absorptivity-loss> ::= <estimate> - <cos-factor> ::= <estimate> - <irradiance> ::= <estimate> - <missing-loss> ::= <estimate> - <reflectivity-loss> ::= <estimate> - <shadow-loss> ::= <estimate> - - <estimate> ::= <expected-value> <standard-error> - <expected-value> ::= REAL - <standard-error> ::= REAL # in [0, INF) - - <entity-identifier> # Defined in solstice-input(1) - -## SIMULATION - -A `simulation-output` begins with two header lines. The first one reports the -sun direction used in the simulation (azimuth and elevation angles, in -degrees), and the second one lists the numbers of global, per receiver and per -primary results as well as the overall number of Monte-Carlo experiments used -by the simulation and the number of experiments that failed due to unforeseen -errors as numerical imprecisions. - -### Global results - -After the 2 header lines, the output includes various global-result lines, the -exact number of lines being part of the headers. Currently this number is 7. -Each global result is a pair of real numbers: the estimate of the value and -its standard deviation. The global results are, in this order: - -* `potential irradiance`: the maximum irradiance that all the primary - geometries could intercept if properly oriented, -* `absorbed irradiance`: the absorbed part of the irradiance hitting any - receiver geometry. At most equal to potential irradiance, -* `cos factor`: the fraction of incoming irradiance not intercepted by the - primary geometries due to their orientation, -* `shadow loss`: the irradiance lost before hitting primary geometries due to - another geometry's shadow, -* `missing loss`: the irradiance having hit primary geometries, but not - absorbed by a receiver; this irradiance could have been blocked along its - path, can have missed the receivers, or can have hit a receiver but without - being absorbed, -* `reflectivity loss`: the additional irradiance that could have been absorbed - by receivers if reflections had occured on materials with reflectivity 1.0, -* `absorptivity loss`: the irradiance that could have been absorbed by - receivers if atmospheric absorption had not been taken into account. - -### Per receiver results - -After the global results, the output includes various per-receiver result -lines, one line per receiver, the exact number of lines being part of the -headers. Each line contains: - -* `name`: the name of the receiver, from the input file, -* `ID`: an unique integer identifying the receiver, -* `area`: area of the receiver, -* `front absorbed irradiance`: the irradiance absorbed by the receiver's front - face, and its standard deviation (2 real numbers), -* `front irradiance`: the irradiance hitting the receiver's front face, and its - standard deviation (2 real numbers), -* `front reflectivity loss`: the irradiance that could have been absorbed by - the receiver's front face if reflections had occured on materials with - reflectivity 1.0, and its standard deviation (2 real numbers), -* `front absorptivity loss`: the irradiance that could have been absorbed by - the receiver's front face if atmospheric absorption had not been taken into - account, and its standard deviation (2 real numbers), -* `front efficiency`: the fraction of incoming irradiance absorbed by - the receiver's front face, and its standard deviation (2 real numbers), -* `back absorbed irradiance`: the irradiance absorbed by the receiver's back - face, and its standard deviation (2 real numbers), -* `back irradiance`: the irradiance hitting the receiver's back face, and its - standard deviation (2 real numbers), -* `back reflectivity loss`: the irradiance that could have been absorbed by - the receiver's back face if reflections had occured on materials with - reflectivity 1.0, and its standard deviation (2 real numbers), -* `back absorptivity loss`: the irradiance that could have been absorbed by - the receiver's back face if atmospheric absorption had not been taken into - account, and its standard deviation (2 real numbers), -* `back efficiency`: the fraction of incoming irradiance absorbed by - the receiver's back face, and its standard deviation (2 real numbers) - -Both front face and back face results are output, even if the receiver has only -a single receiving face. In this case, outputs relative to the non-receiving -face are meaningless (invalid -1 value). - -### Per primary results - -After the per-receiver results, the output includes various per-primary result -lines, one line per primary geometry, the exact number of lines being part of -the headers. Each line contains: - -* `name`: the name of the primary geometry, from the input file, -* `ID`: an unique integer identifying the primary geometry, -* `area`: area of the primary geometry, -* `sample count`: the number of Monte-Carlo experiments sampled on the primary - geometry, -* `cos factor`: the fraction of incoming irradiance not intercepted by the - primary geometry due to its orientation, and its standard deviation (2 real - numbers), -* `shadow loss`: the irradiance lost before hitting the primary geometry due to - another geometry's shadow, and its standard deviation (2 real numbers). - -### Per receiver and per primary results - -After the per-primary results, the output includes various result lines, each -describing the contribution of a primary geometry to a given receiver. The -total number of such lines is the number of receivers times the number of -primary geometries. Each line contains: - -* `receiver ID`: the ID of the involved receiver, -* `primary ID`: the ID of the involved primary geometry, -* `front absorbed irradiance`: the irradiance absorbed by the receiver's front - face coming from the primary geometry, and its standard deviation (2 real - numbers), -* `front irradiance`: the irradiance hitting the receiver's front face coming - from the primary geometry, and its standard deviation (2 real numbers), -* `front reflectivity loss`: the irradiance that could have been absorbed by - the receiver's front face coming from the primary geometry if reflections - had occured on materials with reflectivity 1.0, and its standard deviation (2 - real numbers), -* `front absorptivity loss`: the irradiance that could have been absorbed by - the receiver's front face coming from the primary geometry if atmospheric - absorption had not been taken into account, and its standard deviation (2 - real numbers), -* `back absorbed irradiance`: the irradiance absorbed by the receiver's back - face coming from the primary geometry, and its standard deviation (2 real - numbers), -* `back irradiance`: the irradiance hitting the receiver's back face coming - from the primary geometry, and its standard deviation (2 real numbers), -* `back reflectivity loss`: the irradiance that could have been absorbed by - the receiver's back face coming from the primary geometry if reflections - had occured on materials with reflectivity 1.0, and its standard deviation (2 - real numbers), -* `back absorptivity loss`: the irradiance that could have been absorbed by - the receiver's back face coming from the primary geometry if atmospheric - absorption had not been taken into account, and its standard deviation (2 - real numbers). - -Both front face and back face results are output, even if the receiver has only -a single receiving face. In this case, outputs relative to the non-receiving -face are meaningless (invalid -1 value). - -### Receiver map - -A receiver defined in the submitted `solstice-receiver`(5) file, can have a -per-primitive irradiance estimate if its `per_primitive` flag is active. In -this case, `solstice`(1) generates a `receiver-map` that is actually an ASCII -VTK file [2] that stores the triangular mesh of the receiver and, for each -triangle, the estimate of its associated irradiance. The "definition" of the -receiver map is thus controlled by the discretisation of the receiver's shape, -as described in the `solstice-input`(5) file. Note that to obtain a good -estimate of the per-triangle irradiance, one have to ensure that the number -of per-triangle experiments is sufficient regarding the targeted accuracy. -Since only a small fraction of the overall sampled radiative paths reach a -given triangle, the total number of experiments required through the `-n` -option of `solstice`(1) should be increased significantly, as 1 or 2 order of -magnitude. - -If only the front or the back side of the receiver is active, then only one set -of per triangle irradiance estimate is written. If the `side` attribute of -the receiver is set to `FRONT_AND_BACK`, the irradiance estimate for the -front facing triangles are written before to the estimate of the back facing -ones. The following grammar gives a brief description of the formatting of a -`VTK-RECEIVER-MAP`. Please refer to the VTK format specification [2] for more -informations on the VTK file format. - - - VTK-RECEIVER-MAP ::= # vtk DataFile Version 2.0 - <receiver-name> - ASCII - DATASET POLYDATA - POINTS <#vertices> float - <map-vertices> - POLYGONS <#triangles> <#triangles*4> - <map-triangles> - CELL_DATA <#triangles> - <map-triangle-data> - - <map-vertices> ::= <real3> - [ <real3> ... ] # up to <#vertices> - - <map-triangles> ::= 3 <triangle-indices> - [ 3 <triangle-indices> ... ] # up to <#triangles> - - <map-triangle-data> ::= <map-front-data> - | <map-back-data> - | <map-front-data> <map-back-data> - - <map-front-data> ::= <map-side-data> - <map-back-data> ::= <map-side-data> - - <map-side-data> ::= CELL_DATA <#triangles> - SCALARS <side-name> float 2 - LOOKUP_TABLE default - <irradiance> - [ <irradiance> ... ] - - <map-side-name> ::= Front_faces | Back_faces - - <#triangles> ::= INTEGER - <#vertices> ::= INTEGER - <triangle-indices> ::= INTEGER INTEGER INTEGER - -## DUMP GEOMETRY - -A `dump-geometry-output` is generated when `solstice`(1) is invoked with the -`-g` option. In this mode, for each submitted sun direction, `solstice`(1) -converts the geometry of the submitted `solstice-input`(5) file in triangular -meshes that are then written to the output with respect to the format provided -by the `format` parameter of the `-g` option. The only format currently -supported by `solstice`(1) is the Alias Wavefront OBJ [3] format. With no more -sub-option, `solstice`(1) will thus generate an OBJ file containing the whole - solar plant mesh. However, the `split` parameter of the `-g` option allows to -generate several OBJ files: one description is generated per `geometry` or per -`object`, as defined in the `solstice-input`(5) format, whether the `split` -sub-option is set to `geometry` or `object`. In this situation, each OBJ -description is followed by a line with 3 minus characters in order to identify -description boundaries. - -Independently of the `split` strategy, each `solstice-input`(1) geometry is an -OBJ group whose name is the `entity-identifier` of the entity in which it is -encapsulated. Finally, the `dump-geometry-output` uses the `usemtl` directive -of the OBJ format to associate to a mesh the name of its material type. The -following grammar succinctly describes the formatting of an `OBJ-FILE`. Please -refer to the OBJ format specification [3] for more informations on the OBJ file -format. - - OBJ-FILE ::= g <entity-identifier> - <obj-mesh> - [ <obj-mesh> ... ] - - <obj-mesh> ::= usemtl <material-type> - <obj-vertices> - <obj-faces> - - <obj-vertices> ::= v <real3> - [ v <real3> ... ] - - <obj-indices> ::= f <triangle-indices> - [ f <triangle-indices> ... ] - - -## DUMP RADIATIVE PATHS - -For each sun direction, the `dump-radiative-paths-output` lists the geometric -data of the radiative paths sampled during a simulation. Each path is colored -with respect to its trajectory: the path is blue or yellow whether it reaches -or not a receiver, respectively. A path can be red if its first segment, i.e. -the ray starting from the sun toward a primary geometry, is occluded by a non -virtual object. The following grammar describes the formatting of a -VTK-RADIATIVE-PATHS file. Refer to the VTK format specification [2] for more -informations on the VTK file format. - - VTK-RADIATIVE-PATHS ::= # vtk DataFile Version 2.0 - Radiative paths - ASCII - DATASET POLYDATA - POINTS <#vertices> float - <paths-vertices> - LINES <#paths> <#paths+#vertices> - <paths-lists> - CELL_DATA <#paths> - SCALAR Radiative_path_type float 1 - LOOKUP_TABLE path_type - <paths-type> - LOOKUP_TABLE path_type 3 - <color-occlude> - <color-success> - <color-missing> - - <paths-vertices> ::= <real3> - [ <real3> ... ] # up to <#vertices> - - <paths-lists> ::= <radiative-path> - [ <radiative-path> ... ] # up to <#path> - - <radiative-path> ::= <#path-segments> <path-vertex-id> ... - - <paths-type> ::= <color-id> - [ <color-id> ... ] # up to <#paths> - - <color-id> ::= 0.0 # occlude - | 0.5 # success - | 1.0 # missing - - <color-occlude> ::= 1.0 0.0 0.0 1.0 - <color-success> ::= 0.0 0.0 1.0 1.0 - <color-missing> ::= 1.0 1.0 0.0 1.0 - - <#paths> ::= INTEGER - <#path-segments> ::= INTEGER - <path-vertex-id> ::= INTEGER - -## NOTES - -* [1]: - Portable PixMap - <http://netpbm.sourceforge.net/doc/ppm.html> -* [2]: - VTK file format - - <http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf> -* [3]: - OBJ file format - - <http://www.martinreddy.net/gfx/3d/OBJ.spec> - -## SEE ALSO -`solstice`(1), -`solstice-input`(5), -`solstice-receiver`(5) diff --git a/doc/solstice-output.5.txt b/doc/solstice-output.5.txt @@ -0,0 +1,470 @@ +// Copyright (C) CNRS 2016-2017 +// +// This is free documentation: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This manual is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +:toc: + +solstice-output(5) +================== + +NAME +---- +solstice-output - output format of solstice(1) results + +DESCRIPTION +----------- +The *solstice-output* describes the output format of the *solstice*(1) program. +All the data generated by a *solstice*(1) invocation are written in a single +file or on the standard output whether an _output_ file is defined through the +*-o* option or not, respectively. Note that submitting several sun directions +to *solstice*(1), through the *-D* option, will produce as many outputs as sun +directions. In other words, invoking *solstice*(1) with N several sun +directions looks like calling *solstice*(1) N times and concatenating their +associated output. + +The type of the data that are generated depends on the mode in which +*solstice*(1) is invoked. By default, *solstice*(1) evaluates the power +collected by the submitted solar plant. When invoked with the *-g* option, +*solstice*(1) converts the solar plant geometries in a list of CAO files. The +*-p* option is used to track the sampled radiative paths while, finally, the +*-r* option allows to render an image of the solar facility. + +GRAMMAR +------- + +The output values are mainly ASCII data formatted line by line. By convention, +in the following grammar the line data are listed between quote marks. The +grammar may use new lines for formatting constraints, but data are actually on +the same line while a closed quote mark is not defined. + +[verse] +_______ +<output> ::= <simulation-output> + | <dump-geometry-output> # -g option + | <dump-radiative-paths-output> # -p option + | <rendering-output> # -r option + +<simulation-output> ::= <sun-direction> + <counts> + <global> + [ <receivers-list> ] + [ <primaries-list> ] + [ <rcvXprims-list> ] + [ <receiver-maps> ] + [ <simulation-output> ... ] + +<dump-geometry-output> + ::= <sun-direction> + <geometry-data> + [ <dump-geometry-output> ... ] + +<dump-radiative-paths-output> + ::= <sun-direction> + VTK-RADIATIVE-PATHS + [ <dump-radiative-paths-output> ... ] + +<rendering-output> ::= <sun-direction> + PPM-FILE # ASCII PPM with 8-bits per component [1] + [ <rendering-output> ... ] + +------------------------------------- + +<sun-direction> ::= "#--- Sun direction: <azimuth> <elevation> (<real3>)" + +<counts> ::= "<#globals> <#receivers> <#primaries> + <#samples> <#failed>" + +<#globals> ::= 7 +<#receivers> ::= INTEGER # in [0, INF) +<#primaries> ::= INTEGER # in [0, INF) +<#samples> ::= INTEGER # in [0, INF) +<#failed> ::= INTEGER # in [0, INF) + +<global> ::= <potential-irradiance> + <absorbed-irradiance> + <cos-factor> + <shadow-loss> + <missing-loss> + <reflectivity-loss> + <absorptivity-loss> + +------------------------------------- + +<receivers-list> ::= <receiver> + [ <receiver> ... ] + +<receiver> ::= "<receiver-name> <receiver-id> <area> + <front> <back>" + +<receiver-name> ::= <entity-identifier> + +<receiver-id> ::= INTEGER + +<front> ::= <side> +<back> ::= <side> + +<side> ::= "<absorbed-irradiance> <irradiance> + <reflectivity-loss> <absorptivity-loss> + <efficiency>" + +------------------------------------- + +<primaries-list> ::= <primary> + [ <primary> ... ] + +<primary> ::= "<primary-name> <primary-id> <area> <#samples> + <cos-factor> <shadow-loss>" + +<primary-name> ::= <entity-identifier> + +<primary-id> ::= INTEGER + +------------------------------------- + +<rcvXprims-list> ::= <rcvXprim> + [ <rcvXprim> ... ] + +<rcvXprim> ::= "<receiver-id> <primary-id> + <rcvXprim-front> <rcvXprim-back>" + +<rcvXprim-front> ::= <rcvXprim-side> +<rcvXprim-back> ::= <rcvXprim-side> + +<rcvXprim-side> ::= "<absorbed-irradiance> <irradiance> + <reflectivity-loss> <absorptivity-loss>" + +------------------------------------- + +<receiver-maps> ::= VTK-RECEIVER-MAP + [ <receiver-maps> ... ] + +<geometry-data> ::= OBJ-FILE + [ --- + <geometry-data> ... ] + +------------------------------------- + +<area> ::= REAL # in ]0, INF) + +<real3> ::= REAL REAL REAL + +<azimuth> ::= REAL # Degrees in [0, 360[ +<elevation> ::= REAL # Degrees in [0, 90] + +<potential-irradiance>::= <estimate> +<absorbed-irradiance> ::= <estimate> +<absorptivity-loss> ::= <estimate> +<cos-factor> ::= <estimate> +<irradiance> ::= <estimate> +<missing-loss> ::= <estimate> +<reflectivity-loss> ::= <estimate> +<shadow-loss> ::= <estimate> + +<estimate> ::= <expected-value> <standard-error> +<expected-value> ::= REAL +<standard-error> ::= REAL # in [0, INF) + +<entity-identifier> # Defined in *solstice-input*(1) +_______ + +SIMULATION +---------- + +A *simulation-output* begins with two header lines. The first one reports the +sun direction used in the simulation (azimuth and elevation angles, in +degrees), and the second one lists the numbers of global, per receiver and per +primary results as well as the overall number of Monte-Carlo experiments used +by the simulation and the number of experiments that failed due to unforeseen +errors as numerical imprecisions. + +Global results +~~~~~~~~~~~~~~ + +After the 2 header lines, the output includes various global-result lines, the +exact number of lines being part of the headers. Currently this number is 7. +Each global result is a pair of real numbers: the estimate of the value and +its standard deviation. The global results are, in this order: + +- *potential-irradiance*: the maximum irradiance that all the primary + geometries could intercept if properly oriented; +- *absorbed-irradiance*: the absorbed part of the irradiance hitting any + receiver geometry. At most equal to potential irradiance; +- *cos-factor*: the fraction of incoming irradiance not intercepted by the + primary geometries due to their orientation; +- *shadow-loss*: the irradiance lost before hitting primary geometries due to + another geometry's shadow; +- *missing-loss*: the irradiance having hit primary geometries, but not + absorbed by a receiver; this irradiance could have been blocked along its + path, can have missed the receivers, or can have hit a receiver but without + being absorbed; +- *reflectivity-loss*: the additional irradiance that could have been absorbed + by receivers if reflections had occured on materials with reflectivity 1.0; +- *absorptivity-loss*: the irradiance that could have been absorbed by + receivers if atmospheric absorption had not been taken into account. + +Per receiver results +~~~~~~~~~~~~~~~~~~~~ + +After the global results, the output includes various per-receiver result +lines, one line per receiver, the exact number of lines being part of the +headers. Each line contains: + +- *receiver-name*: the name of the receiver, from the input file; +- *receiver-id*: an unique integer identifying the receiver; +- *area*: area of the receiver; +- *front*: estimates for the receiver front side; +- *back*: estimates for the receiver back side. + +The *front* and *back* estimates are: + +- *absorbed-irradiance*: the irradiance absorbed by the receiver's side and + its standard deviation (2 real numbers); +- *irradiance*: the irradiance hitting the receiver's side, and its standard + deviation (2 real numbers); +- *reflectivity-loss*: the irradiance that could have been absorbed by + the receiver's side if reflections had occured on materials with + reflectivity 1.0, and its standard deviation (2 real numbers); +- *absorptivity-loss*: the irradiance that could have been absorbed by + the receiver's side if atmospheric absorption had not been taken into + account, and its standard deviation (2 real numbers); +- *efficiency*: the fraction of incoming irradiance absorbed by + the receiver's side, and its standard deviation (2 real numbers); + +Both front and back side results are output, even if the receiver has only a +single receiving side. In this case, outputs relative to the non-receiving +side are meaningless (invalid -1 value). + +Per primary results +~~~~~~~~~~~~~~~~~~~ + +After the per-receiver results, the output includes various per-primary result +lines, one line per primary geometry, the exact number of lines being part of +the headers. Each line contains: + +- *primary-name*: the name of the primary geometry, from the input file; +- *primary-id*: an unique integer identifying the primary geometry; +- *area*: area of the primary geometry; +- *#sample*: the number of Monte-Carlo experiments sampled on the primary + geometry; +- *cos-factor*: the fraction of incoming irradiance not intercepted by the + primary geometry due to its orientation, and its standard deviation (2 real + numbers); +- *shadow-loss*: the irradiance lost before hitting the primary geometry due to + another geometry's shadow, and its standard deviation (2 real numbers). + +Per receiver and per primary results +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +After the per-primary results, the output includes various result lines, each +describing the contribution of a primary geometry to a given receiver. The +total number of such lines is the number of receivers times the number of +primary geometries. Each line contains: + +- *receiver-id*: the ID of the involved receiver; +- *primary-id*: the ID of the involved primary geometry; +- *rcvXprim-front*: estimates for the receiver front side; +- *rcvXprim-back*: estimates for the receiver back side; + +The *rcvXprim-front* and *rcvXprim-back* estimates are: + +- *absorbed-irradiance*: the irradiance absorbed by the receiver's side coming + from the primary geometry, and its standard deviation (2 real numbers); +- *irradiance*: the irradiance hitting the receiver's side coming from the + primary geometry, and its standard deviation (2 real numbers); +- *reflectivity-loss*: the irradiance that could have been absorbed by the + receiver's side coming from the primary geometry if reflections had occured + on materials with reflectivity 1.0, and its standard deviation (2 real + numbers); +- *absorptivity-loss*: the irradiance that could have been absorbed by + the receiver's side coming from the primary geometry if atmospheric + absorption had not been taken into account, and its standard deviation (2 + real numbers). + +Both front face and back sides are output, even if the receiver has only a +single receiving side. In this case, outputs relative to the non-receiving +side are meaningless (invalid -1 value). + +Receiver map +~~~~~~~~~~~~ + +A receiver defined in the submitted *solstice-receiver*(5) file, can have a +per-primitive irradiance estimate if its *per_primitive* flag is active. In +this case, *solstice*(1) generates a *receiver-map* that is actually an ASCII +VTK file [2] that stores the triangular mesh of the receiver and, for each +triangle, the estimate of its associated irradiance. The "definition" of the +receiver map is thus controlled by the discretisation of the receiver's shape, +as described in the *solstice-input*(5) file. Note that to obtain a good +estimate of the per-triangle irradiance, one have to ensure that the number +of per-triangle experiments is sufficient regarding the targeted accuracy. +Since only a small fraction of the overall sampled radiative paths reach a +given triangle, the total number of experiments required through the *-n* +option of *solstice*(1) should be increased significantly, as 1 or 2 order of +magnitude. + +If only the front or the back side of the receiver is active, then only one set +of per triangle irradiance estimate is written. If the *side* attribute of +the receiver is set to *FRONT_AND_BACK*, the irradiance estimate for the +front facing triangles are written before to the estimate of the back facing +ones. The following grammar gives a brief description of the formatting of a +*VTK-RECEIVER-MAP*. Please refer to the VTK format specification [2] for more +informations on the VTK file format. + +[verse] +_______ +VTK-RECEIVER-MAP ::= # vtk DataFile Version 2.0 + <receiver-name> + ASCII + DATASET POLYDATA + POINTS <#vertices> float + <map-vertices> + POLYGONS <#triangles> <#triangles*4> + <map-triangles> + CELL_DATA <#triangles> + <map-triangle-data> + +<map-vertices> ::= <real3> + [ <real3> ... ] # up to <#vertices> + +<map-triangles> ::= 3 <triangle-indices> + [ 3 <triangle-indices> ... ] # up to <#triangles> + +<map-triangle-data> ::= <map-front-data> + | <map-back-data> + | <map-front-data> <map-back-data> + +<map-front-data> ::= <map-side-data> +<map-back-data> ::= <map-side-data> + +<map-side-data> ::= CELL_DATA <#triangles> + SCALARS <side-name> float 2 + LOOKUP_TABLE default + <irradiance> + [ <irradiance> ... ] + +<map-side-name> ::= Front_faces | Back_faces + +<#triangles> ::= INTEGER +<#vertices> ::= INTEGER +<triangle-indices> ::= INTEGER INTEGER INTEGER +_______ + +DUMP GEOMETRY +------------- + +A *dump-geometry-output* is generated when *solstice*(1) is invoked with the +*-g* option. In this mode, for each submitted sun direction, *solstice*(1) +converts the geometry of the submitted *solstice-input*(5) file in triangular +meshes that are then written to the output with respect to the format provided +by the *format* parameter of the *-g* option. The only format currently +supported by *solstice*(1) is the Alias Wavefront OBJ [3] format. With no more +sub-option, *solstice*(1) will thus generate an OBJ file containing the whole + solar plant mesh. However, the *split* parameter of the *-g* option allows to +generate several OBJ files: one description is generated per *geometry* or per +*object*, as defined in the *solstice-input*(5) format, whether the *split* +sub-option is set to *geometry* or *object*. In this situation, each OBJ +description is followed by a line with 3 minus characters in order to identify +description boundaries. + +Independently of the *split* strategy, each *solstice-input*(1) geometry is an +OBJ group whose name is the *entity-identifier* of the entity in which it is +encapsulated. Finally, the *dump-geometry-output* uses the *usemtl* directive +of the OBJ format to associate to a mesh the name of its material type. The +following grammar succinctly describes the formatting of an *OBJ-FILE*. Please +refer to the OBJ format specification [3] for more informations on the OBJ file +format. + +[verse] +_______ +OBJ-FILE ::= g <entity-identifier> + <obj-mesh> + [ <obj-mesh> ... ] + +<obj-mesh> ::= usemtl <material-type> + <obj-vertices> + <obj-faces> + +<obj-vertices> ::= v <real3> + [ v <real3> ... ] + +<obj-indices> ::= f <triangle-indices> + [ f <triangle-indices> ... ] +_______ + +DUMP RADIATIVE PATHS +-------------------- + +For each sun direction, the *dump-radiative-paths-output* lists the geometric +data of the radiative paths sampled during a simulation. Each path is colored +with respect to its trajectory: the path is blue or yellow whether it reaches +or not a receiver, respectively. A path can be red if its first segment, i.e. +the ray starting from the sun toward a primary geometry, is occluded by a non +virtual object. The following grammar describes the formatting of a +VTK-RADIATIVE-PATHS file. Refer to the VTK format specification [2] for more +informations on the VTK file format. + +[verse] +_______ +VTK-RADIATIVE-PATHS ::= # vtk DataFile Version 2.0 + Radiative paths + ASCII + DATASET POLYDATA + POINTS <#vertices> float + <paths-vertices> + LINES <#paths> <#paths+#vertices> + <paths-lists> + CELL_DATA <#paths> + SCALAR Radiative_path_type float 1 + LOOKUP_TABLE path_type + <paths-type> + LOOKUP_TABLE path_type 3 + <color-occlude> + <color-success> + <color-missing> + +<paths-vertices> ::= <real3> + [ <real3> ... ] # up to <#vertices> + +<paths-lists> ::= <radiative-path> + [ <radiative-path> ... ] # up to <#path> + +<radiative-path> ::= <#path-segments> <path-vertex-id> ... + +<paths-type> ::= <color-id> + [ <color-id> ... ] # up to <#paths> + +<color-id> ::= 0.0 # occlude + | 0.5 # success + | 1.0 # missing + +<color-occlude> ::= 1.0 0.0 0.0 1.0 +<color-success> ::= 0.0 0.0 1.0 1.0 +<color-missing> ::= 1.0 1.0 0.0 1.0 + +<#paths> ::= INTEGER +<#path-segments> ::= INTEGER +<path-vertex-id> ::= INTEGER +_______ + +NOTES +----- +1. Portable PixMap - <http://netpbm.sourceforge.net/doc/ppm.html> +2. VTK file format - + <http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf> +3. OBJ file format - + <http://www.martinreddy.net/gfx/3d/OBJ.spec> + +SEE ALSO +-------- +*solstice*(1), +*solstice-input*(5), +*solstice-receiver*(5)