commit 53a459adf69d545f049cf99e98fbe351c5f111be
parent d6f2e64f78e01381df6241e70594cabe69bee1d4
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Thu, 23 May 2019 10:19:40 +0200
Add getters on green result
Diffstat:
2 files changed, 66 insertions(+), 0 deletions(-)
diff --git a/src/sdis.h b/src/sdis.h
@@ -805,6 +805,18 @@ sdis_green_path_get_limit_point
(struct sdis_green_path* path,
struct sdis_point* pt);
+/* Retrieve the number of "power terms" associated to a path. */
+SDIS_API res_T
+sdis_green_function_get_power_terms_count
+ (const struct sdis_green_path* path,
+ size_t* nterms);
+
+/* Retrieve the number of "flux terms" associated to a path. */
+SDIS_API res_T
+sdis_green_function_get_flux_terms_count
+ (const struct sdis_green_path* path,
+ size_t* nterms);
+
/* Iterate over all "power terms" associated to the path. Multiply each term
* by the power of their associated medium, that is assumed to be constant in
* time and space, gives the medium power registered along the path. */
diff --git a/src/sdis_green.c b/src/sdis_green.c
@@ -599,6 +599,60 @@ error:
}
res_T
+sdis_green_function_get_power_terms_count
+ (const struct sdis_green_path* path_handle,
+ size_t* nterms)
+{
+ const struct green_path* path = NULL;
+ struct sdis_green_function* green = NULL;
+ res_T res = RES_OK;
+
+ if(!path_handle || !nterms) {
+ res = RES_BAD_ARG;
+ goto error;
+ }
+
+ green = path_handle->green__; (void)green;
+ ASSERT(path_handle->id__ < darray_green_path_size_get(&green->paths));
+
+ path = darray_green_path_cdata_get(&green->paths) + path_handle->id__;
+
+ *nterms = darray_power_term_size_get(&path->power_terms);
+
+exit:
+ return res;
+error:
+ goto exit;
+}
+
+res_T
+sdis_green_function_get_flux_terms_count
+ (const struct sdis_green_path* path_handle,
+ size_t* nterms)
+{
+ const struct green_path* path = NULL;
+ struct sdis_green_function* green = NULL;
+ res_T res = RES_OK;
+
+ if(!path_handle || !nterms) {
+ res = RES_BAD_ARG;
+ goto error;
+ }
+
+ green = path_handle->green__; (void)green;
+ ASSERT(path_handle->id__ < darray_green_path_size_get(&green->paths));
+
+ path = darray_green_path_cdata_get(&green->paths) + path_handle->id__;
+
+ *nterms = darray_flux_term_size_get(&path->flux_terms);
+
+exit:
+ return res;
+error:
+ goto exit;
+}
+
+res_T
sdis_green_path_for_each_power_term
(struct sdis_green_path* path_handle,
sdis_process_medium_power_term_T func,