From 8061bc0defc51e668a29942691a9d3164326a803 Mon Sep 17 00:00:00 2001 From: Rich Fiorella Date: Mon, 10 Jun 2024 07:40:52 -0600 Subject: [PATCH] Add use_polygonal_tundra flag to CanopyStateType Adds use_polygonal_tundra flag to CanopyStateType as new variables were causing issues when comparing against baseline tests. --- .../elm/src/biogeophys/CanopyStateType.F90 | 69 ++++++++++--------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/components/elm/src/biogeophys/CanopyStateType.F90 b/components/elm/src/biogeophys/CanopyStateType.F90 index 13ba1a5eaa66..803366c05000 100644 --- a/components/elm/src/biogeophys/CanopyStateType.F90 +++ b/components/elm/src/biogeophys/CanopyStateType.F90 @@ -10,6 +10,7 @@ module CanopyStateType use elm_varcon , only : spval,ispval use elm_varpar , only : nlevcan, nvegwcs use elm_varctl , only : iulog, use_cn, use_fates, use_hydrstress, use_fates_sp + use elm_varctl , only : use_polygonal_tundra use LandunitType , only : lun_pp use ColumnType , only : col_pp use VegetationType , only : veg_pp @@ -62,10 +63,10 @@ module CanopyStateType integer , pointer :: alt_indx_col (:) ! col current depth of thaw real(r8) , pointer :: altmax_col (:) ! col maximum annual depth of thaw real(r8) , pointer :: altmax_lastyear_col (:) ! col prior year maximum annual depth of thaw - real(r8) , pointer :: altmax_1989_col (:) ! col maximum annual thaw depth in 1989 RF note: temporary for IM1! - real(r8) , pointer :: altmax_ever_col (:) ! col maximum thaw depth from beginning of simulation integer , pointer :: altmax_indx_col (:) ! col maximum annual depth of thaw integer , pointer :: altmax_lastyear_indx_col (:) ! col prior year maximum annual depth of thaw + real(r8) , pointer :: altmax_1989_col (:) ! col maximum annual thaw depth in 1989 RF note: temporary for IM1! + real(r8) , pointer :: altmax_ever_col (:) ! col maximum thaw depth from beginning of simulation integer , pointer :: altmax_1989_indx_col (:) ! col 1989 maximum thaw depth RF note: temporary for IM1! integer , pointer :: altmax_ever_indx_col (:) ! col maximum thaw depth from beginning of simulation @@ -286,15 +287,17 @@ subroutine InitHistory(this, bounds) avgflag='A', long_name='maximum prior year active layer thickness', & ptr_col=this%altmax_lastyear_col) - this%altmax_1989_col(begc:endc) = spval - call hist_addfld1d (fname='ALTMAX_1989', units='m', & - avgflag='A', long_name='maximum 1989 active layer thickness', & - ptr_col=this%altmax_1989_col) + if (use_polygonal_tundra) then + this%altmax_1989_col(begc:endc) = spval + call hist_addfld1d (fname='ALTMAX_1989', units='m', & + avgflag='A', long_name='maximum 1989 active layer thickness', & + ptr_col=this%altmax_1989_col) - this%altmax_ever_col(begc:endc) = spval - call hist_addfld1d (fname='ALTMAX_EVER', units='m', & - avgflag='A', long_name='maximum ever active layer thickness throughout simulation', & - ptr_col=this%altmax_ever_col) + this%altmax_ever_col(begc:endc) = spval + call hist_addfld1d (fname='ALTMAX_EVER', units='m', & + avgflag='A', long_name='maximum ever active layer thickness throughout simulation', & + ptr_col=this%altmax_ever_col) + end if end if ! Allow active layer fields to be optionally output even if not running CN @@ -315,15 +318,17 @@ subroutine InitHistory(this, bounds) avgflag='A', long_name='maximum prior year active layer thickness', & ptr_col=this%altmax_lastyear_col, default='inactive') - this%altmax_1989_col(begc:endc) = spval - call hist_addfld1d (fname='ALTMAX_1989', units='m', & - avgflag='A', long_name='maximum 1989 active layer thickness', & - ptr_col=this%altmax_1989_col, default='inactive') + if (use_polygonal_tundra) then + this%altmax_1989_col(begc:endc) = spval + call hist_addfld1d (fname='ALTMAX_1989', units='m', & + avgflag='A', long_name='maximum 1989 active layer thickness', & + ptr_col=this%altmax_1989_col, default='inactive') - this%altmax_ever_col(begc:endc) = spval - call hist_addfld1d (fname='ALTMAX_EVER', units='m', & - avgflag='A', long_name='maximum ever active layer thickness throughout simulation', & - ptr_col=this%altmax_ever_col, default='inactive') + this%altmax_ever_col(begc:endc) = spval + call hist_addfld1d (fname='ALTMAX_EVER', units='m', & + avgflag='A', long_name='maximum ever active layer thickness throughout simulation', & + ptr_col=this%altmax_ever_col, default='inactive') + end if end if ! Accumulated fields @@ -604,25 +609,27 @@ subroutine Restart(this, bounds, ncid, flag) call restartvar(ncid=ncid, flag=flag, varname='altmax_lastyear', xtype=ncd_double, & dim1name='column', long_name='', units='', & interpinic_flag='interp', readvar=readvar, data=this%altmax_lastyear_col) - call restartvar(ncid=ncid, flag=flag, varname='altmax_1989', xtype=ncd_double, & - dim1name='column', long_name='', units='', & - interpinic_flag='interp', readvar=readvar, data=this%altmax_1989_col) - call restartvar(ncid=ncid, flag=flag, varname='altmax_ever', xtype=ncd_double, & - dim1name='column', long_name='', units='', & - interpinic_flag='interp', readvar=readvar, data=this%altmax_ever_col) call restartvar(ncid=ncid, flag=flag, varname='altmax_indx', xtype=ncd_int, & dim1name='column', long_name='', units='', & interpinic_flag='interp', readvar=readvar, data=this%altmax_indx_col) call restartvar(ncid=ncid, flag=flag, varname='altmax_lastyear_indx', xtype=ncd_int, & dim1name='column', long_name='', units='', & interpinic_flag='interp', readvar=readvar, data=this%altmax_lastyear_indx_col) - call restartvar(ncid=ncid, flag=flag, varname='altmax_1989_indx', xtype=ncd_double, & - dim1name='column', long_name='', units='', & - interpinic_flag='interp', readvar=readvar, data=this%altmax_1989_indx_col) - call restartvar(ncid=ncid, flag=flag, varname='altmax_ever_indx', xtype=ncd_int, & - dim1name='column', long_name='', units='', & - interpinic_flag='interp', readvar=readvar, data=this%altmax_ever_indx_col) - end if + if (use_polygonal_tundra) then + call restartvar(ncid=ncid, flag=flag, varname='altmax_1989_indx', xtype=ncd_double, & + dim1name='column', long_name='', units='', & + interpinic_flag='interp', readvar=readvar, data=this%altmax_1989_indx_col) + call restartvar(ncid=ncid, flag=flag, varname='altmax_ever_indx', xtype=ncd_int, & + dim1name='column', long_name='', units='', & + interpinic_flag='interp', readvar=readvar, data=this%altmax_ever_indx_col) + call restartvar(ncid=ncid, flag=flag, varname='altmax_1989', xtype=ncd_double, & + dim1name='column', long_name='', units='', & + interpinic_flag='interp', readvar=readvar, data=this%altmax_1989_col) + call restartvar(ncid=ncid, flag=flag, varname='altmax_ever', xtype=ncd_double, & + dim1name='column', long_name='', units='', & + interpinic_flag='interp', readvar=readvar, data=this%altmax_ever_col) + end if ! polygonal tundra + end if ! cn or fates if ( use_hydrstress ) then call restartvar(ncid=ncid, flag=flag, varname='vegwp', xtype=ncd_double, & dim1name='pft', dim2name='vegwcs', switchdim=.true., &