SpeedyWeather / SpeedyWeather.jl

Play atmospheric modelling like it's LEGO.
https://speedyweather.github.io/SpeedyWeather.jl/dev
MIT License
434 stars 27 forks source link

CO2 forcing #410

Open gargentini opened 11 months ago

gargentini commented 11 months ago

Dear Prof Kloewer and All, I would use some global mean CO2 value as forcing in some models of SpeedyWeather. I ask you how it could be possible to declare in models. Many thanks. Gianluca Argentini

milankl commented 11 months ago

At the moment this is not possible. Bit of background: While we do have some functionality already written that include shortwave and longwave radiation, both are currently not active in the current version of SpeedyWeather. The longwave radiation (as from Fortran SPEEDY) has 4 bands of which one is for CO2, so sooner or later it will be possible to force SpeedyWeather with CO2 as well.

If radiation is your area of expertise feel free to look at the code we currently have. I'll tackle this soon-ish but currently cannot make promises when this will be. However you can also help us form a user perspective: What interface would you like to have to force SpeedyWeather with various levels of CO2? What experiments are you considering? All of this helps us too to build something that is actually easily usable!

gargentini commented 10 months ago

Dear Prof. Kloewer, it could be interesting if in the SW Models (Barotropic, ShallowWater, Primitives) it was possible to declare (as a new Struct Forcing Type?) a CO2 radiative forcing function proportional to Ln((C0 + dC)/C0) (as in Myhre, Highwood, Shine, Stordal "New estimates of radiative forcing due to well mixed greenhouse gases", 1998), with C0 = CO2 reference level and dC the CO2 variation. Thanks.

Gianluca Argentini

gargentini commented 10 months ago

This is the paper cited in my previous post (pg. 4, Trace gas Table, CO2 DeltaF)

Geophysical Research Letters - 1998 - Myhre - New estimates of radiative forcing due to well mixed greenhouse gases.pdf

milankl commented 10 months ago

I believe we could introduce a CO2Concentraion type that for example contains a time series so that a user can predefine CO2 levels on an annual (or higher/lower frequency) basis. But ultimately the plan was that this goes into the longwave radiation code. I see that you are suggesting to force temperature directly, and yeah, we could implement a RadiativeForcing that lets you add this, bypassing the radiation code. Maybe I missed this in the paper, only flew over it, but how would you distribute such a forcing vertically?

Also don't call me professor please, given I am not a professor ;)

milankl commented 10 months ago

The radiation code we plan to implement soon is based on Fortran SPEEDY, check that documentatio. For completeness this is what Myhre et al. 1998 do

Fortran SPEEDY Myrhe et al. 1998
image image
gargentini commented 10 months ago

At first approximation the Forcing Radiation could be vertically constant or linearly decreasing. A RadiativeForcing procedure could be very useful. Thanks. Gianluca

milankl commented 10 months ago

Okay neat, that sounds easy and straight forward. I'm tempted to implement the following in execution order

  1. Parameterization tendencies (as before)
  2. Forcing (new)
  3. Dynamics tendencies

Meaning we'd add step 2 with a general forcing, and I'll post here how you could add a CO2Concentration <: AbstractForcing once it's done. It'll be the same interface as in #394 and you can also familiarise yourself with the logic following this section in the documentation

https://speedyweather.github.io/SpeedyWeather.jl/dev/extending/