solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

commit 913e96e37a3dac8aa0a7fdece8874d5131767a97
parent 780378bd3050f86bb0d2b07e9094b4369b6a8129
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Tue, 24 Jan 2017 14:28:17 +0100

BugFix: handling of rescanning of receivers regarding global counters.

Diffstat:
Msrc/ssol_estimator.c | 8+++++---
Msrc/ssol_solver.c | 10++++++++++
2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/ssol_estimator.c b/src/ssol_estimator.c @@ -64,10 +64,12 @@ estimator_create_global_receivers htable_instance_iterator_next(&it); if (inst->receiver_mask) { - res_T res = htable_receiver_set - (&estimator->global_receivers, &inst, &MC_DATA2_NULL); - if (res != RES_OK) return res; has_receiver = 1; + if (!htable_receiver_find(&estimator->global_receivers, &inst)) { + res_T res = htable_receiver_set + (&estimator->global_receivers, &inst, &MC_DATA2_NULL); + if (res != RES_OK) return res; + } } /* FIXME: should not sample virtual (material) instance as material is used diff --git a/src/ssol_solver.c b/src/ssol_solver.c @@ -389,6 +389,16 @@ ssol_solve htable_receiver_init(scn->dev->allocator, mc_rcvs + i); res = htable_receiver_copy(mc_rcvs + i, &estimator->global_receivers); if(res != RES_OK) goto error; + htable_receiver_begin(mc_rcvs + i, &it); + htable_receiver_end(mc_rcvs + i, &end); + while (!htable_receiver_iterator_eq(&it, &end)) { + struct mc_data_2* estimator_data = htable_receiver_iterator_data_get(&it); + estimator_data->front.weight = 0; + estimator_data->front.sqr_weight = 0; + estimator_data->back.weight = 0; + estimator_data->back.sqr_weight = 0; + htable_receiver_iterator_next(&it); + } } #pragma omp parallel for schedule(static)