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 c2c72bff3aa029fefdf2bc829f9915a2c104d8f7
parent 6feeb1d5e33c26191abb74f7f4e3b717f805917b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 19 May 2017 15:45:43 +0200

Convert the solstice CLI man page from ronn to asciidoc

Ronn seems quite deprecated; use the asciidoc format instead. Provide a
new build process based on the asciidoc tool suite to automatically
generate the TROFF and/or the HTML documentation from the asciidoc
files. Note that the solstice-input, solstice-output and
solstice-receiver man pages are not converted in asciidoc file, yet.

Diffstat:
Mcmake/CMakeLists.txt | 37+++----------------------------------
Acmake/doc/CMakeLists.txt | 84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adoc/solstice-man.css | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ddoc/solstice.1.ronn.in | 211-------------------------------------------------------------------------------
Adoc/solstice.1.txt.in | 234+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 399 insertions(+), 245 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -54,16 +54,10 @@ include_directories( ${Star3DUT_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) -find_program(RONN ronn) -if(NOT RONN) - message(WARNING - "The `ronn' program is missing. " - "The solstice documentation cannot be generated.") -endif() - ################################################################################ # Build subprojects ################################################################################ +add_subdirectory(doc) add_subdirectory(parser) add_subdirectory(receivers) @@ -81,33 +75,8 @@ set(SOLSTICE_ARGS_DEFAULT_IMG_SPP "1") configure_file(${SOLSTICE_SOURCE_DIR}/solstice_args.h.in ${CMAKE_CURRENT_BINARY_DIR}/solstice_args.h @ONLY) - -################################################################################ -# Generate the documentation -################################################################################ -if(RONN) - configure_file(${SOLSTICE_SOURCE_DIR}/../doc/solstice.1.ronn.in - ${CMAKE_CURRENT_BINARY_DIR}/solstice.1.ronn @ONLY) - - file(COPY - ${SOLSTICE_SOURCE_DIR}/../doc/solstice-input.5.ronn - ${SOLSTICE_SOURCE_DIR}/../doc/solstice-output.5.ronn - ${SOLSTICE_SOURCE_DIR}/../doc/solstice-receiver.5.ronn - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - - set(SOLSTICE_MAN_PAGES - solstice.1.ronn - solstice-input.5.ronn - solstice-output.5.ronn - solstice-receiver.5.ronn) - rcmake_prepend_path(SOLSTICE_MAN_PAGES ${CMAKE_CURRENT_BINARY_DIR}) - - if(${CMAKE_HOST_UNIX}) - execute_process(COMMAND ${RONN} --style=man,toc ${SOLSTICE_MAN_PAGES}) - else() - execute_process(COMMAND ${RONN} -5 --style=man,toc ${SOLSTICE_MAN_PAGES}) - endif() -endif() +configure_file(${SOLSTICE_SOURCE_DIR}/../doc/solstice.1.txt.in + ${CMAKE_CURRENT_BINARY_DIR}/doc/solstice.1.txt @ONLY) ################################################################################ # Configure and define targets diff --git a/cmake/doc/CMakeLists.txt b/cmake/doc/CMakeLists.txt @@ -0,0 +1,84 @@ +# Copyright (C) CNRS 2016-2017 +# +# This program is free software: 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 program 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/>. + +cmake_minimum_required(VERSION 2.8) + +################################################################################ +# Look for asciidoc and a2x programs +################################################################################ +find_program(ASCIIDOC asciidoc) +set(SOLSTICE_DOC_DIR ${PROJECT_SOURCE_DIR}/../doc) + +if(NOT ASCIIDOC) + message(WARNING + "The `asciidoc' program is missing. " + "The solstice HTML documentation cannot be generated.") +endif() + +if(CMAKE_HOST_UNIX) + find_program(A2X a2x) + if(NOT A2X) + message(WARNING + "The `a2x' program is missing. " + "The solstice man pages cannot be generated.") + endif() +endif() + +################################################################################ +# Generate the TROFF man pages +################################################################################ +set(MAN_TXT ${CMAKE_CURRENT_BINARY_DIR}/solstice.1.txt) + +if(A2X) + set(A2X_OPTS -dmanpage -fmanpage) + + set(MAN_FILES) + foreach(_txt IN LISTS MAN_TXT) + add_custom_command( + OUTPUT ${_txt}.troff + COMMAND ${A2X} ${A2X_OPTS} ${_txt} + DEPENDS ${_txt} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Build troff man page ${_txt}" + VERBATIM) + list(APPEND MAN_FILES ${_txt}.troff) + endforeach() + add_custom_target(man-troff ALL DEPENDS ${MAN_FILES}) +endif() + +################################################################################ +# Generate the HTML documentation +################################################################################ +if(ASCIIDOC) + set(ASCIIDOC_OPTS + -bxhtml11 + -dmanpage + --attribute themedir=${SOLSTICE_DOC_DIR} + --theme=solstice-man) + + set(MAN_FILES) + foreach(_txt IN LISTS MAN_TXT) + add_custom_command( + OUTPUT ${_txt}.html + COMMAND ${ASCIIDOC} ${ASCIIDOC_OPTS} ${_txt} + DEPENDS ${_txt} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Build HTML man page ${_txt}" + VERBATIM) + list(APPEND MAN_FILES ${_txt}.html) + endforeach() + add_custom_target(man-html ALL DEPENDS ${MAN_FILES}) +endif() + diff --git a/doc/solstice-man.css b/doc/solstice-man.css @@ -0,0 +1,78 @@ +/* Copyright (C) CNRS 2016-2017 + * + * This is free style sheet: 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 CSS 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/>. */ + +body.manpage { + font-family:monospace; + font-size:2ex; + text-align: justify; + max-width: 55em; + margin: 1em; +} + +body.manpage .monospaced, .literalblock { + margin: 2em; + color: #434241; +} + +body.manpage em { + color: #660000 +} + +body.manpage div.verseblock > pre.content { + font-family: inherit; +} + +body.manpage h1 { + padding-bottom: 0.5em; +} +body.manpage h2 { + border-style: none; +} +body.manpage div.sectionbody { + margin-left: 3em; +} + +body.manpage #footer { display: none; } + +body.manpage div#toctitle { display: none; } + +body.manpage div#toc { + display.block ! important; + position:fixed; + top:0; + left:60em; + height:100%; + width: 100%; + padding:3em 0 0 0; + border-left:1px solid #dbdbdb; + background: #eeeeee +} + +body.manpage div#toc a, div#toc a:link, div#toc a:visited { + display:block; + margin:0; + padding:0.33em 0.14em 0.33em 2em; + color:#999999; + text-decoration:none +} + +body.manpage div#toc a:hover { + color:#666666; +} + +@media print { + body.manpage div#toc { display: none; } +} + diff --git a/doc/solstice.1.ronn.in b/doc/solstice.1.ronn.in @@ -1,211 +0,0 @@ -solstice(1) -- compute the power collected by a concentrated solar plant -========================================================================= - -## SYNOPSIS - -`solstice` [_option_]... [_file_]<br> -`solstice` `-g` <_sub-option_[:...]> [_option_]... [_file_]<br> -`solstice` `-p` <_sub-option_[:...]> [_option_]... [_file_]<br> -`solstice` `-r` <_sub-option_[:...]> [_option_]... [_file_]<br> - -## DESCRIPTION - -`solstice` computes the total power collected by a concentrated solar plant, as -described in the `solstice-input`(5) _file_. If the _file_ argument is not -provided, the solar plant is read from standard input. To evaluate various -efficiencies for each primary reflector, it computes losses due to cosine -effect, shadowing and masking, orientation and surface irregularities, -reflectivity and atmospheric transmission. The efficiency for each one of these -effects is subsequently computed for each reflector. - -The entities on which computations must be performed are listed in the -`solstice-receiver`(5) file submitted through the `-R` option. The estimated -results follow the `solstice-output`(5) format and are written to the _output_ -file or to the standard output whether the `-o` _output_ option is defined or -not, respectively. Note that the `solstice`'s algorithm is based on the -Monte-Carlo method, which means that every result is provided with its -numerical accuracy. - -`solstice` is designed to efficiently handle complex solar facilities: several -reflectors can be specified (planes, conics, cylindro-parabolic, etc.) and -positioned in 3D space, with a possibility for 1-axis and 2-axis -auto-orientation. Multiple materials can be used, as long as the relevant -physical properties are provided. Spectral effects are also taken into account: -it is possible to define the spectral distribution of any physical property, -including the input solar spectrum and the transmissivity of the atmosphere, at -any spectral resolution. Refer to `solstice-input`(5) for more informations. - -In addition of the aforementioned computations, `solstice` provides three -other functionalities. The `-g` option can be used to convert the -`solstice-input`(5) geometries in CAO files. The `-p` option saves the sampled -radiative paths used by the estimations, allowing to visualise them externally -which may be a great help to identify a design issue. Finally, the `-r` option -is used to render an image of the submitted solar facility. Note that these -three options are mutually exclusives, and once defined, they replace the -default `solstice` behaviour. - -## OPTIONS - -* `-D` <_azimuth_,_elevation_[:...]>: - List of sun directions. A direction is defined by its _azimuthal_ and - _elevation_ angles in degrees, with _azimuth_ in [0, 360[ and _elevation_ in - [0, 90]. Each sun direction triggers a new computation whose results are - concatenated to the _output_ file. - -* `-f`: - Force overwrite of the _output_ file. - -* `-h`: - List short help and exit. - -* `-g` <_sub-option_:...>: - Generate the shape of the geometry defined in the submitted _file_ and store - it in _output_. Available sub-options are: - - `format=obj`<br> - Define the file format in which the meshes are stored. Currently, only the - Alias Wavefront OBJ file format is supported. - - `split=<geometry|object|none>`<br> - Define how the output mesh is split in sub meshes. A sub mesh can be - generated for each `geometry` or for each `object` as defined in the - `solstice-input`(5) file format. The `none` option means that only one - mesh is generated for the whole solar facility. By default, the `split` - option is set to `none`. - -* `-o` _output_: - Write results to _output_ with respect to the `solstice-output`(5) format. If - not defined, write results to standard output. - -* `-p` <_sub-option_:...>: - Register the sampled radiative paths for each sun direction and write them to - _output_. Available sub-options are: - - `default`<br> - Use default sub-options configuration. - - `irlen=`_length_<br> - Length of the radiative path segments going to the infinity. By default, it - is computed relatively to the scene size. - - `srlen=`_length_<br> - Length of the radiative path segments coming from the sun. By default, it is - computed relatively to the scene size. - -* `-q`: - Do not print the helper message when no _file_ is submitted. - -* `-n` _experiments-count_: - Number of Monte-Carlo experiments used to estimate the solar flux. By - default _experiments-count_ is set to @SOLSTICE_ARGS_DEFAULT_NREALISATIONS@. - -* `-r` <_sub-option_:...>: - Render an image of the scene through a pinhole camera, for each submitted - sun direction. Write the resulting images to _output_. Available sub-options - are: - - `fov=`_angle_<br> - Horizontal field of view of the camera in [30, 120] degrees. By default - _angle_ is @SOLSTICE_ARGS_DEFAULT_CAMERA_FOV@ degrees. - - `img=`_width_`x`_height_<br> - Definition of the rendered image in pixels. By default the image definition - is @SOLSTICE_ARGS_DEFAULT_IMG_WIDTH@x@SOLSTICE_ARGS_DEFAULT_IMG_HEIGHT@. - - `pos=`_x_`,`_y_`,`_z_<br> - Position of the camera. By default it is set to - {@SOLSTICE_ARGS_DEFAULT_CAMERA_POS@} or it is automatically computed to - ensure that the whole scene is visible, whether `tgt` is set or not, - respectively. - - `rmode=<draft|pt>`<br> - Rendering mode. In `draft` mode, images are computed by ray-casting; all - materials are lambertian, the sun is ignored and the only light source is - positioned at the camera position. In `pt` mode, the scene is rendered with - the un-biased path-tracing Monte-Carlo algorithm; the materials described in - the committed _file_ as well as the submitted sun directions are correctly - handled and an uniform skydome is added to simulate the diffuse infinite - lighting. By default `rmode` is set to `draft`. - - `spp=`_samples-count_<br> - Number of samples per pixel. If `rmode` is `draft`, the samples position into - a pixel are the same for all pixels. With `rmode=pt` the pixel samples are - generated independently for each pixel. By default, use 1 sample per pixel. - - `tgt=`_x_`,`_y_`,`_z_<br> - Position targeted by the camera. By default, it is set to - {@SOLSTICE_ARGS_DEFAULT_CAMERA_TGT@} or it is automatically computed to - ensure that the whole scene is visible, whether `pos` is set or not, - respectively. - - `up=`_x_`,`_y_`,`_z_<br> - Up vector of the camera. If `rmode` is `pt`, this vector also defines the - direction toward the top of the skydome. By default, `up` is set to - {@SOLSTICE_ARGS_DEFAULT_CAMERA_UP@}. - -* `-R` _receivers_: - `solstice-receiver`(5) file defining the scene receivers, i.e. the solar - plant entities for which `solstice` computes Monte-Carlo estimations. - - -## EXAMPLES - -Launch `solstice` estimations for two sun directions whose azimuthal and -elevation angles are {`45`,`70`} and {`50`,`75`}. The solar facility is -described in `input.yaml` and the receivers on which the integrations must be -performed are declared in the `rcvs.yaml` file. `10000` experiments are used -by the Monte-Carlo estimations and the results are written to `output` even -though this file already exists: - - $ solstice -D45,70:50,75 -R rcvs.yaml -n 10000 -f -o output input.yaml - -Generate a mesh for each geometry described in `input.yaml`, and save them in -the `output` file with respect to the Alias Wavefront OBJ format. The meshes -are positioned according to their orientation constraints, with respect to the -sun direction whose azimuthal and elevation angles are {`30`,`60`}. Use the -`csplit`(1) Unix command to generate an Alias Wavefront OBJ file per geometry -stored in `output`. The name of the generated Alias Wavefront OBJ files are -`geom<NUM>.obj` with `<NUM>` in [0, N-1] where N is the number of geometries -described in `input.yaml`. Refer to `solstice-output`(5) for informations on -the regular expression `^---$` used to split the output file: - - $ solstice -D30,60 -g format=obj:split=geometry -f -o output input.yaml - $ csplit -f geom -b %02d.obj -z --suppress-matched output /^---$/ {*} - -Trace 100 radiative paths into the solar plant described in `input.yaml`, with -respect to the sun direction whose azimuthal and elevations angles are `0` and -`90` degrees, respectively. Write the `solstice-output`(5) result to the -standard output and postprocess it with the `sed`(1) Unix command to remove the -first line that stores the sun direction from which the radiative paths comes -from. The remaining data that lists the radiative paths geometry are redirected -into the `paths.vtk` file: - - $ solstice -n 100 -D0,90 -R rcvs.yaml -p default input.yaml | sed '1d' > paths.vtk - -Use the path-tracing rendering algorithm to draw the solar plant -`solplant.yaml` with respect to the sun direction whose azimuthal and elevation -angles are `180` and `45` degrees, respectively. Use `64` samples per pixel to -estimate the per-pixel radiance and fix the up camera vector to {`0`,`0`,`1`}. -Write the `solstice-output`(5) result to standard output and use the `sed`(1) -Unix command to remove the first line which stores the sun direction used to -draw the image. Finally, visualise the rendered picture by redirecting the -remaining data to the `feh`(1) image viewer. - - $ solstice -D180,45 -r up=0,0,1:rmode=pt:spp=64 solplant.yaml | sed '1d' | feh - - -## COPYRIGHT - -`solstice` is copyright &copy; CNRS 2016-2017. License GPLv3+: GNU GPL version -3 or later <http://gnu.org/licenses/gpl.html>. This is a free software. You are -free to change and redistribute it. There is NO WARRANTY, to the extent -permitted by law. - -## SEE ALSO - -`csplit`(1), -`feh`(1), -`sed`(1), -`solstice-input`(5), -`solstice-output`(5), -`solstice-receivers`(5) - diff --git a/doc/solstice.1.txt.in b/doc/solstice.1.txt.in @@ -0,0 +1,234 @@ +// 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(1) +=========== + +NAME +---- +solstice - compute the power collected by a concentrated solar plant + +SYNOPSIS +-------- +[verse] +*solstice* +*solstice* [_option_]... [_file_] +*solstice* *-g* <__sub-option__[:...]> [_option_]... [_file_] +*solstice* *-p* <__sub-option__[:...]> [_option_]... [_file_] +*solstice* *-r* <__sub-option__[:...]> [_option_]... [_file_] + +DESCRIPTION +----------- +*solstice* computes the total power collected by a concentrated solar plant, as +described in the *solstice-input*(5) _file_. If the _file_ argument is not +provided, the solar plant is read from standard input. To evaluate various +efficiencies for each primary reflector, it computes losses due to cosine +effect, shadowing and masking, orientation and surface irregularities, +reflectivity and atmospheric transmission. The efficiency for each one of these +effects is subsequently computed for each reflector. + +The entities on which computations must be performed are listed in the +*solstice-receiver*(5) file submitted through the *-R* option. The estimated +results follow the *solstice-output*(5) format and are written to the _output_ +file or to the standard output whether the *-o* _output_ option is defined or +not, respectively. Note that the *solstice*'s algorithm is based on the +Monte-Carlo method, which means that every result is provided with its +numerical accuracy. + +*solstice* is designed to efficiently handle complex solar facilities: several +reflectors can be specified (planes, conics, cylindro-parabolic, etc.) and +positioned in 3D space, with a possibility for 1-axis and 2-axis +auto-orientation. Multiple materials can be used, as long as the relevant +physical properties are provided. Spectral effects are also taken into account: +it is possible to define the spectral distribution of any physical property, +including the input solar spectrum and the transmissivity of the atmosphere, at +any spectral resolution. Refer to *solstice-input*(5) for more informations. + +In addition of the aforementioned computations, *solstice* provides three +other functionalities. The *-g* option can be used to convert the +*solstice-input*(5) geometries in CAO files. The *-p* option saves the sampled +radiative paths used by the estimations, allowing to visualise them externally +which may be a great help to identify a design issue. Finally, the *-r* option +is used to render an image of the submitted solar facility. Note that these +three options are mutually exclusives, and once defined, they replace the +default *solstice* behaviour. + +OPTIONS +------- +*-D* <__azimuth__,__elevation__[:...]>:: + List of sun directions. A direction is defined by its _azimuthal_ and + _elevation_ angles in degrees, with _azimuth_ in [0, 360[ and _elevation_ in + [0, 90]. Each sun direction triggers a new computation whose results are + concatenated to the _output_ file. + +*-f*:: + Force overwrite of the _output_ file. + +*-h*:: + List short help and exit. + +*-g* <__sub-option__:...>:: + Generate the shape of the geometry defined in the submitted _file_ and store + it in _output_. Available sub-options are: + + *format=obj*;; + Define the file format in which the meshes are stored. Currently, only the + Alias Wavefront OBJ file format is supported. + + *split=*<**geometry**|*object*|*none*>;; + Define how the output mesh is split in sub meshes. A sub mesh can be + generated for each *geometry* or for each *object* as defined in the + *solstice-input*(5) file format. The *none* option means that only one + mesh is generated for the whole solar facility. By default, the *split* + option is set to *none*. + +*-o* _output_:: + Write results to _output_ with respect to the *solstice-output*(5) format. If + not defined, write results to standard output. + +*-p* <__sub-option__:...>:: + Register the sampled radiative paths for each sun direction and write them to + _output_. Available sub-options are: + + *default*;; + Use default sub-options configuration. + + **irlen=**_length_;; + Length of the radiative path segments going to the infinity. By default, it + is computed relatively to the scene size. + + **srlen=**_length_;; + Length of the radiative path segments coming from the sun. By default, it + is computed relatively to the scene size. + +*-q*:: + Do not print the helper message when no _file_ is submitted. + +*-n* _experiments-count_:: + Number of Monte-Carlo experiments used to estimate the solar flux. By + default _experiments-count_ is set to @SOLSTICE_ARGS_DEFAULT_NREALISATIONS@. + +*-r* <__sub-option__:...>:: + Render an image of the scene through a pinhole camera, for each submitted + sun direction. Write the resulting images to _output_. Available sub-options + are: + + **fov=**_angle_;; + Horizontal field of view of the camera in [30, 120] degrees. By default + _angle_ is @SOLSTICE_ARGS_DEFAULT_CAMERA_FOV@ degrees. + + **img=**_width_**x**_height_;; + Definition of the rendered image in pixels. By default the image definition + is @SOLSTICE_ARGS_DEFAULT_IMG_WIDTH@x@SOLSTICE_ARGS_DEFAULT_IMG_HEIGHT@. + + **pos=**_x_**,**_y_**,**_z_;; + Position of the camera. By default it is set to + {@SOLSTICE_ARGS_DEFAULT_CAMERA_POS@} or it is automatically computed to + ensure that the whole scene is visible, whether *tgt* is set or not, + respectively. + + **rmode=**<**draft**|**pt**>;; + Rendering mode. In *draft* mode, images are computed by ray-casting; all + materials are lambertian, the sun is ignored and the only light source is + positioned at the camera position. In *pt* mode, the scene is rendered with + the un-biased path-tracing Monte-Carlo algorithm; the materials described + in the committed _file_ as well as the submitted sun directions are + correctly handled and an uniform skydome is added to simulate the diffuse + infinite lighting. By default *rmode* is set to *draft*. + + **spp=**_samples-count_;; + Number of samples per pixel. If *rmode* is *draft*, the samples position + into a pixel are the same for all pixels. With *rmode=pt* the pixel + samples are generated independently for each pixel. By default, use 1 + sample per pixel. + + **tgt=**_x_**,**_y_**,**_z_;; + Position targeted by the camera. By default, it is set to + {@SOLSTICE_ARGS_DEFAULT_CAMERA_TGT@} or it is automatically computed to + ensure that the whole scene is visible, whether *pos* is set or not, + respectively. + + **up=**_x_**,**_y_**,**_z_;; + Up vector of the camera. If *rmode* is *pt*, this vector also defines the + direction toward the top of the skydome. By default, *up* is set to + {@SOLSTICE_ARGS_DEFAULT_CAMERA_UP@}. + +*-R* _receivers_:: + *solstice-receiver*(5) file defining the scene receivers, i.e. the solar + plant entities for which *solstice* computes Monte-Carlo estimations. + +EXAMPLES +-------- + +Launch *solstice* estimations for two sun directions whose azimuthal and +elevation angles are {*45*,*70*} and {*50*,*75*}. The solar facility is +described in *input.yaml* and the receivers on which the integrations must be +performed are declared in the *rcvs.yaml* file. *10000* experiments are used +by the Monte-Carlo estimations and the results are written to *output* even +though this file already exists: + + $ solstice -D45,70:50,75 -R rcvs.yaml -n 10000 -f -o output input.yaml + +Generate a mesh for each geometry described in *input.yaml*, and save them in +the *output* file with respect to the Alias Wavefront OBJ format. The meshes +are positioned according to their orientation constraints, with respect to the +sun direction whose azimuthal and elevation angles are {*30*,*60*}. Use the +*csplit*(1) Unix command to generate an Alias Wavefront OBJ file per geometry +stored in *output*. The name of the generated Alias Wavefront OBJ files are +*geom*<__NUM__>**.obj** with __NUM__ in [0, N-1] where N is the number of +geometries described in *input.yaml*. Refer to *solstice-output*(5) for +informations on the regular expression *^---$* used to split the output file: + + $ solstice -D30,60 -g format=obj:split=geometry -f -o output input.yaml + $ csplit -f geom -b %02d.obj -z --suppress-matched output /^---$/ {*} + +Trace 100 radiative paths into the solar plant described in *input.yaml*, with +respect to the sun direction whose azimuthal and elevations angles are *0* and +*90* degrees, respectively. Write the *solstice-output*(5) result to the +standard output and postprocess it with the *sed*(1) Unix command to remove the +first line that stores the sun direction from which the radiative paths comes +from. The remaining data that lists the radiative paths geometry are redirected +into the *paths.vtk* file: + + $ solstice -n 100 -D0,90 -R rcvs.yaml -p default input.yaml | sed '1d' > paths.vtk + +Use the path-tracing rendering algorithm to draw the solar plant +*solplant.yaml* with respect to the sun direction whose azimuthal and elevation +angles are *180* and *45* degrees, respectively. Use *64* samples per pixel to +estimate the per-pixel radiance and fix the up camera vector to {*0*,*0*,*1*}. +Write the *solstice-output*(5) result to standard output and use the *sed*(1) +Unix command to remove the first line which stores the sun direction used to +draw the image. Finally, visualise the rendered picture by redirecting the +remaining data to the *feh*(1) image viewer. + + $ solstice -D180,45 -r up=0,0,1:rmode=pt:spp=64 solplant.yaml | sed '1d' | feh - + +COPYRIGHT +--------- +*solstice* is copyright &copy; CNRS 2016-2017. License GPLv3+: GNU GPL version +3 or later <http://gnu.org/licenses/gpl.html>. This is a free software. You are +free to change and redistribute it. There is NO WARRANTY, to the extent +permitted by law. + +SEE ALSO +-------- +*csplit*(1), +*feh*(1), +*sed*(1), +*solstice-input*(5), +*solstice-output*(5), +*solstice-receivers*(5) +