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:
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
******************************************************************************/