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 24ba00addec0c8705891d6a6c51d2c18145ca198
parent ce19269ae3ac8b54ea852961c3a47a7f640ce7c8
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 14 Mar 2017 18:15:49 +0100

First draft of the dump of the per receiver primitive MC estimations

Diffstat:
Msrc/solstice_solve.c | 68+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 67 insertions(+), 1 deletion(-)

diff --git a/src/solstice_solve.c b/src/solstice_solve.c @@ -88,7 +88,7 @@ write_global_mc(struct solstice* solstice, struct ssol_estimator* estimator) SSOL(instance_get_id(inst, &id)); fprintf(solstice->output, "%s %u %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", - str_cget(name), (unsigned) id, + str_cget(name), (unsigned)id, front.integrated_irradiance.E, front.integrated_irradiance.SE, back.integrated_irradiance.E, back.integrated_irradiance.SE, front.reflectivity_loss.E, front.reflectivity_loss.SE, @@ -106,6 +106,72 @@ write_global_mc(struct solstice* solstice, struct ssol_estimator* estimator) mc_global.missing.E, mc_global.missing.SE); } +static void +dump_shaded_shape + (struct solstice* solstice, + struct ssol_estimator* estimator, + struct ssol_instantiated_shaded_shape* inst_sshape, + const char* name) +{ + unsigned ivert, nverts; + unsigned itri, ntris; + ASSERT(solstice && estimator && inst_sshape && name); + + /* Write the header */ + fprintf(solstice->output, "# vtk DataFile Version 2.0\n"); + fprintf(solstice->output, "%s\n", name); + fprintf(solstice->output, "ASCII\n"); + fprintf(solstice->output, "DATASET POLYDATA\n"); + + /* Write vertex position */ + SSOL(shape_get_vertices_count(inst_sshape->shape, &nverts)); + fprintf(solstice->output, "POINTS %u float\n", nverts); + FOR_EACH(ivert, 0, nverts) { + double pos[3]; + SSOL(instantiated_shaded_shape_get_vertex_attrib + (inst_sshape, ivert, SSOL_POSITION, pos)); + fprintf(solstice->output, "%f %f %f\n", SPLIT3(pos)); + } + + /* Write triangles */ + SSOL(shape_get_triangles_count(inst_sshape->shape, &ntris)); + fprintf(solstice->output, "POLYGONS %u %u\n", ntris, ntris*4); + FOR_EACH(itri, 0, ntris) { + unsigned ids[3]; + SSOL(shape_get_triangle_indices(inst_sshape->shape, itri, ids)); + fprintf(solstice->output, "3 %u %u %u\n", SPLIT3(ids)); + } + + /* TODO Write estimated values */ +} + +static void +write_per_receiver_primitive_mc + (struct solstice* solstice, struct ssol_estimator* estimator) +{ + struct htable_receiver_iterator it, end; + ASSERT(solstice && estimator); + + htable_receiver_begin(&solstice->receivers, &it); + htable_receiver_end(&solstice->receivers, &end); + while(!htable_receiver_iterator_eq(&it, &end)) { + const struct str* name = htable_receiver_iterator_key_get(&it); + struct solstice_receiver* rcv = htable_receiver_iterator_data_get(&it); + struct ssol_instance* inst = rcv->node->instance; + size_t nshapes; + size_t ishape; + + htable_receiver_iterator_next(&it); + + SSOL(instance_get_shaded_shapes_count(inst, &nshapes)); + FOR_EACH(ishape, 0, nshapes) { + struct ssol_instantiated_shaded_shape inst_sshape; + SSOL(instance_get_shaded_shape(inst, ishape, &inst_sshape)); + dump_shaded_shape(solstice, estimator, &inst_sshape, str_cget(name)); + } + } +} + /******************************************************************************* * Local functions ******************************************************************************/