rnatm

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

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:
Msrc/test_rnatm.c | 32+++++++++++++++++++++++++++++++-
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;