htrdr_ran_wlen_planck.h (2363B)
1 /* Copyright (C) 2018-2019, 2022-2025 Centre National de la Recherche Scientifique 2 * Copyright (C) 2020-2022 Institut Mines Télécom Albi-Carmaux 3 * Copyright (C) 2022-2025 Institut Pierre-Simon Laplace 4 * Copyright (C) 2022-2025 Institut de Physique du Globe de Paris 5 * Copyright (C) 2018-2025 |Méso|Star> (contact@meso-star.com) 6 * Copyright (C) 2022-2025 Observatoire de Paris 7 * Copyright (C) 2022-2025 Université de Reims Champagne-Ardenne 8 * Copyright (C) 2022-2025 Université de Versaille Saint-Quentin 9 * Copyright (C) 2018-2019, 2022-2025 Université Paul Sabatier 10 * 11 * This program is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU General Public License as published by 13 * the Free Software Foundation, either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * This program is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with this program. If not, see <http://www.gnu.org/licenses/>. */ 23 24 #ifndef HTRDR_RAN_WLEN_PLANCK_H 25 #define HTRDR_RAN_WLEN_PLANCK_H 26 27 #include "core/htrdr.h" 28 #include <rsys/rsys.h> 29 30 #define HTRDR_WLEN_RAN_PLANCK_CONTINUE 0 31 32 /* Forward declarations */ 33 struct htrdr; 34 struct htrdr_ran_wlen_planck; 35 36 BEGIN_DECLS 37 38 HTRDR_API res_T 39 htrdr_ran_wlen_planck_create 40 (struct htrdr* htrdr, 41 const double range[2], 42 /* # bands used to discretisze the spectral domain. HTRDR_WLEN_RAN_CONTINUE 43 * <=> no discretisation */ 44 const size_t nbands, /* Hint on #bands used to discretised th CDF */ 45 const double ref_temperature, /* Reference temperature */ 46 struct htrdr_ran_wlen_planck** planck); 47 48 HTRDR_API void 49 htrdr_ran_wlen_planck_ref_get 50 (struct htrdr_ran_wlen_planck* planck); 51 52 HTRDR_API void 53 htrdr_ran_wlen_planck_ref_put 54 (struct htrdr_ran_wlen_planck* planck); 55 56 /* Return a wavelength in nanometer */ 57 HTRDR_API double 58 htrdr_ran_wlen_planck_sample 59 (const struct htrdr_ran_wlen_planck* planck, 60 const double r0, /* Canonical number in [0, 1[ */ 61 const double r1, /* Canonical number in [0, 1[ */ 62 double* pdf); /* In nm^-1. May be NULL */ 63 64 END_DECLS 65 66 #endif /* HTRDR_RAN_WLEN_PLANCK_H */ 67