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 5bd96f578cfccb3e0a3cbb3779610d513db7e785
parent a3c2027708c5bbfe5ef97e468335a32cd4e86b8d
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed,  9 Nov 2016 12:16:18 +0100

Update the parse_transform function

Diffstat:
Msrc/solstice_facility.c | 46+++++++++++++++++++++++++---------------------
1 file changed, 25 insertions(+), 21 deletions(-)

diff --git a/src/solstice_facility.c b/src/solstice_facility.c @@ -18,6 +18,7 @@ #include "solstice_facility.h" #include <rsys/cstr.h> +#include <rsys/double3.h> #include <stdarg.h> #include <stdio.h> @@ -129,7 +130,7 @@ parse_real } if(*dst < lower_bound || *dst > upper_bound) { - log_err(filename, real, "%g must be in [%g, %g].\n", + log_err(filename, real, "%g is not in [%g, %g].\n", *dst, lower_bound, upper_bound); res = RES_BAD_ARG; goto error; @@ -207,7 +208,7 @@ parse_integer } if(*dst < lower_bound || *dst > upper_bound) { - log_err(filename, integer, "%li must be in [%li, %li].\n", + log_err(filename, integer, "%li is not in [%li, %li].\n", *dst, lower_bound, upper_bound); res = RES_BAD_ARG; goto error; @@ -241,14 +242,17 @@ parse_transform (const char* filename, yaml_document_t* doc, const yaml_node_t* transform, - double position[3], + double translation[3], double rotation[3]) { - enum { POSITION, ROTATION }; + enum { ROTATION, TRANSLATION }; intptr_t i, n; int mask = 0; /* Register the parsed attributes */ res_T res = RES_OK; - ASSERT(doc && position && rotation && transform); + ASSERT(doc && translation && rotation && transform); + + d3_splat(translation, 0); + d3_splat(rotation, 0); if(transform->type != YAML_MAPPING_NODE) { log_err(filename, transform, "expect a mapping of transform parameters.\n"); @@ -277,9 +281,9 @@ parse_transform } \ mask |= BIT(Flag); \ } (void)0 - if(!strcmp((char*)key->data.scalar.value, "position")) { - SETUP_MASK(POSITION, "position"); - res = parse_real3(filename, doc, val, -DBL_MAX, DBL_MAX, position); + if(!strcmp((char*)key->data.scalar.value, "translation")) { + SETUP_MASK(TRANSLATION, "translation"); + res = parse_real3(filename, doc, val, -DBL_MAX, DBL_MAX, translation); } else if(!strcmp((char*)key->data.scalar.value, "rotation")) { SETUP_MASK(ROTATION, "rotation"); res = parse_real3(filename, doc, val, -DBL_MAX, DBL_MAX, rotation); @@ -414,7 +418,7 @@ parse_instance (const char* filename, yaml_document_t* doc, const yaml_node_t* inst) { enum { GEOMETRY, TRANSFORM }; - double position[3] = {0, 0, 0}; + double translation[3] = {0, 0, 0}; double rotation[3] = {0, 0, 0}; intptr_t i, n; int mask = 0; /* Register the parsed attributes */ @@ -455,7 +459,7 @@ parse_instance res = parse_object(filename, doc, val); } else if(!strcmp((char*)key->data.scalar.value, "transform")) { SETUP_MASK(TRANSFORM, "transform"); - res = parse_transform(filename, doc, val, position, rotation); + res = parse_transform(filename, doc, val, translation, rotation); } else { log_err(filename, key, "unknown instance parameter `%s'.\n", key->data.scalar.value); @@ -497,7 +501,7 @@ parse_material_matte ASSERT(doc && matte); if(matte->type != YAML_MAPPING_NODE) { - log_err(filename, matte, "expect a mapping of matte material attributes.\n"); + log_err(filename, matte, "expect a mapping of matte material parameters.\n"); res = RES_BAD_ARG; goto error; } @@ -510,7 +514,7 @@ parse_material_matte key = yaml_document_get_node(doc, matte->data.mapping.pairs.start[0].key); val = yaml_document_get_node(doc, matte->data.mapping.pairs.start[0].value); if(key->type != YAML_SCALAR_NODE) { - log_err(filename, key, "expect a matte material attribute.\n"); + log_err(filename, key, "expect a matte material parameter.\n"); res = RES_BAD_ARG; goto error; } @@ -524,7 +528,7 @@ parse_material_matte mask |= BIT(REFLECTIVITY); res = parse_real(filename, val, 0, 1, &reflectivity); } else { - log_err(filename, key, "unknown matte attribute `%s'.\n", + log_err(filename, key, "unknown matte parameter `%s'.\n", key->data.scalar.value); res = RES_BAD_ARG; } @@ -1333,7 +1337,7 @@ parse_object (const char* filename, yaml_document_t* doc, const yaml_node_t* object) { enum { MATERIAL, SHAPE, TRANSFORM }; - double position[3] = {0, 0, 0}; + double translation[3] = {0, 0, 0}; double rotation[3] = {0, 0, 0}; intptr_t i, n; int mask = 0; /* Register the parsed attributes */ @@ -1365,7 +1369,7 @@ parse_object #define SETUP_MASK(Flag, Name) { \ if(mask & BIT(Flag)) { \ log_err(filename, key, \ - "the object parameter `"Name"' is already defined.\n"); \ + "the object "Name" is already defined.\n"); \ res = RES_BAD_ARG; \ goto error; \ } \ @@ -1400,7 +1404,7 @@ parse_object res = parse_imported_geometry(filename, doc, val, GEOMETRY_STL); } else if(!strcmp((char*)key->data.scalar.value, "transform")) { SETUP_MASK(TRANSFORM, "transform"); - res = parse_transform(filename, doc, val, position, rotation); + res = parse_transform(filename, doc, val, translation, rotation); } else { log_err(filename, key, "unknown object parameter `%s'.\n", key->data.scalar.value); @@ -1412,7 +1416,7 @@ parse_object #define CHECK_PARAM(Flag, Name) \ if(!(mask & BIT(Flag))) { \ - log_err(filename, object, "the object attribute `"Name"' is missing.\n");\ + log_err(filename, object, "the object "Name" is missing.\n"); \ res = RES_BAD_ARG; \ goto error; \ } (void)0 @@ -1552,7 +1556,7 @@ res_T parse_node(const char* filename, yaml_document_t* doc, const yaml_node_t* node) { enum { CHILDREN, ENTITIES, TRANSFORM }; - double position[3] = {0, 0, 0}; + double translation[3] = {0, 0, 0}; double rotation[3] = {0, 0, 0}; intptr_t i, n; int mask = 0; /* Register the parsed attributes */ @@ -1595,7 +1599,7 @@ parse_node(const char* filename, yaml_document_t* doc, const yaml_node_t* node) res = parse_entities(filename, doc, val); } else if(!strcmp((char*)key->data.scalar.value, "transform")) { SETUP_MASK(TRANSFORM, "transform"); - res = parse_transform(filename, doc, val, position, rotation); + res = parse_transform(filename, doc, val, translation, rotation); } else { log_err(filename, key, "unknown node parameter `%s'.\n", key->data.scalar.value); @@ -1701,7 +1705,7 @@ parse_pivot enum { NORMAL, POINT, TARGET, TRANSFORM }; double point[3]; double normal[3]; - double position[3] = {0, 0, 0}; + double translation[3] = {0, 0, 0}; double rotation[3] = {0, 0, 0}; int mask = 0; /* Register the parsed attributes */ intptr_t i, n; @@ -1746,7 +1750,7 @@ parse_pivot res = parse_target(filename, doc, val); } else if(!strcmp((char*)key->data.scalar.value, "transform")) { SETUP_MASK(TRANSFORM, "transform"); - res = parse_transform(filename, doc, val, position, rotation); + res = parse_transform(filename, doc, val, translation, rotation); } else { log_err(filename, key, "unknown pivot parameter `%s'.\n", key->data.scalar.value);