CH-Earth / summa

Structure for Unifying Multiple Modeling Alternatives:
http://www.ral.ucar.edu/projects/summa
GNU General Public License v3.0
79 stars 103 forks source link

cleaned up noah-mp phenology routine and removed check that gave 0 SAI & LAI if below 0.05 #484

Closed wknoben closed 2 years ago

wknoben commented 2 years ago

Make sure all the relevant boxes are checked (and only check the box if you actually completed the step):

Issue

Noah-MP code includes a check that sets SAI and/or LAI values to 0 if the ever drop below 0.05. This was (presumably) to avoid numerical issues with dividing by small numbers but this does not seem needed in current SUMMA. An undesirable consequence of this check was the potential to get unrealistic SAI and LAI patterns. Example below (copied from #479).

image

Fix

Removed the checks and did some general cleanup of the routine. Martyn and I decided that it would be good to notify the user of potentially unrealistic values so added a warning that triggers if SAI drops to 0 for vegetated land classes. Warning indentation matches indentation: in https://github.com/NCAR/summa/blob/372c3fbeb3825e3b3d635461a8e552f9f0895aec/build/source/netcdf/read_icond.f90#L401

SAI and LAI patterns look a lot better as a result (same test case as above): image

Tests

This PR fundamentally changes how small values of LAI and SAI are treated in the code and changes to the test case outputs thus may be expected. I updated the outputs for standard test cases to also include scalarCanopyTranspiration, scalarCanopyEvaporation, scalarGroundEvaporation, scalarExposedLAI and scalarExposedSAI, because we should see changes in these if scalarLAI and scalarSAI change for a given test case. As expected, differences are visible in test case outcomes.

These new test outcomes should be "better" than the old ones because we no longer round SAI and LAI and instead use the originally calculated values.

Standard test cases

Click to show test case differences report ``` Test 0 - Filename: celia1990_testSumma_timestep.nc - Total difference: 0.0 Test 1 - Filename: colbeck1976-exp1_testSumma_timestep.nc - Total difference: 0.0 Test 2 - Filename: colbeck1976-exp2_testSumma_timestep.nc - Total difference: 0.0 Test 3 - Filename: colbeck1976-exp3_testSumma_timestep.nc - Total difference: 0.0 Test 4 - Filename: millerClay_testSumma_timestep.nc - Total difference: 0.0 Test 5 - Filename: millerLoam_testSumma_timestep.nc - Total difference: 0.0 Test 6 - Filename: millerSand_testSumma_timestep.nc - Total difference: 0.0 Test 7 - Filename: mizoguchi1990_testSumma_timestep.nc - Total difference: 0.0 Test 8 - Filename: vanderborght2005_exp1_testSumma_timestep.nc - Total difference: 0.0 Test 9 - Filename: vanderborght2005_exp2_testSumma_timestep.nc - Total difference: 0.0 Test 10 - Filename: vanderborght2005_exp3_testSumma_timestep.nc - Total difference: 0.0 Test 11 - Filename: syntheticHillslope-exp1_testSumma_timestep.nc - Total difference: 0.0 Test 12 - Filename: syntheticHillslope-exp2_testSumma_timestep.nc - Total difference: 0.0 Test 13 - Variable: scalarLAI - difference: 198.46191961310507 Test 13 - Variable: scalarExposedLAI - difference: 198.46191961310507 Test 13 - Variable: scalarSenHeatTotal - difference: 11407.007188073785 Test 13 - Variable: mLayerTemp - difference: 9090950.861462228 Test 13 - Variable: scalarRainPlusMelt - difference: 1.976395341035037e-05 Test 13 - Variable: iLayerLiqFluxSoil - difference: 0.00014980452768253546 Test 13 - Variable: iLayerHeight - difference: 8845534.912121363 Test 13 - Variable: mLayerDepth - difference: 8842912.979092604 Test 13 - Variable: scalarSurfaceTemp - difference: 1214.0761048979762 Test 13 - Variable: mLayerVolFracIce - difference: 8840012.712931283 Test 13 - Variable: scalarSWE - difference: 17108.59025098943 Test 13 - Variable: mLayerMatricHead - difference: 294620.94172361976 Test 13 - Variable: mLayerVolFracLiq - difference: 8839750.022842322 Test 13 - Variable: scalarInfiltration - difference: 2.0601114357599895e-05 Test 13 - Variable: averageRoutedRunoff - difference: 7.715961158181994e-06 Test 13 - Variable: scalarCanopyTranspiration - difference: 0.00023433024726346704 Test 13 - Variable: averageInstantRunoff - difference: 7.785857993956814e-06 Test 13 - Variable: scalarSnowSublimation - difference: 0.0011755967226702315 Test 13 - Variable: nSnow - difference: 884 Test 13 - Variable: scalarThroughfallSnow - difference: 0.0015766869006239809 Test 13 - Variable: mLayerLiqFluxSoil - difference: 0.0003224384570094268 Test 13 - Variable: mLayerVolFracWat - difference: 8839996.412428053 Test 13 - Variable: scalarLatHeatTotal - difference: 6076.247250648379 Test 13 - Variable: scalarGroundEvaporation - difference: 0.00043515102572940927 Test 13 - Variable: scalarCanopyEvaporation - difference: 0.0004681882785861959 Test 13 - Filename: vegImpactsRad_riparianAspenBeersLaw_timestep.nc - Total difference: 53630865.69165336 Test 14 - Variable: scalarLAI - difference: 198.46191961310507 Test 14 - Variable: scalarExposedLAI - difference: 198.46191961310507 Test 14 - Variable: scalarSenHeatTotal - difference: 10205.949674992426 Test 14 - Variable: mLayerTemp - difference: 8499187.314098788 Test 14 - Variable: scalarRainPlusMelt - difference: 1.9539919904628532e-05 Test 14 - Variable: iLayerLiqFluxSoil - difference: 0.00014500412361493798 Test 14 - Variable: iLayerHeight - difference: 8265538.115096389 Test 14 - Variable: mLayerDepth - difference: 8263269.627090366 Test 14 - Variable: scalarSurfaceTemp - difference: 1231.818994146141 Test 14 - Variable: mLayerVolFracIce - difference: 8260059.143272866 Test 14 - Variable: scalarSWE - difference: 12660.19160419906 Test 14 - Variable: mLayerMatricHead - difference: 138565.08584193958 Test 14 - Variable: mLayerVolFracLiq - difference: 8259768.3770689815 Test 14 - Variable: scalarInfiltration - difference: 2.0577709283695653e-05 Test 14 - Variable: averageRoutedRunoff - difference: 6.789577884966998e-06 Test 14 - Variable: scalarCanopyTranspiration - difference: 0.00021257354972760748 Test 14 - Variable: averageInstantRunoff - difference: 7.06388347597177e-06 Test 14 - Variable: scalarSnowSublimation - difference: 0.0011867856371091576 Test 14 - Variable: nSnow - difference: 826 Test 14 - Variable: scalarThroughfallSnow - difference: 0.0013643300040897042 Test 14 - Variable: mLayerLiqFluxSoil - difference: 0.00022270548302722685 Test 14 - Variable: mLayerVolFracWat - difference: 8260056.346506437 Test 14 - Variable: scalarLatHeatTotal - difference: 5381.63493137149 Test 14 - Variable: scalarGroundEvaporation - difference: 0.0001576837055075192 Test 14 - Variable: scalarCanopyEvaporation - difference: 0.0004350570283325193 Test 14 - Filename: vegImpactsRad_riparianAspenCLM2stream_timestep.nc - Total difference: 49977146.531797804 Test 15 - Variable: scalarLAI - difference: 198.46191961310507 Test 15 - Variable: scalarExposedLAI - difference: 198.46191961310507 Test 15 - Variable: scalarSenHeatTotal - difference: 11209.530235026827 Test 15 - Variable: mLayerTemp - difference: 13404151.38033745 Test 15 - Variable: scalarRainPlusMelt - difference: 1.3970871453839e-05 Test 15 - Variable: iLayerLiqFluxSoil - difference: 0.00011288267351296774 Test 15 - Variable: iLayerHeight - difference: 13037979.288011778 Test 15 - Variable: mLayerDepth - difference: 13034080.200951008 Test 15 - Variable: scalarSurfaceTemp - difference: 1501.2379273326187 Test 15 - Variable: mLayerVolFracIce - difference: 13029876.217067908 Test 15 - Variable: scalarSWE - difference: 10228.205168190445 Test 15 - Variable: mLayerMatricHead - difference: 159324.6646476277 Test 15 - Variable: mLayerVolFracLiq - difference: 13029595.662400635 Test 15 - Variable: scalarInfiltration - difference: 1.5126845435545089e-05 Test 15 - Variable: averageRoutedRunoff - difference: 5.753600086605282e-06 Test 15 - Variable: scalarCanopyTranspiration - difference: 0.0001951291034598356 Test 15 - Variable: averageInstantRunoff - difference: 5.792796997309201e-06 Test 15 - Variable: scalarSnowSublimation - difference: 0.0012516713007426742 Test 15 - Variable: nSnow - difference: 1303 Test 15 - Variable: scalarThroughfallSnow - difference: 0.0014095281819028567 Test 15 - Variable: mLayerLiqFluxSoil - difference: 0.000317187222137818 Test 15 - Variable: mLayerVolFracWat - difference: 13029819.90022508 Test 15 - Variable: scalarLatHeatTotal - difference: 6646.793110405448 Test 15 - Variable: scalarGroundEvaporation - difference: 0.0002416843116705986 Test 15 - Variable: scalarCanopyEvaporation - difference: 0.0008013207478779037 Test 15 - Filename: vegImpactsRad_riparianAspenNLscatter_timestep.nc - Total difference: 78756113.0082917 Test 16 - Variable: scalarLAI - difference: 198.46191961310507 Test 16 - Variable: scalarExposedLAI - difference: 198.46191961310507 Test 16 - Variable: scalarSenHeatTotal - difference: 13822.932734614731 Test 16 - Variable: mLayerTemp - difference: 17122328.84502786 Test 16 - Variable: scalarRainPlusMelt - difference: 2.4486862781412736e-05 Test 16 - Variable: iLayerLiqFluxSoil - difference: 0.0001786252135602667 Test 16 - Variable: iLayerHeight - difference: 16659888.022619415 Test 16 - Variable: mLayerDepth - difference: 16654914.99552596 Test 16 - Variable: scalarSurfaceTemp - difference: 1738.9368311045585 Test 16 - Variable: mLayerVolFracIce - difference: 16649749.519802295 Test 16 - Variable: scalarSWE - difference: 11480.247082534182 Test 16 - Variable: mLayerMatricHead - difference: 425303.9130930132 Test 16 - Variable: mLayerVolFracLiq - difference: 16649486.697376791 Test 16 - Variable: scalarInfiltration - difference: 2.6331526093405177e-05 Test 16 - Variable: averageRoutedRunoff - difference: 6.654074227836712e-06 Test 16 - Variable: scalarCanopyTranspiration - difference: 0.00022142446476727497 Test 16 - Variable: averageInstantRunoff - difference: 6.779215635272288e-06 Test 16 - Variable: scalarSnowSublimation - difference: 0.0014884444912776028 Test 16 - Variable: nSnow - difference: 1665 Test 16 - Variable: scalarThroughfallSnow - difference: 0.0014453626352130791 Test 16 - Variable: mLayerLiqFluxSoil - difference: 0.0005545443838633107 Test 16 - Variable: mLayerVolFracWat - difference: 16649688.33053466 Test 16 - Variable: scalarLatHeatTotal - difference: 8497.873091715099 Test 16 - Variable: scalarGroundEvaporation - difference: 0.0006387045971868168 Test 16 - Variable: scalarCanopyEvaporation - difference: 0.0008923556472084061 Test 16 - Filename: vegImpactsRad_riparianAspenUEB2stream_timestep.nc - Total difference: 100848962.2430429 Test 17 - Variable: scalarLAI - difference: 975.6049659438222 Test 17 - Variable: scalarExposedLAI - difference: 975.6049659438222 Test 17 - Variable: scalarSenHeatTotal - difference: 57826.03978858187 Test 17 - Variable: scalarSurfaceRunoff - difference: 1.134809784379977e-09 Test 17 - Variable: mLayerTemp - difference: 44607532.20930523 Test 17 - Variable: scalarRainPlusMelt - difference: 7.18676495138426e-05 Test 17 - Variable: iLayerLiqFluxSoil - difference: 0.0004886660305565794 Test 17 - Variable: iLayerHeight - difference: 43396793.900421366 Test 17 - Variable: mLayerDepth - difference: 43383860.36670542 Test 17 - Variable: basin__SurfaceRunoff - difference: 1.5818628445867948e-10 Test 17 - Variable: scalarSurfaceTemp - difference: 5752.787396595803 Test 17 - Variable: mLayerVolFracIce - difference: 43369771.97019811 Test 17 - Variable: scalarSWE - difference: 53052.30049195362 Test 17 - Variable: mLayerMatricHead - difference: 948508.0584627048 Test 17 - Variable: mLayerVolFracLiq - difference: 43368362.48616646 Test 17 - Variable: scalarInfiltration - difference: 7.813874026777235e-05 Test 17 - Variable: averageRoutedRunoff - difference: 2.8004562450971527e-06 Test 17 - Variable: scalarCanopyTranspiration - difference: 0.0013459952804609928 Test 17 - Variable: averageInstantRunoff - difference: 2.8054408868846308e-06 Test 17 - Variable: scalarSnowSublimation - difference: 0.00568467133374946 Test 17 - Variable: nSnow - difference: 4337 Test 17 - Variable: scalarThroughfallSnow - difference: 0.007075059810656991 Test 17 - Variable: mLayerLiqFluxSoil - difference: 0.0017716765788400378 Test 17 - Variable: mLayerVolFracWat - difference: 43369725.1747437 Test 17 - Variable: scalarLatHeatTotal - difference: 34877.00791018628 Test 17 - Variable: scalarGroundEvaporation - difference: 0.0022307104447320484 Test 17 - Variable: scalarCanopyEvaporation - difference: 0.004038054456075935 Test 17 - Filename: vegImpactsRad_riparianAspenVegParamPerturb_timestep.nc - Total difference: 262602350.5343127 Test 18 - Variable: scalarLAI - difference: 980.9152465977772 Test 18 - Variable: scalarExposedLAI - difference: 980.9152465977772 Test 18 - Variable: scalarSenHeatTotal - difference: 57736.82565496437 Test 18 - Variable: scalarSurfaceRunoff - difference: 1.622084318727068e-09 Test 18 - Variable: mLayerTemp - difference: 52425206.53918717 Test 18 - Variable: scalarRainPlusMelt - difference: 7.425306615767589e-05 Test 18 - Variable: iLayerLiqFluxSoil - difference: 0.0005099294016558621 Test 18 - Variable: iLayerHeight - difference: 50992121.02003196 Test 18 - Variable: mLayerDepth - difference: 50977172.94644198 Test 18 - Variable: basin__SurfaceRunoff - difference: 2.471439551038561e-10 Test 18 - Variable: scalarSurfaceTemp - difference: 7675.79697407106 Test 18 - Variable: mLayerVolFracIce - difference: 50959822.45401129 Test 18 - Variable: scalarSWE - difference: 57933.6103430278 Test 18 - Variable: mLayerMatricHead - difference: 965957.0101841344 Test 18 - Variable: mLayerVolFracLiq - difference: 50957946.89076498 Test 18 - Variable: scalarInfiltration - difference: 7.99531786008876e-05 Test 18 - Variable: averageRoutedRunoff - difference: 2.472475204847685e-06 Test 18 - Variable: scalarCanopyTranspiration - difference: 0.001469789341184255 Test 18 - Variable: averageInstantRunoff - difference: 2.4781228887063294e-06 Test 18 - Variable: scalarSnowSublimation - difference: 0.004769865868149203 Test 18 - Variable: nSnow - difference: 5096 Test 18 - Variable: scalarThroughfallSnow - difference: 0.0071987861226197715 Test 18 - Variable: mLayerLiqFluxSoil - difference: 0.0017225247031808619 Test 18 - Variable: mLayerVolFracWat - difference: 50959635.40458195 Test 18 - Variable: scalarLatHeatTotal - difference: 30122.222137483637 Test 18 - Variable: scalarGroundEvaporation - difference: 0.0018579204284812666 Test 18 - Variable: scalarCanopyEvaporation - difference: 0.0031831960680717983 Test 18 - Filename: vegImpactsWind_riparianAspenWindParamPerturb_timestep.nc - Total difference: 308398388.57167745 Test 19 - Variable: scalarLAI - difference: 198.46191961310507 Test 19 - Variable: scalarExposedLAI - difference: 198.46191961310507 Test 19 - Variable: scalarSenHeatTotal - difference: 20045.570694676364 Test 19 - Variable: scalarSurfaceRunoff - difference: 9.756314360035547e-07 Test 19 - Variable: mLayerTemp - difference: 8543858.564631183 Test 19 - Variable: scalarRainPlusMelt - difference: 2.651113749143357e-05 Test 19 - Variable: iLayerLiqFluxSoil - difference: 0.00023285000280254706 Test 19 - Variable: iLayerHeight - difference: 8314397.210296784 Test 19 - Variable: mLayerDepth - difference: 8311711.028199771 Test 19 - Variable: basin__SurfaceRunoff - difference: 9.756314360035547e-07 Test 19 - Variable: scalarSurfaceTemp - difference: 423.25526294472564 Test 19 - Variable: mLayerVolFracIce - difference: 8309777.268398305 Test 19 - Variable: scalarSWE - difference: 12441.80458439573 Test 19 - Variable: mLayerMatricHead - difference: 65746.97664694214 Test 19 - Variable: mLayerVolFracLiq - difference: 8309764.055412848 Test 19 - Variable: scalarInfiltration - difference: 3.0712025866876525e-05 Test 19 - Variable: averageRoutedRunoff - difference: 1.0649469548216297e-05 Test 19 - Variable: scalarCanopyTranspiration - difference: 0.00017250137409072398 Test 19 - Variable: averageInstantRunoff - difference: 1.173997033412991e-05 Test 19 - Variable: scalarSnowSublimation - difference: 0.004360565231224602 Test 19 - Variable: nSnow - difference: 831 Test 19 - Variable: scalarThroughfallSnow - difference: 0.0015365853844551863 Test 19 - Variable: mLayerLiqFluxSoil - difference: 0.001189882595867485 Test 19 - Variable: mLayerVolFracWat - difference: 8309861.749176674 Test 19 - Variable: scalarLatHeatTotal - difference: 13870.262880859398 Test 19 - Variable: scalarGroundEvaporation - difference: 0.000709457123238325 Test 19 - Variable: scalarCanopyEvaporation - difference: 0.0007596193601604457 Test 19 - Filename: vegImpactsWind_riparianAspenExpWindProfile_timestep.nc - Total difference: 50213125.67906763 Test 20 - Filename: storckSite_hedpom9697_timestep.nc - Total difference: 0.0 Test 21 - Filename: storckSite_hedpom9798_timestep.nc - Total difference: 0.0 Test 22 - Filename: storckSite_storck9697_timestep.nc - Total difference: 0.0 Test 23 - Filename: storckSite_storck9798_timestep.nc - Total difference: 0.0 Test 24 - Variable: scalarExposedSAI - difference: 0.5952958242003304 Test 24 - Variable: scalarExposedLAI - difference: 1.0846500452846097 Test 24 - Variable: scalarSenHeatTotal - difference: 132.9387226346265 Test 24 - Variable: scalarSurfaceRunoff - difference: 1.4988580101162637e-10 Test 24 - Variable: mLayerTemp - difference: 30935.731588980714 Test 24 - Variable: scalarRainPlusMelt - difference: 1.0177434181066916e-06 Test 24 - Variable: iLayerLiqFluxSoil - difference: 7.371939633743129e-06 Test 24 - Variable: iLayerHeight - difference: 30031.530437403246 Test 24 - Variable: mLayerDepth - difference: 30009.73068711028 Test 24 - Variable: basin__SurfaceRunoff - difference: 1.4988580101162637e-10 Test 24 - Variable: scalarSurfaceTemp - difference: 12.62960675422812 Test 24 - Variable: mLayerVolFracIce - difference: 29999.873201570925 Test 24 - Variable: scalarSWE - difference: 1033.0867368848599 Test 24 - Variable: mLayerMatricHead - difference: 4940.904313816807 Test 24 - Variable: mLayerVolFracLiq - difference: 30000.445239288518 Test 24 - Variable: scalarInfiltration - difference: 1.4192155428075093e-06 Test 24 - Variable: averageRoutedRunoff - difference: 3.1853562709830644e-07 Test 24 - Variable: scalarCanopyTranspiration - difference: 1.1139927179221408e-05 Test 24 - Variable: averageInstantRunoff - difference: 3.221252623309022e-07 Test 24 - Variable: scalarSnowSublimation - difference: 2.072458577256452e-05 Test 24 - Variable: nSnow - difference: 3 Test 24 - Variable: scalarThroughfallSnow - difference: 6.407321487554966e-06 Test 24 - Variable: mLayerLiqFluxSoil - difference: 2.686921427801664e-05 Test 24 - Variable: mLayerVolFracWat - difference: 30001.407146732665 Test 24 - Variable: scalarLatHeatTotal - difference: 107.15501023020589 Test 24 - Variable: scalarGroundEvaporation - difference: 2.1288657836325015e-05 Test 24 - Variable: scalarCanopyEvaporation - difference: 1.0001502254384758e-05 Test 24 - Filename: albedoTest_reynoldsConstantDecayRate_timestep.nc - Total difference: 187210.1127441576 Test 25 - Variable: scalarExposedSAI - difference: 2.718819845065877 Test 25 - Variable: scalarExposedLAI - difference: 5.930862778818636 Test 25 - Variable: scalarSenHeatTotal - difference: 1129.6602626993524 Test 25 - Variable: scalarSurfaceRunoff - difference: 4.941262503066426e-10 Test 25 - Variable: mLayerTemp - difference: 4690153.621362483 Test 25 - Variable: scalarRainPlusMelt - difference: 7.360462368714387e-06 Test 25 - Variable: iLayerLiqFluxSoil - difference: 5.1758340805464804e-05 Test 25 - Variable: iLayerHeight - difference: 4553829.682401423 Test 25 - Variable: mLayerDepth - difference: 4551809.320584027 Test 25 - Variable: basin__SurfaceRunoff - difference: 4.941262503066426e-10 Test 25 - Variable: scalarSurfaceTemp - difference: 466.7884260174634 Test 25 - Variable: mLayerVolFracIce - difference: 4549927.631181609 Test 25 - Variable: scalarSWE - difference: 12103.429491346655 Test 25 - Variable: mLayerMatricHead - difference: 39119.7157361847 Test 25 - Variable: mLayerVolFracLiq - difference: 4549825.73413724 Test 25 - Variable: scalarInfiltration - difference: 8.544327193277892e-06 Test 25 - Variable: averageRoutedRunoff - difference: 1.8148435264140224e-06 Test 25 - Variable: scalarCanopyTranspiration - difference: 8.01832173457974e-05 Test 25 - Variable: averageInstantRunoff - difference: 1.8291722169400158e-06 Test 25 - Variable: scalarSnowSublimation - difference: 0.0002995297564719581 Test 25 - Variable: nSnow - difference: 455 Test 25 - Variable: scalarThroughfallSnow - difference: 0.00024864138685369526 Test 25 - Variable: mLayerLiqFluxSoil - difference: 0.00010966629529778578 Test 25 - Variable: mLayerVolFracWat - difference: 4549957.319122322 Test 25 - Variable: scalarLatHeatTotal - difference: 1271.9474062959584 Test 25 - Variable: scalarGroundEvaporation - difference: 0.00010601742579692719 Test 25 - Variable: scalarCanopyEvaporation - difference: 0.00019150597905790226 Test 25 - Filename: albedoTest_reynoldsVariableDecayRate_timestep.nc - Total difference: 27500058.50090112 Test 26 - Variable: scalarExposedSAI - difference: 9.122294662262775 Test 26 - Variable: scalarExposedLAI - difference: 30.799728319390077 Test 26 - Variable: scalarSenHeatTotal - difference: 2883.544558633961 Test 26 - Variable: scalarSurfaceRunoff - difference: 1.4780447809635585e-09 Test 26 - Variable: mLayerTemp - difference: 5150397.250074333 Test 26 - Variable: scalarRainPlusMelt - difference: 7.806268484637337e-06 Test 26 - Variable: iLayerLiqFluxSoil - difference: 5.72656884292886e-05 Test 26 - Variable: iLayerHeight - difference: 5003879.867068022 Test 26 - Variable: mLayerDepth - difference: 5001350.13196332 Test 26 - Variable: basin__SurfaceRunoff - difference: 1.4780447809635585e-09 Test 26 - Variable: scalarSurfaceTemp - difference: 253.02349126695455 Test 26 - Variable: mLayerVolFracIce - difference: 4999834.985442016 Test 26 - Variable: scalarSWE - difference: 17076.175985223326 Test 26 - Variable: mLayerMatricHead - difference: 100618.51378688174 Test 26 - Variable: mLayerVolFracLiq - difference: 4999785.483457738 Test 26 - Variable: scalarInfiltration - difference: 8.728356778686205e-06 Test 26 - Variable: averageRoutedRunoff - difference: 2.76610985701266e-06 Test 26 - Variable: scalarCanopyTranspiration - difference: 0.00014071259532875862 Test 26 - Variable: averageInstantRunoff - difference: 2.777904287353226e-06 Test 26 - Variable: scalarSnowSublimation - difference: 0.0008126326936346898 Test 26 - Variable: nSnow - difference: 500 Test 26 - Variable: scalarThroughfallSnow - difference: 0.0005343995666296674 Test 26 - Variable: mLayerLiqFluxSoil - difference: 0.0001720716414294093 Test 26 - Variable: mLayerVolFracWat - difference: 4999823.567095805 Test 26 - Variable: scalarLatHeatTotal - difference: 3274.128142487591 Test 26 - Variable: scalarGroundEvaporation - difference: 0.00011400556953453962 Test 26 - Variable: scalarCanopyEvaporation - difference: 0.00038977078130211486 Test 26 - Filename: albedoTest_senatorConstantDecayRate_timestep.nc - Total difference: 30279716.595331647 Test 27 - Variable: scalarExposedSAI - difference: 0.699553136633919 Test 27 - Variable: scalarExposedLAI - difference: 3.3148095954464356 Test 27 - Variable: scalarSenHeatTotal - difference: 546.1031485307503 Test 27 - Variable: scalarSurfaceRunoff - difference: 1.0169617024552148e-09 Test 27 - Variable: mLayerTemp - difference: 1593831.3406128017 Test 27 - Variable: scalarRainPlusMelt - difference: 3.8078799915673257e-06 Test 27 - Variable: iLayerLiqFluxSoil - difference: 2.3473139983843965e-05 Test 27 - Variable: iLayerHeight - difference: 1551178.2103100424 Test 27 - Variable: mLayerDepth - difference: 1550400.3639104487 Test 27 - Variable: basin__SurfaceRunoff - difference: 1.0169617024552148e-09 Test 27 - Variable: scalarSurfaceTemp - difference: 88.12355409708124 Test 27 - Variable: mLayerVolFracIce - difference: 1549940.5190232599 Test 27 - Variable: scalarSWE - difference: 5087.074734694786 Test 27 - Variable: mLayerMatricHead - difference: 6098.357540878601 Test 27 - Variable: mLayerVolFracLiq - difference: 1549939.9150077694 Test 27 - Variable: scalarInfiltration - difference: 3.846547825258443e-06 Test 27 - Variable: averageRoutedRunoff - difference: 9.550387826204572e-07 Test 27 - Variable: scalarCanopyTranspiration - difference: 6.173395151376199e-05 Test 27 - Variable: averageInstantRunoff - difference: 9.673701330201213e-07 Test 27 - Variable: scalarSnowSublimation - difference: 0.00018222014092071528 Test 27 - Variable: nSnow - difference: 155 Test 27 - Variable: scalarThroughfallSnow - difference: 0.00023499760362628562 Test 27 - Variable: mLayerLiqFluxSoil - difference: 4.524921867940728e-05 Test 27 - Variable: mLayerVolFracWat - difference: 1549943.5232788895 Test 27 - Variable: scalarLatHeatTotal - difference: 590.1324065644266 Test 27 - Variable: scalarGroundEvaporation - difference: 6.583569429792408e-06 Test 27 - Variable: scalarCanopyEvaporation - difference: 0.00011386015104075123 Test 27 - Filename: albedoTest_senatorVariableDecayRate_timestep.nc - Total difference: 9357802.678568406 Test 28 - Variable: scalarLAI - difference: 54.74999999999987 Test 28 - Variable: scalarExposedLAI - difference: 54.74999999999987 Test 28 - Variable: scalarSenHeatTotal - difference: 2085.798128206662 Test 28 - Variable: mLayerTemp - difference: 186098.27693241482 Test 28 - Variable: scalarRainPlusMelt - difference: 1.5483479123995255e-07 Test 28 - Variable: iLayerLiqFluxSoil - difference: 1.7348482398262066e-06 Test 28 - Variable: iLayerHeight - difference: 180156.74055258447 Test 28 - Variable: mLayerDepth - difference: 180071.832117479 Test 28 - Variable: scalarSurfaceTemp - difference: 243.53283141431453 Test 28 - Variable: mLayerVolFracIce - difference: 180035.31031426069 Test 28 - Variable: scalarSWE - difference: 858.3187577751357 Test 28 - Variable: mLayerMatricHead - difference: 7245.322334888937 Test 28 - Variable: mLayerVolFracLiq - difference: 179995.57071594955 Test 28 - Variable: scalarInfiltration - difference: 2.119677036424425e-07 Test 28 - Variable: averageRoutedRunoff - difference: 1.295718617849055e-07 Test 28 - Variable: scalarCanopyTranspiration - difference: 3.6085814483676905e-05 Test 28 - Variable: averageInstantRunoff - difference: 1.3078870842394194e-07 Test 28 - Variable: scalarSnowSublimation - difference: 0.00016614894617310587 Test 28 - Variable: nSnow - difference: 18 Test 28 - Variable: scalarThroughfallSnow - difference: 0.0003408867044170541 Test 28 - Variable: mLayerLiqFluxSoil - difference: 5.05300148776674e-06 Test 28 - Variable: mLayerVolFracWat - difference: 180033.36014010248 Test 28 - Variable: scalarLatHeatTotal - difference: 850.7164422617046 Test 28 - Variable: scalarGroundEvaporation - difference: 4.078680971852422e-06 Test 28 - Variable: scalarCanopyEvaporation - difference: 9.853920356646251e-05 Test 28 - Filename: vegImpactsTranspire_ballBerry_timestep.nc - Total difference: 1097802.2799204923 Test 29 - Variable: scalarLAI - difference: 54.74999999999987 Test 29 - Variable: scalarExposedLAI - difference: 54.74999999999987 Test 29 - Variable: scalarSenHeatTotal - difference: 2102.7849840368153 Test 29 - Variable: mLayerTemp - difference: 997802.5163664281 Test 29 - Variable: scalarRainPlusMelt - difference: 2.82413878314431e-07 Test 29 - Variable: iLayerLiqFluxSoil - difference: 2.6971933551210384e-06 Test 29 - Variable: iLayerHeight - difference: 970731.5166576941 Test 29 - Variable: mLayerDepth - difference: 970260.4670361029 Test 29 - Variable: scalarSurfaceTemp - difference: 256.38540551120354 Test 29 - Variable: mLayerVolFracIce - difference: 969997.3697119565 Test 29 - Variable: scalarSWE - difference: 883.5019731930522 Test 29 - Variable: mLayerMatricHead - difference: 32916.56345172243 Test 29 - Variable: mLayerVolFracLiq - difference: 969954.8249309544 Test 29 - Variable: scalarInfiltration - difference: 3.390864976537029e-07 Test 29 - Variable: averageRoutedRunoff - difference: 1.813663563961212e-07 Test 29 - Variable: scalarCanopyTranspiration - difference: 6.97978945640913e-05 Test 29 - Variable: averageInstantRunoff - difference: 1.8274299047345052e-07 Test 29 - Variable: scalarSnowSublimation - difference: 0.00018129117718951424 Test 29 - Variable: nSnow - difference: 97 Test 29 - Variable: scalarThroughfallSnow - difference: 0.00034120865621326327 Test 29 - Variable: mLayerLiqFluxSoil - difference: 5.777139826347035e-06 Test 29 - Variable: mLayerVolFracWat - difference: 969996.7024761518 Test 29 - Variable: scalarLatHeatTotal - difference: 974.6197759871343 Test 29 - Variable: scalarGroundEvaporation - difference: 2.899237509604408e-06 Test 29 - Variable: scalarCanopyEvaporation - difference: 0.00010061813058081217 Test 29 - Filename: vegImpactsTranspire_jarvis_timestep.nc - Total difference: 5886083.753475014 Test 30 - Variable: scalarLAI - difference: 54.74999999999987 Test 30 - Variable: scalarExposedLAI - difference: 54.74999999999987 Test 30 - Variable: scalarSenHeatTotal - difference: 2187.971086065233 Test 30 - Variable: mLayerTemp - difference: 278707.6463095255 Test 30 - Variable: scalarRainPlusMelt - difference: 1.9492688311678928e-07 Test 30 - Variable: iLayerLiqFluxSoil - difference: 5.282864762789539e-06 Test 30 - Variable: iLayerHeight - difference: 270224.20013211144 Test 30 - Variable: mLayerDepth - difference: 270097.08946556057 Test 30 - Variable: scalarSurfaceTemp - difference: 243.8228435786109 Test 30 - Variable: mLayerVolFracIce - difference: 270035.1287649804 Test 30 - Variable: scalarSWE - difference: 547.3577964840556 Test 30 - Variable: mLayerMatricHead - difference: 454259.0411301602 Test 30 - Variable: mLayerVolFracLiq - difference: 270005.9473886372 Test 30 - Variable: scalarInfiltration - difference: 2.060307333219393e-07 Test 30 - Variable: averageRoutedRunoff - difference: 5.923653744132973e-07 Test 30 - Variable: scalarCanopyTranspiration - difference: 0.0006126646516000974 Test 30 - Variable: averageInstantRunoff - difference: 5.923653744760221e-07 Test 30 - Variable: scalarSnowSublimation - difference: 0.00017769827168702005 Test 30 - Variable: nSnow - difference: 27 Test 30 - Variable: scalarThroughfallSnow - difference: 0.0003383388004061556 Test 30 - Variable: mLayerLiqFluxSoil - difference: 1.7384254555916563e-05 Test 30 - Variable: mLayerVolFracWat - difference: 270047.02277556213 Test 30 - Variable: scalarLatHeatTotal - difference: 1859.084612555049 Test 30 - Variable: scalarGroundEvaporation - difference: 9.366034343308134e-07 Test 30 - Variable: scalarCanopyEvaporation - difference: 0.00010695775857694076 Test 30 - Filename: vegImpactsTranspire_simpleResistance_timestep.nc - Total difference: 2088350.8135660696 Test 31 - Variable: scalarLAI - difference: 273.7499999999995 Test 31 - Variable: scalarExposedLAI - difference: 273.7499999999995 Test 31 - Variable: scalarSenHeatTotal - difference: 16187.531592619993 Test 31 - Variable: mLayerTemp - difference: 27677952.66965754 Test 31 - Variable: scalarRainPlusMelt - difference: 3.660872522386261e-05 Test 31 - Variable: iLayerLiqFluxSoil - difference: 0.00025118888438299843 Test 31 - Variable: iLayerHeight - difference: 26931240.817250576 Test 31 - Variable: mLayerDepth - difference: 26918823.05432562 Test 31 - Variable: scalarSurfaceTemp - difference: 3257.6268885577924 Test 31 - Variable: mLayerVolFracIce - difference: 26909772.033902816 Test 31 - Variable: scalarSWE - difference: 16191.364301749349 Test 31 - Variable: mLayerMatricHead - difference: 191771.39915053733 Test 31 - Variable: mLayerVolFracLiq - difference: 26908784.102772176 Test 31 - Variable: scalarInfiltration - difference: 3.863904954077568e-05 Test 31 - Variable: averageRoutedRunoff - difference: 1.751169256807406e-06 Test 31 - Variable: scalarCanopyTranspiration - difference: 0.00033907699026157077 Test 31 - Variable: averageInstantRunoff - difference: 1.7578940676512837e-06 Test 31 - Variable: scalarSnowSublimation - difference: 0.0019075788447499406 Test 31 - Variable: nSnow - difference: 2691 Test 31 - Variable: scalarThroughfallSnow - difference: 0.0018256994339571602 Test 31 - Variable: mLayerLiqFluxSoil - difference: 0.00033026599274774083 Test 31 - Variable: mLayerVolFracWat - difference: 26909690.878839802 Test 31 - Variable: scalarLatHeatTotal - difference: 8397.41768623556 Test 31 - Variable: scalarGroundEvaporation - difference: 0.0001739758572026269 Test 31 - Variable: scalarCanopyEvaporation - difference: 0.000574435303056809 Test 31 - Filename: vegImpactsTranspire_perturbRoots_timestep.nc - Total difference: 162495307.40184924 Test 32 - Variable: scalarLAI - difference: 328.7562499033108 Test 32 - Variable: scalarExposedLAI - difference: 328.7562499033108 Test 32 - Variable: scalarSenHeatTotal - difference: 15128.242486290843 Test 32 - Variable: scalarSurfaceRunoff - difference: 1.537498819758674e-10 Test 32 - Variable: mLayerTemp - difference: 14266607.66822568 Test 32 - Variable: scalarRainPlusMelt - difference: 2.3595973421732143e-05 Test 32 - Variable: iLayerLiqFluxSoil - difference: 0.00017813451004800956 Test 32 - Variable: iLayerHeight - difference: 13881131.027346648 Test 32 - Variable: mLayerDepth - difference: 13874527.873546273 Test 32 - Variable: basin__SurfaceRunoff - difference: 1.537498819758674e-10 Test 32 - Variable: scalarSurfaceTemp - difference: 2053.63352635143 Test 32 - Variable: mLayerVolFracIce - difference: 13869997.256448373 Test 32 - Variable: scalarSWE - difference: 25379.072442181652 Test 32 - Variable: mLayerMatricHead - difference: 304015.64022143476 Test 32 - Variable: mLayerVolFracLiq - difference: 13869385.508507144 Test 32 - Variable: scalarInfiltration - difference: 2.5491904172533747e-05 Test 32 - Variable: averageRoutedRunoff - difference: 1.0723257554829429e-05 Test 32 - Variable: scalarCanopyTranspiration - difference: 0.00032959051703885915 Test 32 - Variable: averageInstantRunoff - difference: 1.0871114047437543e-05 Test 32 - Variable: scalarSnowSublimation - difference: 0.001569204247415186 Test 32 - Variable: nSnow - difference: 1387 Test 32 - Variable: scalarThroughfallSnow - difference: 0.002190577386088078 Test 32 - Variable: mLayerLiqFluxSoil - difference: 0.0002287952511105801 Test 32 - Variable: mLayerVolFracWat - difference: 13869999.183253666 Test 32 - Variable: scalarLatHeatTotal - difference: 8249.189133332506 Test 32 - Variable: scalarGroundEvaporation - difference: 0.00016568997146741013 Test 32 - Variable: scalarCanopyEvaporation - difference: 0.0007904276790690259 Test 32 - Filename: basinRunoff_1dRichards_timestep.nc - Total difference: 83988518.81316029 Test 33 - Variable: scalarExposedSAI - difference: 38.42760713396491 Test 33 - Variable: scalarLAI - difference: 1700.0697958055705 Test 33 - Variable: scalarExposedLAI - difference: 957.4082346027042 Test 33 - Variable: scalarSenHeatTotal - difference: 66181.58729066316 Test 33 - Variable: scalarSurfaceRunoff - difference: 1.1440870672252265e-06 Test 33 - Variable: mLayerTemp - difference: 101983077.38451691 Test 33 - Variable: scalarRainPlusMelt - difference: 0.0001604496610706148 Test 33 - Variable: iLayerLiqFluxSoil - difference: 0.0011402978219014679 Test 33 - Variable: basin__ColumnOutflow - difference: 1.386091960093057 Test 33 - Variable: iLayerHeight - difference: 99161374.72433949 Test 33 - Variable: mLayerDepth - difference: 99116582.96685235 Test 33 - Variable: basin__SurfaceRunoff - difference: 2.3912430483536e-07 Test 33 - Variable: scalarSurfaceTemp - difference: 11894.414009025513 Test 33 - Variable: mLayerVolFracIce - difference: 99079804.30114289 Test 33 - Variable: scalarSWE - difference: 88796.78465171195 Test 33 - Variable: mLayerMatricHead - difference: 1593428.6215250255 Test 33 - Variable: mLayerVolFracLiq - difference: 99075759.77926707 Test 33 - Variable: scalarInfiltration - difference: 0.0001765238560815077 Test 33 - Variable: averageRoutedRunoff - difference: 3.866017163951002e-06 Test 33 - Variable: scalarCanopyTranspiration - difference: 0.0013006801379305748 Test 33 - Variable: averageInstantRunoff - difference: 3.925184194351925e-06 Test 33 - Variable: scalarSnowSublimation - difference: 0.01022348145480735 Test 33 - Variable: nSnow - difference: 9908 Test 33 - Variable: scalarThroughfallSnow - difference: 0.010851650288333741 Test 33 - Variable: mLayerLiqFluxSoil - difference: 0.001994325280584765 Test 33 - Variable: mLayerVolFracWat - difference: 99079851.80646107 Test 33 - Variable: scalarLatHeatTotal - difference: 42151.60684643239 Test 33 - Variable: scalarGroundEvaporation - difference: 0.001041759932976523 Test 33 - Variable: scalarThroughfallRain - difference: 0.00165288847076815 Test 33 - Variable: scalarCanopyEvaporation - difference: 0.004616073134596182 Test 33 - Filename: basinRunoff_distributedTopmodel_timestep.nc - Total difference: 599311509.3017994 Test 34 - Variable: scalarLAI - difference: 383.5062499033106 Test 34 - Variable: scalarExposedLAI - difference: 383.5062499033106 Test 34 - Variable: scalarSenHeatTotal - difference: 20972.85731271942 Test 34 - Variable: mLayerTemp - difference: 31874630.986310996 Test 34 - Variable: scalarRainPlusMelt - difference: 4.467361362727269e-05 Test 34 - Variable: iLayerLiqFluxSoil - difference: 0.0002975940026958169 Test 34 - Variable: basin__ColumnOutflow - difference: 0.3274148391660913 Test 34 - Variable: iLayerHeight - difference: 30995866.396723516 Test 34 - Variable: mLayerDepth - difference: 30982079.956477813 Test 34 - Variable: scalarSurfaceTemp - difference: 3877.407090723413 Test 34 - Variable: mLayerVolFracIce - difference: 30970079.726503883 Test 34 - Variable: scalarSWE - difference: 29652.92430975209 Test 34 - Variable: mLayerMatricHead - difference: 368773.7742626987 Test 34 - Variable: mLayerVolFracLiq - difference: 30968658.855016336 Test 34 - Variable: scalarInfiltration - difference: 4.772562864716917e-05 Test 34 - Variable: averageRoutedRunoff - difference: 9.946978314400346e-06 Test 34 - Variable: scalarCanopyTranspiration - difference: 0.000396404200961249 Test 34 - Variable: averageInstantRunoff - difference: 1.0012686213030316e-05 Test 34 - Variable: scalarSnowSublimation - difference: 0.0025690493903221517 Test 34 - Variable: nSnow - difference: 3097 Test 34 - Variable: scalarThroughfallSnow - difference: 0.0025437894455623195 Test 34 - Variable: mLayerLiqFluxSoil - difference: 0.0004343709756679238 Test 34 - Variable: mLayerVolFracWat - difference: 30970063.266510002 Test 34 - Variable: scalarLatHeatTotal - difference: 12451.996326601871 Test 34 - Variable: scalarGroundEvaporation - difference: 0.00022902745890943297 Test 34 - Variable: scalarCanopyEvaporation - difference: 0.0011404452030281027 Test 34 - Filename: basinRunoff_lumpedTopmodel_timestep.nc - Total difference: 187200972.4944827 ```

Additional tests

Changes in fluxes in the AU-GWW case from above:

au_gww_sai_lai_change_impact_evap_transp_netNRG

Close-up of 1 year: au_gww_sai_lai_change_impact_evap_transp_netNRG_timeZOOM

Evaporation/transpiration fluxes seem of appropriate magnitude in the new case compared to old. A difference in net radiation of ~700 [W m-2] is obviously wrong but that is unrelated to this PR (see #479, #327). In any case, net radiation is reported better with these changes than without:

au_gww_sai_lai_change_radiation_terms_difference

See #487 for bugfix of incorrectly reported net radiation.

martynpclark commented 2 years ago

This looks good. Wouter and I went through the code and results together.