htmie

Optical properties of water droplets
git clone git://git.meso-star.fr/htmie.git
Log | Files | Refs | README | LICENSE

commit 40776d0efa38f50cfdf85e2c097bc5d2b0dba285
parent b80c0acdb071260cfa7ff41d0cbc5a58598f28e8
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 11 Oct 2023 10:55:02 +0200

Add a new test to check the validity ranges of loaded data

Updated the Makefile and the naming convention of the file loaded by the
test_htmie_load test to simplify test management. Particularly for the
use of Makefile inference rules to extract data from netCDF files.

Diffstat:
M.gitignore | 7+++++--
MMakefile | 44+++++++++++++++++++++++++++++---------------
Adummy.cdl | 27+++++++++++++++++++++++++++
Mmake.sh | 7++++---
Msrc/test_htmie_load.c | 8++++----
5 files changed, 69 insertions(+), 24 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -9,6 +9,9 @@ test* .config .test tags -*.pc -Mie_LUT_Cloud_* +*.g +*.lambda +*.macs +*.mscs *.nc +*.pc diff --git a/Makefile b/Makefile @@ -118,31 +118,44 @@ lint: TEST_SRC = src/test_htmie.c src/test_htmie_load.c TEST_OBJ = $(TEST_SRC:.c=.o) TEST_DEP = $(TEST_SRC:.c=.d) + TEST_MIE_LUT = Mie_LUT_Cloud -TEST_MIE_LUT_CDL =$(TEST_MIE_LUT).cdl -TEST_MIE_LUT_NETCDF =$(TEST_MIE_LUT).nc +TEST_MIE_LUT_CDL = $(TEST_MIE_LUT).cdl +TEST_MIE_LUT_NETCDF = $(TEST_MIE_LUT).nc TEST_MIE_LUT_VARS =\ - $(TEST_MIE_LUT)_g\ - $(TEST_MIE_LUT)_lambda\ - $(TEST_MIE_LUT)_macs\ - $(TEST_MIE_LUT)_mscs + $(TEST_MIE_LUT).g\ + $(TEST_MIE_LUT).lambda\ + $(TEST_MIE_LUT).macs\ + $(TEST_MIE_LUT).mscs + +TEST_DUMMY = dummy +TEST_DUMMY_CDL = $(TEST_DUMMY).cdl +TEST_DUMMY_NETCDF = $(TEST_DUMMY).nc +TEST_DUMMY_VARS =\ + $(TEST_DUMMY).g\ + $(TEST_DUMMY).lambda\ + $(TEST_DUMMY).macs\ + $(TEST_DUMMY).mscs PKG_CONFIG_LOCAL = PKG_CONFIG_PATH="./:$${PKG_CONFIG_PATH}" $(PKG_CONFIG) HTMIE_CFLAGS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags htmie-local.pc) HTMIE_LIBS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs htmie-local.pc) -test: build_tests $(TEST_MIE_LUT_VARS) - @$(SHELL) make.sh check test_htmie - @$(SHELL) make.sh check test_htmie_load "$(TEST_MIE_LUT_NETCDF)" ./ +test: $(TEST_MIE_LUT_VARS) $(TEST_MIE_LUT_NETCDF) +test: $(TEST_DUMMY_VARS) $(TEST_DUMMY_NETCDF) +test: build_tests + @$(SHELL) make.sh check test_htmie test_htmie + @$(SHELL) make.sh check test_htmie_load_LUT test_htmie_load Mie_LUT_Cloud.nc . + @$(SHELL) make.sh check test_htmie_load_dummy test_htmie_load dummy.nc . -$(TEST_MIE_LUT_NETCDF): $(TEST_MIE_LUT_CDL) - ncgen -o $@ $(TEST_MIE_LUT_CDL) +.SUFFIXES: .cdl .nc .g .lambda .macs .mscs +.cdl.nc: + ncgen -o $@ $< -$(TEST_MIE_LUT_VARS): $(TEST_MIE_LUT_NETCDF) src/dump_netcdf_data.sh - $(SHELL) src/dump_netcdf_data.sh \ - $$(echo $@ | sed 's/$(TEST_MIE_LUT)_\(.\{1,\}\)$$/\1/g') $(TEST_MIE_LUT_NETCDF) > $@ +.nc.g .nc.lambda .nc.macs .nc.mscs: + $(SHELL) src/dump_netcdf_data.sh $$(p="$@"; echo "$${p##*.}") $< > $@ -build_tests: build_library $(TEST_DEP) .test $(TEST_MIE_LUT_VARS) +build_tests: build_library $(TEST_DEP) .test $(TEST_MIE_LUT_VARS) $(TEST_DUMMY_VARS) @$(MAKE) -fMakefile -f.test $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) test_bin .test: Makefile make.sh @@ -151,6 +164,7 @@ build_tests: build_library $(TEST_DEP) .test $(TEST_MIE_LUT_VARS) clean_test: $(SHELL) make.sh clean_test $(TEST_SRC) rm -rf $(TEST_MIE_LUT_VARS) $(TEST_MIE_LUT_NETCDF) + rm -rf $(TEST_DUMMY_VARS) $(TEST_DUMMY_NETCDF) $(TEST_DEP): config.mk htmie-local.pc @$(CC) $(CFLAGS) $(RSYS_CFLAGS) $(HTMIE_CFLAGS) \ diff --git a/dummy.cdl b/dummy.cdl @@ -0,0 +1,27 @@ +netcdf Mie_LUT_Cloud { +dimensions: + lambda = 3 ; + distribution = UNLIMITED ; // (1 currently) +variables: + double lambda(lambda) ; + lambda:long_name = "Wavelength" ; + lambda:units = "nanometers" ; + double mscs(distribution, lambda) ; + mscs:long_name = "Massic scattering cross section" ; + mscs:units = "m^2/kg" ; + double macs(distribution, lambda) ; + macs:long_name = "Massic absorption cross section" ; + macs:units = "m^2/kg" ; + double g(distribution, lambda) ; + g:long_name = "Asymmetry parameter" ; + g:units = "-" ; +data: + + lambda = 200, 225, 250 ; + + mscs = 0, 148.583778410196, 148.848607519154 ; + + macs = 0, 0.00376469098500625, 0.00235556776982531 ; + + g = -1, 1, 0 ; +} diff --git a/make.sh b/make.sh @@ -29,10 +29,11 @@ config_test() check() { - prog="$1" - shift 1 + name="$1" + prog="$2" + shift 2 - printf "%s " "${prog}" + printf "%s " "${name}" if ./"${prog}" "$@" > /dev/null 2>&1; then printf "\e[1;32mOK\e[m\n" else diff --git a/src/test_htmie_load.c b/src/test_htmie_load.c @@ -303,7 +303,7 @@ main(int argc, char** argv) if(p) *p = '\0'; /* Check the wavelengths list */ - CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_lambda", path, base)<sizeof(buf)); + CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.lambda", path, base)<sizeof(buf)); CHK(fp = fopen(buf, "r")); FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) { double lambda; @@ -314,7 +314,7 @@ main(int argc, char** argv) CHK(fclose(fp) == 0); /* Check absorption cross sections */ - CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_macs", path, base)<sizeof(buf)); + CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.macs", path, base)<sizeof(buf)); CHK(fp = fopen(buf, "r")); FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) { const double Cabs = htmie_get_xsections_absorption(htmie)[i]; @@ -326,7 +326,7 @@ main(int argc, char** argv) CHK(fclose(fp) == 0); /* Check scattering cross sections */ - CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_mscs", path, base)<sizeof(buf)); + CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.mscs", path, base)<sizeof(buf)); CHK(fp = fopen(buf, "r")); FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) { const double Csca = htmie_get_xsections_scattering(htmie)[i]; @@ -338,7 +338,7 @@ main(int argc, char** argv) CHK(fclose(fp) == 0); /* Check scattering asymmetry parameter */ - CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_g", path, base)<sizeof(buf)); + CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.g", path, base)<sizeof(buf)); CHK(fp = fopen(buf, "r")); FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) { double g;