Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add volcanic scaling factor #291

Merged
merged 4 commits into from Mar 21, 2019
Merged

Add volcanic scaling factor #291

merged 4 commits into from Mar 21, 2019

Conversation

rplzzz
Copy link
Contributor

@rplzzz rplzzz commented Mar 19, 2019

As we worked through the Hector calibration project, when we looked at individual CMIP models it became clear that they vary wildly in the strength of their response to volcanic activity. Here's an example that @kdorheim found of a model that has no apparent volcanic response:
image
Notice that Hector had to crank the diffusivity all the way up to 20.4 to fit this model because it had no other way to suppress its response to the Krakatoa (1883) and Mt. Agung (1963) eruptions. This is probably not what we want.

We can use the difference between 1960 and 1965 temperatures as a measure of the volcanic response of a model. For most models the difference is somewhere around a quarter of a degree, but for a few it is as high as half a degree, and there are some outliers with large negative values.
image

This patch creates a fourth temperature parameter, called VOLCANIC_SCALE. This parameter works similarly to the AERO_SCALE parameter. For VOLCANIC_SCALE==1, volcanic forcing has its normal effect. Values greater than 1 enhance the effect, while values less than 1 suppress it. This should allow us to fit ESMs with larger or smaller volcanic response without having to distort the other temperature parameters.

image
Comparison of Hector runs with VOLCANIC_SCALE set to its default value of 1.0 and an alternate value of 1.5, which represents an enhancement of volcanic effects.

@rplzzz rplzzz requested a review from cahartin March 19, 2019 12:36
@rplzzz
Copy link
Contributor Author

rplzzz commented Mar 19, 2019

@JGCRI/hector It just occurred to me that this change probably merits a minor version bump, since it's adding a new feature. The R package version number is still at 0.3, so I'm going increment that to 0.4. Sometime soon we should probably sync the R package version to the Hector version, but I don't want to do that in the middle of a substantive revision.

The current Hector version is 2.1.0. Therefore, I suggest we call this revision 2.2.0

@bpbond
Copy link
Member

bpbond commented Mar 19, 2019

We can use the difference between 1960 and 1965 temperatures as a measure of the volcanic response of a model.

Why? Is there a particularly large eruption(s) and little other climate change in this period?

@@ -139,6 +139,7 @@ enabled=1
S=3.0 ; equilibrium climate sensitivity for 2xCO2, degC
diff=2.3 ; ocean heat diffusivity, cm2/s
alpha=1.0 ; scaling factor for aerosol forcing
volscl=1.0 ; scaling factor for volcanic forcing
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps both scaling factors' comments should note centered around 1, i.e. 1.0 = no scaling?

@@ -124,3 +123,20 @@ test_that('Lowering aerosol scaling factor increases temperature',
shutdown(hc)
})

test_that('Increasing volcanic forcing scaling factor increases the effect of volcanism', {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@rplzzz
Copy link
Contributor Author

rplzzz commented Mar 19, 2019

We can use the difference between 1960 and 1965 temperatures as a measure of the volcanic response of a model.

Why? Is there a particularly large eruption(s) and little other climate change in this period?

Yes, there is a particularly large eruption during that period. The temperature in the years leading up to that time is relatively stable, for Hector, at least. For other models it varies a bit. Some are stable in that period, some less so. If I cared a lot about creating an index of volcanic sensitivity, I would do something like I described in the discussion on the Hector calibration channel, viz., averaging over all of the big eruptions in the XIXth and XXth centuries, but I don't expect that we're going to be making extensive use of it, so I didn't bother.

@rplzzz
Copy link
Contributor Author

rplzzz commented Mar 19, 2019

Derp, I forgot to push the commit that updates the changelog and version numbers. Should be ready to go again as soon as Travis does its thing.

@rplzzz rplzzz merged commit c8aca07 into master Mar 21, 2019
@rplzzz rplzzz deleted the volcanic-scaling branch March 21, 2019 00:53
@@ -441,8 +449,8 @@ unitval TemperatureComponent::getData( const std::string& varName,
returnval = heatflux;
} else if( varName == D_ECS ) {
returnval = S;
} else if(varName == D_AERO_SCALE) {
returnval = alpha;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why did you delete the alpha here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was a duplicate. Alpha is already processed on lines 434-435 (old numbering).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, gotcha!

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.

None yet

3 participants