commit 24325de981241a53d0d3748f6141a0a9c1202cbb
parent 2022a9e83e5ae483d286bd2711fc566a8c311dc1
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 29 Aug 2022 18:20:08 +0200
Add octree offload support to test_rnatm tool
Diffstat:
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/test_rnatm.c b/src/test_rnatm.c
@@ -82,6 +82,8 @@ print_help(const char* cmd)
printf(
" -N precompute_normals the tetrahedra normals\n");
printf(
+" -o file offload octrees to file\n");
+ printf(
" -s nu0,nu1 spectral range to consider (in cm^-1).\n"
" Default is visible spectrum, i.e [%g, %g] cm^1\n",
ARGS_DEFAULT.rnatm.spectral_range[0],
@@ -309,6 +311,7 @@ args_release(struct args* args)
if(args->rnatm.gas.sck_filename) free(args->rnatm.gas.sck_filename);
if(args->rnatm.gas.temperatures_filename)
free(args->rnatm.gas.temperatures_filename);
+ if(args->rnatm.octrees_storage) CHK(fclose(args->rnatm.octrees_storage) == 0);
FOR_EACH(i, 0, args->rnatm.naerosols) {
struct rnatm_aerosol_args* aerosol = args->rnatm.aerosols + i;
@@ -324,6 +327,7 @@ args_release(struct args* args)
static res_T
args_init(struct args* args, int argc, char** argv)
{
+ const char* storage_filename = NULL;
size_t i = 0;
res_T res = RES_OK;
int opt;
@@ -331,7 +335,7 @@ args_init(struct args* args, int argc, char** argv)
*args = ARGS_DEFAULT;
- while((opt = getopt(argc, argv, "a:d:g:hNs:T:t:V:v")) != -1) {
+ while((opt = getopt(argc, argv, "a:d:g:hNo:s:T:t:V:v")) != -1) {
switch(opt) {
case 'a':
sa_add(args->rnatm.aerosols, 1);
@@ -349,6 +353,7 @@ args_init(struct args* args, int argc, char** argv)
args->quit = 1;
goto exit;
case 'N': args->rnatm.precompute_normals = 1; break;
+ case 'o': storage_filename = optarg; break;
case 's':
res = parse_spectral_range(args, optarg);
break;
@@ -376,6 +381,16 @@ args_init(struct args* args, int argc, char** argv)
}
}
+ if(storage_filename) {
+ args->rnatm.octrees_storage = fopen(storage_filename, "w+");
+ if(!args->rnatm.octrees_storage) {
+ fprintf(stderr, "Unable to open octree storage file %s\n",
+ storage_filename);
+ res = RES_IO_ERR;
+ goto error;
+ }
+ }
+
/* Check the required options */
if(!args->rnatm.gas.smsh_filename
|| !args->rnatm.gas.sck_filename