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:
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)