CABLE-LSM / CABLE-Trac-archive

Archive CABLE Trac contents as issues
Other
0 stars 0 forks source link

reorganising albedo code to separate snow age code from snow albedo #331

Closed penguian closed 1 year ago

penguian commented 2 years ago

keyword_keepgit owner:inh599@nci.org.au resolution_fixed type_code improvement | by inh599


The state variable ssnow%snage is currently timestepped inside the alebdo code. This is problematic as it creates signficant technical overhead for ACCESS and JAC - particulary in terms of variables that need to be sourced and included in restart files.

Proposed solution is to move the evaluation of the Snow Age from within the albedo code to the end of the soilsnow routines.

Note that the alternate soil scheme does not appear to use %ssnage.

see Ticket https://trac.nci.org.au/trac/cable/ticket/326


Issue migrated from trac:331 at 2023-11-27 11:41:27 +1100

penguian commented 2 years ago

@inh599@nci.org.au commented


1st attempt at code is included in branch at https://trac.nci.org.au/trac/cable/log/branches/Users/inh599/move_snowage_Ticket331

This branch retains some, now unnecessary, entries in the argument lists from cbl_albedo and would still fail UMST code review.

penguian commented 2 years ago

@inh599@nci.org.au commented


15th May

Testing with CCarouge's benchmarking system demonstrated that bit reproducibility failed for single site runs (branch vs trunk) that had snow cover at initialisation. While this is likely not scientifically important, a revised approach has been developed.

In practice the refactored albedo -> snow_aging + albedo code is now called from the cbm module where as previously the snow_aging routine was called from soil_snow. This revision has two important positives: i) snow age is updated in the same sequence as the trunk and ii) the refactored code will be picked up automatically when using the SLI soil model (previously a further edit would have been needed)

penguian commented 2 years ago

@inh599@nci.org.au set milestone to 3. Implementation

penguian commented 2 years ago

@inh599@nci.org.au changed type from defect to code improvement

penguian commented 2 years ago

@inh599@nci.org.au changed title from moving snow aging routine from albedo to soilsnow to reorganising albedo code to separate snow age code from snow albedo

penguian commented 2 years ago

@inh599@nci.org.au commented


branch @8848 results in bit reproducibility across 16 variables, 170 FLUXNET sites and 8 configurations as run through the benchcab system.

This branch will not work within the ESM as partner changes are needed in the coupled directory(ies).

This branch retains some, now unnecessary, entries in the argument lists of cbl_albedo and would likely fail UMST code review.

penguian commented 2 years ago

@inh599@nci.org.au commented


branch @8850 includes necessary code to back port these changes to the ESM (only involves cable_cbm)

This should retain functionality since

penguian commented 2 years ago

@inh599@nci.org.au changed status from new to assigned

penguian commented 2 years ago

@inh599@nci.org.au changed owner from jxs599 to inh599

penguian commented 2 years ago

@inh599@nci.org.au changed milestone from 3. Implementation to 2. Submission

penguian commented 2 years ago

@inh599@nci.org.au commented


branch @8852 includes all changes to (removals from) the Albedo() argument list necessary. Changes have been carried across into the coupled/ESM calling points.

branch @8852 results in bit reproducibility across 16 variables and 170 sites using the benchcab process: only 1 science configuration considered (see above for more science configurations on @8848)

no offline global tests have been conducted on this branch

This branch should now be considered for merging with the trunk.

Note

output from benchbitcomp.ipynb from a full run at revision @8852 - 2022-05-19\

NB only 1 science configuration\

list of 1D vars to check in file\

vars1 =['Qmom','Qle','Qh','Qg','Rnet','Qs','ECanop','BaresoilT','VegT','SnowT','SnowDepth','Tscrn','Qscrn','Albedo']\

list of 2D vars to check in file\

vars2 = ['SoilTemp','SoilMoist']\ 0 of 170 AR-SLu_2010-2010_FLUXNET2015_Met 0.0 \ 1 of 170 AT-Neu_2002-2012_FLUXNET2015_Met 0.0\ 2 of 170 AU-ASM_2011-2017_OzFlux_Met 0.0\ 3 of 170 AU-Cow_2010-2015_OzFlux_Met 0.0\ 4 of 170 AU-Cpr_2011-2017_OzFlux_Met 0.0\ 5 of 170 AU-Ctr_2010-2017_OzFlux_Met 0.0\ 6 of 170 AU-Cum_2013-2018_OzFlux_Met 0.0\ 7 of 170 AU-DaP_2009-2012_OzFlux_Met 0.0\ 8 of 170 AU-DaS_2010-2017_OzFlux_Met 0.0\ 9 of 170 AU-Dry_2011-2015_OzFlux_Met 0.0\ 10 of 170 AU-Emr_2012-2013_OzFlux_Met 0.0\ ...\ 162 of 170 US-Twt_2010-2014_FLUXNET2015_Met 0.0\ 163 of 170 US-UMB_2000-2014_FLUXNET2015_Met 0.0\ 164 of 170 US-Var_2001-2014_FLUXNET2015_Met 0.0\ 165 of 170 US-WCr_1999-2006_FLUXNET2015_Met 0.0\ 166 of 170 US-Whs_2008-2014_FLUXNET2015_Met 0.0\ 167 of 170 US-Wkg_2005-2014_FLUXNET2015_Met 0.0\ 168 of 170 ZA-Kru_2000-2002_FLUXNET2015_Met 0.0\ 169 of 170 ZM-Mon_2008-2008_FLUXNET2015_Met 0.0\ All sites/variables have passed is True

penguian commented 1 year ago

@jxs599@nci.org.au changed status from assigned to closed

penguian commented 1 year ago

@jxs599@nci.org.au set resolution to fixed

penguian commented 1 year ago

@jxs599@nci.org.au changed milestone from 2. Submission to 1. Closed

penguian commented 1 year ago

@ccc561@nci.org.au set keywords to keepgit