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

Advanced snow physics #360

Merged
merged 54 commits into from
Aug 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
c56f8e7
new snow tracer implementation (no physics)
eclare108213 Aug 28, 2020
c7e8897
snow redistribution testing options
eclare108213 Aug 28, 2020
ecda5e5
settings for 3 snow layers, the way Icepack wants them
eclare108213 Aug 28, 2020
35658ae
setenv correction
eclare108213 Aug 28, 2020
a84cb91
add rhosmin, snwlvlfac to namelist, change snwredist opetion from 30p…
eclare108213 Aug 29, 2020
f208786
add ice_snow module; compiles, no hooks from main code, module conver…
eclare108213 Sep 1, 2020
2f01d2d
rename ice_snow.F90, add icepack_step_snow, call drain_snow, move adj…
eclare108213 Sep 5, 2020
ef8e512
updating from Consortium Icepack repository master
eclare108213 Feb 18, 2021
ee5d2c0
bug fix: dsnow was not being aggregated from category values
eclare108213 Feb 19, 2021
a785e10
add calls to new snow physics routines
eclare108213 Feb 19, 2021
62202d1
call update_state, make optional arguments
eclare108213 Feb 19, 2021
d2d1038
snow interactions with thermo (except dEdd)
eclare108213 Feb 21, 2021
8fc99ae
snow interactions in dEdd
eclare108213 Feb 22, 2021
19c44f4
add meltsliq to ponds, clean up
eclare108213 Feb 27, 2021
ffef534
adding snwgrain namelist flag
eclare108213 Feb 27, 2021
bc9b29d
Bug fixes from https://github.com/MPAS-Dev/MPAS-Model/pull/314
eclare108213 Mar 15, 2021
a046165
constrain calculations based on configuration options, add diagnostic…
eclare108213 Mar 18, 2021
cc5fd0f
make dsnow optional
eclare108213 Mar 18, 2021
90529e2
Merge branch 'master' of https://github.com/CICE-Consortium/icepack i…
eclare108213 Apr 12, 2021
36e5a65
snow aging table for dry metamorphism
eclare108213 Apr 14, 2021
91d3930
env for snwgrain test
eclare108213 Apr 14, 2021
a2fda56
snow documentation, first draft
eclare108213 Apr 15, 2021
17d3942
snow case settings
eclare108213 Apr 15, 2021
014e0fc
fix step_therm1 interface and some documentation errors
eclare108213 Apr 16, 2021
1c7b6d0
documentation corrections
eclare108213 Apr 16, 2021
177940c
complete step_therm1 interface fix; bug fix in bgc diagnostics
eclare108213 Apr 16, 2021
0faa997
metamorphism updates to doc with notes for things needing to be check…
eclare108213 Apr 16, 2021
61b79b5
remove unused variable
eclare108213 Apr 16, 2021
8366f56
add snow tests to base_suite
eclare108213 Apr 16, 2021
3c947c9
initialize snow tracer indices when unused; update documentation
eclare108213 May 6, 2021
4ab4107
TRSNOW 0 when not using advanced snow physics
eclare108213 May 7, 2021
1132eec
Merge branch 'master' of https://github.com/Arctic-interface/icepack …
eclare108213 May 28, 2021
0be87ba
Merge branch 'master' of https://github.com/Arctic-InteRFACE/Icepack …
eclare108213 May 28, 2021
08f1261
Merge branch 'isnow1' of https://github.com/Arctic-InteRFACE/Icepack …
eclare108213 May 28, 2021
0bf5bae
fix snow restarts, clean up unused flags
eclare108213 May 28, 2021
a88f07e
updating snow documentation
eclare108213 May 28, 2021
94bf11b
adding snow namelist info to science guide
eclare108213 May 28, 2021
846058d
update icepack to support snowtable better
apcraig Jun 10, 2021
4a42672
Merge pull request #1 from apcraig/isnow1tc2
eclare108213 Jun 11, 2021
ce01853
adjust parameter values, test options
eclare108213 Jun 18, 2021
10f07f6
send rsnw to dEdd; limit rsnw below; fix snow SSL for z tracers
eclare108213 Jun 29, 2021
82eddc3
updating snow options in icepack for consistency with cice
eclare108213 Jun 29, 2021
4c4f77f
reformulate ice-liquid tracer conversions in snow; limit use of rsnow…
eclare108213 Jul 2, 2021
f9ac9d0
another approach for ice/liquid tracer conversions in snow
eclare108213 Jul 8, 2021
fe2192b
enforce mass conservation of snow ice and liquid tracers, to maintain…
eclare108213 Jul 28, 2021
9e1374f
create temporary array for rsnow in shortwave calls to avoid array-ou…
eclare108213 Jul 29, 2021
67fbfe1
reset default/initial tracer values when snow disappears; some cleanup
eclare108213 Jul 29, 2021
97c0c31
Bug fix for bulk redistribution precipitation factor. Commented out …
eclare108213 Jul 30, 2021
0f8407b
Another bug fix for bulk redistribution precipitation factor - averag…
eclare108213 Jul 30, 2021
c342580
Merge branch 'master' of https://github.com/cice-consortium/icepack i…
eclare108213 Jul 30, 2021
42fd34b
cleanup
eclare108213 Aug 4, 2021
065425f
remove rnsw_dEdd array, load tracer instead; use rsnw_fall instead of…
eclare108213 Aug 5, 2021
5a2e604
Removed variables that were only for history output, instead using th…
eclare108213 Aug 6, 2021
755b553
initialize density tracer; fix history output for CICE
eclare108213 Aug 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions columnphysics/icepack_algae.F90
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,7 @@ subroutine zbio (dt, nblyr, &
if (icepack_warnings_aborted(subname)) return

call merge_bgc_fluxes (dt, nblyr, &
nslyr, &
bio_index, n_algae, &
nbtrcr, aicen, &
vicen, vsnon, &
Expand Down
9 changes: 8 additions & 1 deletion columnphysics/icepack_flux.F90
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ subroutine merge_fluxes (aicen, &
fswthru_idr, fswthru_idf,&
melttn, meltsn, meltbn, congeln, snoicen, &
meltt, melts, &
meltb, &
meltb, dsnow, dsnown,&
congel, snoice, &
meltsliq, meltsliqn, &
Uref, Urefn, &
Qref_iso, Qrefn_iso, &
fiso_ocn, fiso_ocnn, &
Expand Down Expand Up @@ -95,6 +96,8 @@ subroutine merge_fluxes (aicen, &
melttn , & ! top ice melt (m)
meltbn , & ! bottom ice melt (m)
meltsn , & ! snow melt (m)
meltsliqn,& ! mass of snow melt (kg/m^2)
dsnown , & ! change in snow depth (m)
congeln , & ! congelation ice growth (m)
snoicen ! snow-ice growth (m)

Expand Down Expand Up @@ -125,6 +128,8 @@ subroutine merge_fluxes (aicen, &
meltt , & ! top ice melt (m)
meltb , & ! bottom ice melt (m)
melts , & ! snow melt (m)
meltsliq, & ! mass of snow melt (kg/m^2)
dsnow , & ! change in snow depth (m)
congel , & ! congelation ice growth (m)
snoice ! snow-ice growth (m)

Expand Down Expand Up @@ -212,6 +217,8 @@ subroutine merge_fluxes (aicen, &
meltt = meltt + melttn * aicen
meltb = meltb + meltbn * aicen
melts = melts + meltsn * aicen
meltsliq = meltsliq + meltsliqn * aicen
dsnow = dsnow + dsnown * aicen
congel = congel + congeln * aicen
snoice = snoice + snoicen * aicen

Expand Down
4 changes: 4 additions & 0 deletions columnphysics/icepack_intfc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ module icepack_intfc
use icepack_wavefracspec, only: icepack_init_wave
use icepack_wavefracspec, only: icepack_step_wavefracture

use icepack_snow, only: icepack_step_snow

use icepack_shortwave, only: icepack_prep_radiation
use icepack_shortwave, only: icepack_step_radiation

Expand Down Expand Up @@ -114,6 +116,8 @@ module icepack_intfc
use icepack_mushy_physics , only: icepack_mushy_liquid_fraction
use icepack_mushy_physics , only: icepack_mushy_temperature_mush

use icepack_snow, only: icepack_init_snow

use icepack_warnings, only: icepack_warnings_clear
use icepack_warnings, only: icepack_warnings_print
use icepack_warnings, only: icepack_warnings_flush
Expand Down
35 changes: 19 additions & 16 deletions columnphysics/icepack_itd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,10 @@ module icepack_itd
use icepack_kinds
use icepack_parameters, only: c0, c1, c2, c3, c15, c25, c100, p1, p01, p001, p5, puny
use icepack_parameters, only: Lfresh, rhos, ice_ref_salinity, hs_min, cp_ice, Tocnfrz, rhoi
use icepack_parameters, only: rhosi, sk_l, hs_ssl, min_salin
use icepack_parameters, only: rhosi, sk_l, hs_ssl, min_salin, rsnw_fall
use icepack_tracers, only: nt_Tsfc, nt_qice, nt_qsno, nt_aero, nt_isosno, nt_isoice
use icepack_tracers, only: nt_apnd, nt_hpnd, nt_fbri, tr_brine, nt_bgc_S, bio_index
use icepack_tracers, only: n_iso
use icepack_tracers, only: tr_iso
use icepack_tracers, only: n_iso, tr_iso, tr_snow, nt_smice, nt_rsnw, nt_rhos
use icepack_tracers, only: icepack_compute_tracers
use icepack_parameters, only: solve_zsal, skl_bgc, z_tracers
use icepack_parameters, only: kcatbound, kitd
Expand Down Expand Up @@ -1230,11 +1229,15 @@ subroutine zap_small_areas (dt, ntrcr, &

if (ntrcr >= 2) then
do it = 2, ntrcr
if (tr_brine .and. it == nt_fbri) then
trcrn(it,n) = c1
else
trcrn(it,n) = c0
endif
trcrn(it,n) = c0
enddo
endif
if (tr_brine) trcrn(nt_fbri,n) = c1
if (tr_snow) then
do k = 1, nslyr
trcrn(nt_rhos +k-1,n) = rhos
trcrn(nt_smice+k-1,n) = rhos
trcrn(nt_rsnw +k-1,n) = rsnw_fall
enddo
endif
first_ice(n) = .true.
Expand Down Expand Up @@ -1424,14 +1427,14 @@ subroutine zap_snow(dt, nslyr, &
endif ! tr_iso

if (z_tracers) then
dvssl = min(p5*vsnon, hs_ssl*aicen) !snow surface layer
dvint = vsnon- dvssl !snow interior

do it = 1, nbtrcr
xtmp = (trcrn(bio_index(it)+nblyr+1)*dvssl + &
trcrn(bio_index(it)+nblyr+2)*dvint)/dt
dflux_bio(it) = dflux_bio(it) + xtmp
enddo ! it
dvssl = min(p5*vsnon/real(nslyr,kind=dbl_kind), hs_ssl*aicen) ! snow surface layer
dvint = vsnon - dvssl ! snow interior

do it = 1, nbtrcr
xtmp = (trcrn(bio_index(it)+nblyr+1)*dvssl + &
trcrn(bio_index(it)+nblyr+2)*dvint)/dt
dflux_bio(it) = dflux_bio(it) + xtmp
enddo ! it

endif ! z_tracers

Expand Down
31 changes: 19 additions & 12 deletions columnphysics/icepack_meltpond_cesm.F90
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ module icepack_meltpond_cesm

use icepack_kinds
use icepack_parameters, only: c0, c1, c2, p01, puny
use icepack_parameters, only: rhofresh, rhoi, rhos, Timelt
use icepack_parameters, only: rhofresh, rhoi, rhos, Timelt, pndaspect, use_smliq_pnd
use icepack_warnings, only: warnstr, icepack_warnings_add
use icepack_warnings, only: icepack_warnings_setabort, icepack_warnings_aborted

Expand All @@ -32,19 +32,19 @@ module icepack_meltpond_cesm
!=======================================================================

subroutine compute_ponds_cesm(dt, hi_min, &
pndaspect, &
rfrac, meltt, &
melts, frain, &
aicen, vicen, &
Tsfcn, apnd, hpnd)
aicen, vicen, &
Tsfcn, apnd, hpnd, &
meltsliqn)

real (kind=dbl_kind), intent(in) :: &
dt, & ! time step (s)
hi_min, & ! minimum ice thickness allowed for thermo (m)
pndaspect ! ratio of pond depth to pond fraction
hi_min ! minimum ice thickness allowed for thermo (m)

real (kind=dbl_kind), intent(in) :: &
rfrac, & ! water fraction retained for melt ponds
meltsliqn, & ! liquid input from snow liquid tracer
rfrac, & ! water fraction retained for melt ponds
meltt, &
melts, &
frain, &
Expand Down Expand Up @@ -104,11 +104,18 @@ subroutine compute_ponds_cesm(dt, hi_min, &
!-----------------------------------------------------------
! Update pond volume
!-----------------------------------------------------------
volpn = volpn &
+ rfrac/rhofresh*(meltt*rhoi &
+ melts*rhos &
+ frain* dt)&
* aicen
if (use_smliq_pnd) then
volpn = volpn &
+ rfrac/rhofresh*(meltt*rhoi &
+ meltsliqn) &
* aicen
else
volpn = volpn &
+ rfrac/rhofresh*(meltt*rhoi &
+ melts*rhos &
+ frain* dt)&
* aicen
endif

!-----------------------------------------------------------
! Shrink pond volume under freezing conditions
Expand Down
24 changes: 15 additions & 9 deletions columnphysics/icepack_meltpond_lvl.F90
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module icepack_meltpond_lvl
use icepack_kinds
use icepack_parameters, only: c0, c1, c2, c10, p01, p5, puny
use icepack_parameters, only: viscosity_dyn, rhoi, rhos, rhow, Timelt, Tffresh, Lfresh
use icepack_parameters, only: gravit, depressT, rhofresh, kice
use icepack_parameters, only: gravit, depressT, rhofresh, kice, pndaspect, use_smliq_pnd
use icepack_warnings, only: warnstr, icepack_warnings_add
use icepack_warnings, only: icepack_warnings_setabort, icepack_warnings_aborted

Expand All @@ -35,14 +35,15 @@ module icepack_meltpond_lvl
subroutine compute_ponds_lvl(dt, nilyr, &
ktherm, &
hi_min, dpscale, &
frzpnd, pndaspect, &
frzpnd, &
rfrac, meltt, melts, &
frain, Tair, fsurfn,&
dhs, ffrac, &
aicen, vicen, vsnon, &
qicen, sicen, &
Tsfcn, alvl, &
apnd, hpnd, ipnd)
apnd, hpnd, ipnd, &
meltsliqn)

integer (kind=int_kind), intent(in) :: &
nilyr, & ! number of ice layers
Expand All @@ -51,8 +52,7 @@ subroutine compute_ponds_lvl(dt, nilyr, &
real (kind=dbl_kind), intent(in) :: &
dt, & ! time step (s)
hi_min, & ! minimum ice thickness allowed for thermo (m)
dpscale, & ! alter e-folding time scale for flushing
pndaspect ! ratio of pond depth to pond fraction
dpscale ! alter e-folding time scale for flushing

character (len=char_len), intent(in) :: &
frzpnd ! pond refreezing parameterization
Expand All @@ -69,7 +69,8 @@ subroutine compute_ponds_lvl(dt, nilyr, &
fsurfn,& ! atm-ice surface heat flux (W/m2)
aicen, & ! ice area fraction
vicen, & ! ice volume (m)
vsnon ! snow volume (m)
vsnon, & ! snow volume (m)
meltsliqn ! liquid contribution to meltponds in dt (kg/m^2)

real (kind=dbl_kind), &
intent(inout) :: &
Expand Down Expand Up @@ -154,9 +155,14 @@ subroutine compute_ponds_lvl(dt, nilyr, &
! update pond volume
!-----------------------------------------------------------
! add melt water
dvn = rfrac/rhofresh*(meltt*rhoi &
+ melts*rhos &
+ frain* dt)*aicen
if (use_smliq_pnd) then
dvn = rfrac/rhofresh*(meltt*rhoi &
+ meltsliqn)*aicen
else
dvn = rfrac/rhofresh*(meltt*rhoi &
+ melts*rhos &
+ frain* dt)*aicen
endif

! shrink pond volume under freezing conditions
if (trim(frzpnd) == 'cesm') then
Expand Down
Loading