The goal here is to allow for more efficient development and use of different cloud models.
Roughly speaking, for any cloud model the C++ side ultimately needs to have a set of asymmetry parameters (g, or "cosbar"), single-scattering albedos (w0), and cross-sections as a function of wavelength and pressure. Currently I believe g and w0 work on the wavelength axis, and cross-sections fold into overall opacity as a function of pressure.
I think it would be more adaptable if we could assemble the g(lambda), w0(lambda), and cross-section(lambda, logP) arrays and just pass those on to the C++ side. Mainly because I'm better at parametrizing in Python. But this depends on whether there are any non-pre-computed cloud routines that would be significantly slower in Python; I think since the scattering tables are pre-computed, this shouldn't be too big an issue.
The goal here is to allow for more efficient development and use of different cloud models.
Roughly speaking, for any cloud model the C++ side ultimately needs to have a set of asymmetry parameters (g, or "cosbar"), single-scattering albedos (w0), and cross-sections as a function of wavelength and pressure. Currently I believe g and w0 work on the wavelength axis, and cross-sections fold into overall opacity as a function of pressure.
I think it would be more adaptable if we could assemble the g(lambda), w0(lambda), and cross-section(lambda, logP) arrays and just pass those on to the C++ side. Mainly because I'm better at parametrizing in Python. But this depends on whether there are any non-pre-computed cloud routines that would be significantly slower in Python; I think since the scattering tables are pre-computed, this shouldn't be too big an issue.