lsOpen jobs for finishing Radtran's libRadtran_c and libRadtran_f: ---------------------------------------------------------------- Status: April 04, 2007 If you have time and talent to take over any of the jobs below please contact , , ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Complete checking of input variables to uvspec * Better error handling. In uvspec.h have a list of appropriate error codes. But, be careful, this must agree with error codes in ascii.h etc. It would be nice to have standard error messages for each error code. * Return of the error flags from FORTRAN code to main program, instead of producing segmentation faults. * pass 'quiet' to ALL parts of libRadtran including FORTRAN parts * More documentation: Use sdoc or similar tool to document all *.f and *.c files. Document all stand-alone programs in the tools directory. * More configuration options for water and ice clouds, aerosols. - wavelength dependent aerosol_gg_file, aerosol_tau_file, aerosol_ssa_file (matrix input format like densfile_sza) * more input options for time: LOC (local time), LAT (local apparent time), UTC take function LAT from zenith and invert it. * More, but fast examples - SSS - TZS - water cloud files * easy adding of new absorbing gases - more flexible input of atmospheric constituents in atmosphere file - read profile of the new gas - absorption cross-sections in an external file => interphase to an line-by-line model and absorption data base (HITRAN) * more consistent treatment of scaling with mixing ratios, columns, and dens_files - using e.g. mixing_ratio 50% will scale up a minor constituent unexpectedly to 30% = 0.5/(1.0+0.5)=30% instead of 50% -> reduce all other constituents accordingly - take care of difference specific humidity = mass_wv / (mass_air_dry + mass_wv) and mixing ratio = mass_wv / (mass_air_dry ) - readjust height scale ???? * limb measurements * possibility to add more than one dens file (different gas measurements on different vertical grids) * include ECMWF libraries - read directly from grib format - use MAGICS++ library to produce directly eps and gif files * include HDF library - read MODIS albedo in the original format * output_user also for solver polradtran * Include more radiative transfer equation solvers in libRadtran. Of special interest are - shdom, the 3D code of Frank Evans, and - succesive order of scattering method to include Raman scattering. - codes that accounts for changes in the refractive index, i.e. at the atmosphere ocean boundary. - psndo from tuv - qdisort? (-> Arve) - very fast twostream approximation * implement or delete rte_solvers, which does not work qdisort sss2 * More photodissociation stuff. * Include standard aerosols, standard clouds; e.g. it would be nice to simply select a 'wc_type stratocumulus' * Better o3 cross sections for the Chappuis band? * Improved solar zenith/azimuth angle calculation * Better extraterrestrial spectrum above 420nm? * Create a global header file, libRadtran.h which includes everything needed for libRadtran_c.a and libRadtran_f.a. * Tool to create custom-made correlated-k tables and add support for a generic correlated-k approximation More information are available on request. Specific things: (1) Better checking for tau550 option: with e.g. correlated_k KATO, tau550 does not produce an error message if the lower wavelength is larger than 550nm; instead the optical thickness is set to 0; need to consider wvn_upper and wvn_lower here! (2) configure: If gcc exists but does not work, then try to use cc ... (3) get rid of -R (null) problem on SUNs (4) Saturate water vapor in MYSTIC water and ice clouds (5) oceabrdf() returns values for arbitrary wavelengths; if the wavelength is larger than 4 micron, it is replaced by 4 micron; should either stop and return an error or provide a routine that calculates useful numbers in the IR. In general, there should be a warning e.g. if the albedo is larger than 0.1 in a thermal calculation. (6) cloud.c, interpolate_legendre(): Problem if only 1 effective radius available in table because interpolation is done anyway. (7) Clean up ck.c etc: scattering optical thickness is obviously correctly passed to the sbdart routines; hence need to clean up comments (8) Rayleigh scattering is calculated from the air density column, except when correlated_k FU is specified (then the pressure is used). It should be checked in libRadtran if air density, temperature, and pressure are consistent because a user may want to specify his own pressure profile and might forget to scale air density accordingly. Doing that, a new input, pressure_profile should be defined also. (9) Introduce checks for particle size in ic_fu96() and ic_fu98() to prevent abuse (that is, to prevent that the parameterization is applied to size ranges for which is hasn't been created). (10) Handle scaling by Fu and Liou, Yang et al. etc consistently. That is, if a user defines a tau550 or a tau, he wants to define the actual optical thickness, not the scaled quantity. Possible solution: Introduce two fields of tau, omega, g (scaled and unscaled) and carry them through libradtran. Which is of course only possible if the scaling factor f is provided by the parameterization which is at least the case for Fu and Liou. (11) If compiled without C optimization (removing -O2 from CFLAGS) some of the libRadtran tests fail, in particular disort2 radiances 1.55% difference correlated_k (KATO) twostr 10.00% difference IPA and correlated_k 79.60% difference These differences occur for very small transmittances/reflectances. The "verbose" output does not show any differences. (12) Implement Baran ice cloud parameterization (5-30 micron); it seems that this parameterization should be compatible to the Key and Yang solid column (aspect ratios are defined similarely, but not equal); need to check that; problem is that Key and Baran do not overlap wavelength-wise, and that the ice optical properties exhibit a strong absorption feature around 5 micron. First step in the implementation would be to use only the g's and not the scattering phase function. A conversion length -> effective radius is required for this; use either the conversion described in yang200a.pdf or do it analytically (see Fu 1996/98). Visions (0) get radiative output for input: place here time now (1) libRadtran becomes global => worldloop -make netCDF input options for all inputs: atmosphere, clouds, aerosols, spectral albedo (2) complete polarisation - Rayleigh, aerosols, clouds, surface (3) EarthCare simlator Radar simulator Lidar simulator - take care of phase shift (spekels) - wind lidar simulator (beat (Schwebung) of 2 wavelength) (4) libRadtran goes to space -radiative transfer for Mars, Jupiter ... -make input file for all constants of a planet gravitation_acceleration_surface, radius_planet, day/year duration, mass_planet, tilt of rotation axis -clean up every assumption, which assume earth environment, especially atmosphere (5) libRadtran in the submarin region underwater radiative transfer (6) worldloop: automatic generation of look up tables - loop over some any number of properties (7) really huge change change loop and memory structure of libRadtran only have optical properties for one wavelength in memory at one time