commit 3b50956e9089d3671aaffdaa19ecb9b6a99208d8
parent f844c376ab4951c7b5e27ac0f57ae9b54df5f1c8
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Tue, 26 Apr 2022 11:02:22 +0200
Add the line_profile as input argument of sln_tree_build
Diffstat:
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/sln.h b/src/sln.h
@@ -49,6 +49,12 @@ struct mem_allocator;
struct shtr_lines_list;
struct shtr_isotope_metadata;
+enum sln_line_profile {
+ SLN_LINE_PROFILE_VOIGT,
+ SLN_LINE_PROFILE_LORENTZ,
+ SLN_LINE_PROFILES_COUNT__
+};
+
struct sln_device_create_args {
struct logger* logger; /* May be NULL <=> default logger */
struct mem_allocator* allocator; /* NULL <=> use default allocator */
@@ -95,9 +101,12 @@ struct sln_tree_create_args {
double temperature; /* In K */
size_t max_nlines_per_leaf;
+
+ enum sln_line_profile line_profile;
};
#define SLN_TREE_CREATE_ARGS_DEFAULT__ \
- {NULL, NULL, {SLN_MOLECULE_NULL__}, 0, {0, DBL_MAX}, 0, 0, 64}
+ {NULL, NULL, {SLN_MOLECULE_NULL__}, 0, {0, DBL_MAX}, 0, 0, 64, \
+ SLN_LINE_PROFILE_LORENTZ}
static const struct sln_tree_create_args SLN_TREE_CREATE_ARGS_DEFAULT =
SLN_TREE_CREATE_ARGS_DEFAULT__;
diff --git a/src/sln_tree.c b/src/sln_tree.c
@@ -164,6 +164,19 @@ check_sln_tree_create_args
log_err(sln, "%s: invalid temperature %g.\n", func_name, args->temperature);
return RES_BAD_ARG;
}
+
+ if(args->max_nlines_per_leaf == 0) {
+ log_err(sln, "%s: invalid maximum number of lines per leaf %lu.\n",
+ func_name, (unsigned long)args->max_nlines_per_leaf);
+ return RES_BAD_ARG;
+ }
+
+ if((unsigned)args->line_profile >= SLN_LINE_PROFILES_COUNT__) {
+ log_err(sln, "%s: invalid line profile %d.\n",
+ func_name, args->line_profile);
+ return RES_BAD_ARG;
+ }
+
return RES_OK;
}