rnatm

Load and structure data describing an atmosphere
git clone git://git.meso-star.fr/rnatm.git
Log | Files | Refs | README | LICENSE

commit 1be4618808bbeb31a5b401f9640109acc6b32e28
parent 18aa04ddff2f68ad1f5b3ccef79967f68c499383
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed,  7 Sep 2022 12:02:02 +0200

Use the sck_find_bands function rather than a handmade implementation

Diffstat:
Msrc/rnatm_c.h | 4++++
Msrc/rnatm_octree.c | 30+++++++++++-------------------
2 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/src/rnatm_c.h b/src/rnatm_c.h @@ -190,6 +190,10 @@ struct rnatm { unsigned grid_definition[3]; + /* Spectral range to consider (in nanometers). Limits are inclusive */ + double spectral_range[2]; + double optical_thickness; /* Threshold used during octree building */ + unsigned nthreads; int verbose; diff --git a/src/rnatm_octree.c b/src/rnatm_octree.c @@ -257,28 +257,12 @@ find_band_range { struct sck_band band_low; struct sck_band band_upp; - size_t nbands; size_t nbands_overlaped; - size_t ilow, iupp; res_T res = RES_OK; ASSERT(atm && range && bands && range[0] <= range[1]); - nbands = sck_get_bands_count(atm->gas.ck); - - /* Find the lower bound (inclusive) */ - FOR_EACH(ilow, 0, nbands) { - SCK(get_band(atm->gas.ck, ilow, &band_low)); - if(band_low.upper >= range[0]) break; - } - - /* Find the upper bound (inclusive) */ - FOR_EACH(iupp, ilow, nbands) { - SCK(get_band(atm->gas.ck, iupp, &band_upp)); - if(band_upp.upper > range[1]) break; - } - - bands[0] = ilow; - bands[1] = MMIN(iupp, nbands-1); /* Make the boundary inclusive */ + res = sck_find_bands(atm->gas.ck, range, bands); + if(res != RES_OK) goto error; if(bands[0] > bands[1]) { log_err(atm, @@ -289,6 +273,9 @@ find_band_range } nbands_overlaped = bands[1] - bands[0] + 1; + + SCK(get_band(atm->gas.ck, bands[0], &band_low)); + SCK(get_band(atm->gas.ck, bands[1], &band_upp)); log_info(atm, "the spectral range [%g, %g] nm overlaps %lu band%sin [%g, %g[ nm\n", SPLIT2(range), @@ -1531,9 +1518,14 @@ setup_octrees(struct rnatm* atm, const struct rnatm_create_args* args) /* Start time recording */ time_current(&t0); + /* Setup miscellaneous parameters */ + atm->spectral_range[0] = args->spectral_range[0]; + atm->spectral_range[1] = args->spectral_range[1]; + atm->optical_thickness = args->optical_thickness; + res = compute_grid_definition(atm, args); if(res != RES_OK) goto error; - res = find_band_range(atm, args->spectral_range, bands); + res = find_band_range(atm, atm->spectral_range, bands); if(res != RES_OK) goto error; res = create_octrees(atm, args, bands); if(res != RES_OK) goto error;