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

Rework cold start initialization of wa and zwt to try to make #523 bit-for-bit #577

Merged
merged 5 commits into from
Nov 30, 2018

Conversation

billsacks
Copy link
Member

Description of changes

Rework cold start initialization of wa and zwt to try to make #523 bit-for-bit. See commit message for c600499 for details.

Specific notes

Contributors other than yourself, if any: Changes guided by @swensosc

CTSM Issues Fixed (include github issue #): none

Are answers expected to change (and if so in what way)? YES: Answer changes expected for CLM50 cold start cases

Any User Interface Changes (namelist or namelist defaults changes)? No

Testing performed, if any:
aux_clm testing underway

In the groundwater_irrigation branch
(ESCOMP#523), @swensosc has stopped
resetting wa_col each time step if use_aquifer_layer is false. However,
this leads to having a substantially different value of wa_col when
use_aquifer_layer is false: previously, it was reset to
aquifer_water_baseline each time step, but with the changes from
@swensosc, it stays close to its initial values, which have been 4000 in
most places. This commit changes the initial values to match the value
it was being reset to, so it simply starts at aquifer_water_baseline -
so the every-time-step-resetting to aquifer_water_baseline can be
removed without massively changing the value of wa_col.

In addition to changing the cold start initialization of wa_col, we are
also changing the cold start initialization of zwt in this case where
use_aquifer_layer is false: The old initialization of zwt wouldn't work
as intended now that we have changed the initial value of wa_col;
@swensosc suggested this new initialization method instead. This
initialization to zi(c,nbedrock(c)) is correct if there are no saturated
layers, and close enough for a decent cold start even if there are.
@billsacks billsacks added the PR status: ready PR: this is ready to merge in, with all tests satisfactory and reviews complete label Nov 28, 2018
@billsacks billsacks self-assigned this Nov 28, 2018
@billsacks billsacks requested a review from swensosc November 28, 2018 03:03
@billsacks
Copy link
Member Author

@swensosc can you please take a look at the changes in this PR and let me know if I accurately implemented your suggestions?

@billsacks
Copy link
Member Author

@swensosc the diffs I'm seeing in testing this branch (vs. master) are bigger than I expected. I'm not hugely concerned, but I would like to talk to you about this later today to get a second opinion; at the very least, I'd like you to carefully review my code changes to make sure I didn't mess something up (especially changes in SoilHydrologyInitTimeConst).

Most diffs were in cold start tests, as expected. I spot-checked the diffs for one cold-start test: the three-day test, ERP_D_P36x2_Ld3.f10_f10_musgs.I2000Clm50BgcCrop.cheyenne_intel.clm-cropColdStart.GC.1127-194254ch_int. The differences there were bigger than I expected, but I'm not super-concerned... it seems like the biggest impact is that the methane code is sensitive to this initialization. Here are the fields with the biggest differences (though many others had differences close to this large):

CH4PROD                       : RMS 1.5332e-10       : RMS_NORM 2.0678
ERRH2O                        : RMS 2.172e-15        : RMS_NORM 0.98845
ERRSEB                        : RMS 6.7151e-15       : RMS_NORM 0.81455
FINUNDATED                    : RMS 0.0043855        : RMS_NORM 0.77891
ERRSOL                        : RMS 1.9685e-15       : RMS_NORM 0.72587
ERRH2OSNO                     : RMS 2.1293e-17       : RMS_NORM 0.23106
COST_NRETRANS                 : RMS 0.015594         : RMS_NORM 0.082534
NEM                           : RMS 1.6934e-10       : RMS_NORM 0.082413
FCH4_DFSAT                    : RMS 3.8488e-18       : RMS_NORM 0.079107
TOTCOLCH4                     : RMS 1.7229e-05       : RMS_NORM 0.078734
SOM_C_LEACHED                 : RMS 3.2922e-19       : RMS_NORM 0.033783
ERRSOI                        : RMS 1.3695e-11       : RMS_NORM 0.030409
NECM_NO3                      : RMS 4.6152e-16       : RMS_NORM 0.026778
COST_NFIX                     : RMS 0.0003623        : RMS_NORM 0.019885
ERRSOI                        : RMS 1.0004e-11       : RMS_NORM 0.016188
NUPTAKE_NPP_FRACTION          : RMS 0.00017673       : RMS_NORM 0.010188
DEADCROOTC                    : RMS 3.3044e-06       : RMS_NORM 0.0099854
LIVECROOTC                    : RMS 3.6661e-07       : RMS_NORM 0.0098933
LIVESTEMC                     : RMS 1.2223e-06       : RMS_NORM 0.0098928
CH4_SURF_EBUL_SAT             : RMS 4.8484e-12       : RMS_NORM 0.0093059
l2x_Fall_flxdst1              : RMS 1.9669e-12       : RMS_NORM 0.0088849
l2x_Fall_flxdst2              : RMS 1.0558e-11       : RMS_NORM 0.0088849
l2x_Fall_flxdst3              : RMS 2.4757e-11       : RMS_NORM 0.0088849
l2x_Fall_flxdst4              : RMS 2.3321e-11       : RMS_NORM 0.0088849

However, there were also differences in transient cases that cross the year boundary. In retrospect, this is expected, because when a new column comes into existence, it will start with its new cold start values of wa and zwt. Six tests showed differences in this respect:

ERP_P36x2_Lm13.f10_f10_musgs.IHistClm50Bgc.cheyenne_gnu.clm-monthly and ERP_P36x2_Lm13.f10_f10_musgs.IHistClm50Bgc.cheyenne_intel.clm-monthly just had diffs in two fields:

 RMS FCOV                             2.6352E-13            NORMALIZED  3.3991E-12
 RMS FSAT                             2.6352E-13            NORMALIZED  3.3991E-12

SMS_Ld5.f19_g17.IHistClm50Bgc.cheyenne_intel.clm-decStart, ERP_Ly3_P72x2.f10_f10_musgs.IHistClm50BgcCrop.cheyenne_intel.clm-cropMonthOutput, ERS_Ly3_P72x2.f10_f10_musgs.IHistClm50BgcCropG.cheyenne_intel.clm-cropMonthOutput and ERS_Ly5_P144x1.f10_f10_musgs.IHistClm50BgcCrop.cheyenne_intel.clm-cropMonthOutput had diffs in lots of fields. The biggest diffs were in methane-related fields; here was the biggest diff, from test SMS_Ld5.f19_g17.IHistClm50Bgc.cheyenne_intel.clm-decStart.GC.1127-194254ch_int:

CONC_O2_SAT                   : RMS 0.0018335        : RMS_NORM 0.030384

The biggest diffs in non-methane (and non-ERR*) fields were these, also from the SMS decStart test:

FGEV                          : RMS 3.1739e-05       : RMS_NORM 4.2731e-06
FGR                           : RMS 4.5537e-05       : RMS_NORM 1.2488e-06
H2OSOI                        : RMS 1.6361e-07       : RMS_NORM 4.1696e-07
FSH                           : RMS 1.0349e-05       : RMS_NORM 3.1699e-07

So not huge on the global average, but almost certainly bigger for select columns that newly came into existence (I haven't dug into this).

Other than that short decStart test, the biggest non-methane, non-ERR diff from a non-cold-start test was (from ERS_Ly3_P72x2.f10_f10_musgs.IHistClm50BgcCropG.cheyenne_intel.clm-cropMonthOutput.GC.1127-194254ch_int):

FGR                           : RMS 1.6412e-09       : RMS_NORM 1.4214e-10

Again, my guess is that this is all reasonable, but I'd like to get your opinion on it... it's possible that we should do something like run the diagnostics package on a case before and after this change to ensure that we're getting the same climate, to make sure there isn't some unexpected sensitivity to these initial values.

@billsacks
Copy link
Member Author

From @swensosc

I also think that these changes aren't significant for the simulation. The water table initialization could impact runoff, therefore infiltration, therefore soil moisture, therefore FGR, etc... But I would think these changes would quickly converge to the previous solution and not affect climate.

and later:

I've been looking over the changes, and I am comfortable with them. The changes in wa are the primary cause of the methane changes I think, b/c the default method for calculating finundated uses tws, and wa is a large component of tws. The zwt changes will always act to make zwt shallower (nearer the surface) and so increase runoff. Previously it would be initialized to something below the soil column (8.5m plus 1-5 meters), now it is initialized to the bedrock interface, so this could be ~1m in some cases. That's a significant difference in zwt, but it is consistent with how clm5 operates.

@billsacks billsacks merged commit 335059a into ESCOMP:master Nov 30, 2018
@billsacks billsacks deleted the wa_rework branch November 30, 2018 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR status: ready PR: this is ready to merge in, with all tests satisfactory and reviews complete
Projects
Status: Done (non release/external)
Development

Successfully merging this pull request may close these issues.

2 participants