Skip to content

Commit

Permalink
Merge branch 'eclare108213/seaice/icepack-integration' (PR E3SM-Proje…
Browse files Browse the repository at this point in the history
…ct#5958)

Initial icepack integration

Installs Icepack in E3SM.

This PR includes MPAS-seaice changes necessary to run Icepack in
equivalent physics configurations as the original column package code.
The entire Icepack repository is installed as a submodule linked from
the main branch of E3SM’s Icepack fork.

Some minor changes were made to the original column package code for
consistency with Icepack during testing. Icepack replaces colpkg as the
default column physics package in this PR.

Fully coupled E3SM v3alpha trigrid with Icepack physics is statistically
compatible with the 100-year control at the 99% confidence interval.

Icepack is thoroughly and promptly documented in its git repository (the
source code is in icepack/doc/).

[NML]
[CC]
  • Loading branch information
jonbob committed Oct 31, 2023
2 parents 522cd9f + 52b0551 commit d18c6e9
Show file tree
Hide file tree
Showing 46 changed files with 19,878 additions and 762 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,13 @@
[submodule "components/eam/src/physics/crm/pam/external"]
path = components/eam/src/physics/crm/pam/external
url = [email protected]:E3SM-Project/PAM.git
[submodule "components/mpas-seaice/src/icepack"]
path = components/mpas-seaice/src/icepack
url = [email protected]:E3SM-Project/Icepack.git
[submodule "externals/haero"]
path = externals/haero
url = [email protected]:eagles-project/haero.git
[submodule "externals/mam4xx"]
path = externals/mam4xx
url = [email protected]:eagles-project/mam4xx.git

31 changes: 25 additions & 6 deletions components/mpas-seaice/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,7 @@ add_default($nl, 'config_restart_timestamp_name');
##############################

add_default($nl, 'config_nCategories');
add_default($nl, 'config_nFloeCategories');
add_default($nl, 'config_nIceLayers');
add_default($nl, 'config_nSnowLayers');

Expand Down Expand Up @@ -559,7 +560,7 @@ add_default($nl, 'config_use_dynamics');
add_default($nl, 'config_use_velocity_solver');
add_default($nl, 'config_use_advection');
add_default($nl, 'config_use_forcing');
add_default($nl, 'config_use_column_package');
add_default($nl, 'config_use_column_physics');
add_default($nl, 'config_use_prescribed_ice');
add_default($nl, 'config_use_prescribed_ice_forcing');

Expand All @@ -575,6 +576,7 @@ add_default($nl, 'config_forcing_precipitation_units');
add_default($nl, 'config_forcing_sst_type');
add_default($nl, 'config_forcing_bgc_type');
add_default($nl, 'config_update_ocean_fluxes');
add_default($nl, 'config_frazil_coupling_type');
add_default($nl, 'config_include_pond_freshwater_feedback');

###########################
Expand Down Expand Up @@ -627,6 +629,7 @@ add_default($nl, 'config_recover_tracer_means_check');
# Namelist group: column_package #
##################################

add_default($nl, 'config_column_physics_type');
add_default($nl, 'config_use_column_shortwave');
add_default($nl, 'config_use_column_vertical_thermodynamics');
if ($ice_bgc eq 'ice_bgc') {
Expand All @@ -652,6 +655,7 @@ add_default($nl, 'config_use_aerosols');
add_default($nl, 'config_use_effective_snow_density');
add_default($nl, 'config_use_snow_grain_radius');
add_default($nl, 'config_use_special_boundaries_tracers');
add_default($nl, 'config_use_floe_size_distribution');

###################################
# Namelist group: biogeochemistry #
Expand Down Expand Up @@ -835,6 +839,9 @@ add_default($nl, 'config_snow_shortwave_tuning_parameter');
add_default($nl, 'config_temp_change_snow_grain_radius_change');
add_default($nl, 'config_max_melting_snow_grain_radius');
add_default($nl, 'config_algae_absorption_coefficient');
add_default($nl, 'config_use_shortwave_redistribution');
add_default($nl, 'config_shortwave_redistribution_fraction');
add_default($nl, 'config_shortwave_redistribution_threshold');

########################
# Namelist group: snow #
Expand All @@ -847,15 +854,17 @@ add_default($nl, 'config_new_snow_density');
add_default($nl, 'config_max_snow_density');
add_default($nl, 'config_minimum_wind_compaction');
add_default($nl, 'config_wind_compaction_factor');
add_default($nl, 'config_snow_redistribution_factor');
add_default($nl, 'config_max_dry_snow_radius');
add_default($nl, 'config_snow_thermal_conductivity');

#############################
# Namelist group: meltponds #
#############################

add_default($nl, 'config_snow_to_ice_transition_depth');
add_default($nl, 'config_pond_refreezing_type');
add_default($nl, 'config_pond_flushing_timescale');
add_default($nl, 'config_pond_flushing_factor');
add_default($nl, 'config_min_meltwater_retained_fraction');
add_default($nl, 'config_max_meltwater_retained_fraction');
add_default($nl, 'config_pond_depth_to_fraction_ratio');
Expand All @@ -873,6 +882,7 @@ add_default($nl, 'config_rapid_model_critical_Ra');
add_default($nl, 'config_rapid_mode_aspect_ratio');
add_default($nl, 'config_slow_mode_drainage_strength');
add_default($nl, 'config_slow_mode_critical_porosity');
add_default($nl, 'config_macro_drainage_timescale');
add_default($nl, 'config_congelation_ice_porosity');

#######################
Expand All @@ -882,14 +892,20 @@ add_default($nl, 'config_congelation_ice_porosity');
add_default($nl, 'config_itd_conversion_type');
add_default($nl, 'config_category_bounds_type');

############################
# Namelist group: floesize #
############################
add_default($nl, 'config_floeshape');
add_default($nl, 'config_floediam');

###########################
# Namelist group: ridging #
###########################

add_default($nl, 'config_ice_strength_formulation');
add_default($nl, 'config_ridging_participation_function');
add_default($nl, 'config_ridging_redistribution_function');
add_default($nl, 'config_ridiging_efolding_scale');
add_default($nl, 'config_ridging_efolding_scale');
add_default($nl, 'config_ratio_ridging_work_to_PE');

##############################
Expand Down Expand Up @@ -917,12 +933,14 @@ if ($surface_mode eq 'non-free') {
} else {
add_default($nl, 'config_ocean_surface_type', 'val'=>"free");
}
add_default($nl, 'config_couple_biogeochemistry_fields');
if ($iceberg_mode eq 'data') {
add_default($nl, 'config_use_data_icebergs', 'val'=>"true");
add_default($nl, 'config_use_data_icebergs', 'val'=>"true");
} else {
add_default($nl, 'config_use_data_icebergs', 'val'=>"false");
add_default($nl, 'config_use_data_icebergs', 'val'=>"false");
}
add_default($nl, 'config_salt_flux_coupling_type');
add_default($nl, 'config_couple_biogeochemistry_fields');
add_default($nl, 'config_ice_ocean_drag_coefficient');

###############################
# Namelist group: diagnostics #
Expand Down Expand Up @@ -1240,6 +1258,7 @@ my @groups = qw(seaice_model
meltponds
thermodynamics
itd
floesize
ridging
atmosphere
ocean
Expand Down
1 change: 1 addition & 0 deletions components/mpas-seaice/bld/build-namelist-group-list
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ my @groups = qw(seaice_model
meltponds
thermodynamics
itd
floesize
ridging
atmosphere
ocean
Expand Down
25 changes: 22 additions & 3 deletions components/mpas-seaice/bld/build-namelist-section
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ add_default($nl, 'config_do_restart_snow_grain_radius');
##############################

add_default($nl, 'config_nCategories');
add_default($nl, 'config_nFloeCategories');
add_default($nl, 'config_nIceLayers');
add_default($nl, 'config_nSnowLayers');

Expand Down Expand Up @@ -95,7 +96,7 @@ add_default($nl, 'config_use_dynamics');
add_default($nl, 'config_use_velocity_solver');
add_default($nl, 'config_use_advection');
add_default($nl, 'config_use_forcing');
add_default($nl, 'config_use_column_package');
add_default($nl, 'config_use_column_physics');
add_default($nl, 'config_use_prescribed_ice');
add_default($nl, 'config_use_prescribed_ice_forcing');

Expand All @@ -111,6 +112,7 @@ add_default($nl, 'config_forcing_precipitation_units');
add_default($nl, 'config_forcing_sst_type');
add_default($nl, 'config_forcing_bgc_type');
add_default($nl, 'config_update_ocean_fluxes');
add_default($nl, 'config_frazil_coupling_type');
add_default($nl, 'config_include_pond_freshwater_feedback');

###########################
Expand Down Expand Up @@ -163,6 +165,7 @@ add_default($nl, 'config_recover_tracer_means_check');
# Namelist group: column_package #
##################################

add_default($nl, 'config_column_physics_type');
add_default($nl, 'config_use_column_shortwave');
add_default($nl, 'config_use_column_vertical_thermodynamics');
add_default($nl, 'config_use_column_biogeochemistry');
Expand All @@ -184,6 +187,7 @@ add_default($nl, 'config_use_aerosols');
add_default($nl, 'config_use_effective_snow_density');
add_default($nl, 'config_use_snow_grain_radius');
add_default($nl, 'config_use_special_boundaries_tracers');
add_default($nl, 'config_use_floe_size_distribution');

###################################
# Namelist group: biogeochemistry #
Expand Down Expand Up @@ -352,6 +356,9 @@ add_default($nl, 'config_snow_shortwave_tuning_parameter');
add_default($nl, 'config_temp_change_snow_grain_radius_change');
add_default($nl, 'config_max_melting_snow_grain_radius');
add_default($nl, 'config_algae_absorption_coefficient');
add_default($nl, 'config_use_shortwave_redistribution');
add_default($nl, 'config_shortwave_redistribution_fraction');
add_default($nl, 'config_shortwave_redistribution_threshold');

########################
# Namelist group: snow #
Expand All @@ -364,15 +371,17 @@ add_default($nl, 'config_new_snow_density');
add_default($nl, 'config_max_snow_density');
add_default($nl, 'config_minimum_wind_compaction');
add_default($nl, 'config_wind_compaction_factor');
add_default($nl, 'config_snow_redistribution_factor');
add_default($nl, 'config_max_dry_snow_radius');
add_default($nl, 'config_snow_thermal_conductivity');

#############################
# Namelist group: meltponds #
#############################

add_default($nl, 'config_snow_to_ice_transition_depth');
add_default($nl, 'config_pond_refreezing_type');
add_default($nl, 'config_pond_flushing_timescale');
add_default($nl, 'config_pond_flushing_factor');
add_default($nl, 'config_min_meltwater_retained_fraction');
add_default($nl, 'config_max_meltwater_retained_fraction');
add_default($nl, 'config_pond_depth_to_fraction_ratio');
Expand All @@ -390,6 +399,7 @@ add_default($nl, 'config_rapid_model_critical_Ra');
add_default($nl, 'config_rapid_mode_aspect_ratio');
add_default($nl, 'config_slow_mode_drainage_strength');
add_default($nl, 'config_slow_mode_critical_porosity');
add_default($nl, 'config_macro_drainage_timescale');
add_default($nl, 'config_congelation_ice_porosity');

#######################
Expand All @@ -399,14 +409,21 @@ add_default($nl, 'config_congelation_ice_porosity');
add_default($nl, 'config_itd_conversion_type');
add_default($nl, 'config_category_bounds_type');

############################
# Namelist group: floesize #
############################

add_default($nl, 'config_floeshape');
add_default($nl, 'config_floediam');

###########################
# Namelist group: ridging #
###########################

add_default($nl, 'config_ice_strength_formulation');
add_default($nl, 'config_ridging_participation_function');
add_default($nl, 'config_ridging_redistribution_function');
add_default($nl, 'config_ridiging_efolding_scale');
add_default($nl, 'config_ridging_efolding_scale');
add_default($nl, 'config_ratio_ridging_work_to_PE');

##############################
Expand All @@ -432,6 +449,8 @@ add_default($nl, 'config_sea_freezing_temperature_type');
add_default($nl, 'config_ocean_surface_type');
add_default($nl, 'config_couple_biogeochemistry_fields');
add_default($nl, 'config_use_data_icebergs');
add_default($nl, 'config_salt_flux_coupling_type');
add_default($nl, 'config_ice_ocean_drag_coefficient');

###############################
# Namelist group: diagnostics #
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@

<!-- dimensions -->
<config_nCategories>5</config_nCategories>
<config_nFloeCategories>1</config_nFloeCategories>
<config_nIceLayers>7</config_nIceLayers>
<config_nSnowLayers>5</config_nSnowLayers>

Expand Down Expand Up @@ -101,7 +102,7 @@
<config_use_velocity_solver>true</config_use_velocity_solver>
<config_use_advection>true</config_use_advection>
<config_use_forcing>false</config_use_forcing>
<config_use_column_package>true</config_use_column_package>
<config_use_column_physics>true</config_use_column_physics>
<config_use_prescribed_ice>false</config_use_prescribed_ice>
<config_use_prescribed_ice prognostic_mode="prescribed">true</config_use_prescribed_ice>
<config_use_prescribed_ice_forcing>false</config_use_prescribed_ice_forcing>
Expand All @@ -115,6 +116,7 @@
<config_forcing_sst_type>'ncar'</config_forcing_sst_type>
<config_forcing_bgc_type>'ISPOL'</config_forcing_bgc_type>
<config_update_ocean_fluxes>true</config_update_ocean_fluxes>
<config_frazil_coupling_type>'external'</config_frazil_coupling_type>
<config_include_pond_freshwater_feedback>false</config_include_pond_freshwater_feedback>

<!-- testing -->
Expand Down Expand Up @@ -174,6 +176,7 @@
<config_recover_tracer_means_check>false</config_recover_tracer_means_check>

<!-- column_package -->
<config_column_physics_type>'icepack'</config_column_physics_type>
<config_use_column_shortwave>true</config_use_column_shortwave>
<config_use_column_vertical_thermodynamics>true</config_use_column_vertical_thermodynamics>
<config_use_column_biogeochemistry>false</config_use_column_biogeochemistry>
Expand All @@ -193,6 +196,7 @@
<config_use_effective_snow_density>true</config_use_effective_snow_density>
<config_use_snow_grain_radius>true</config_use_snow_grain_radius>
<config_use_special_boundaries_tracers>false</config_use_special_boundaries_tracers>
<config_use_floe_size_distribution>false</config_use_floe_size_distribution>

<!-- biogeochemistry -->
<config_use_brine>false</config_use_brine>
Expand Down Expand Up @@ -355,6 +359,9 @@
<config_temp_change_snow_grain_radius_change>1.5</config_temp_change_snow_grain_radius_change>
<config_max_melting_snow_grain_radius>1500.0</config_max_melting_snow_grain_radius>
<config_algae_absorption_coefficient>0.6</config_algae_absorption_coefficient>
<config_use_shortwave_redistribution>false</config_use_shortwave_redistribution>
<config_shortwave_redistribution_fraction>0.9</config_shortwave_redistribution_fraction>
<config_shortwave_redistribution_threshold>0.02</config_shortwave_redistribution_threshold>

<!-- snow -->
<config_snow_redistribution_scheme>'ITDrdg'</config_snow_redistribution_scheme>
Expand All @@ -364,12 +371,14 @@
<config_max_snow_density>450.0</config_max_snow_density>
<config_minimum_wind_compaction>10.0</config_minimum_wind_compaction>
<config_wind_compaction_factor>27.3</config_wind_compaction_factor>
<config_snow_redistribution_factor>0.3</config_snow_redistribution_factor>
<config_max_dry_snow_radius>2800.0</config_max_dry_snow_radius>
<config_snow_thermal_conductivity>0.3</config_snow_thermal_conductivity>

<!-- meltponds -->
<config_snow_to_ice_transition_depth>0.0</config_snow_to_ice_transition_depth>
<config_pond_refreezing_type>'hlid'</config_pond_refreezing_type>
<config_pond_flushing_timescale>1.0e-3</config_pond_flushing_timescale>
<config_pond_flushing_factor>1.0e-3</config_pond_flushing_factor>
<config_min_meltwater_retained_fraction>0.15</config_min_meltwater_retained_fraction>
<config_max_meltwater_retained_fraction>1.0</config_max_meltwater_retained_fraction>
<config_pond_depth_to_fraction_ratio>0.8</config_pond_depth_to_fraction_ratio>
Expand All @@ -384,21 +393,26 @@
<config_rapid_mode_aspect_ratio>1.0</config_rapid_mode_aspect_ratio>
<config_slow_mode_drainage_strength>-5.0e-8</config_slow_mode_drainage_strength>
<config_slow_mode_critical_porosity>0.05</config_slow_mode_critical_porosity>
<config_macro_drainage_timescale>10.</config_macro_drainage_timescale>
<config_congelation_ice_porosity>0.85</config_congelation_ice_porosity>

<!-- itd -->
<config_itd_conversion_type>'linear remap'</config_itd_conversion_type>
<config_category_bounds_type>'original'</config_category_bounds_type>

<!-- floesize -->
<config_floeshape>0.66</config_floeshape>
<config_floediam>300.0</config_floediam>

<!-- ridging -->
<config_ice_strength_formulation>'Rothrock75'</config_ice_strength_formulation>
<config_ridging_participation_function>'exponential'</config_ridging_participation_function>
<config_ridging_redistribution_function>'exponential'</config_ridging_redistribution_function>
<config_ridiging_efolding_scale>3.0</config_ridiging_efolding_scale>
<config_ridging_efolding_scale>3.0</config_ridging_efolding_scale>
<config_ratio_ridging_work_to_PE>17.0</config_ratio_ridging_work_to_PE>

<!-- atmosphere -->
<config_atmos_boundary_method>'ccsm3'</config_atmos_boundary_method>
<config_atmos_boundary_method>'similarity'</config_atmos_boundary_method>
<config_calc_surface_stresses>true</config_calc_surface_stresses>
<config_calc_surface_temperature>true</config_calc_surface_temperature>
<config_use_form_drag>false</config_use_form_drag>
Expand All @@ -414,6 +428,8 @@
<config_ocean_surface_type>'free'</config_ocean_surface_type>
<config_couple_biogeochemistry_fields>false</config_couple_biogeochemistry_fields>
<config_use_data_icebergs>false</config_use_data_icebergs>
<config_salt_flux_coupling_type>'constant'</config_salt_flux_coupling_type>
<config_ice_ocean_drag_coefficient>0.00536</config_ice_ocean_drag_coefficient>

<!-- diagnostics -->
<config_check_state>false</config_check_state>
Expand Down
Loading

0 comments on commit d18c6e9

Please sign in to comment.