From aa68256786dcdb33b61b584b30db5009d0457d53 Mon Sep 17 00:00:00 2001 From: apcraig Date: Fri, 20 Nov 2020 19:42:27 -0700 Subject: [PATCH 1/6] Moved floediam and hfrazilmin to icepack_parameters Added floediam and hfrazilmin to the thermo namelist in the icepack driver Settable via a call to icepack_parameters Defaults left unchanged Added variables to icepack_in --- columnphysics/icepack_parameters.F90 | 17 ++++++++++++++--- columnphysics/icepack_therm_itd.F90 | 3 +-- columnphysics/icepack_therm_shared.F90 | 3 --- columnphysics/icepack_therm_vertical.F90 | 3 +-- configuration/driver/icedrv_init.F90 | 9 +++++++-- configuration/scripts/icepack_in | 2 ++ doc/source/user_guide/interfaces.include | 8 ++++++-- doc/source/user_guide/ug_case_settings.rst | 2 ++ 8 files changed, 33 insertions(+), 14 deletions(-) diff --git a/columnphysics/icepack_parameters.F90 b/columnphysics/icepack_parameters.F90 index b3c0f1347..f6cd3aa62 100644 --- a/columnphysics/icepack_parameters.F90 +++ b/columnphysics/icepack_parameters.F90 @@ -96,6 +96,8 @@ module icepack_parameters !----------------------------------------------------------------------- real (kind=dbl_kind), public :: & + floediam = 300.0_dbl_kind ,&! effective floe diameter for lateral melt (m) + hfrazilmin = 0.05_dbl_kind ,&! min thickness of new frazil ice (m) cp_ice = 2106._dbl_kind ,&! specific heat of fresh ice (J/kg/K) cp_ocn = 4218._dbl_kind ,&! specific heat of ocn (J/kg/K) ! freshwater value needed for enthalpy @@ -132,7 +134,6 @@ module icepack_parameters phi_c_slow_mode = 0.05_dbl_kind,&! critical liquid fraction porosity cutoff phi_i_mushy = 0.85_dbl_kind ! liquid fraction of congelation ice - integer (kind=int_kind), public :: & ktherm = 1 ! type of thermodynamics ! 0 = 0-layer approximation @@ -379,7 +380,7 @@ module icepack_parameters subroutine icepack_init_parameters( & puny_in, bignum_in, pi_in, secday_in, & rhos_in, rhoi_in, rhow_in, cp_air_in, emissivity_in, & - cp_ice_in, cp_ocn_in, & + cp_ice_in, cp_ocn_in, hfrazilmin_in, floediam_in, & depressT_in, dragio_in, albocn_in, gravit_in, viscosity_dyn_in, & Tocnfrz_in, rhofresh_in, zvir_in, vonkar_in, cp_wv_in, & stefan_boltzmann_in, ice_ref_salinity_in, & @@ -441,6 +442,8 @@ subroutine icepack_init_parameters( & !----------------------------------------------------------------------- real (kind=dbl_kind), intent(in), optional :: & + floediam_in, & ! effective floe diameter for lateral melt (m) + hfrazilmin_in, & ! min thickness of new frazil ice (m) cp_ice_in, & ! specific heat of fresh ice (J/kg/K) cp_ocn_in, & ! specific heat of ocn (J/kg/K) depressT_in, & ! Tf:brine salinity ratio (C/ppt) @@ -716,6 +719,8 @@ subroutine icepack_init_parameters( & if (present(rhow_in) ) rhow = rhow_in if (present(cp_air_in) ) cp_air = cp_air_in if (present(emissivity_in) ) emissivity = emissivity_in + if (present(floediam_in) ) floediam = floediam_in + if (present(hfrazilmin_in) ) hfrazilmin = hfrazilmin_in if (present(cp_ice_in) ) cp_ice = cp_ice_in if (present(cp_ocn_in) ) cp_ocn = cp_ocn_in if (present(depressT_in) ) depressT = depressT_in @@ -877,7 +882,7 @@ subroutine icepack_query_parameters( & p2_out, p4_out, p5_out, p6_out, p05_out, p15_out, p25_out, p75_out, & p333_out, p666_out, spval_const_out, pih_out, piq_out, pi2_out, & rhos_out, rhoi_out, rhow_out, cp_air_out, emissivity_out, & - cp_ice_out, cp_ocn_out, & + cp_ice_out, cp_ocn_out, hfrazilmin_out, floediam_out, & depressT_out, dragio_out, albocn_out, gravit_out, viscosity_dyn_out, & Tocnfrz_out, rhofresh_out, zvir_out, vonkar_out, cp_wv_out, & stefan_boltzmann_out, ice_ref_salinity_out, & @@ -948,6 +953,8 @@ subroutine icepack_query_parameters( & !----------------------------------------------------------------------- real (kind=dbl_kind), intent(out), optional :: & + floediam_out, & ! effective floe diameter for lateral melt (m) + hfrazilmin_out, & ! min thickness of new frazil ice (m) cp_ice_out, & ! specific heat of fresh ice (J/kg/K) cp_ocn_out, & ! specific heat of ocn (J/kg/K) depressT_out, & ! Tf:brine salinity ratio (C/ppt) @@ -1264,6 +1271,8 @@ subroutine icepack_query_parameters( & if (present(rhow_out) ) rhow_out = rhow if (present(cp_air_out) ) cp_air_out = cp_air if (present(emissivity_out) ) emissivity_out = emissivity + if (present(floediam_out) ) floediam_out = floediam + if (present(hfrazilmin_out) ) hfrazilmin_out = hfrazilmin if (present(cp_ice_out) ) cp_ice_out = cp_ice if (present(cp_ocn_out) ) cp_ocn_out = cp_ocn if (present(depressT_out) ) depressT_out = depressT @@ -1435,6 +1444,8 @@ subroutine icepack_write_parameters(iounit) write(iounit,*) " rhow = ",rhow write(iounit,*) " cp_air = ",cp_air write(iounit,*) " emissivity = ",emissivity + write(iounit,*) " floediam = ",floediam + write(iounit,*) " hfrazilmin = ",hfrazilmin write(iounit,*) " cp_ice = ",cp_ice write(iounit,*) " cp_ocn = ",cp_ocn write(iounit,*) " depressT = ",depressT diff --git a/columnphysics/icepack_therm_itd.F90 b/columnphysics/icepack_therm_itd.F90 index 4f773a14e..ba2bc8134 100644 --- a/columnphysics/icepack_therm_itd.F90 +++ b/columnphysics/icepack_therm_itd.F90 @@ -26,7 +26,7 @@ module icepack_therm_itd use icepack_parameters, only: phi_init, dsin0_frazil, hs_ssl, salt_loss use icepack_parameters, only: rhosi, conserv_check use icepack_parameters, only: kitd, ktherm, heat_capacity - use icepack_parameters, only: z_tracers, solve_zsal + use icepack_parameters, only: z_tracers, solve_zsal, hfrazilmin use icepack_tracers, only: ntrcr, nbtrcr use icepack_tracers, only: nt_qice, nt_qsno, nt_fbri, nt_sice @@ -47,7 +47,6 @@ module icepack_therm_itd use icepack_itd, only: column_sum, column_conservation_check use icepack_isotope, only: isoice_alpha, isotope_frac_method use icepack_mushy_physics, only: liquidus_temperature_mush, enthalpy_mush - use icepack_therm_shared, only: hfrazilmin use icepack_therm_shared, only: hi_min use icepack_zbgc, only: add_new_ice_bgc use icepack_zbgc, only: lateral_melt_bgc diff --git a/columnphysics/icepack_therm_shared.F90 b/columnphysics/icepack_therm_shared.F90 index 1448d0896..553328cac 100644 --- a/columnphysics/icepack_therm_shared.F90 +++ b/columnphysics/icepack_therm_shared.F90 @@ -47,9 +47,6 @@ module icepack_therm_shared logical (kind=log_kind), public :: & l_brine ! if true, treat brine pocket effects - real (kind=dbl_kind), parameter, public :: & - hfrazilmin = 0.05_dbl_kind ! min thickness of new frazil ice (m) - real (kind=dbl_kind), public :: & hi_min ! minimum ice thickness allowed (m) diff --git a/columnphysics/icepack_therm_vertical.F90 b/columnphysics/icepack_therm_vertical.F90 index 92a035037..31c671b5e 100644 --- a/columnphysics/icepack_therm_vertical.F90 +++ b/columnphysics/icepack_therm_vertical.F90 @@ -26,7 +26,7 @@ module icepack_therm_vertical use icepack_parameters, only: ktherm, heat_capacity, calc_Tsfc use icepack_parameters, only: ustar_min, fbot_xfer_type, formdrag, calc_strair use icepack_parameters, only: rfracmin, rfracmax, pndaspect, dpscale, frzpnd - use icepack_parameters, only: phi_i_mushy + use icepack_parameters, only: phi_i_mushy, floediam use icepack_tracers, only: tr_iage, tr_FY, tr_aero, tr_pond, tr_fsd, tr_iso use icepack_tracers, only: tr_pond_cesm, tr_pond_lvl, tr_pond_topo @@ -556,7 +556,6 @@ subroutine frzmlt_bottom_lateral (dt, ncat, & ! Parameters for lateral melting real (kind=dbl_kind), parameter :: & - floediam = 300.0_dbl_kind, & ! effective floe diameter (m) floeshape = 0.66_dbl_kind , & ! constant from Steele (unitless) m1 = 1.6e-6_dbl_kind , & ! constant from Maykut & Perovich ! (m/s/deg^(-m2)) diff --git a/configuration/driver/icedrv_init.F90 b/configuration/driver/icedrv_init.F90 index 3fecc57cc..15a3614e2 100644 --- a/configuration/driver/icedrv_init.F90 +++ b/configuration/driver/icedrv_init.F90 @@ -88,7 +88,7 @@ subroutine input_data ahmax, R_ice, R_pnd, R_snw, dT_mlt, rsnw_mlt, ksno, & mu_rdg, hs0, dpscale, rfracmin, rfracmax, pndaspect, hs1, hp1, & a_rapid_mode, Rac_rapid_mode, aspect_rapid_mode, dSdt_slow_mode, & - phi_c_slow_mode, phi_i_mushy, kalg, emissivity + phi_c_slow_mode, phi_i_mushy, kalg, emissivity, floediam, hfrazilmin integer (kind=int_kind) :: ktherm, kstrength, krdg_partic, krdg_redist, & natmiter, kitd, kcatbound @@ -135,7 +135,8 @@ subroutine input_data kitd, ktherm, ksno, conduct, & a_rapid_mode, Rac_rapid_mode, aspect_rapid_mode, & dSdt_slow_mode, phi_c_slow_mode, phi_i_mushy, & - sw_redist, sw_frac, sw_dtemp + sw_redist, sw_frac, sw_dtemp, & + floediam, hfrazilmin namelist /dynamics_nml/ & kstrength, krdg_partic, krdg_redist, mu_rdg, & @@ -198,6 +199,7 @@ subroutine input_data rfracmin_out=rfracmin, rfracmax_out=rfracmax, & pndaspect_out=pndaspect, hs1_out=hs1, hp1_out=hp1, & ktherm_out=ktherm, calc_Tsfc_out=calc_Tsfc, & + floediam_out=floediam, hfrazilmin_out=hfrazilmin, & update_ocn_f_out = update_ocn_f, & conduct_out=conduct, a_rapid_mode_out=a_rapid_mode, & Rac_rapid_mode_out=Rac_rapid_mode, & @@ -576,6 +578,8 @@ subroutine input_data write(nu_diag,1005) ' atmiter_conv = ', atmiter_conv write(nu_diag,1010) ' calc_strair = ', calc_strair write(nu_diag,1010) ' calc_Tsfc = ', calc_Tsfc + write(nu_diag,1005) ' floediam = ', floediam + write(nu_diag,1005) ' hfrazilmin = ', hfrazilmin write(nu_diag,*) ' atm_data_type = ', & trim(atm_data_type) @@ -765,6 +769,7 @@ subroutine input_data dpscale_in=dpscale, frzpnd_in=frzpnd, & rfracmin_in=rfracmin, rfracmax_in=rfracmax, & pndaspect_in=pndaspect, hs1_in=hs1, hp1_in=hp1, & + floediam_in=floediam, hfrazilmin_in=hfrazilmin, & ktherm_in=ktherm, calc_Tsfc_in=calc_Tsfc, & conduct_in=conduct, a_rapid_mode_in=a_rapid_mode, & Rac_rapid_mode_in=Rac_rapid_mode, & diff --git a/configuration/scripts/icepack_in b/configuration/scripts/icepack_in index 553ee26e4..744391441 100644 --- a/configuration/scripts/icepack_in +++ b/configuration/scripts/icepack_in @@ -47,6 +47,8 @@ sw_redist = .false. sw_frac = 0.9d0 sw_dtemp = 0.02d0 + floediam = 300.0d0 + hfrazilmin = 0.05d0 / &shortwave_nml diff --git a/doc/source/user_guide/interfaces.include b/doc/source/user_guide/interfaces.include index 9b4b7c570..3348ce10e 100644 --- a/doc/source/user_guide/interfaces.include +++ b/doc/source/user_guide/interfaces.include @@ -729,7 +729,7 @@ icepack_init_parameters subroutine icepack_init_parameters( & puny_in, bignum_in, pi_in, secday_in, & rhos_in, rhoi_in, rhow_in, cp_air_in, emissivity_in, & - cp_ice_in, cp_ocn_in, & + cp_ice_in, cp_ocn_in, hfrazilmin_in, floediam_in, & depressT_in, dragio_in, albocn_in, gravit_in, viscosity_dyn_in, & Tocnfrz_in, rhofresh_in, zvir_in, vonkar_in, cp_wv_in, & stefan_boltzmann_in, ice_ref_salinity_in, & @@ -791,6 +791,8 @@ icepack_init_parameters !----------------------------------------------------------------------- real (kind=dbl_kind), intent(in), optional :: & + floediam_in, & ! effective floe diameter (m) + hfrazilmin_in, & ! min thickness of new frazil ice (m) cp_ice_in, & ! specific heat of fresh ice (J/kg/K) cp_ocn_in, & ! specific heat of ocn (J/kg/K) depressT_in, & ! Tf:brine salinity ratio (C/ppt) @@ -1075,7 +1077,7 @@ icepack_query_parameters p2_out, p4_out, p5_out, p6_out, p05_out, p15_out, p25_out, p75_out, & p333_out, p666_out, spval_const_out, pih_out, piq_out, pi2_out, & rhos_out, rhoi_out, rhow_out, cp_air_out, emissivity_out, & - cp_ice_out, cp_ocn_out, & + cp_ice_out, cp_ocn_out, hfrazilmin_out, floediam_out, & depressT_out, dragio_out, albocn_out, gravit_out, viscosity_dyn_out, & Tocnfrz_out, rhofresh_out, zvir_out, vonkar_out, cp_wv_out, & stefan_boltzmann_out, ice_ref_salinity_out, & @@ -1146,6 +1148,8 @@ icepack_query_parameters !----------------------------------------------------------------------- real (kind=dbl_kind), intent(out), optional :: & + floediam_out, & ! effective floe diameter (m) + hfrazilmin_out, & ! min thickness of new frazil ice (m) cp_ice_out, & ! specific heat of fresh ice (J/kg/K) cp_ocn_out, & ! specific heat of ocn (J/kg/K) depressT_out, & ! Tf:brine salinity ratio (C/ppt) diff --git a/doc/source/user_guide/ug_case_settings.rst b/doc/source/user_guide/ug_case_settings.rst index f30728623..3b8e40e59 100755 --- a/doc/source/user_guide/ug_case_settings.rst +++ b/doc/source/user_guide/ug_case_settings.rst @@ -199,6 +199,8 @@ thermo_nml "``conduct``", "``bubbly``", "conductivity scheme :cite:`Pringle07`", "``bubbly``" "", "``MU71``", "conductivity :cite:`Maykut71`", "" "``dSdt_slow_mode``", "real", "slow drainage strength parameter m/s/K", "-1.5e-7" + "``floediam``", "real", "effective floe diameter for lateral melt in m", "300.0" + "``hfrazilmin``", "real", "min thickness of new frazil ice in m", "0.05" "``kitd``", "``0``", "delta function ITD approximation", "1" "", "``1``", "linear remapping ITD approximation", "" "``ksno``", "real", "snow thermal conductivity", "0.3" From bc252dc0652954efa03d90438a9edd71c16efeb2 Mon Sep 17 00:00:00 2001 From: apcraig Date: Sat, 21 Nov 2020 11:45:32 -0700 Subject: [PATCH 2/6] fix multiple declaration of floeshape in icepack --- columnphysics/icepack_parameters.F90 | 4 +++- columnphysics/icepack_therm_vertical.F90 | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/columnphysics/icepack_parameters.F90 b/columnphysics/icepack_parameters.F90 index f6cd3aa62..fb1b9eb7e 100644 --- a/columnphysics/icepack_parameters.F90 +++ b/columnphysics/icepack_parameters.F90 @@ -96,7 +96,6 @@ module icepack_parameters !----------------------------------------------------------------------- real (kind=dbl_kind), public :: & - floediam = 300.0_dbl_kind ,&! effective floe diameter for lateral melt (m) hfrazilmin = 0.05_dbl_kind ,&! min thickness of new frazil ice (m) cp_ice = 2106._dbl_kind ,&! specific heat of fresh ice (J/kg/K) cp_ocn = 4218._dbl_kind ,&! specific heat of ocn (J/kg/K) @@ -281,6 +280,9 @@ module icepack_parameters real (kind=dbl_kind), public :: & floeshape = 0.666_dbl_kind ! constant from Steele (unitless) + real (kind=dbl_kind), public :: & + floediam = 300.0_dbl_kind ,&! effective floe diameter for lateral melt (m) + logical (kind=log_kind), public :: & wave_spec = .false. ! if true, use wave forcing diff --git a/columnphysics/icepack_therm_vertical.F90 b/columnphysics/icepack_therm_vertical.F90 index 31c671b5e..74cc7cdc2 100644 --- a/columnphysics/icepack_therm_vertical.F90 +++ b/columnphysics/icepack_therm_vertical.F90 @@ -26,7 +26,7 @@ module icepack_therm_vertical use icepack_parameters, only: ktherm, heat_capacity, calc_Tsfc use icepack_parameters, only: ustar_min, fbot_xfer_type, formdrag, calc_strair use icepack_parameters, only: rfracmin, rfracmax, pndaspect, dpscale, frzpnd - use icepack_parameters, only: phi_i_mushy, floediam + use icepack_parameters, only: phi_i_mushy, floeshape, floediam use icepack_tracers, only: tr_iage, tr_FY, tr_aero, tr_pond, tr_fsd, tr_iso use icepack_tracers, only: tr_pond_cesm, tr_pond_lvl, tr_pond_topo @@ -556,7 +556,6 @@ subroutine frzmlt_bottom_lateral (dt, ncat, & ! Parameters for lateral melting real (kind=dbl_kind), parameter :: & - floeshape = 0.66_dbl_kind , & ! constant from Steele (unitless) m1 = 1.6e-6_dbl_kind , & ! constant from Maykut & Perovich ! (m/s/deg^(-m2)) m2 = 1.36_dbl_kind ! constant from Maykut & Perovich From f8016240c35ee07176918a8ca9debff4229164ba Mon Sep 17 00:00:00 2001 From: apcraig Date: Sun, 22 Nov 2020 13:07:14 -0700 Subject: [PATCH 3/6] update icepack_parameters.F90 error --- columnphysics/icepack_parameters.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/columnphysics/icepack_parameters.F90 b/columnphysics/icepack_parameters.F90 index fb1b9eb7e..c251a5b2e 100644 --- a/columnphysics/icepack_parameters.F90 +++ b/columnphysics/icepack_parameters.F90 @@ -281,7 +281,7 @@ module icepack_parameters floeshape = 0.666_dbl_kind ! constant from Steele (unitless) real (kind=dbl_kind), public :: & - floediam = 300.0_dbl_kind ,&! effective floe diameter for lateral melt (m) + floediam = 300.0_dbl_kind ! effective floe diameter for lateral melt (m) logical (kind=log_kind), public :: & wave_spec = .false. ! if true, use wave forcing From d94b1d60f7e53c42591da3aa73254133083a96d5 Mon Sep 17 00:00:00 2001 From: apcraig Date: Mon, 23 Nov 2020 13:00:24 -0700 Subject: [PATCH 4/6] update floeshape value to 0.66 --- columnphysics/icepack_parameters.F90 | 2 +- doc/source/user_guide/interfaces.include | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/columnphysics/icepack_parameters.F90 b/columnphysics/icepack_parameters.F90 index c251a5b2e..795ca9ea0 100644 --- a/columnphysics/icepack_parameters.F90 +++ b/columnphysics/icepack_parameters.F90 @@ -278,7 +278,7 @@ module icepack_parameters nfreq = 25 ! number of frequencies real (kind=dbl_kind), public :: & - floeshape = 0.666_dbl_kind ! constant from Steele (unitless) + floeshape = 0.66_dbl_kind ! constant from Steele (unitless) real (kind=dbl_kind), public :: & floediam = 300.0_dbl_kind ! effective floe diameter for lateral melt (m) diff --git a/doc/source/user_guide/interfaces.include b/doc/source/user_guide/interfaces.include index 3348ce10e..e55e989cf 100644 --- a/doc/source/user_guide/interfaces.include +++ b/doc/source/user_guide/interfaces.include @@ -791,7 +791,7 @@ icepack_init_parameters !----------------------------------------------------------------------- real (kind=dbl_kind), intent(in), optional :: & - floediam_in, & ! effective floe diameter (m) + floediam_in, & ! effective floe diameter for lateral melt (m) hfrazilmin_in, & ! min thickness of new frazil ice (m) cp_ice_in, & ! specific heat of fresh ice (J/kg/K) cp_ocn_in, & ! specific heat of ocn (J/kg/K) @@ -1148,7 +1148,7 @@ icepack_query_parameters !----------------------------------------------------------------------- real (kind=dbl_kind), intent(out), optional :: & - floediam_out, & ! effective floe diameter (m) + floediam_out, & ! effective floe diameter for lateral melt (m) hfrazilmin_out, & ! min thickness of new frazil ice (m) cp_ice_out, & ! specific heat of fresh ice (J/kg/K) cp_ocn_out, & ! specific heat of ocn (J/kg/K) From c6aeb0bd958aa459b60da611986b1abc531a062e Mon Sep 17 00:00:00 2001 From: apcraig Date: Mon, 23 Nov 2020 17:22:49 -0700 Subject: [PATCH 5/6] add Steele92 reference --- doc/source/master_list.bib | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/source/master_list.bib b/doc/source/master_list.bib index 8f7cbed0a..dd323b04e 100644 --- a/doc/source/master_list.bib +++ b/doc/source/master_list.bib @@ -742,6 +742,17 @@ @article{danabasoglu20 year = {2020} } +@article{Steele92, + author = "M. Steele", + journal = JGR, + number = {C11}, + pages = {17729}, + title = {{Sea ice melting and floe geometry in a simple ice-ocean model}}, + url = {http://doi.wiley.com/10.1029/92JC01755}, + volume = {97}, + year = {1992} +} + % ********************************************** % For new entries, see example entry in BIB_TEMPLATE.txt From 8f59956ed5333bc4a6779cdf84a9cb4d1f7e9d08 Mon Sep 17 00:00:00 2001 From: apcraig Date: Mon, 23 Nov 2020 17:28:50 -0700 Subject: [PATCH 6/6] remove Steele reference, was already in Icepack bibliography --- doc/source/master_list.bib | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/doc/source/master_list.bib b/doc/source/master_list.bib index dd323b04e..a763b1fa5 100644 --- a/doc/source/master_list.bib +++ b/doc/source/master_list.bib @@ -742,16 +742,6 @@ @article{danabasoglu20 year = {2020} } -@article{Steele92, - author = "M. Steele", - journal = JGR, - number = {C11}, - pages = {17729}, - title = {{Sea ice melting and floe geometry in a simple ice-ocean model}}, - url = {http://doi.wiley.com/10.1029/92JC01755}, - volume = {97}, - year = {1992} -} % **********************************************