stardis

Perform coupled heat transfer calculations
git clone git://git.meso-star.fr/stardis.git
Log | Files | Refs | README | LICENSE

commit 4eee7d51b35756924d30a167666122a7404d30b3
parent ad48bf167091eb1656dd93ed82a409af8f4774fe
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Wed,  8 Apr 2020 09:58:22 +0200

Documentation improvement

Diffstat:
Mdoc/stardis-input.5.txt | 118+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mdoc/stardis-output.5.txt | 630++++++++++++++++++++++---------------------------------------------------------
Mdoc/stardis.1.txt.in | 30+++++++++++++++---------------
3 files changed, 251 insertions(+), 527 deletions(-)

diff --git a/doc/stardis-input.5.txt b/doc/stardis-input.5.txt @@ -24,7 +24,7 @@ stardis-input - thermal system description for stardis(1) DESCRIPTION ----------- -*stardis-input* is the format used by the *stardis*(1) program to discribe a +*stardis-input* is the format used by the *stardis*(1) program to describe a thermal system. It relies on a line-based ad-hoc syntax. A thermal system is composed of lines of text, each one describing either a @@ -45,105 +45,108 @@ applies to *stardis(1)* outputs as described in *stardis-output(5)*. Finally, description lines can be submitted to the *stardis*(1) program in any order and can be split accross more than one file, through multiple use of the *-M* option. - + GRAMMAR ------- - In what follows, some lines end in *\*. This is used as a convenience to -continue the explanation next line. However, this caracter cannot be used in +continue a description next line. However, this character cannot be used in actual description files and actual description lines must be kept single-line. +Also, text appearing between quote marks has to be used verbatim in the input, +except the quote characters. Finally, text following the *#* character in +descriptions, when not verbatim, is a comment and is not part of the +description. [verse] _______ -<thermal-system> ::= <description-line> - [ <thermal-system> ] +<thermal-system> ::= <description-line> + [ <thermal-system> ] + +<description-line> ::= [ <medium-frontier> ... ] + [ <medium-boundary> ... ] + [ <media-connection> ... ] -<description-line> ::= [ <medium-frontier> ... ] - [ <medium-boundary> ... ] - [ <media-connection> ... ] - ------------------------------------- -<medium-frontier> ::= <solid-frontier> - | <fluid-frontier> - -<solid-frontier> ::= SOLID <medium-name> <lambda> <rho> <cp> <delta> \ - <initial-temperature> <volumic-power> <triangle-sides> +<medium-frontier> ::= <solid-frontier> + | <fluid-frontier> -<fluid-frontier> ::= FLUID <medium-name> <ka> <ks> <rho> <cp> \ - <initial-temperature> <triangle-sides> +<solid-frontier> ::= "SOLID" <medium-name> <lambda> <rho> <cp> <delta> \ + <initial-temp> <volumic-power> <triangle-sides> + +<fluid-frontier> ::= "FLUID" <medium-name> <ka> <ks> <rho> <cp> \ + <initial-temp> <triangle-sides> ------------------------------------- -<medium-name> ::= STRING # no space allowed +<medium-name> ::= STRING # no space allowed -<lambda> ::= REAL # in ]0, INF) +<lambda> ::= REAL # in ]0, INF) -<rho> ::= REAL # in ]0, INF) +<rho> ::= REAL # in ]0, INF) -<cp> ::= REAL # in ]0, INF) +<cp> ::= REAL # in ]0, INF) -<delta> ::= REAL # in ]0, INF) +<delta> ::= REAL # in ]0, INF) -<initial-temperature> ::= REAL # in [0, INF) +<initial-temp> ::= REAL # in [0, INF) -<volumic-power> ::= REAL # in (-INF , INF) +<volumic-power> ::= REAL # in (-INF , INF) -<ka> ::= REAL # in [0, INF) +<ka> ::= REAL # in [0, INF) -<ks> ::= REAL # in [0, INF) +<ks> ::= REAL # in [0, INF) -<triangle-sides> ::= <side-specifier> <file-name> [ <triangle-sides> ] +<triangle-sides> ::= <side-specifier> <file-name> [ <triangle-sides> ] ------------------------------------- -<side-specifier> ::= FRONT | BACK | BOTH +<side-specifier> ::= "FRONT" | "BACK" | "BOTH" -<file-name> ::= STRING # no space allowed +<file-name> ::= STRING # no space allowed ------------------------------------- -<medium-boundary> ::= <h-boundary-for-solid> - | <h-boundary-for-fluid> - | <t-boundary-for-solid> - | <t-boundary-for-fluid> - | <f-boundary-for-solid> - -<h-boundary-for-solid> ::= H_BOUNDARY_FOR_SOLID <boundary-name> <emissivity> \ - <specular-fraction> <hc> <external-temperature> <triangles> +<medium-boundary> ::= <h-bound-for-solid> + | <h-bound-for-fluid> + | <t-bound-for-solid> + | <t-bound-for-fluid> + | <f-bound-for-solid> + +<h-bound-for-solid> ::= "H_BOUNDARY_FOR_SOLID" <bound-name> <emissivity> \ + <specular-fraction> <hc> <external-temp> <triangles> -<h-boundary-for-fluid> ::= H_BOUNDARY_FOR_FLUID <boundary-name> <emissivity> \ - <specular-fraction> <hc> <external-temperature> <triangles> +<h-bound-for-fluid> ::= "H_BOUNDARY_FOR_FLUID" <bound-name> <emissivity> \ + <specular-fraction> <hc> <external-temperature> <triangles> -<t-boundary-for-solid> ::= T_BOUNDARY_FOR_SOLID <boundary-name> <temperature> <triangles> +<t-bound-for-solid> ::= "T_BOUNDARY_FOR_SOLID" <bound-name> <temperature> <triangles> -<t-boundary-for-fluid> ::= T_BOUNDARY_FOR_FLUID <boundary-name> <temperature> \ - <emissivity> <specular-fraction> <hc> <triangles> +<t-bound-for-fluid> ::= "T_BOUNDARY_FOR_FLUID" <bound-name> <temperature> \ + <emissivity> <specular-fraction> <hc> <triangles> -<f-boundary-for-solid> ::= T_BOUNDARY_FOR_SOLID <boundary-name> <flux> <triangles> +<f-bound-for-solid> ::= "T_BOUNDARY_FOR_SOLID" <bound-name> <flux> <triangles> ------------------------------------- -<boundary-name> ::= STRING # no space allowed +<bound-name> ::= STRING # no space allowed -<emissivity> ::= REAL # in [0, 1] +<emissivity> ::= REAL # in [0, 1] -<specular-fraction> ::= REAL # in [0, 1] +<specular-fraction> ::= REAL # in [0, 1] -<hc> ::= REAL # in [0, INF) +<hc> ::= REAL # in [0, INF) -<external-temperature> ::= REAL # in [0, INF) +<external-temp> ::= REAL # in [0, INF) -<flux> ::= REAL # in (-INF , INF) +<flux> ::= REAL # in (-INF , INF) -<triangles> ::= <file-name> [ <triangles> ] +<triangles> ::= <file-name> [ <triangles> ] ------------------------------------- -<media-connection> ::= <solid-fluid-connection> +<media-connection> ::= <solid-fluid-connect> -<solid-fluid-connection> ::= SOLID_FLUID_CONNECTION <boundary-name> <emissivity> \ - <specular-fraction> <hc> <triangles> +<solid-fluid-connect> ::= "SOLID_FLUID_CONNECTION" <bound-name> <emissivity> \ + <specular-fraction> <hc> <triangles> ______________ @@ -155,18 +158,19 @@ first consider the direct triangle's normal (right-hand rule), then we define the BACK side of a triangle to be the side this normal comes out from. That means that a closed set of triangles with normals pointing outside should be used with the FRONT side specifier to describe inside medium. - + NAMES ----- Names, either file names, medium names or boundary names, are a sequence of -one or ore ascii characters, including numbers and special characters like +one or ore ASCII characters, including numbers and special characters like *.* *_* *-* as one may consider using in standard file names, *without any spacing* either escaped or not. -Two different description lines can use the same name. However, computating +Two different description lines can use the same name. However, computating mean temperature in a given medium (*-m* option of *stardis*) has an undefined -behaviour when the involved name has been used more than once in the system. +behaviour when the medium name has been used more than once in the system +description. EXAMPLES -------- diff --git a/doc/stardis-output.5.txt b/doc/stardis-output.5.txt @@ -25,518 +25,238 @@ stardis-output - output format of stardis(1) results DESCRIPTION ----------- The *stardis-output* describes the output format of the *stardis*(1) program. -All the data generated by a *stardis*(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 *stardis*(1), through the *-D* option, will produce as many outputs as sun -directions. In other words, invoking *stardis*(1) with _N_ sun directions -looks like calling *stardis*(1) _N_ times and concatenating their associated +All the data generated by a *stardis*(1) invocation are written to the standard output. -The type of the data that are generated depends on the mode in which -*stardis*(1) is invoked. By default, *stardis*(1) evaluates the power -collected by the submitted solar plant. When invoked with the *-g* option, -*stardis*(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. +The type of the data that are generated depends on the option used when +*stardis*(1) is invoked. When invoked with one of the basic computation options +(*-p*, *-P*, *-m*, *-s* or *-F*), *stardis*(1) output a single Monte-Carlo +result. On the opposite, *stardis*(1) ouputs compound results when invoked with +option *-S* or *-R*. Additionally, options *-g* and *-D* are output modifiers. +Finaly, some special options (*-v*, *-h* or *-d*) that does not involve any +computation produce output including information on the *stardis*(1) software +(their ouput will not be described thereafter) or the provided thermal system. -GRAMMAR +OPTIONS ------- -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> ... ] +Every top-level item of the output listed below is produced by one or more +specific options of the *stardis*(1) program. The following list gives the +correspondance: -------------------------------------- +*-p* or *-P*: produce <probe-temp> -<sun-direction> ::= "#--- Sun direction: <alpha> <beta> (<sun-vector>)" +*-m*: produces <medium-temp> -<counts> ::= "<#globals> <#receivers> <#primaries> - <#samples> <#failed>" +*-s*: produces <mean-temp> -<#globals> ::= 7 -<#receivers> ::= INTEGER # in [0, INF) -<#primaries> ::= INTEGER # in [0, INF) -<#samples> ::= INTEGER # in [0, INF) -<#failed> ::= INTEGER # in [0, INF) +*-F*: produces <mean-flux> -<global> ::= <potential-flux> - <absorbed-flux> - <cos-factor> - <shadow-loss> - <missing-loss> - <materials-loss> - <atmospheric-loss> +*-p*, *-P*, *-m* or *-s* with *-g*: produce <green> -------------------------------------- +*-p*, *-P*, *-m*, *-s*, *-S* or *-F* with *-D*: produce <thermal-paths> + +*-R*: produces <image-file> -<receivers-list> ::= <receiver> - [ <receiver> ... ] +*-d*: produces <geometry-file> -<receiver> ::= "<receiver-name> <receiver-id> <area> - <front> <back>" +GRAMMAR +------- +In what follows, some lines end in *\*. This is used as a convenience to +continue a description next line. However, this character is not part of the +actual output, that continues on a single line. On the other hand, multiple +lines not using the *\* convenience in multi-lines descriptions are truly +different lines of output. Also, text appearing between quote marks is a +verbatim part of the output, except the quote characters. Finally, text +following the *#* character in description, when not verbatim, is a comment +and is not part of the description. -<receiver-name> ::= <entity-identifier> +[verse] +_______ +<output> ::= <single-MC-result> + | <green-output> + | .... -<receiver-id> ::= INTEGER +_______ -<front> ::= <side> -<back> ::= <side> +SINGLE MONTE CARLO +------------------ +When *stardis*(1) is used to produce a single Monte-Carlo result, either +temperature or flux, this result is output first to standard output, possibly +followed by some of the heat paths involved in the computation if option *-D* +was used too. -<side> ::= "<incoming-flux> <in-if-no-mat-loss> - <in-if-no-atm-loss> <in-mat-loss> <in-atm-loss> - <absorbed-flux> <abs-if-no-mat-loss> - <abs-if-no-atm-loss> <abs-mat-loss> <abs-atm-loss> - <efficiency>" +[verse] +_______ +<single-MC-result> ::= <probe-temp> + | <medium-temp> + | <mean-temp> + | <mean-flux> ------------------------------------- -<primaries-list> ::= <primary> - [ <primary> ... ] +<probe-temp> ::= "Temperature at" <probe-position> <time> <MC-estimate> + <failures-report> -<primary> ::= "<primary-name> <primary-id> <area> <#samples> - <cos-factor> <shadow-loss>" +<mean-temp> ::= "Temperature at boundary" <file-name> <time> <MC-estimate> + <failures-report> -<primary-name> ::= <entity-identifier> +<mean-flux> ::= "Temperature at boundary" <file-name> <time> <MC-estimate> + "Convective flux at boundary " <file-name> <time> \ + <MC-estimate> + "Radiative flux at boundary" <file-name> <time> <MC-estimate> + "Total flux at boundary" <file-name> <time> <MC-estimate> + <failures-report> -<primary-id> ::= INTEGER +<medium-temp> ::= "Temperature in medium" <medium-name> <time> <MC-estimate> + <failures-report> -------------------------------------- +<probe-position> ::= "[" <x-value> "," <y-value> "," <z-value> "]" -<rcvXprims-list> ::= <rcvXprim> - [ <rcvXprim> ... ] +<time> ::= "at t=" <time-value> "=" -<rcvXprim> ::= "<receiver-id> <primary-id> - <rcvXprim-front> <rcvXprim-back>" +<MC-estimate> ::= <expected-value> "+/-" <standard-error> -<rcvXprim-front> ::= <rcvXprim-side> -<rcvXprim-back> ::= <rcvXprim-side> +<failures-report> ::= "#failures:" <error-count> "/" <success-count> -<rcvXprim-side> ::= "<incoming-flux> <in-if-no-mat-loss> - <in-if-no-atm-loss> <in-mat-loss> <in-atm-loss> - <absorbed-flux> <abs-if-no-mat-loss> - <abs-if-no-atm-loss> <abs-mat-loss> <abs-atm-loss>" +<file-name> ::= STRING # as provided in input data + +<medium-name> ::= STRING # as provided in input data ------------------------------------- -<receiver-maps> ::= VTK-RECEIVER-MAP - [ <receiver-maps> ... ] +<x-value> ::= REAL -<geometry-data> ::= OBJ-FILE - [ --- - <geometry-data> ... ] +<y-value> ::= REAL -------------------------------------- +<z-value> ::= REAL -<area> ::= REAL # in ]0, INF) - -<real3> ::= REAL REAL REAL - -<alpha> ::= REAL # Degrees in [0, 360[ -<beta> ::= REAL # Degrees in [0, 90] -<sun-vector> ::= <real3> - -<incoming-flux> ::= <estimate> -<in-if-no-mat-loss> ::= <estimate> -<in-if-no-atm-loss> ::= <estimate> -<in-mat-loss> ::= <estimate> -<in-atm-loss> ::= <estimate> -<absorbed-flux> ::= <estimate> -<abs-if-no-mat-loss> ::= <estimate> -<abs-if-no-atm-loss> ::= <estimate> -<abs-mat-loss> ::= <estimate> -<abs-atm-loss> ::= <estimate> -<cos-factor> ::= <estimate> -<missing-loss> ::= <estimate> -<materials-loss> ::= <estimate> -<atmospheric-loss> ::= <estimate> -<shadow-loss> ::= <estimate> -<efficiency> ::= <estimate> - -<estimate> ::= <expected-value> <standard-error> -<expected-value> ::= REAL -<standard-error> ::= REAL # in [0, INF) - -<entity-identifier> # Defined in *stardis-input*(5) -_______ +<time-value> ::= REAL # in [0, INF) -SIMULATION ----------- - -A *simulation-output* begins with two header lines. The first one reports the -sun direction used in the simulation (two angles in degrees, plus the -corresponding sun vector), -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. As soon as the number of failed experiments -reaches 1% of the required number of Monte-Carlo experiments, the code exits -with a "Error in integrating the solar flux" message, and the validity of -subsequent results is questionable: estimates are produced using the number of -Monte-Carlo experiments that have been successful, which is necessarily smaller -than the required number of experiments. - -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 expected value and its -standard error. The global results are, in this order: - -- *potential-flux*: maximum flux that all the primary geometries could - intercept if properly oriented and flat-shaped; -- *absorbed-flux*: absorbed part of the flux reaching any receiver geometry. - At most equal to the potential flux; -- *cos-factor*: cos of the angle between the sun direction and the normal of - the primary surfaces (average cos over all primary geometries); -- *shadow-loss*: potential flux intercepted by another geometry before - reaching a primary geometry; -- *missing-loss*: part of the flux that reaches a primary geometry, follows a - radiative path, but is not absorbed; this flux could have bounced on - geometries, including receivers, but without being absorbed; -- *materials-loss*: total flux absorbed by non-receivers along radiative - paths; includes both surface and volume absorption; -- *atmospheric-loss*: total flux extinction by the atmosphere along radiative - paths. - -This results can be used to check conservation of energy: - -potential-flux * cos-factor and (absorbed-flux + shadow-loss + -missing-loss + materials-loss + atmospheric-loss) -should be equal within their respective uncertainty ranges. - -Per receiver results -~~~~~~~~~~~~~~~~~~~~ - -Following global results, the output includes various per-receiver lines, one -line per receiver, the exact number of lines being part of the headers. The -per-receiver results are sorted according to the order of the receivers as -defined in the submitted *stardis-receiver*(5) file. Each line contains the -following data: - -- *receiver-name*: name of the receiver, i.e. *entity-identifier* of the - entity in which the receiving geometry is defined (see the - *stardis-input*(5) format); -- *receiver-id*: unique integer identifying the receiver; -- *area*: area of the receiver; -- *front*: estimated results for the front side of the receiver; -- *back*: estimated results for the back side of the receiver. - -The estimates of the *front* and *back* sides are listed bellow. Note that -each of the following estimates is actually a pair of real numbers: the -expected value and its standard error. - -- *incoming-flux*: flux that reaches the receiver side; -- *in-if-no-mat-loss*: incoming-flux if absorption on non-receivers is not - taken into account; -- *in-if-no-atm-loss*: incoming-flux if atmospheric extinction is not taken - into account; -- *in-mat-loss*: in-if-no-mat-loss - incoming-flux; -- *in-atm-loss*: in-if-no-atm-loss - incoming-flux; -- *absorbed-flux*: flux absorbed by the receiver side; -- *abs-if-no-mat-loss*: absorbed-flux if absorption by non-receivers is not - taken into account; -- *abs-if-no-atm-loss*: absorbed-flux if atmospheric extinction is not taken - into account; -- *abs-mat-loss*: abs-if-no-mat-loss - absorbed-flux; -- *abs-atm-loss*: abs-if-no-atm-loss - absorbed-flux; -- *efficiency*: fraction of the potential flux absorbed by this receiver side. - -Both *front* and *back* side estimates are output, even if the receiver has -only a single receiving side. In this case, the results of the non-receiving -side are meaningless (invalid -1 value). - -Per primary results -~~~~~~~~~~~~~~~~~~~ - -Following 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*: name of the primary geometry, i.e. *entity-identifier* of - the entity in in which the primary geometry is defined (see the - *stardis-input*(5) format); -- *primary-id*: unique integer identifying the primary geometry; -- *area*: area of the primary geometry; -- *#sample*: number of Monte-Carlo experiments sampled on the primary - geometry; -- *cos-factor*: cos of the angle between the sun direction and the normal of - the primary surface (average cos on the primary geometry); -- *shadow-loss*: potential flux intercepted by another geometry before reaching - the primary geometry of interest. - -Per receiver and per primary results -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Following 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*: identifier of the involved receiver; -- *primary-id*: identifier of the involved primary geometry; -- *rcvXprim-front*: estimated results for the receiver front side; -- *rcvXprim-back*: estimated results for the receiver back side; - -The estimated values of *rcvXprim-front* and *rcvXprim-back* are listed -bellow. Each of these estimates is actually a pair of real numbers: the -expected value and its standard error. - -- *incoming-flux*: flux that reaches the receiver side; -- *in-if-no-mat-loss*: incoming-flux if absorption on non-receivers is not - taken into account; -- *in-if-no-atm-loss*: incoming-flux if atmospheric extinction is not taken - into account; -- *in-mat-loss*: in-if-no-mat-loss - incoming-flux; -- *in-atm-loss*: in-if-no-atm-loss - incoming-flux; -- *absorbed-flux*: flux absorbed by the receiver side; -- *abs-if-no-mat-loss*: absorbed-flux if absorption by non-receivers is not - taken into account; -- *abs-if-no-atm-loss*: absorbed-flux if atmospheric extinction is not taken - into account; -- *abs-mat-loss*: abs-if-no-mat-loss - absorbed-flux; -- *abs-atm-loss*: abs-if-no-atm-loss - absorbed-flux; - -Both front and back side estimates are output, even if the receiver has only a -single receiving side. In this case, the results of the non-receiving side are -meaningless (invalid -1 value). - -Receiver map -~~~~~~~~~~~~ - -A receiver defined in the submitted *stardis-receiver*(5) file, can have a -per-primitive estimate of its incoming flux density and/or absorbed flux -density if its *per_primitive* flag is active. In this case, *stardis*(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 incoming flux density and/or absorbed flux density. The -"definition" of the receiver map is thus controlled by the discretisation of -the receiver's shape, as described in the *stardis-input*(5) file. Note that -to obtain a good estimate of the per-triangle flux densities, 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 *stardis*(1) should be increased -significantly, as 1 or 2 order of magnitude. - -The number of written per-triangle flux density estimates depends on the -receiver's parameters: both front and back sides of the receiver can be active -and each side can produce an estimate both for the incoming flux density and -for the absorbed flux density. As a consequence, the output can include up to -4 different estimates that are written in the order: incoming front, absorbed -front, incoming back, absorbed back. 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. +<error-count> ::= INTEGER # in [0, SAMPLES_COUNT] -[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> ::= <incoming-flux> - | <absorbed-flux> - | <incoming-flux> <absorbed-flux> - -<incoming-flux> ::= <flux-density-data> -<absorbed-flux> ::= <flux-density-data> - -<flux-density-data> ::= SCALARS <side-and-flux-names> float 2 - LOOKUP_TABLE default - <estimate> - [ <estimate> ... ] - -<side-and-flux-names> ::= Front_faces_Incoming_flux - | Front_faces_Absorbed_flux - | Back_faces_Incoming_flux - | Back_faces_Absorbed_flux - -<#triangles> ::= INTEGER -<#vertices> ::= INTEGER -<triangle-indices> ::= INTEGER INTEGER INTEGER -_______ +<success-count> ::= INTEGER # in [0, SAMPLES_COUNT] -DUMP GEOMETRY -------------- +<expected-value> ::= REAL # depending on value semantics, range can be restricted -A *dump-geometry-output* is generated when *stardis*(1) is invoked with the -*-g* option. In this mode, for each submitted sun direction, *stardis*(1) -converts the geometry of the submitted *stardis-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 *stardis*(1) is the Alias Wavefront OBJ [3] format. With no more -sub-option, *stardis*(1) will thus generate one OBJ file containing the whole -mesh of the solar plant. 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 *stardis-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 the end of the current OBJ. - -Independently of the *split* strategy, each *stardis-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. +<standard-error> ::= REAL # in [0, INF) -[verse] _______ -OBJ-FILE ::= g <entity-identifier> - <obj-mesh> - [ <obj-mesh> ... ] -<obj-mesh> ::= usemtl <material-type> - <obj-vertices> - <obj-faces> +GREEN +----- -<obj-vertices> ::= v <real3> - [ v <real3> ... ] +The green function is generated when a green-compatible *stardis*(1) simulation +option is used in conjuction with the *-g* option. For every successful heat +path sampled carrying out the simulation, the solver records all the elements +of the path history relevant to link the various imposed temperatures, fluxes +and volumic powers to the simulation result. -<obj-indices> ::= f <triangle-indices> - [ f <triangle-indices> ... ] +The output in green mode is a made of tables containing the different media and +boundaries and their imposed temperatures, fluxes and volumic powers, followed +by the paths' history. -<material-type> ::= dielectric - | matte - | mirror - | thin_dielectric - | virtual -_______ +DUMP GEOMETRY +------------- -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 type: the path is yellow if its first segment, i.e. -the ray starting from the sun towards a primary geometry, is occluded by a non -virtual object. If not occluded, the path can be blue or turquoise whether it -reaches a receiver or not, respectively. Finally, the path can also be red if -it was canceled due to a topologically incoherent impact (i.e. an impact on a -surface not at the boundary of the medium in which the rays was propagating). -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. +A *geometry-file* is generated when *stardis*(1) is invoked with the *-d* +option. In this mode, *stardis*(1) outputs the system geometry, as submitted +in *stardis-input*(5) description, to standard output in the VTK [1] format. +The output geometry is not the concatenation of the various geometry files +used in *stardis-input*(5) description. It is the result of a deduplication +process that removes duplicate and degenerated triangles. + +Additionaly, as permitted by the VTK [1] format, the output geometry is +decorated with many different properties provided to help users understand +the description processing, including possible errors. + +DUMP HEAT PATHS +--------------- +When the *stardis*(1) option *-D* is used some of the termal paths (either +successful paths, erroneous paths, or both) sampled carrying out the simulation +are written to standard output after to the computation result. The various path +are written in VTK[1] format, one VTK file per path separated by a special text +line. [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 5 - <color-error> - <color-unused> - <color-success> - <color-missing> - <color-occluded> - -<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 # Red: for error paths - | 0.25 # Green: unused - | 0.5 # Blue: for success paths - | 0.75 # Turquoise: for missing paths - | 1.0 # Yellow: for occluded paths - -<color-error> ::= 1.0 0.0 0.0 1.0 -<color-unused> ::= 0.0 1.0 0.0 1.0 -<color-success> ::= 0.0 0.0 1.0 1.0 -<color-missing> ::= 0.0 1.0 1.0 1.0 -<color-occluded> ::= 1.0 1.0 0.0 1.0 - -<#paths> ::= INTEGER -<#path-segments> ::= INTEGER -<path-vertex-id> ::= INTEGER +<heat-paths> ::= "---" + <heat-path> + [ <heat-paths> ] + +<heat-path> ::= "# vtk DataFile Version 2.0" + "Heat paths" + "ASCII" + "DATASET POLYDATA" + "POINTS" <#vertices> "double" + <path-vertices> + "LINES 1" 1+<#vertices> + <heat-path> + "POINT_DATA" <#vertices> + "SCALARS Vertex_Type float 1" + "LOOKUP_TABLE vertex_type" + <vertices-types> + "LOOKUP_TABLE vertex_type 3" + <color-conduction> + <color-convection> + <color-radiative> + "SCALARS Weight double 1" + "LOOKUP_TABLE default" + <weigths> + "SCALARS Time double 1" + "LOOKUP_TABLE default" + <durations> + "CELL_DATA 1" + "SCALAR Path_type float 1" + "LOOKUP_TABLE path_type" + <path-type> + "LOOKUP_TABLE path_type 2" + <color-error> + <color-success> + +<path-vertices> ::= <real3> + <path-vertices> # <#vertices> vertices + +<heat-path> ::= <#vertices> "0" "1" ... <#vertices>-1 + +<vertices-types> ::= <vertice-type> + <vertices-types> # <#vertices> types + +<weigths> ::= REAL + <weigths> # <#vertices> weigths + +<durations> ::= REAL # in [0, INF) + <durations> # <#vertices> durations + +<real3> ::= REAL REAL REAL + +<vertice-type> ::= 0.0 # for conduction step + | 0.5 # for convection step + | 1.0 # for radiative step + +<path-type> ::= 0.0 # for error path + | 1.0 # for success path + +<color-error> ::= "1.0 0.0 0.0 1.0" # Red +<color-success> ::= "0.0 0.0 1.0 1.0" # Blue + +<color-conduction> ::= "0.0 1.0 1.0 1.0" # Magenta: +<color-convection> ::= "1.0 1.0 0.0 1.0" # Yellow +<color-radiative> ::= "1.0 0.0 1.0 1.0"# Purple _______ RENDERING --------- -When invoked with the *-r* option, *stardis*(1) generates an image of the -solar facility for each submitted sun direction. Each image is preceded by its -associated sun direction and is saved with respect to the ASCII PPM file -format [1]. The output images are actually greyscale images whose pixels store -the average normalized radiance that reaches them. +When invoked with the *-R* option, *stardis*(1) generates an infrared image +file of the system and write it to standard output in the VTK file format [1]. NOTES ----- -1. Portable PixMap - <http://netpbm.sourceforge.net/doc/ppm.html> -2. VTK file format - +1. 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> +2. Portable PixMap - <http://netpbm.sourceforge.net/doc/ppm.html> SEE ALSO -------- *stardis*(1), -*stardis-input*(5), -*stardis-receiver*(5) +*stardis-input*(5) diff --git a/doc/stardis.1.txt.in b/doc/stardis.1.txt.in @@ -32,7 +32,7 @@ DESCRIPTION ----------- *stardis* solves coupled thermal systems under the linear assumption. Here coupled refers to conductive, convective and radiative transfers, and linear -means that each phenomena is represented using a model that is linear +means that each phenomena is represented using a model that is linear with temperature. *stardis* can deal with complex geometries as well as high-frequency external solicitations over a very long period of time, relative to the characteristic time of the system. @@ -51,13 +51,13 @@ information on the system in an unbiased and very-fast statistical model. In addition of the aforementioned computations, *stardis* provides three other functionalities. The *-d* option can be used to convert the *stardis-input*(5) geometry into a VTK file. The *-D* option saves the sampled -thermal paths used by the estimates, allowing to visualise them externally +heat paths used by the estimates, allowing to visualise them externally which may be of a great help to identify issues. Finally, the *-R* option can be used to render an infrared image of the submitted system. The provided system should be described in the *stardis-input*(5) format and can be split over any number of files, each being submited through the -*-M* option. +*-M* option. Stardis' algorithms are based on state-of-the-art Monte-Carlo method applied to radiative transfer physics (Delatorre [1]) combined with conduction's @@ -71,7 +71,7 @@ by IntelĀ® Rendering Framework: Embree. Everytime the linear assumption is relevant, this theoretical framework allows to encompass all the heat transfer mecanisms (conductive-convective-radiative) in an unified statistical model. Such systems can be solved by a Monte-Carlo -approach just by sampling thermal paths. This can be seen as an extension of +approach just by sampling heat paths. This can be seen as an extension of Monte-Carlo algorithms that solve radiative transfer by sampling optical paths. A main property of this approach is that the resulting algorithms does not rely on a volume mesh of the system. @@ -107,9 +107,9 @@ EXCLUSIVE OPTIONS closest interface. *-m* _medium_name[,time]_:: - Compute the mean temperature in a given medium at a given time. By default - compute time is @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The medium doesn't need - to be connex. + Compute the mean temperature in a given medium at a given time. The medium + name must be part of the system description. By default compute time is + @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The medium doesn't need to be connex. *-s* _file[,time]_:: Compute the mean temperature on a given 2D region at a given time, the @@ -151,12 +151,12 @@ EXCLUSIVE OPTIONS **spp=**_samples-count_;; Number of samples per pixel. - By default, use @STARDIS_ARGS_DEFAULT_RENDERING_SPP@ samples per pixel. + By default, use @STARDIS_ARGS_DEFAULT_RENDERING_SPP@ samples per pixel. **t=**_time_;; Rendering time. By default _time_ is @STARDIS_ARGS_DEFAULT_RENDERING_TIME@ - seconds. - + seconds. + **tgt=**_x_**,**_y_**,**_z_;; Position targeted by the camera. By default, it is set to {@STARDIS_ARGS_DEFAULT_RENDERING_TGT@} or it is automatically computed to @@ -177,16 +177,16 @@ OTHER OPTIONS *-d*:: Write the geometry to _standard output_ in VTK format along with various - properties, including possible errors. If this option is used, no + properties, including possible errors. If this option is used, no computation occurs. + Using this option in conjunction with an option that specifies a compute region (-s, -S, -F) has the effect to include the region in the output. This option cannot be used in conjunction with other -options that write to _standard output_ (-R, -g, -D, -h, -v). +options that write to _standard output_ (-R, -g, -D, -h, -v). *-D* _type_:: - Write thermal paths of the given *type* to _standard output_ in VTK format. + Write heat paths of the given *type* to _standard output_ in VTK format. Possible values are *error* (write paths ending in error), *success* (write successful paths),*all* (write all paths). + @@ -201,14 +201,14 @@ with other options that write to _standard output_ (-R, -d, -g, -h, -v). *-g*:: Write the green function at a steady state to _standard output_ after the - specified computation. + specified computation. + This option can only be used in conjonction with one these options: -p, -P, -m, -s. Any provided compute time is silently ignored. *-h*:: Output short help and exit. - + *-n* _samples-count_:: Number of Monte-Carlo samples. By default _samples-count_ is set to @STARDIS_ARGS_DEFAULT_SAMPLES_COUNT@.