solstice-solver

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

commit 18f052ad97ae7c9811b74ef98377d550876e5eb6
parent 243b7b0254a38b411d4a61b952bed9b585b0da6e
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Thu, 22 Sep 2016 16:28:51 +0200

Naming uniformization (frequency -> wavelength).

Diffstat:
Msrc/ssol_ranst_sun_wl.c | 8++++----
Msrc/ssol_ranst_sun_wl.h | 2+-
Msrc/ssol_scene.c | 2+-
Msrc/ssol_solver.c | 17+++++++++--------
Msrc/ssol_solver_c.h | 2+-
Msrc/ssol_spectrum.c | 38++++++++++++++++++++------------------
Msrc/ssol_spectrum_c.h | 2+-
Msrc/test_ssol_solver1.c | 10+++++-----
Msrc/test_ssol_solver2.c | 4++--
Msrc/test_ssol_solver3.c | 4++--
Msrc/test_ssol_solver4.c | 4++--
Msrc/test_ssol_solver5.c | 4++--
12 files changed, 50 insertions(+), 47 deletions(-)

diff --git a/src/ssol_ranst_sun_wl.c b/src/ssol_ranst_sun_wl.c @@ -154,12 +154,12 @@ ranst_sun_wl_get res_T ranst_sun_wl_setup (struct ranst_sun_wl* ran, - const double* frequencies, + const double* wavelengths, const double* intensities, const size_t sz) { res_T res = RES_OK; - if (!ran || !frequencies || !intensities || !sz) + if (!ran || !wavelengths || !intensities || !sz) return RES_BAD_ARG; if (sz > 1) { ran->type = WL_PIECEWISE; @@ -168,13 +168,13 @@ ranst_sun_wl_setup ran->allocator, &ran->state.piecewise.spectrum); if (res != RES_OK) goto error; res = ssp_ranst_piecewise_linear_setup - (ran->state.piecewise.spectrum, frequencies, intensities, sz); + (ran->state.piecewise.spectrum, wavelengths, intensities, sz); if (res != RES_OK) goto error; } else { ran->type = WL_DIRAC; ran->get = &ran_dirac_get; - ran->state.dirac.wavelength = frequencies[0]; + ran->state.dirac.wavelength = wavelengths[0]; } end: return res; diff --git a/src/ssol_ranst_sun_wl.h b/src/ssol_ranst_sun_wl.h @@ -31,7 +31,7 @@ ranst_sun_wl_create extern LOCAL_SYM res_T ranst_sun_wl_setup (struct ranst_sun_wl* ran, - const double* frequencies, + const double* wavelengths, const double* intensities, const size_t sz); diff --git a/src/ssol_scene.c b/src/ssol_scene.c @@ -411,7 +411,7 @@ hit_filter_function str_cget(receiver_name), (unsigned) rs->rs_id, (unsigned) rs->s_idx, - rs->freq, + rs->wavelength, seg->weight, SPLIT3(seg->hit_pos), SPLIT3(seg->dir), diff --git a/src/ssol_solver.c b/src/ssol_solver.c @@ -66,7 +66,7 @@ set_sun_distributions(struct solver_data* data) struct ssol_spectrum* spectrum; struct ssol_device* dev; const struct ssol_sun* sun; - const double* frequencies; + const double* wavelengths; const double* intensities; res_T res = RES_OK; size_t sz; @@ -81,11 +81,11 @@ set_sun_distributions(struct solver_data* data) res = ranst_sun_wl_create(dev->allocator, &data->sun_wl_ran); if (res != RES_OK) goto error; spectrum = sun->spectrum; - frequencies = darray_double_cdata_get(&spectrum->frequencies); + wavelengths = darray_double_cdata_get(&spectrum->wavelengths); intensities = darray_double_cdata_get(&spectrum->intensities); - sz = darray_double_size_get(&spectrum->frequencies); + sz = darray_double_size_get(&spectrum->wavelengths); res = ranst_sun_wl_setup( - data->sun_wl_ran, frequencies, intensities, sz); + data->sun_wl_ran, wavelengths, intensities, sz); if (res != RES_OK) goto error; /* then the direction distribution */ res = ranst_sun_dir_create(dev->allocator, &data->sun_dir_ran); @@ -251,7 +251,8 @@ setup_next_segment(struct realisation* rs) d3_set(seg->org, prev->hit_pos); - res = material_shade(prev->hit_material, &data->fragment, rs->freq, data->brdfs); + res = material_shade( + prev->hit_material, &data->fragment, rs->wavelength, data->brdfs); if (res != RES_OK) { rs->end = TERM_ERR; return res; @@ -472,7 +473,7 @@ static void sample_wavelength(struct realisation* rs) { ASSERT(rs); - rs->freq = ranst_sun_wl_get(rs->data.sun_wl_ran, rs->data.rng); + rs->wavelength = ranst_sun_wl_get(rs->data.sun_wl_ran, rs->data.rng); } /* check if the sampled point as described in rs->start receives sun light @@ -576,7 +577,7 @@ receive_sunlight(struct realisation* rs) str_cget(receiver_name), (unsigned) rs->rs_id, (unsigned) rs->s_idx, - rs->freq, + rs->wavelength, seg->weight, SPLIT3(seg->hit_pos), SPLIT3(seg->dir), @@ -612,7 +613,7 @@ propagate(struct realisation* rs) switch (rs->data.scene->atmosphere->type) { case ATMOS_UNIFORM: spectrum = rs->data.scene->atmosphere->data.uniform.spectrum; - CHECK(spectrum_interpolate(spectrum, rs->freq, &ka), RES_OK); + CHECK(spectrum_interpolate(spectrum, rs->wavelength, &ka), RES_OK); break; default: FATAL("Unreachable code\n"); break; } diff --git a/src/ssol_solver_c.h b/src/ssol_solver_c.h @@ -120,7 +120,7 @@ struct realisation { struct darray_segment segments; struct starting_point start; struct solver_data data; - double freq; + double wavelength; size_t s_idx; size_t rs_id; uint32_t success_mask; diff --git a/src/ssol_spectrum.c b/src/ssol_spectrum.c @@ -34,7 +34,7 @@ spectrum_release(ref_T* ref) ASSERT(ref); dev = spectrum->dev; ASSERT(dev && dev->allocator); - darray_double_release(&spectrum->frequencies); + darray_double_release(&spectrum->wavelengths); darray_double_release(&spectrum->intensities); MEM_RM(dev->allocator, spectrum); SSOL(device_ref_put(dev)); @@ -47,10 +47,10 @@ spectrum_includes_point { const double* data; size_t sz; - ASSERT(spectrum && spectrum->frequencies.data && spectrum->intensities.data); - sz = spectrum->frequencies.size; + ASSERT(spectrum && spectrum->wavelengths.data && spectrum->intensities.data); + sz = spectrum->wavelengths.size; ASSERT(sz && sz == spectrum->intensities.size); - data = spectrum->frequencies.data; + data = spectrum->wavelengths.data; return data[0] <= wavelenght && wavelenght <= data[sz - 1]; } @@ -79,8 +79,8 @@ spectrum_includes return RES_BAD_ARG; } - test_sz = tested->frequencies.size; - test_data = tested->frequencies.data; + test_sz = tested->wavelengths.size; + test_data = tested->wavelengths.data; *include = spectrum_includes_point(reference, test_data[0]) && spectrum_includes_point(reference, test_data[test_sz - 1]); @@ -94,7 +94,7 @@ spectrum_interpolate double* intensity) { double* next; - double* freqs; + double* wavelengths; double* ints; double slope; size_t idx_next, sz; @@ -105,18 +105,20 @@ spectrum_interpolate return RES_BAD_ARG; } - sz = spectrum->frequencies.size; - freqs = spectrum->frequencies.data; + sz = spectrum->wavelengths.size; + wavelengths = spectrum->wavelengths.data; ints = spectrum->intensities.data; - next = search_lower_bound(&wavelenght, freqs, sz, sizeof(double), &eq_d); + next = search_lower_bound(&wavelenght, wavelengths, sz, sizeof(double), &eq_d); ASSERT(next); /* cause spectrum_includes_point */ - idx_next = next - freqs; + idx_next = next - wavelengths; ASSERT(idx_next); /* cause spectrum_includes_point */ ASSERT(ints[idx_next] >= ints[idx_next - 1]); - ASSERT(freqs[idx_next] >= freqs[idx_next - 1]); + ASSERT(wavelengths[idx_next] >= wavelengths[idx_next - 1]); - slope = (ints[idx_next] - ints[idx_next - 1]) / (freqs[idx_next] - freqs[idx_next - 1]); - *intensity = ints[idx_next - 1] + (wavelenght - freqs[idx_next - 1]) * slope; + slope = (ints[idx_next] - ints[idx_next - 1]) + / (wavelengths[idx_next] - wavelengths[idx_next - 1]); + *intensity = ints[idx_next - 1] + + (wavelenght - wavelengths[idx_next - 1]) * slope; ASSERT(*intensity >= 0); return RES_OK; } @@ -144,7 +146,7 @@ ssol_spectrum_create SSOL(device_ref_get(dev)); spectrum->dev = dev; ref_init(&spectrum->ref); - darray_double_init(dev->allocator, &spectrum->frequencies); + darray_double_init(dev->allocator, &spectrum->wavelengths); darray_double_init(dev->allocator, &spectrum->intensities); exit: @@ -191,17 +193,17 @@ ssol_spectrum_setup || !data) return RES_BAD_ARG; - res = darray_double_resize(&spectrum->frequencies, nwavelength); + res = darray_double_resize(&spectrum->wavelengths, nwavelength); if (res != RES_OK) return res; res = darray_double_resize(&spectrum->intensities, nwavelength); if (res != RES_OK) { - darray_double_clear(&spectrum->frequencies); + darray_double_clear(&spectrum->wavelengths); return res; } FOR_EACH(i, 0, nwavelength) { - spectrum->frequencies.data[i] = wavelengths[i]; + spectrum->wavelengths.data[i] = wavelengths[i]; spectrum->intensities.data[i] = data[i]; } diff --git a/src/ssol_spectrum_c.h b/src/ssol_spectrum_c.h @@ -20,7 +20,7 @@ #include <rsys/dynamic_array_double.h> struct ssol_spectrum { - struct darray_double frequencies; + struct darray_double wavelengths; struct darray_double intensities; struct ssol_device* dev; ref_T ref; diff --git a/src/test_ssol_solver1.c b/src/test_ssol_solver1.c @@ -54,7 +54,7 @@ main(int argc, char** argv) struct ssol_spectrum* abs; struct ssol_atmosphere* atm; double dir[3]; - double frequencies[3] = { 1, 2, 3 }; + double wavelengths[3] = { 1, 2, 3 }; double mismatch[3] = { 1.5, 3.5 }; double intensities[3] = { 1, 0.8, 1 }; double ka[3] = { 0, 0, 0 }; @@ -88,7 +88,7 @@ main(int argc, char** argv) CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); CHECK(ssol_spectrum_create(dev, &spectrum), RES_OK); - CHECK(ssol_spectrum_setup(spectrum, frequencies, intensities, 3), RES_OK); + CHECK(ssol_spectrum_setup(spectrum, wavelengths, intensities, 3), RES_OK); CHECK(ssol_sun_create_directional(dev, &sun), RES_OK); CHECK(ssol_sun_set_direction(sun, d3(dir, 1, 0, -1)), RES_OK); CHECK(ssol_sun_set_spectrum(sun, spectrum), RES_OK); @@ -213,7 +213,7 @@ main(int argc, char** argv) /* check atmosphere model; with no absorbtion result is unchanged */ CHECK(ssol_spectrum_create(dev, &abs), RES_OK); - CHECK(ssol_spectrum_setup(abs, frequencies, ka, 3), RES_OK); + CHECK(ssol_spectrum_setup(abs, wavelengths, ka, 3), RES_OK); CHECK(ssol_atmosphere_create_uniform(dev, &atm), RES_OK); CHECK(ssol_atmosphere_set_uniform_absorbtion(atm, abs), RES_OK); CHECK(ssol_scene_attach_atmosphere(scene, atm), RES_OK); @@ -232,7 +232,7 @@ main(int argc, char** argv) /* check atmosphere model; with absorbtion power decreases */ ka[0] = ka[1] = ka[2] = 0.1; CHECK(ssol_spectrum_create(dev, &abs), RES_OK); - CHECK(ssol_spectrum_setup(abs, frequencies, ka, 3), RES_OK); + CHECK(ssol_spectrum_setup(abs, wavelengths, ka, 3), RES_OK); CHECK(ssol_atmosphere_create_uniform(dev, &atm), RES_OK); CHECK(ssol_atmosphere_set_uniform_absorbtion(atm, abs), RES_OK); CHECK(ssol_scene_attach_atmosphere(scene, atm), RES_OK); @@ -255,7 +255,7 @@ main(int argc, char** argv) CHECK(ssol_scene_detach_sun(scene, sun), RES_OK); CHECK(ssol_scene_attach_sun(scene, sun_mono), RES_OK); ka[1] = 0.2; - CHECK(ssol_spectrum_setup(abs, frequencies, ka, 2), RES_OK); + CHECK(ssol_spectrum_setup(abs, wavelengths, ka, 2), RES_OK); NCHECK(tmp = tmpfile(), 0); CHECK(ssol_solve(scene, rng, N, tmp), RES_OK); CHECK(pp_sum(tmp, "cible", &m, &std), RES_OK); diff --git a/src/test_ssol_solver2.c b/src/test_ssol_solver2.c @@ -56,7 +56,7 @@ main(int argc, char** argv) struct ssol_sun* sun; struct ssol_spectrum* spectrum; double dir[3]; - double frequencies[3] = { 1, 2, 3 }; + double wavelengths[3] = { 1, 2, 3 }; double intensities[3] = { 1, 0.8, 1 }; double transform1[12]; /* 3x4 column major matrix */ double transform2[12]; /* 3x4 column major matrix */ @@ -89,7 +89,7 @@ main(int argc, char** argv) CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); CHECK(ssol_spectrum_create(dev, &spectrum), RES_OK); - CHECK(ssol_spectrum_setup(spectrum, frequencies, intensities, 3), RES_OK); + CHECK(ssol_spectrum_setup(spectrum, wavelengths, intensities, 3), RES_OK); CHECK(ssol_sun_create_directional(dev, &sun), RES_OK); CHECK(ssol_sun_set_direction(sun, d3(dir, 1, 0, -1)), RES_OK); CHECK(ssol_sun_set_spectrum(sun, spectrum), RES_OK); diff --git a/src/test_ssol_solver3.c b/src/test_ssol_solver3.c @@ -54,7 +54,7 @@ main(int argc, char** argv) struct ssol_sun* sun; struct ssol_spectrum* spectrum; double dir[3]; - double frequencies[3] = { 1, 2, 3 }; + double wavelengths[3] = { 1, 2, 3 }; double intensities[3] = { 1, 0.8, 1 }; double transform[12]; /* 3x4 column major matrix */ double polygon[] = { -10.0, -10.0, -10.0, 10.0, 10.0, 10.0, 10.0, -10.0 }; @@ -81,7 +81,7 @@ main(int argc, char** argv) CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); CHECK(ssol_spectrum_create(dev, &spectrum), RES_OK); - CHECK(ssol_spectrum_setup(spectrum, frequencies, intensities, 3), RES_OK); + CHECK(ssol_spectrum_setup(spectrum, wavelengths, intensities, 3), RES_OK); CHECK(ssol_sun_create_directional(dev, &sun), RES_OK); CHECK(ssol_sun_set_direction(sun, d3(dir, 1, 0, -1)), RES_OK); CHECK(ssol_sun_set_spectrum(sun, spectrum), RES_OK); diff --git a/src/test_ssol_solver4.c b/src/test_ssol_solver4.c @@ -54,7 +54,7 @@ main(int argc, char** argv) struct ssol_sun* sun; struct ssol_spectrum* spectrum; double dir[3]; - double frequencies[3] = { 1, 2, 3 }; + double wavelengths[3] = { 1, 2, 3 }; double intensities[3] = { 1, 0.8, 1 }; double transform[12]; /* 3x4 column major matrix */ double polygon[] = { -10.0, -10.0, -10.0, 10.0, 10.0, 10.0, 10.0, -10.0 }; @@ -81,7 +81,7 @@ main(int argc, char** argv) CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); CHECK(ssol_spectrum_create(dev, &spectrum), RES_OK); - CHECK(ssol_spectrum_setup(spectrum, frequencies, intensities, 3), RES_OK); + CHECK(ssol_spectrum_setup(spectrum, wavelengths, intensities, 3), RES_OK); CHECK(ssol_sun_create_directional(dev, &sun), RES_OK); CHECK(ssol_sun_set_direction(sun, d3(dir, 0, 0, -1)), RES_OK); CHECK(ssol_sun_set_spectrum(sun, spectrum), RES_OK); diff --git a/src/test_ssol_solver5.c b/src/test_ssol_solver5.c @@ -54,7 +54,7 @@ main(int argc, char** argv) struct ssol_sun* sun; struct ssol_spectrum* spectrum; double dir[3]; - double frequencies[3] = { 1, 2, 3 }; + double wavelengths[3] = { 1, 2, 3 }; double intensities[3] = { 1, 0.8, 1 }; double transform[12]; /* 3x4 column major matrix */ double polygon[] = { -10.0, -10.0, -10.0, 10.0, 10.0, 10.0, 10.0, -10.0 }; @@ -81,7 +81,7 @@ main(int argc, char** argv) CHECK(ssp_rng_create(&allocator, &ssp_rng_threefry, &rng), RES_OK); CHECK(ssol_spectrum_create(dev, &spectrum), RES_OK); - CHECK(ssol_spectrum_setup(spectrum, frequencies, intensities, 3), RES_OK); + CHECK(ssol_spectrum_setup(spectrum, wavelengths, intensities, 3), RES_OK); CHECK(ssol_sun_create_directional(dev, &sun), RES_OK); CHECK(ssol_sun_set_direction(sun, d3(dir, 0, 0, -1)), RES_OK); CHECK(ssol_sun_set_spectrum(sun, spectrum), RES_OK);