commit 63df8389e619e1a583fcf28624dd15dccb948ae0
parent 410707693d76377b869794cf7195abf18e46e60e
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 28 Jul 2017 11:26:33 +0200
Merge branch 'release-0.2.3'
Diffstat:
19 files changed, 139 insertions(+), 98 deletions(-)
diff --git a/README.md b/README.md
@@ -60,6 +60,16 @@ informations on CMake.
## Release notes
+### Version 0.2.3
+
+- Update the solstice-input file format. The anchor and entity name cannot
+ contain spaces or tabulations anymore.
+- Fix the reported sun directions in the solstice-output. For each submitted
+ sun direction, solstice correctly output its Cartesian coordinates but always
+ wrote the azimuthal and elevation angles of the first direction.
+- Update the solstice-output map page: add the missing `<efficiency>` grammar
+ rule and fix the definition of the `<map-side-data>` grammar rule.
+
### Version 0.2.2
- Fix how the AsciiDoc tool suite is looking for on Windows; it was never found
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
@@ -100,7 +100,7 @@ configure_file(${SOLSTICE_SOURCE_DIR}/../doc/solstice.1.txt.in
################################################################################
set(VERSION_MAJOR 0)
set(VERSION_MINOR 2)
-set(VERSION_PATCH 2)
+set(VERSION_PATCH 3)
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
set(SOLSTICE_FILES_SRC
diff --git a/doc/solstice-input.5.txt b/doc/solstice-input.5.txt
@@ -649,9 +649,10 @@ identity, i.e. its *rotation* and *translation* are nulls.
Each entity has a *name* which must be unique per hierarchy level: 2 root
entities (i.e. entities without parent) cannot have the same name as well as
-the children of a same parent entity. A child entity is identified into the
-solar plant by successively concatenating, with the \'.' character, the name of
-its ancestors with its own name. This naming convention is used in the
+the children of a same parent entity. In addition, the name string cannot
+contain dots, spaces or tabulations. A child entity is identified into the
+solar plant by successively concatenating, with the \'.' character, the name
+of its ancestors with its own name. This naming convention is used in the
*solstice-receiver*(5) format to define the entities to track during the
*solstice*(1) computations. For instance, in the following example, the
*entity-identifier* of the child entity named *level2* is
@@ -764,13 +765,15 @@ Anchor
~~~~~~
An *anchor* defines a relative position into the entity hierarchy. They are
-particularly useful for pivots and hyperbolic shapes that may have to reference
-a position relative to an entity whose transformations may also depends of its
-ancestor. An anchor has a *name* that must be unique for the whole sets of per
-entity anchors. An anchor is identified into the solar plant by concatenating,
-with the \'.' character, its name to the *entity-identifier* of the entity into
-which it is declared. For instance, in the following example, the
-*anchor-identifier* of the anchor named *anchor0* is *level0.level1.anchor0*:
+particularly useful for pivots and hyperbolic shapes that may have to
+reference a position relative to an entity whose transformations may also
+depends of its ancestor. An anchor has a *name* that must be unique for the
+whole sets of per entity anchors. In addition, a name cannot contain
+dots, spaces or tabulations. An anchor is identified into the solar plant by
+concatenating, with the \'.' character, its name to the *entity-identifier* of
+the entity into which it is declared. For instance, in the following example,
+the *anchor-identifier* of the anchor named *anchor0* is
+*level0.level1.anchor0*:
.......
entity:
name: level0
diff --git a/doc/solstice-output.5.txt b/doc/solstice-output.5.txt
@@ -168,6 +168,7 @@ _______
<missing-loss> ::= <estimate>
<reflectivity-loss> ::= <estimate>
<shadow-loss> ::= <estimate>
+<efficiency> ::= <estimate>
<estimate> ::= <expected-value> <standard-error>
<expected-value> ::= REAL
@@ -349,8 +350,7 @@ VTK-RECEIVER-MAP ::= # vtk DataFile Version 2.0
<map-front-data> ::= <map-side-data>
<map-back-data> ::= <map-side-data>
-<map-side-data> ::= CELL_DATA <#triangles>
- SCALARS <side-name> float 2
+<map-side-data> ::= SCALARS <side-name> float 2
LOOKUP_TABLE default
<irradiance>
[ <irradiance> ... ]
diff --git a/src/parser/solparser_entity.c b/src/parser/solparser_entity.c
@@ -95,6 +95,13 @@ parse_identifier_string
if(strchr(str_cget(str), '.')) {
log_err(parser, name, "invalid character `.' in the name `%s'.\n",
str_cget(str));
+ res = RES_BAD_ARG;
+ goto error;
+ }
+ if(strchr(str_cget(str), ' ') || strchr(str_cget(str), '\t')) {
+ log_err(parser, name, "invalid space or tabulation in the name `%s'.\n",
+ str_cget(str));
+ res = RES_BAD_ARG;
goto error;
}
diff --git a/src/parser/test_solparser2.c b/src/parser/test_solparser2.c
@@ -44,6 +44,7 @@ main(int argc, char** argv)
size_t nmtls = 0;
size_t ngeoms = 0;
double tmp[3];
+ long fp;
FILE* stream;
(void)argc, (void)argv;
@@ -57,9 +58,29 @@ main(int argc, char** argv)
fprintf(stream, " - sphere: { radius: 1 }\n");
fprintf(stream, " material: { matte: { reflectivity: 1 } }\n");
fprintf(stream, "- entity:\n");
- fprintf(stream, " name: lvl 0\n");
fprintf(stream, " primary: 0\n");
fprintf(stream, " geometry: *sphere\n");
+
+ fp = ftell(stream);
+ fprintf(stream, " name: invalid name\n");
+ rewind(stream);
+ CHECK(solparser_setup(parser, NULL, stream), RES_OK);
+ CHECK(solparser_load(parser), RES_BAD_ARG);
+
+ NCHECK(fseek(stream, fp, SEEK_SET), -1);
+ fprintf(stream, " name: invalid\tname\n");
+ rewind(stream);
+ CHECK(solparser_setup(parser, NULL, stream), RES_OK);
+ CHECK(solparser_load(parser), RES_BAD_ARG);
+
+ NCHECK(fseek(stream, fp, SEEK_SET), -1);
+ fprintf(stream, " name: invalid.name\n");
+ rewind(stream);
+ CHECK(solparser_setup(parser, NULL, stream), RES_OK);
+ CHECK(solparser_load(parser), RES_BAD_ARG);
+
+ NCHECK(fseek(stream, fp, SEEK_SET), -1);
+ fprintf(stream, " name: \t\t\t lvl0 \t \n");
fprintf(stream, " transform: { translation: [1,2,3], rotation: [4,5,6]}\n");
fprintf(stream, " children:\n");
fprintf(stream, " - name: lvl1a\n");
@@ -118,7 +139,7 @@ main(int argc, char** argv)
entity_id = solparser_entity_iterator_get(&it);
entity = solparser_get_entity(parser, entity_id);
- CHECK(strcmp("lvl 0", str_cget(&entity->name)), 0);
+ CHECK(strcmp("lvl0", str_cget(&entity->name)), 0);
CHECK(solparser_entity_get_children_count(entity), 2);
CHECK(entity->type, SOLPARSER_ENTITY_GEOMETRY);
geom_id = entity->data.geometry;
@@ -192,17 +213,17 @@ main(int argc, char** argv)
CHECK(entity2->type, SOLPARSER_ENTITY_GEOMETRY);
CHECK(entity2->data.geometry.i, geom_id.i);
- entity3 = solparser_find_entity(parser, "lvl 0");
+ entity3 = solparser_find_entity(parser, "lvl0");
CHECK(entity3, entity);
entity3 = solparser_find_entity(parser, "lvl1a");
CHECK(entity3, NULL);
- entity3 = solparser_find_entity(parser, "lvl 0.lvl1a");
+ entity3 = solparser_find_entity(parser, "lvl0.lvl1a");
CHECK(entity3, entity1a);
- entity3 = solparser_find_entity(parser, "lvl 0.lvl1b");
+ entity3 = solparser_find_entity(parser, "lvl0.lvl1b");
CHECK(entity3, entity1b);
- entity3 = solparser_find_entity(parser, "lvl 0.lvl1b.lvl2");
+ entity3 = solparser_find_entity(parser, "lvl0.lvl1b.lvl2");
CHECK(entity3, entity2);
- entity3 = solparser_find_entity(parser,"lvl 0.lvl1b.bad_name");
+ entity3 = solparser_find_entity(parser,"lvl0.lvl1b.bad_name");
CHECK(entity3, NULL);
sun = solparser_get_sun(parser);
diff --git a/src/parser/test_solparser_normal_map.c b/src/parser/test_solparser_normal_map.c
@@ -186,7 +186,7 @@ test_mirror(struct solparser* parser)
fprintf(stream, "- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1} ] }\n");
fprintf(stream, "- entity: \n");
- fprintf(stream, " name: my entity\n");
+ fprintf(stream, " name: my_entity\n");
fprintf(stream, " primary: 0\n");
fprintf(stream, " geometry: \n");
fprintf(stream, " - cuboid: { size: [1, 1, 1] }\n");
@@ -207,7 +207,7 @@ test_mirror(struct solparser* parser)
entity_id = solparser_entity_iterator_get(&it);
entity = solparser_get_entity(parser, entity_id);
- CHECK(strcmp("my entity", str_cget(&entity->name)), 0);
+ CHECK(strcmp("my_entity", str_cget(&entity->name)), 0);
CHECK(solparser_entity_get_children_count(entity), 0);
CHECK(entity->primary, 0);
CHECK(entity->type, SOLPARSER_ENTITY_GEOMETRY);
diff --git a/src/parser/test_solparser_spectrum.c b/src/parser/test_solparser_spectrum.c
@@ -42,7 +42,7 @@ test_sun(struct solparser* parser)
fprintf(stream, " spectrum: *my_spectrum\n");
fprintf(stream, "- material: &matte { matte: { reflectivity: 1 } }\n");
fprintf(stream, "- entity:\n");
- fprintf(stream, " name: foo bar\n");
+ fprintf(stream, " name: foo-bar\n");
fprintf(stream, " primary: 0\n");
fprintf(stream, " geometry: [{sphere: {radius: 1}, material: *matte}]\n");
rewind(stream);
diff --git a/src/solstice.c b/src/solstice.c
@@ -741,8 +741,9 @@ solstice_run(struct solstice* solstice)
} else {
FOR_EACH(i, 0, nsun_dirs) {
const double* sun_dir = sun_dirs + i*3/*#dims*/;
+ const double* sun_angle = sun_angles + i*2/*#angles*/;
fprintf(solstice->output, "#--- Sun direction: %g %g (%g %g %g)\n",
- SPLIT2(sun_angles), SPLIT3(sun_dir));
+ SPLIT2(sun_angle), SPLIT3(sun_dir));
res = solstice_update_entities(solstice, sun_dir);
if(res != RES_OK) goto error;
diff --git a/src/solstice_args.c b/src/solstice_args.c
@@ -45,8 +45,7 @@ print_help(const char* program)
printf(
" -D <dirs> list of sun directions.\n");
printf(
-" -f do not prompt before overwriting the output file submitted\n"
-" with the '-o' option.\n");
+" -f overwrite the OUTPUT file if it already exists.\n");
printf(
" -g <dump> switch in dump geometry mode and configure it.\n");
printf(
diff --git a/yaml/beam_down.ref b/yaml/beam_down.ref
@@ -1,52 +1,52 @@
#--- Sun direction: 90 90 (-3.7494e-33 -6.12323e-17 -1)
7 2 5 100000 0
500.043 0
-465.46 0.0057839
-0.930834 1.15684e-05
+465.462 0.00578398
+0.930838 1.15681e-05
0 0
0 0
0 0
0 0
-tower.secondary.hyperbol 10 421.957 0 0 465.46 0.0057839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-tower.receptor 14 25 465.46 0.0057839 465.46 0.0057839 0 0 0 0 0.93084 1.15668e-05 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-heliostat4.temp-heliostat150.pivot.reflector 6 100.009 19915 0 0 0 0
-heliostat5.temp-heliostat150.pivot.reflector 30 100.009 20068 0 0 0 0
-heliostat3.temp-heliostat150.pivot.reflector 22 100.009 19919 0 0 0 0
-heliostat2.temp-heliostat150.pivot.reflector 26 100.009 20054 0 0 0 0
-heliostat1.temp-heliostat150.pivot.reflector 34 100.009 20044 0 0 0 0
-10 6 0 0 92.7742 0.588324 0 0 0 0 0 0 0 0 0 0 0 0
-10 30 0 0 93.2842 0.588736 0 0 0 0 0 0 0 0 0 0 0 0
-10 22 0 0 92.8029 0.588432 0 0 0 0 0 0 0 0 0 0 0 0
-10 26 0 0 93.4242 0.589876 0 0 0 0 0 0 0 0 0 0 0 0
-10 34 0 0 93.1748 0.588486 0 0 0 0 0 0 0 0 0 0 0 0
-14 6 92.7742 0.588324 92.7742 0.588324 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 30 93.2842 0.588736 93.2842 0.588736 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 22 92.8029 0.588432 92.8029 0.588432 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 26 93.4242 0.589876 93.4242 0.589876 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 34 93.1748 0.588486 93.1748 0.588486 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+tower.secondary.hyperbol 10 421.957 0 0 465.462 0.00578398 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+tower.receptor 14 25 465.462 0.00578398 465.462 0.00578398 0 0 0 0 0.930843 1.1567e-05 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+heliostat4.temp-heliostat150.pivot.reflector 6 100.009 19934 0.185708 0.00117696 0 0
+heliostat5.temp-heliostat150.pivot.reflector 30 100.009 20264 0.188378 0.00118168 0 0
+heliostat3.temp-heliostat150.pivot.reflector 22 100.009 19746 0.183977 0.0011729 0 0
+heliostat2.temp-heliostat150.pivot.reflector 26 100.009 20054 0.186834 0.00117966 0 0
+heliostat1.temp-heliostat150.pivot.reflector 34 100.009 20002 0.185941 0.00117593 0 0
+10 6 0 0 92.8625 0.588533 0 0 0 0 0 0 0 0 0 0 0 0
+10 30 0 0 94.198 0.590895 0 0 0 0 0 0 0 0 0 0 0 0
+10 22 0 0 91.9969 0.586504 0 0 0 0 0 0 0 0 0 0 0 0
+10 26 0 0 93.4254 0.589884 0 0 0 0 0 0 0 0 0 0 0 0
+10 34 0 0 92.9793 0.588022 0 0 0 0 0 0 0 0 0 0 0 0
+14 6 92.8625 0.588533 92.8625 0.588533 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 30 94.198 0.590895 94.198 0.590895 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 22 91.9969 0.586504 91.9969 0.586504 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 26 93.4254 0.589884 93.4254 0.589884 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 34 92.9793 0.588022 92.9793 0.588022 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
#--- Sun direction: 50 50 (-0.413176 -0.492404 -0.766044)
7 2 5 100000 0
500.043 0
-135.852 0.602426
-0.800261 7.05527e-05
+135.955 0.602452
+0.800093 7.03652e-05
0 0
-245.21 0.615008
+244.612 0.615276
0 0
0 0
-tower.secondary.hyperbol 10 421.957 0 0 400.167 0.0352796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-tower.receptor 14 25 135.852 0.602426 135.852 0.602426 0 0 0 0 0.271681 0.00120475 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-heliostat4.temp-heliostat150.pivot.reflector 6 100.009 20095 0 0 0 0
-heliostat5.temp-heliostat150.pivot.reflector 30 100.009 20027 0 0 0 0
-heliostat3.temp-heliostat150.pivot.reflector 22 100.009 19777 0 0 0 0
-heliostat2.temp-heliostat150.pivot.reflector 26 100.009 19976 0 0 0 0
-heliostat1.temp-heliostat150.pivot.reflector 34 100.009 20125 0 0 0 0
-10 6 0 0 78.903 0.497568 0 0 0 0 0 0 0 0 0 0 0 0
-10 30 0 0 77.0867 0.487147 0 0 0 0 0 0 0 0 0 0 0 0
-10 22 0 0 79.1052 0.503835 0 0 0 0 0 0 0 0 0 0 0 0
-10 26 0 0 81.4942 0.515816 0 0 0 0 0 0 0 0 0 0 0 0
-10 34 0 0 83.5784 0.526554 0 0 0 0 0 0 0 0 0 0 0 0
-14 6 22.1799 0.286704 22.1799 0.286704 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 30 18.6614 0.26147 18.6614 0.26147 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 22 25.3271 0.308097 25.3271 0.308097 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 26 31.6777 0.345324 31.6777 0.345324 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
-14 34 38.0063 0.378737 38.0063 0.378737 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+tower.secondary.hyperbol 10 421.957 0 0 400.083 0.0351855 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+tower.receptor 14 25 135.955 0.602452 135.955 0.602452 0 0 0 0 0.271887 0.0012048 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+heliostat4.temp-heliostat150.pivot.reflector 6 100.009 20121 0.157986 0.000995464 0 0
+heliostat5.temp-heliostat150.pivot.reflector 30 100.009 20226 0.155708 0.000977921 0 0
+heliostat3.temp-heliostat150.pivot.reflector 22 100.009 19829 0.15861 0.00100856 0 0
+heliostat2.temp-heliostat150.pivot.reflector 26 100.009 20002 0.163177 0.00103199 0 0
+heliostat1.temp-heliostat150.pivot.reflector 34 100.009 19822 0.164613 0.00104696 0 0
+10 6 0 0 79.0003 0.497778 0 0 0 0 0 0 0 0 0 0 0 0
+10 30 0 0 77.8612 0.489006 0 0 0 0 0 0 0 0 0 0 0 0
+10 22 0 0 79.3121 0.504326 0 0 0 0 0 0 0 0 0 0 0 0
+10 26 0 0 81.5961 0.516042 0 0 0 0 0 0 0 0 0 0 0 0
+10 34 0 0 82.3139 0.523526 0 0 0 0 0 0 0 0 0 0 0 0
+14 6 22.5024 0.288631 22.5024 0.288631 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 30 18.7466 0.26204 18.7466 0.26204 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 22 25.423 0.308639 25.423 0.308639 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 26 31.5382 0.344622 31.5382 0.344622 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
+14 34 37.7451 0.377566 37.7451 0.377566 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1
diff --git a/yaml/test01.ref b/yaml/test01.ref
@@ -8,5 +8,5 @@
0 0
0 0
square_receiver 2 100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 1 0 0 0 0 0 0 0
-reflector 6 1 10000 0 0 0 0
+reflector 6 1 10000 1 0 0 0
2 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 1 0 0 0 0 0
diff --git a/yaml/test02.ref b/yaml/test02.ref
@@ -1,12 +1,12 @@
#--- Sun direction: 0 90 (-6.12323e-17 -0 -1)
7 1 1 10000 0
100 0
-0.96 0.0975082
+0.91 0.0949589
1 0
0 0
-99.04 0.0975082
+99.09 0.0949589
0 0
0 0
-square_receiver 2 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0.96 0.0975082 0.96 0.0975082 0 0 0 0 0.0096 0.000975082
-reflector 6 100 10000 0 0 0 0
-2 6 -1 -1 -1 -1 -1 -1 -1 -1 0.96 0.0975082 0.96 0.0975082 0 0 0 0
+square_receiver 2 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0.91 0.0949589 0.91 0.0949589 0 0 0 0 0.0091 0.000949589
+reflector 6 100 10000 1 0 0 0
+2 6 -1 -1 -1 -1 -1 -1 -1 -1 0.91 0.0949589 0.91 0.0949589 0 0 0 0
diff --git a/yaml/test03.ref b/yaml/test03.ref
@@ -2,11 +2,11 @@
7 1 1 10000 0
1 0
0 0
-0.707107 0
+0.707107 2.44511e-09
0 0
-0.707107 0
+0.707107 2.44511e-09
0 0
0 0
-square_receiver 2 100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0.707107 0 0 0 0 0 0 0
-reflector 6 1 10000 0 0 0 0
-2 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0.707107 0 0 0 0 0
+square_receiver 2 100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0.707107 2.44511e-09 0 0 0 0 0 0
+reflector 6 1 10000 0.707107 2.44511e-09 0 0
+2 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0.707107 2.44511e-09 0 0 0 0
diff --git a/yaml/test04.ref b/yaml/test04.ref
@@ -2,11 +2,11 @@
7 1 1 10000 0
1 0
0 0
-0.707107 0
+0.707107 2.44511e-09
0 0
-0.707107 0
+0.707107 2.44511e-09
0 0
0 0
-square_receiver 2 100 0 0 0 0 0 0 0 0 0 0 0 0 0.707107 0 0 0 0 0 0 0
-reflector 6 1 10000 0 0 0 0
-2 6 0 0 0 0 0 0 0 0 0 0 0.707107 0 0 0 0 0
+square_receiver 2 100 0 0 0 0 0 0 0 0 0 0 0 0 0.707107 2.44511e-09 0 0 0 0 0 0
+reflector 6 1 10000 0.707107 2.44511e-09 0 0
+2 6 0 0 0 0 0 0 0 0 0 0 0.707107 2.44511e-09 0 0 0 0
diff --git a/yaml/test05.ref b/yaml/test05.ref
@@ -8,5 +8,5 @@
0 0
0 0
spherical_receiver 2 50.2403 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 1 0 0 0 0 0 0 0
-reflector 6 1 10000 0 0 0 0
+reflector 6 1 10000 1 0 0 0
2 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 1 0 0 0 0 0
diff --git a/yaml/test06.ref b/yaml/test06.ref
@@ -2,11 +2,11 @@
7 1 1 10000 0
111.97 0
0 0
-0.896295 0.000571234
+0.896777 0.000575378
0 0
-100 0
+100 2.33602e-08
0 0
0 0
-reflector.ground.pivot.small_square 10 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 100 0 0 0 0 0 0 0
-reflector.ground.pivot.parabol 6 111.97 10000 0 0 0 0
-10 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 100 0 0 0 0 0
+reflector.ground.pivot.small_square 10 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 100 2.33602e-08 0 0 0 0 0 0
+reflector.ground.pivot.parabol 6 111.97 10000 0.896777 0.000575378 0 0
+10 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 100 2.33602e-08 0 0 0 0
diff --git a/yaml/test07.ref b/yaml/test07.ref
@@ -1,12 +1,12 @@
#--- Sun direction: 0 90 (-6.12323e-17 -0 -1)
7 1 1 10000 0
-56.3503 0
+56.3501 0
0 0
-0.666607 0.00232391
+0.66742 0.00232559
0 0
-28.093 0
+28.093 5.04637e-08
0 0
0 0
-square_receiver 2 100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 28.093 0 0 0 0 0 0 0
-reflector 6 56.3503 10000 0 0 0 0
-2 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 28.093 0 0 0 0 0
+square_receiver 2 100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 28.0902 0.00280916 0 0 0 0 0 0
+reflector 6 56.3501 10000 0.66742 0.00232559 0 0
+2 6 -1 -1 -1 -1 -1 -1 -1 -1 0 0 28.0902 0.00280916 0 0 0 0
diff --git a/yaml/test08.ref b/yaml/test08.ref
@@ -2,11 +2,11 @@
7 1 1 10000 0
85.5109 0
0 0
-0.917875 0.000431307
+0.918392 0.000433033
0 0
-78.4137 2.52319e-08
+78.4137 0
0 0
0 0
-reflector.pivot.small_square 6 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 78.4137 2.52319e-08 0 0 0 0 0 0
-reflector.pivot.parabol 2 85.5109 10000 0 0 0 0
-6 2 -1 -1 -1 -1 -1 -1 -1 -1 0 0 78.4137 2.52319e-08 0 0 0 0
+reflector.pivot.small_square 6 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 78.4137 0 0 0 0 0 0 0
+reflector.pivot.parabol 2 85.5109 10000 0.918392 0.000433033 0 0
+6 2 -1 -1 -1 -1 -1 -1 -1 -1 0 0 78.4137 0 0 0 0 0