Skip to content

Commit

Permalink
Access alternative congelation ice formulation in icepack (#965)
Browse files Browse the repository at this point in the history
Add support for 'one-step' congelation ice formation in addition to current default 'two-step' option. Added a new namelist, congel_freeze to control the congelation option. This CICE update requires an update to Icepack to support the new congel_freeze option. The default setting for congel_freeze is set to 'two-step' for backwards compatibility. The new 'one-step' option will be evaluated and may become the default option in the future.

Testing indicates the default setting is bit-for-bit identical with the current main.
  • Loading branch information
eclare108213 authored Aug 8, 2024
1 parent b109fa4 commit 350d34a
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 5 deletions.
9 changes: 6 additions & 3 deletions cicecore/cicedyn/general/ice_init.F90
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ subroutine input_data

character (len=char_len) :: shortwave, albedo_type, conduct, fbot_xfer_type, &
tfrz_option, saltflux_option, frzpnd, atmbndy, wave_spec_type, snwredist, snw_aging_table, &
capping_method, snw_ssp_table
congel_freeze, capping_method, snw_ssp_table

logical (kind=log_kind) :: calc_Tsfc, formdrag, highfreq, calc_strair, wave_spec, &
sw_redist, calc_dragio, use_smliq_pnd, snwgrain
Expand Down Expand Up @@ -280,7 +280,7 @@ subroutine input_data
highfreq, natmiter, atmiter_conv, calc_dragio, &
ustar_min, emissivity, iceruf, iceruf_ocn, &
fbot_xfer_type, update_ocn_f, l_mpond_fresh, tfrz_option, &
saltflux_option,ice_ref_salinity,cpl_frazil, &
saltflux_option,ice_ref_salinity,cpl_frazil, congel_freeze, &
oceanmixed_ice, restore_ice, restore_ocn, trestore, &
precip_units, default_season, wave_spec_type,nfreq, &
atm_data_type, ocn_data_type, bgc_data_type, fe_data_type, &
Expand Down Expand Up @@ -537,6 +537,7 @@ subroutine input_data
atmiter_conv = c0 ! ustar convergence criteria
precip_units = 'mks' ! 'mm_per_month' or
! 'mm_per_sec' = 'mks' = kg/m^2 s
congel_freeze = 'two-step'! congelation freezing method
tfrz_option = 'mushy' ! freezing temp formulation
saltflux_option = 'constant' ! saltflux calculation
ice_ref_salinity = 4.0_dbl_kind ! Ice reference salinity for coupling
Expand Down Expand Up @@ -1127,6 +1128,7 @@ subroutine input_data
call broadcast_scalar(wave_spec_type, master_task)
call broadcast_scalar(wave_spec_file, master_task)
call broadcast_scalar(nfreq, master_task)
call broadcast_scalar(congel_freeze, master_task)
call broadcast_scalar(tfrz_option, master_task)
call broadcast_scalar(saltflux_option, master_task)
call broadcast_scalar(ice_ref_salinity, master_task)
Expand Down Expand Up @@ -2313,6 +2315,7 @@ subroutine input_data
if (trim(tfrz_option) == 'constant') then
write(nu_diag,1002) ' Tocnfrz = ', Tocnfrz
endif
write(nu_diag,1030) ' congel_freeze = ', trim(congel_freeze)
if (update_ocn_f) then
tmpstr2 = ' : frazil water/salt fluxes included in ocean fluxes'
else
Expand Down Expand Up @@ -2723,7 +2726,7 @@ subroutine input_data
aspect_rapid_mode_in=aspect_rapid_mode, dSdt_slow_mode_in=dSdt_slow_mode, &
phi_c_slow_mode_in=phi_c_slow_mode, phi_i_mushy_in=phi_i_mushy, conserv_check_in=conserv_check, &
wave_spec_type_in = wave_spec_type, wave_spec_in=wave_spec, nfreq_in=nfreq, &
update_ocn_f_in=update_ocn_f, cpl_frazil_in=cpl_frazil, &
update_ocn_f_in=update_ocn_f, cpl_frazil_in=cpl_frazil, congel_freeze_in=congel_freeze, &
tfrz_option_in=tfrz_option, kalg_in=kalg, fbot_xfer_type_in=fbot_xfer_type, &
saltflux_option_in=saltflux_option, ice_ref_salinity_in=ice_ref_salinity, &
Pstar_in=Pstar, Cstar_in=Cstar, iceruf_in=iceruf, iceruf_ocn_in=iceruf_ocn, calc_dragio_in=calc_dragio, &
Expand Down
1 change: 1 addition & 0 deletions configuration/scripts/ice_in
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,7 @@
fbot_xfer_type = 'constant'
update_ocn_f = .false.
l_mpond_fresh = .false.
congel_freeze = 'two-step'
tfrz_option = 'mushy'
saltflux_option = 'constant'
ice_ref_salinity = 4.0
Expand Down
2 changes: 1 addition & 1 deletion configuration/scripts/machines/env.chicoma_intel
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ setenv ICE_MACHINE_WKDIR /lustre/scratch5/$user/CICE_RUNS
setenv ICE_MACHINE_INPUTDATA /usr/projects/climate/eclare/DATA/Consortium
setenv ICE_MACHINE_BASELINE /lustre/scratch5/$user/CICE_BASELINE
setenv ICE_MACHINE_SUBMIT "sbatch "
setenv ICE_MACHINE_ACCT t23_cice
setenv ICE_MACHINE_ACCT t24_cice
setenv ICE_MACHINE_QUEUE "debug"
setenv ICE_MACHINE_TPNODE 128 # tasks per node
setenv ICE_MACHINE_BLDTHRDS 12
Expand Down
2 changes: 2 additions & 0 deletions configuration/scripts/options/set_nml.congel
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
congel_freeze = 'one-step'

2 changes: 2 additions & 0 deletions configuration/scripts/tests/base_suite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ restart gx3 8x2 alt06
restart gx3 8x3 alt07
restart gx3 16x2 snicar
restart gx3 12x2 snicartest
restart gx3 8x2 congel
restart gx3 8x3 saltflux
restart gx3 18x2 debug,maskhalo
restart gx3 6x2 alt01,debug,short
Expand All @@ -37,6 +38,7 @@ smoke gx3 4x4 alt04,debug,short
smoke gx3 4x4 alt05,debug,short
smoke gx3 8x2 alt06,debug,short
smoke gx3 8x3 alt07,debug,short
smoke gx3 8x2 congel,debug,short
smoke gx3 16x2 snicar,debug,short
smoke gx3 12x2 snicartest,debug,short
smoke gx3 10x2 debug,diag1,run5day,gx3sep2
Expand Down
2 changes: 2 additions & 0 deletions doc/source/user_guide/ug_case_settings.rst
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,8 @@ forcing_nml
"``calc_strair``", "``.false.``", "read wind stress and speed from files", "``.true.``"
"", "``.true.``", "calculate wind stress and speed", ""
"``calc_Tsfc``", "logical", "calculate surface temperature", "``.true.``"
"``congel_freeze``", "``one-step``", "immediately freeze congelation ice", "``two-step``"
"", "``two-step``", "delayed freezing of congelation ice", ""
"``cpl_frazil``", "``external``", "frazil water/salt fluxes are handled outside of Icepack", "``fresh_ice_correction``"
"", "``fresh_ice_correction``", "correct fresh-ice frazil water/salt fluxes for mushy physics", ""
"", "``internal``", "send full frazil water/salt fluxes for mushy physics", ""
Expand Down

0 comments on commit 350d34a

Please sign in to comment.