test_sbb_misc.c (2648B)
1 /* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 3 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 #include "sbb.h" 17 #include <rsys/math.h> 18 19 int 20 main(int argc, char** argv) 21 { 22 const double lambda_lo = 3.6e-6; /* [m] */ 23 const double lambda_hi = 12.3e-6; /* [m] */ 24 const double Tref = 550; /* [K] */ 25 const double delta_lambda = lambda_hi - lambda_lo; 26 27 double L; /* Radiance */ 28 double d; /* Temporary double */ 29 double T; /* Temperature */ 30 double ref; /* Reference value to be verified */ 31 (void)argc, (void)argv; 32 33 d = sbb_blackbody_fraction(lambda_lo, lambda_hi, Tref); 34 ref = 0.73033200108935725; 35 CHK(eq_eps(d, ref, ref*1e-3)); 36 37 d = sbb_planck_monochromatic(lambda_lo, Tref); 38 ref = 137.68759834775730e6; 39 CHK(eq_eps(d, 137.68759834775730e6, ref*1e-5)); 40 41 d = sbb_planck_interval(lambda_lo, lambda_hi, Tref); 42 ref = 1206.0731201171875/delta_lambda; 43 CHK(eq_eps(d, ref, ref*1e-3)); 44 45 L = 1206.0731201171875/delta_lambda; /* [W/m^2/sr/m ] */ 46 CHK(sbb_brightness_temperature(lambda_hi, lambda_lo, L, &T) == RES_BAD_ARG); 47 CHK(sbb_brightness_temperature(-lambda_lo, lambda_hi,-L, &T) == RES_BAD_ARG); 48 CHK(sbb_brightness_temperature(-lambda_lo,-lambda_hi,-L, &T) == RES_BAD_ARG); 49 CHK(sbb_brightness_temperature(lambda_lo, lambda_hi,-L, &T) == RES_BAD_ARG); 50 CHK(sbb_brightness_temperature(lambda_lo, lambda_hi, L, NULL) == RES_BAD_ARG); 51 CHK(sbb_brightness_temperature(lambda_lo, lambda_hi, L, &T) == RES_OK); 52 CHK(eq_eps(T, Tref, Tref*1.e-4)); 53 54 L = 1206.0731201171875; /* [W/m^2/sr/m] */ 55 CHK(sbb_radiance_temperature(lambda_hi, lambda_lo, L, &T) == RES_BAD_ARG); 56 CHK(sbb_radiance_temperature(-lambda_lo, lambda_hi, L, &T) == RES_BAD_ARG); 57 CHK(sbb_radiance_temperature(-lambda_lo,-lambda_hi, L, &T) == RES_BAD_ARG); 58 CHK(sbb_radiance_temperature(lambda_lo, lambda_hi,-L, &T) == RES_BAD_ARG); 59 CHK(sbb_radiance_temperature(lambda_lo, lambda_hi, L, NULL) == RES_BAD_ARG); 60 CHK(sbb_radiance_temperature(lambda_lo, lambda_hi, L, &T) == RES_OK); 61 CHK(eq_eps(T, Tref, Tref*1e-4)); 62 63 return 0; 64 }