Skip to content

Conversation

@AndrewILWilliams
Copy link

@AndrewILWilliams AndrewILWilliams commented Aug 14, 2025

Implements the simple spectral longwave radiation model (SSM) into Isca. Paper documenting the scheme is here: https://arxiv.org/abs/2508.09353

Haven't added a trip test yet, and not sure how this would interact with the thermodynamic sea-ice scheme? I might need to edit it a bit if the sea-ice code goes in first.

It would be nice to be able to call the SSM every N timesteps, like RRTMG, but I couldn't work out how to do that because the RRTMG code was confusing to me. If anyone understands that portion of the code and can help out, that would be great!

Thanks
Andrew

Adding python test case for running frierson model with SSM radiation
@ntlewis
Copy link
Contributor

ntlewis commented Aug 15, 2025

Thanks Andrew. I will try to take a look at this within the next couple of weeks. Great work!

@gkvallis
Copy link
Contributor

That's very cool. Are you arguing it is better in some way (e.g., more amenable to manipulation and experimentation, more understandable, more accurate?) than, say, an efficient correlated-k scheme with a small number (say four) bands?

@AndrewILWilliams
Copy link
Author

@gkvallis , thanks! And yes, all of the above. Definitely more understandable and easy to modify.

Re: accuracy, an underappreciated facet of correlated-k schemes is that they involve a fair amount of hand tuning in order to achieve high levels of accuracy (e.g., Section 3.1.2 of Pincus et al., 2019). One could certainly design a four-band, correlated-k scheme which is reasonably accurate, but it would suffer the same "clarity" inadequacies as other correlated-k schemes.

@ntlewis
Copy link
Contributor

ntlewis commented Sep 30, 2025

Just a note that I have started reviewing this.

@ntlewis
Copy link
Contributor

ntlewis commented Oct 1, 2025

Just a note that this scheme doesn't (quite) close the TOA radiative balance. I have resolved this by extending the computation to a higher maximum wavenumber. To avoid adding a ton of spectral bins, I've recoded the scheme slightly so that the wavenumber increment doesn't need to be constant. Then, for large wavenumbers, I've added a coarse extension to the spectral 'grid'. I will upload these changes at some point soon.

@AndrewILWilliams
Copy link
Author

Thanks Neil!

@ntlewis
Copy link
Contributor

ntlewis commented Oct 1, 2025

For what it's worth, I think the 'correct' way to resolve the issue above would be to compute some sort of definite integral of the plank function in each bin (and then for the two edge bins, extend the integral to nu=0 and nu=infinity). I will think on how this could be implemented.

@AndrewILWilliams
Copy link
Author

Fair point. Current implementation is a bit quick-and-dirty, but seemed to work fine. I've also been using it for slab ocean simulations, with no appreciable drift.

A non-uniform wavenumber grid would be nice, potentially with some refinement around key absorption features (e.g., higher spectral resolution near the CO2 band, perhaps). I thought about this, but didn't know how to implement something like that. Maybe such an array could be a namelist input?

@AndrewILWilliams
Copy link
Author

@ntlewis , could you upload your implementation of the non-uniform wavenumber grid?

@ntlewis
Copy link
Contributor

ntlewis commented Oct 29, 2025

Hi @AndrewILWilliams, sorry for the delay, I will do this on Monday. I think the way this P/R is configured, I'll have to push it to the branch on your fork (I haven't tried this before, so it might not work). Ahead of doing this, I think it'd be useful for you to copy your version to a separate branch (so that you're able to keep the code you currently have, in case you need it for reproducibility). There are a few other changes I have made. For example, I think the tests above are failing because you haven't added your code to the path_names files (some of them, at least). I have fixed this.

@AndrewILWilliams
Copy link
Author

Hey neil, I've made a copy of my code for reproducibility. Let me know if I should do anything else

@AndrewILWilliams
Copy link
Author

AndrewILWilliams commented Dec 15, 2025

@ntlewis , happy to chat about this in the new year if it's useful. In the meantime, I've also put together a very simple SW version of the SSM.

Together with your scattering code, it would be possible to have a very simple representation of clouds as well, if that was something you guys were interested in. For example, the cloud optics could just be:

  • Single absorption coefficient for clouds in the longwave/shortwave (kappa_lw≈100, kappa_sw≈0.01)

  • g=0, and ssa=0 for clouds in the longwave

  • g=0.85, and ssa=0.9999 for clouds in the shortwave

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants