Releases: CICE-Consortium/Icepack
Icepack1.5.0
Icepack version 1.5.0 is being released with CICE6.6.0. This is a major release update from the Icepack1.4.1 release from May, 2024. The Icepack BGC has been significantly updated. The public Icepack interfaces have been refactored, and two public interfaces were renamed with backwards compatibility provided. . The floe size distribution conservation properties were improved, and the snow and ice enthalphy calculation was updated in the lateral melt process. Finally, an alternative congelation formulation following Plante et al. was added.
NOTE: This version is not backwards compatible with earlier versions of Icepack due to changes in public interfaces (see below for a detailed summary). In addition, all answers are changed.
Major Changes
- BGC update #497 (updates BGC physics consistent with E3SM, begins deprecation of skeletal-layer BGC, cleans up interfaces, updates bgc namelist defaults and settings in icepack_in and bgc tracer sizing in set_env files)
Bug fixes
- Fix conservation issues in the floe size distribution. Changes answers in FSD cases. #495
- Use initial ice and snow volume values at the beginning of the lateral melt routine to update the snow and ice enthalpy as well other tracers for lateral melting. Changes answers in all cases.
- Move the computation of vi0new_lat (lateral growth from FSD) outside of subroutine fsd_lateral_growth and check that the category new ice volume (vin0new) does not exceed the total vi0new.
- Redefine floe_area_c to be precisely halfway between floe_area_l and floe_area_h.
- BGC update #497 fixes bug in subroutine snow_redist computation of hsn_new when nslyr=1
- Add a check and abort for negative values in the sqrt in computation of Tin in function calculate_Tin_from_qin. #502
Enhancements
- Update Icepack interfaces to remove arguments that are not needed, for minor physics changes, and as part of the BGC refactor. See below for more details. #497 #495 #502
- Alternative congelation formulation following Plante et al. 2024 #494
- Make dsnow and dsnown optional in icepack_step_therm1 #506
- Rename two public Icepack subroutines. Backward compatibility was maintained but we urge users to update their drivers to use the new names. #502
- use icepack_therm_shared , only: icepack_init_thermo => icepack_init_salinity
- use icepack_therm_shared , only: icepack_init_trcr => icepack_init_enthalpy
- Store static FSD information in Icepack rather than passing it through argument lists; remove fside #495
- Update timeseries script plot fonts and titles, add run_testoutput script #490
- Machine ports #496, #501, #502
Documentation
- Update version number to 1.5.0 #507
- Update documentation for adding a tracer and the tutorial #493
- Update comments associated with floeshape constant attribution and kice #502
Summary of Icepack Interface Changes
Unless otherwise indicated, these changes remove arguments that are set elsewhere and not needed.
-
icepack_init_trcr
- rename to icepack_init_enthalpy
- remove arguments nilyr, nslyr
-
icepack_init_thermo
- rename to icepack_init_salinity
- remove arguments nilyr
-
icepack_init_itd
- remove arguments ncat
-
icepack_init_itd_hist
- remove arguments ncat
-
icepack_init_hbrine
- remove arguments nilyr, nblyr
- remove arguments bgrid, igrid, cgrid, icgrid, swgrid
-
icepack_init_fsd
- remove arguments nfsd
- remove arguments floe_rad_c, floe_binwidth
-
icepack_init_fsd_bounds
- remove arguments nfsd
- remove arguments floe_rad_l, floe_rad_c, floe_binwidth, c_fsd_range
- add optional arguments floe_rad_l_out, floe_rad_c_out, floe_binwidth_out, c_fsd_range_out to return values computed in the subroutine to the caller if needed.
-
icepack_cleanup_fsd
- remove arguments ncat, nfsd
-
icepack_init_bgc
- remove arguments ncat, nblyr, nilyr, ntrcr_o, ntrcr, nbtrcr
- remove arguments cgrid, igrid
- add optional argument DOCPollFractions (new feature)
-
icepack_init_zbgc
- completely refactored, most arguments removed and moved to icepack_init_parameters
- arguments now are (zbgc_frac_init_in, zbgc_init_frac_in, tau_ret_in, tau_rel_in, bgc_tracer_type_in)
-
icepack_load_ocean_bio_array
- remove arguments max_nbtrcr, max_algae, max_don, max_doc, max_dic, max_aero, max_fe
-
icepack_init_ocean_bio
- remove arguments max_dic, max_don, max_fe, max_aero
-
icepack_*_parameters (add new features or move bgc initialization of static parameters from icepack_init_zbgc to icepack_parameters)
- add arguments hs_ssl_min, R_gC2molC, congel_freeze, use_macromolecules, restartbgc, use_atm_dust_iron, grid_o_t, tau_min, tau_max, f_don_protein, kn_bac_protein, f_don_Am_protein, ratio_Si2N_diatoms, ratio_Si2N_sp, ratio_Si2N_phaeo, ratio_S2N_diatoms, ratio_S2N_sp, ratio_S2N_phaeo, ratio_Fe2C_diatoms, ratio_Fe2C_sp, ratio_Fe2C_phaeo, ratio_Fe2N_diatoms, ratio_Fe2N_sp, ratio_Fe2N_phaeo, ratio_Fe2DON, ratio_Fe2DOC_s, ratio_Fe2DOC_l, chlabs_diatoms, chlabs_sp, chlabs_phaeo, alpha2max_low_diatoms, alpha2max_low_sp, alpha2max_low_phaeo, beta2max_diatoms, beta2max_sp, beta2max_phaeo, mu_max_diatoms, mu_max_sp, mu_max_phaeo, grow_Tdep_diatoms, grow_Tdep_sp, grow_Tdep_phaeo, fr_graze_diatoms, fr_graze_sp, fr_graze_phaeo, mort_pre_diatoms, mort_pre_sp, mort_pre_phaeo, mort_Tdep_diatoms, mort_Tdep_sp, mort_Tdep_phaeo, k_exude_diatoms, k_exude_sp, k_exude_phaeo, K_Nit_diatoms, K_Nit_sp, K_Nit_phaeo, K_Am_diatoms, K_Am_sp, K_Am_phaeo, K_Sil_diatoms, K_Sil_sp, K_Sil_phaeo, K_Fe_diatoms, K_Fe_sp, K_Fe_phaeo, f_doc_s, f_doc_l, f_exude_s, f_exude_l, k_bac_s, k_bac_l, algaltype_diatoms, algaltype_sp, algaltype_phaeo, nitratetype, ammoniumtype, silicatetype, dmspptype, dmspdtype, humtype, doctype_s, doctype_l, dictype_1, dontype_protein, fedtype_1, feptype_1, zaerotype_bc1, zaerotype_bc2, zaerotype_dust1, zaerotype_dust2, zaerotype_dust3, zaerotype_dust4, ratio_C2N_diatoms, ratio_C2N_sp, ratio_C2N_phaeo, ratio_chl2N_diatoms, ratio_chl2N_sp, ratio_chl2N_phaeo, F_abs_chl_diatoms, F_abs_chl_sp, F_abs_chl_phaeo, ratio_C2N_proteins_in
-
icepack_compute_tracers
- remove arguments ntrcr
-
icepack_aggregate
- remove arguments ncat, ntrcr, nilyr, nslyr
-
icepack_ice_strength
- remove arguments ncat
-
icepack_step_therm1
- remove arguments ncat, nilyr, nslyr
- remove arguments rside, fside
- add argument rsiden (replaces rside and fside)
- add argument afsdn (new feature)
-
icepack_step_therm2
- remove arguments ncat, nilyr, nslyr, nblyr, bgrid, cgrid, igrid, nfsd
- remove arguments floe_rad_c, floe_binwidth
- remove arguments rside, fside
- add argument rsiden (replaces rside and fside)
-
icepack_step_wavefracture
- remove arguments ncat, nfsd, floe_rad_l, floe_rad_c
-
icepack_step_ridge
- remove arguments ncat, nilyr, nslyr, nblyr, n_aero
-
icepack_step_snow
- remove arguments ncat, nilyr, nslyr
-
icepack_step_radiation
- remove arguments swgrid, igrid
-
icepack_biogeochemistry
- remove arguments ncat, ntrcr, nilyr, nslyr, nblylr, nbtrcr
- remove arguments n_algae, n_zaero, n_doc, n_dic, n_don, n_fed, n_fep
- remove arguments bgrid, igrid, icgrid, cgrid
- remove arguments sice_rho, skl_bgc
Icepack1.4.1
Icepack version 1.4.1 is being released with CICE6.5.1. This is a minor release update from the Icepack1.4.0 release from October, 2023. The only significant changes are two bug fixes in the ks units in the dEdd code and in the enthalpy calculation when temperature is adjusted. These could change answers for BL99 thermodynamics.
Major Changes
Bug fixes
- BL99 thermodyanics fixes. Correct ks units in dEdd code. Update enthalpy calculation when temperature is adjusted, Could change answers for BL99 thermodynamics. #476
Enhancements
- Update usage of optional argument wlat in lateral_melt in icepack_therm_itd.F90. #477
- Update conda macos debug flags to avoid compiler issue with -ffpe-trap=invalid. #484
- Add gnuplot to the conda environment #483
Documentation
Icepack1.4.0
Icepack version 1.4.0 is being released with CICE6.5.0. This is a major release update from the Icepack1.3.4 release from September, 2023. This update includes the first of a series of updates to Icepack as a result of coupling into E3SM. Some of the interfaces have changed, some new parameters were added, the 5-band snicar shortwave feature was added, the frazil ice coupling was updated, and a bug was fixed lateral bottom melting term that doesn't impact science.
Major Changes
- Merge E3SM initial integration branch #460, #468, #469
- update dEdd shortwave and snicar including new hardcoded lookup tables, 3-band and 5-band options, and support for 'dEdd_snicar_ad' as a shortwave option. Add NO_SNICARHC to turn off large hardcoded 5-band data table during compilation to save compilation time. That table is only needed with shortwave='dEdd_snicar_ad' when snw_ssp_table='snicar' but is included in compilation by default.
- Update modal aerosols (Changes modal aerosol results in Icepack)
- Update public interfaces (Impacts backward compatibility)
- remove nspint public parameters
- add icepack_init_radiation, icepack_salinity_profile, icepack_enthalpy_mush, icepack_warnings_getall
- modify icepack_prep_radiation, remove scalar parameters (ncat, nilyr, nslyr)
- modify icepack_step_radiation, remove scalar parameters (ncat, nblyr, nilyr, nslyr, dEdd_algae, calendar_type, days_per_year, nextsw_cday, modal_aero), remove snicar table data arguments
- add Tf argument to icepack_compute_tracers, icepack_aggregate, icepack_step_ridge,
- Update icepack parameters, add hi_min, Tliquidus_max, snw_ssp_table, 'dEdd_snicar_ad' option to shortwave, 'constant' to tfrz_option
- Update the Tf implementation to make values internally consistent. Remove hardcoded Tocnfrz in a couple places, add tfrz_option='constant' which sets Tf to Tocnfrz. (Changes answers in some cases, can also change the value of temp in restart at non-ice gridcells even though the ice state is identical)
- Modify iDin computation in subroutine compute_microS_mushy
- Fix fhtan computation in compute_albedos
- Refactor internal subroutine arguments to leverage module data more
- Rename orbital interfaces from shr_orb to icepack_orb to more clearly differentiate internal and external versions
- Update some optional argument handling
- Clean up Icepack driver namelist logging
Bug fixes
- Fix bug in frzmlt_bottom_lateral to limit the amount of heat available for melting #474
Enhancements
- Generalize the logic for coupling frazil ice. Add namelist cpl_frazil and add update_ocn_f to icepack_parameters. #458
- Update the implementation of the rsnw interpolation in dEdd shortwave code, add new methods shortwave_search, add support for 5-band test data, and update the 5-band interpolation to be linear (Non-climate answer changing for shortwave='dEdd_snicar_ad', passes QC) #472
- Add icepack parameter tscale_pnd_drain, sets the timescale (in days) for macroscopic drainage when using mushy thermodynamics. #462
- Update picard_nonconvergence diagnostics #464
- Add readthedocs yaml for documentation building #466
- Remove unncessary call to icepack_recompute_constants in icepack_query_parameters #465
- Port to Perlmutter #467
- Update Derecho inputdata path #471
- Fix script bug in icepack.launch.csh #475
Documentation
Icepack1.3.4
Icepack version 1.3.4 is being released with CICE6.4.2. This is a minor release update from the Icepack1.3.3 release from December, 2022. This update includes several bug fixes including in snow physics, FSD lateral melt, and treatment of thin ice/snow enthalpy. It also includes improvements to the treatment of optional arguments in the public interfaces, capability for netcdf restart files, and other enhancements.
Bug fixes
- Correct thin ice/snow treatment of enthalpy and other tracers. #454. This changes answers in CICE (QC passes) but not Icepack
- Fix ice area inconsistency under convergence in single column mode #433. This changes answers in standalone Icepack but not in CICE.
- Fix bug in snow sublimation in icepack_therm_vertical #428. Fix bug in smicen and smliqn calculation in thermo_vertical #449. This changes answers for snwgrain configurations.
- Update the FSD lateral heat flux computation and fix bug in the welding scheme. #424 #435 This changes answers for FSD configurations.
- Fix bug in history file output related to FSD. #421. This does not change model results.
- Fix bug in start time for netCDF history output #426. This does not change model results.
- Update hsn_new(1) computation in snow_redist. This does not change model results.
Enhancements
- Update snow physics logic control #449
- Refactor implementation of optional arguments for isotopes, snwgrain, therm1 and therm2 as well as some optional outputs in Icepack public interfaces #423, #429. Update FSD arguments, convert them to optional #440. Clean up optional argument attributes and update optional argument documentation #443.
- Add icepack_chkoptargflag function #423, #434
- Add support for netCDF restart files, update history and restart format control #427
- Deprecate zsalinity #448
- Remove ridging iteration log output #445, #446
- Check allocation of snow aging tables better #428
- Clean up some intent statements, clean up public interface declarations #429
- Shift a few left-over print statements to use the icepack warning infrastructure #424
- Add support for netCDF with conda_linux #425
- Update icepack_write_parameters and add call in Icepack #436
- Update ports to Onyx, Derecho, Cheyenne, Chicoma #442, #449, #456
Documentation
Icepack1.3.3
Icepack version 1.3.3 is being released with CICE6.4.1. This is a minor release update from the Icepack1.3.2 release in August, 2022. This update includes several bug fixes including to the dEdd implementation for modal aerosols and the snow grain implementation. It adds some new features including the saltflux_option. It also deprecates the zsalinity feature using preprocessor flags to enable the changes to be more easily reversed. Please contact the CICE Consortium with any concerns regarding deprecated code. We will consider keeping it.
Bug fixes
- Fix bugs in dEdd implementation including missing g/w0/tau calculation after "aerosol in snow" and bug in computation of modal aerosol taer/waer/gaer by fixing multiply of nilyr and nslyr. THIS CHANGES ANSWERS for tr_aero and modal aerosols #400
- Fix bugs in snow grain radius, corrects the magnitude of a parameter controlling wet metamorphosis of snow THIS CHANGES ANSWERS for snwgrain cases #415
- Fix brine volume conservation check #415
Enhancements
- Refactor computation of g/w0/tau, get rid of use of puny THIS CHANGES ANSWERS but preserves climate #400
- Change some constants in dEdd to double precision THIS COULD CHANGE ANSWER but preserves climate #400
- Add saltflux_options constant and prognostic #418
- Add argcheck parameter, not yet used #397
- Rename configuration options so all lower case for improved scripts robustness #397
- Clean up unused variables and remove trailing blanks from several files #397
- Port to NCCS machine discover #398
- Add modal tests #400
- Update fsd test length #414
- Force IO unit closing on exit of Icepack to address a bug in MacOSX to ensure output is written fully #403
- Add checker in source code to Github Actions CI, we don't want tabs in the code #417
- Add warning for wave_spec_type='none' with FSD #409
- Final deprecation of 0-layer thermo and cesm meltponds #411
- Initial deprecation of zsalinity #413
- Remove trailing blank spaces #419
Documentation
Icepack1.3.2
Icepack version 1.3.2 is being released with CICE6.4.0. This is a minor release update from the Icepack1.3.1 release in February, 2022. This update includes deprecation of both the 0-layer thermodynamics and the CESM melt ponds. In this version, the code is deprecated using preprocessor flags to enable the changes to be more easily reversed, if necessary. Please contact the CICE Consortium with any concerns regarding deprecated code. We will consider keeping it.
Major Changes
Bug fixes
Enhancements
- Update machine files for cori #395
Documentation
Icepack1.3.1
Icepack version 1.3.1 is being released with CICE6.3.1. This is a minor release update from the Icepack1.3.0 release in September, 2021. This is a relatively minor update that addresses a few technical issues, fixes an issue in the computation of CDN_ocn, and updates the bulk formula options.
Major Changes
- None
Bug fixes
- Switch relative call location of frzmlt_bottom_lateral and neutral_drag_coeffs to compute valid CDN_ocn before being used, #381
Enhancements
- Update namelist reading to allow namelist groups to be read in any order #379, #382
- Fix output formatting to avoid conversion errors #378
- Add logical statement to avoid use of undefined values in meltsliq #376
- Update sensible and latent heat bulk formula options set by atmbndy_in. Valid values are similarity (aka default), mixed, and constant. Update documentation #371
Documentation
Icepack1.3.0
Icepack version 1.3.0 is being released with CICE6.3.0. This is a major release update from the Icepack1.2.5 release in April, 2021. This release upgrades the snow physics significantly. It also adds primitive netcdf history files, supports staggered atmospheric levels, and allows ice/ocean drag to be computed from under-ice roughness.
Major Changes
- advanced snow physics #360
Bug fixes
Enhancements
- add primitive netcdf history capability #368
- support for staggered atmospheric levels #364
- update namelist reading to allow arbitrary order of namelist groups #369
- optionally compute dragio from under-ice roughness #366
- update .gitattributes #362
- machine ports #363, #367
- clean up continuation lines #365
Documentation
Icepack1.2.5
Icepack version 1.2.5 is being released with CICE6.2.0. This is a minor release update from the Icepack1.2.4 release in December, 2020. This release fixes a minor bug in the zsaliniity implementation and updates some other features in small ways. The most significant update is a change in the default emissivity value to 0.985.
Bug fixes:
- Initialization of salinity in zsalinity parameterization #346
Enhancements:
- Move shortwave absorbed in negligible snow layers to surface. #355
- Add abort in ITD for rare case where (hicen_init(n+1) - hicen_init(n)) <= 0) #337
- Modify error tolerance for rare mush thermo failure. #352
- Adjust emissivity to 0.985, set default NBGCLYR=1. #348
- Add test for zsalinity parameterization #344
- Add automated Github Actions testing on Pull Requests and Pushes to master and releases #347, Update Github Actions script #359
- Update color references in test results script #359
- Update conda macos implementation #359
- Port to Compy #353, #356
Documentation:
Icepack1.2.4
Icepack version 1.2.4 is being released with CICE6.1.4. This is a minor release update from the Icepack1.2.3 release in August, 2020. This release fixes a couple of minor bugs in the floeshape setting and in the convergence criteria in the atmo_boundary_layer method. In addition, some namelist variables were added and moved between namelist groups.
Major changes:
Bug fixes:
- Remove duplicate definition of floeshape and set it to 0.66. Prior versions had it set to 0.666 in fsd and 0.66 outside fsd. This changes answers but only affect the results of the fsd cases. #342
- Fix bug in atmo_boundary_layer in the iteration of Z/L, ustar, tstar, and qstar. This may change results slightly and does so in some of the test cases. This fixes the convergence check. #341
Enhancements:
- Move sw_redist, sw_frac, sw_dtemp from the thermo namelist to the shortwave namelist in the icepack driver. Prior namelist files may not be backwards compatible. #343
- Add hfrazilmin and floediam variables to icepack_parameter settings and to the icepack driver. #342
Documentation: