schiff_args.h.in (2665B)
1 /* Copyright (C) 2015, 2016 CNRS 2 * Copyright (C) 2019 |Meso|Star> 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. */ 16 17 #ifndef SCHIFF_ARGS_H 18 #define SCHIFF_ARGS_H 19 20 #include <rsys/rsys.h> 21 #include <star/sschiff.h> 22 23 struct schiff_geometry; 24 struct schiff_optical_properties; 25 26 struct schiff_args { 27 const char* output_filename; /* File in which output data are stored */ 28 struct schiff_optical_properties* properties; /* List of properties */ 29 double* wavelengths; /* List of wavelengths to integrate */ 30 31 double characteristic_length; /* Characteristic length of the soft particles */ 32 int discard_large_angles; /* Avoid analytic model for large angles */ 33 34 /* List of parsed geometry distribution parameters and its associated random 35 * variate */ 36 struct schiff_geometry* geoms; 37 struct ssp_ranst_discrete* ran_geoms; 38 39 unsigned ngeoms_dump; /* # sampled geometries to dump */ 40 unsigned nrealisations; /* # realisation */ 41 unsigned ninsamps; /* Number of inner samples per realisations */ 42 unsigned nangles; /* Number of scattering angles */ 43 unsigned nangles_inv; /* Number of angles in the the inverse phase function */ 44 45 unsigned nthreads; /* Hint on the number of thread to use */ 46 }; 47 48 static const struct schiff_args SCHIFF_ARGS_NULL = { 49 NULL, /* Output filename */ 50 NULL, /* List of optical properties */ 51 NULL, /* List of wavelength to integrate */ 52 -1.0, /* Caracteristic length */ 53 0, /* Discard large angles */ 54 NULL, /* List of Schiff geometries */ 55 NULL, /* Schiff geometry random variates */ 56 0, /* # Dumped geometries */ 57 @SCHIFF_ARGS_DEFAULT_NREALISATIONS@, /* #Sampled geometries */ 58 @SCHIFF_ARGS_DEFAULT_NINSAMPLES@, /* #inner samples */ 59 @SCHIFF_ARGS_DEFAULT_NANGLES@, /* # Scattering angles */ 60 @SCHIFF_ARGS_DEFAULT_NANGLES_INV@, /* # angles in the inv cumulative phase function */ 61 SSCHIFF_NTHREADS_DEFAULT 62 }; 63 64 extern LOCAL_SYM res_T 65 schiff_args_init 66 (struct schiff_args* args, 67 const int argc, 68 char** argv); 69 70 extern LOCAL_SYM void 71 schiff_args_release 72 (struct schiff_args* args); 73 74 #endif /* SCHIFF_ARGS_H */ 75