rngrd

Describe a surface and its physical properties
git clone git://git.meso-star.fr/rngrd.git
Log | Files | Refs | README | LICENSE

commit c59b24dddbe63f19181e4bff97eeadf2afae40f9
parent a788897837e426dbf092fec27a2ce393e948fbc9
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon,  5 Dec 2022 14:33:56 +0100

Add the rngrd_get_temperature_range function

It returns the minimum and maximum ground temperature.

Diffstat:
Msrc/rngrd.h | 5+++++
Msrc/rngrd_properties.c | 31+++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/src/rngrd.h b/src/rngrd.h @@ -160,6 +160,11 @@ rngrd_get_temperature const struct rngrd_get_temperature_args* args, double* temperature); +RNGRD_API res_T +rngrd_get_temperature_range + (const struct rngrd* rngrd, + double T_range[2]); + END_DECLS #endif /* RNGRD_H */ diff --git a/src/rngrd_properties.c b/src/rngrd_properties.c @@ -400,6 +400,37 @@ error: goto exit; } +res_T +rngrd_get_temperature_range + (const struct rngrd* ground, + double T_range[2]) +{ + struct sbuf_desc desc; + size_t i; + res_T res = RES_OK; + + if(!ground || !T_range) { res = RES_BAD_ARG; goto error; } + + res = sbuf_get_desc(ground->props, &desc); + if(res != RES_OK) goto error; + + T_range[0] = +DBL_MAX; + T_range[1] = -DBL_MAX; + FOR_EACH(i, 0, desc.size) { + const struct ALIGN(8) { uint32_t mtl_id; float temperature; }* item; + item = sbuf_desc_at(&desc, i); + ASSERT(item->temperature >= 0); + + T_range[0] = MMIN(T_range[0], item->temperature); + T_range[1] = MMAX(T_range[1], item->temperature); + } + +exit: + return res; +error: + goto exit; +} + /******************************************************************************* * Local function ******************************************************************************/