@@ -108,6 +108,7 @@ module ColumnDataType
108
108
real(r8), pointer :: h2osoi_liq (:,:) => null() ! liquid water (-nlevsno+1:nlevgrnd) (kg/m2)
109
109
real(r8), pointer :: h2osoi_ice (:,:) => null() ! ice lens (-nlevsno+1:nlevgrnd) (kg/m2)
110
110
real(r8), pointer :: h2osoi_vol (:,:) => null() ! volumetric soil water (0<=h2osoi_vol<=watsat) (1:nlevgrnd) (m3/m3)
111
+ real(r8), pointer :: excess_ice (:,:) => null() ! NGEE Arctic: excess ground ice in column (1:nlevgrnd) (0 to 1)
111
112
real(r8), pointer :: h2osfc (:) => null() ! surface water (kg/m2)
112
113
real(r8), pointer :: h2ocan (:) => null() ! canopy water integrated to column (kg/m2)
113
114
real(r8), pointer :: total_plant_stored_h2o(:)=> null() ! total water in plants (kg/m2)
@@ -143,7 +144,6 @@ module ColumnDataType
143
144
real(r8), pointer :: snw_rds_top (:) => null() ! snow grain radius (top layer) (m^-6, microns)
144
145
logical , pointer :: do_capsnow (:) => null() ! true => do snow capping
145
146
real(r8), pointer :: h2osoi_tend_tsl_col(:) => null() ! col moisture tendency due to vertical movement at topmost layer (m3/m3/s)
146
- real(r8), pointer :: excess_ice (:) => null() ! NGEE-Arctic: tracking excess ground ice
147
147
! Area fractions
148
148
real(r8), pointer :: frac_sno (:) => null() ! fraction of ground covered by snow (0 to 1)
149
149
real(r8), pointer :: frac_sno_eff (:) => null() ! fraction of ground covered by snow (0 to 1)
@@ -1384,6 +1384,7 @@ subroutine col_ws_init(this, begc, endc, h2osno_input, snow_depth_input, watsat_
1384
1384
allocate(this%h2osoi_liq (begc:endc,-nlevsno+1:nlevgrnd)) ; this%h2osoi_liq (:,:) = spval
1385
1385
allocate(this%h2osoi_ice (begc:endc,-nlevsno+1:nlevgrnd)) ; this%h2osoi_ice (:,:) = spval
1386
1386
allocate(this%h2osoi_vol (begc:endc, 1:nlevgrnd)) ; this%h2osoi_vol (:,:) = spval
1387
+ allocate(this%excess_ice (begc:endc, 1:nlevgrnd)) ; this%excess_ice (:,:) = spval
1387
1388
allocate(this%h2osfc (begc:endc)) ; this%h2osfc (:) = spval
1388
1389
allocate(this%h2ocan (begc:endc)) ; this%h2ocan (:) = spval
1389
1390
allocate(this%wslake_col (begc:endc)) ; this%wslake_col (:) = spval
@@ -1417,7 +1418,6 @@ subroutine col_ws_init(this, begc, endc, h2osno_input, snow_depth_input, watsat_
1417
1418
if (use_fan) then
1418
1419
allocate(this%h2osoi_tend_tsl_col(begc:endc)) ; this%h2osoi_tend_tsl_col(:) = spval
1419
1420
end if
1420
- allocate(this%excess_ice (begc:endc)) ; this%excess_ice (:) = spval
1421
1421
allocate(this%snw_rds_top (begc:endc)) ; this%snw_rds_top (:) = spval
1422
1422
allocate(this%do_capsnow (begc:endc))
1423
1423
allocate(this%frac_sno (begc:endc)) ; this%frac_sno (:) = spval
@@ -1473,9 +1473,14 @@ subroutine col_ws_init(this, begc, endc, h2osno_input, snow_depth_input, watsat_
1473
1473
ptr_col=this%h2osoi_ice, l2g_scale_type='veg')
1474
1474
1475
1475
this%h2osoi_ice(begc:endc,:) = spval
1476
- call hist_addfld2d (fname='SOILICE_ICE', units='kg/m2', type2d='levgrnd', &
1477
- avgflag='A', long_name='soil ice (ice landunits only)', &
1478
- ptr_col=this%h2osoi_ice, l2g_scale_type='ice')
1476
+ call hist_addfld2d (fname='SOILICE_ICE', units='kg/m2', type2d='levgrnd', &
1477
+ avgflag='A', long_name='soil ice (ice landunits only)', &
1478
+ ptr_col=this%h2osoi_ice, l2g_scale_type='ice')
1479
+
1480
+ this%excess_ice(begc:endc, :) = spval
1481
+ call hist_addfld2d (fname='EXCESS_ICE', units = '1', type2d='levgrnd', &
1482
+ avgflag='A', long_name='Excess ground ice (0 to 1)', &
1483
+ ptr_col=this%excess_ice, l2g_scale_type='veg') ! <- RPF: should this be natveg?
1479
1484
1480
1485
this%h2osfc(begc:endc) = spval
1481
1486
call hist_addfld1d (fname='H2OSFC', units='mm', &
@@ -1565,11 +1570,6 @@ subroutine col_ws_init(this, begc, endc, h2osno_input, snow_depth_input, watsat_
1565
1570
default='inactive')
1566
1571
end if
1567
1572
1568
- this%excess_ice(begc:endc) = spval
1569
- call hist_addfld1d (fname='EXCESS_ICE', units = '1', &
1570
- avgflag='A', long_name='Excess ground ice (0 to 1)', &
1571
- ptr_col=this%excess_ice, l2g_scale_type='veg') ! <- RPF: should this be natveg?
1572
-
1573
1573
this%frac_sno(begc:endc) = spval
1574
1574
call hist_addfld1d (fname='FSNO', units='1', &
1575
1575
avgflag='A', long_name='fraction of ground covered by snow', &
@@ -1641,7 +1641,6 @@ subroutine col_ws_init(this, begc, endc, h2osno_input, snow_depth_input, watsat_
1641
1641
this%frac_h2osfc_act(c) = 0._r8
1642
1642
this%h2orof(c) = 0._r8
1643
1643
this%frac_h2orof(c) = 0._r8
1644
- this%excess_ice(c) = 0.5_r8
1645
1644
1646
1645
if (lun_pp%urbpoi(l)) then
1647
1646
! From Bonan 1996 (LSM technical note)
@@ -1787,6 +1786,17 @@ subroutine col_ws_init(this, begc, endc, h2osno_input, snow_depth_input, watsat_
1787
1786
this%h2osoi_ice(c,j) = 0._r8
1788
1787
this%h2osoi_liq(c,j) = col_pp%dz(c,j)*denh2o*this%h2osoi_vol(c,j)
1789
1788
endif
1789
+ ! RPF - to do: a) apply to only polygonal ground
1790
+ ! b) pull in ALT information to get starting point right.
1791
+ ! for now, assuming no excess ice in top meter, 0.5 for 1-4 m,
1792
+ ! 0.2 below 4 m. Also: need to check signs!
1793
+ if (col_pp%z(c,j) > -1._r8) then
1794
+ this%excess_ice(c,j) = 0._r8
1795
+ else if (col_pp%z(c,j) > -4._r8 .and. col_pp%z(c,j) < -1._r8) then
1796
+ this%excess_ice(c,j) = 0.5_r8
1797
+ else
1798
+ this%excess_ice(c,j) = 0.2_r8
1799
+ end if
1790
1800
end do
1791
1801
1792
1802
this%h2osoi_liq_old(c,:) = this%h2osoi_liq(c,:)
@@ -1844,6 +1854,11 @@ subroutine col_ws_restart(this, bounds, ncid, flag, watsat_input)
1844
1854
long_name='ice lens', units='kg/m2', &
1845
1855
interpinic_flag='interp', readvar=readvar, data=this%h2osoi_ice)
1846
1856
1857
+ call restartvar(ncid=ncid, flag=flag, varname='EXCESS_ICE', xtype=ncd_double, &
1858
+ dim1name='column', dim2name='levgrnd', switchdim=.true., &
1859
+ long_name='excess ground ice (0 to 1)', units='1', &
1860
+ interpinic_flag='interp', readvar=readvar, data=this%excess_ice)
1861
+
1847
1862
call restartvar(ncid=ncid, flag=flag, varname='SOILP', xtype=ncd_double, &
1848
1863
dim1name='column', dim2name='levgrnd', switchdim=.true., &
1849
1864
long_name='soil pressure ', units='Pa', &
@@ -1907,11 +1922,6 @@ subroutine col_ws_restart(this, bounds, ncid, flag, watsat_input)
1907
1922
this%snow_persistence(:) = 0.0_r8
1908
1923
end if
1909
1924
1910
- call restartvar(ncid=ncid, flag=flag, varname='EXCESS_ICE', xtype=ncd_double, &
1911
- dim1name='column', &
1912
- long_name='excess ground ice (0 to 1)', units='1', &
1913
- interpinic_flag='interp', readvar=readvar, data=this%excess_ice)
1914
-
1915
1925
call restartvar(ncid=ncid, flag=flag, varname='frac_sno', xtype=ncd_double, &
1916
1926
dim1name='column', &
1917
1927
long_name='fraction of ground covered by snow (0 to 1)',units='1',&
0 commit comments