OMS-NetZero / FAIR

Finite-amplitude Impulse Response simple climate model
https://docs.fairmodel.net
Apache License 2.0
123 stars 62 forks source link

version 1.2 #20

Closed chrisroadmap closed 6 years ago

chrisroadmap commented 6 years ago

The treatments of several processes have been improved, following review comments on the GMD paper v1.1:

Time-varying methane lifetime does not work with the RCP scenarios so has not been included. Their future natural emissions assumption is not clear, and results in implausible concentrations of methane.

I'm looking to try and get this released as soon as possible as the revision for the paper is due by 2nd March, and I'm also revising another paper that depends on this one!

rgieseke commented 6 years ago

I think the new aerosols_sample*.txt files need to be included in the setup.py file. Locally installation from a clone and tests work but not if installed via pip from GitHub.

chrisroadmap commented 6 years ago

@rgieseke I think you are correct, thanks. Added to MANIFEST.in.

chrisroadmap commented 6 years ago

The new indirect aerosol regime was slower than the old treatment as it had to generate a radial basis function for each ensemble member. This commit loads in a pre-made one and is faster.

znicholls commented 6 years ago

All makes sense! I hope implementing new stuff doesn't feel too much like a chore, really it should be the key to unlock faster improvements in future.

The thoughts on that forcing constant are very interesting, I hadn't thought about that before.

The point I was hoping to make is that it's easier to understand what's going on if constants are always named. Hence I'd be tempted to define variables for the different etminan constants rather than just having their values. Probably overly pedantic but worth considering.

On 22 Feb 2018, at 21:50, chrisroadmap notifications@github.com wrote:

@chrisroadmap commented on this pull request.

In fair/forcing/aerosols.py:

  • emissions[:,[5, 6, 7, 8, 9, 10, 11]].T
  • F_SOx = beta[0] em_SOx molwt.SO2 / molwt.S
  • F_CO = beta[1] * em_CO
  • F_NMVOC = beta[2] * em_NMVOC
  • F_NOx = beta[3] em_NOx molwt.NO / molwt.S
  • F_BC = beta[4] * em_BC
  • F_OC = beta[5] * em_OC
  • F_NH3 = beta[6] * em_NH3
  • F = F_SOx+F_CO+F_NMVOC+F_NOx+F_BC+F_OC+F_NH3
  • return 1.500 scale_AR5 F
  • +def ghan_indirect_emulator(emissions, fix_pre1850_RCP=True, Hi Zeb,

On your points: Yes, yes and yes. I'll deal with the F2x business here mostly. The other stuff I'll promise I'll implement in the future!

The treatment of F2x is inconsistent at the moment. F2x and tcrecs (both specifiable by the user) are used to generate the q coefficients that govern the temperature change at each forcing time step. The forcing routine calculates the CO2 forcing which then feeds back into the temperature calculation (through F).

It sounds counter-intuitive, but with the way the model interacts with F2x and ECS, then the lower the value of F2x the greater the temperature change if net non-CO2 forcing is positive. If you have a low value of F2x then it takes less forcing to generate the same temperature change, so anything on top of this will be more effective than under a high F2x.

If we allow the user to specify F2x, then either this makes the forcing scale factor for CO2 redundant (the first element in the scale option; probably a desirable outcome) or there is an inconsistency (in that the user-specified value may not agree with the number coming out of the forcing routine). CO2 forcing uncertainty comes from the carbon cycle, so I don't think we need to implement a further scaling factor on top of this. In that case I think I should adjust the forcing routine to ensure that it matches the user-specified F2x. This was done in v1.0 with the Myhre forcing and in v1.1 with Etminan (but incorrectly).

The Ghan method slows down the code slightly. Running just the aerocom method should be comparable to the old regression-based treatment as they are both linear relationships.

— You are receiving this because your review was requested. Reply to this email directly, view it on GitHub, or mute the thread.

chrisroadmap commented 6 years ago

No problem Zeb. I'll have some more time in March/April hopefully to really get things re-factored so that people who aren't me can understand what's going on. (Which is the whole point of a public repository, right?!)

I've settled on a treatment of F2x. Default is 3.71, can be modified as a keyword argument. The Etminan CO2 forcing strength is scaled to match this, and scaling the CO2 forcing strength has no effect. So the treatment is the same as v1.1, but the forcing is now constrained by F2x.

znicholls commented 6 years ago

Parfait!

On 22 Feb 2018, at 23:26, chrisroadmap notifications@github.com wrote:

No problem Zeb. I'll have some more time in March/April hopefully to really get things re-factored so that people who aren't me can understand what's going on. (Which is the whole point of a public repository, right?!)

I've settled on a treatment of F2x. Default is 3.71, can be modified as a keyword argument. The Etminan CO2 forcing strength is scaled to match this, and scaling the CO2 forcing strength has no effect. So the treatment is the same as v1.1, but the forcing is now constrained by F2x.

— You are receiving this because your review was requested. Reply to this email directly, view it on GitHub, or mute the thread.

chrisroadmap commented 6 years ago

Changed the aerosol indirect treatment again! This still uses Ghan's model as its basis but now uses a functional relationship rather than a radial basis function. This is calculated faster and is more reliable and transparent. I borrowed the treatment of the aerosol indirect effect from Stevens (2015) and extended it to primary organic aerosol (i.e., BC+OC) as well as sulfate (as in Ghan's model the indirect effect depends on both).

Leighton and I are aiming to develop something more sophisticated in the future based on the work he has done with emulators in Carslaw et al (2013). But for now this does a nice job. This plot shows how ERFaci changes with emissions of POA and SOx following the output from Ghan's model (points) and my curve fit (surface).

supp1

For the model I then scale this output from this plot above to match the best estimate of present day ERFaci from AR5. Users can turn off this scaling if they desire.