commit 1864cae30429b2195f2bf2bf0811be98331aa371
parent d5b2f59fc405adf697cf4fd5ec62f54f3f3beef4
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 24 Aug 2022 18:32:17 +0200
Define spectral range as option of test_rnatm
Diffstat:
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/test_rnatm.c b/src/test_rnatm.c
@@ -65,6 +65,11 @@ print_help(const char* cmd)
printf(
" -N precompute_normals the tetrahedra normals\n");
printf(
+" -s nu0,nu1 spectral range to consider (in cm^-1).\n"
+" Default is [%g, %g] cm^1\n",
+ ARGS_DEFAULT.rnatm.spectral_range[0],
+ ARGS_DEFAULT.rnatm.spectral_range[1]);
+ printf(
" -T threshold optical thickness criteria for octree building.\n"
" Default is %g\n",
ARGS_DEFAULT.rnatm.optical_thickness);
@@ -168,6 +173,28 @@ error:
goto exit;
}
+static res_T
+parse_spectral_range(struct args* args, char* str)
+{
+ size_t len = 0;
+ res_T res = RES_OK;
+ ASSERT(args && str);
+
+ res = cstr_to_list_double(str, ',', args->rnatm.spectral_range, &len, 2);
+ if(res == RES_OK && len != 2) res = RES_BAD_ARG;
+ if(res != RES_OK) goto error;
+
+ if(args->rnatm.spectral_range[0] < 0
+ || args->rnatm.spectral_range[1] < 0
+ || args->rnatm.spectral_range[0] > args->rnatm.spectral_range[1])
+ goto error;
+
+exit:
+ return res;
+error:
+ goto exit;
+}
+
static void
args_release(struct args* args)
{
@@ -188,7 +215,7 @@ args_init(struct args* args, int argc, char** argv)
*args = ARGS_DEFAULT;
- while((opt = getopt(argc, argv, "d:g:hNT:t:V:v")) != -1) {
+ while((opt = getopt(argc, argv, "d:g:hNs:T:t:V:v")) != -1) {
switch(opt) {
case 'd': args->vtk_filename = optarg; break;
case 'g':
@@ -200,6 +227,9 @@ args_init(struct args* args, int argc, char** argv)
args->quit = 1;
goto exit;
case 'N': args->rnatm.precompute_normals = 1; break;
+ case 's':
+ res = parse_spectral_range(args, optarg);
+ break;
case 'T':
res = cstr_to_double(optarg, &args->rnatm.optical_thickness);
if(res != RES_OK && args->rnatm.optical_thickness<=0) res = RES_BAD_ARG;