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

Update MALI version to include higher-order advection and time integration #6126

Merged
merged 110 commits into from
Jan 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
119cfd9
Add calls to higher order advection scheme
trhille Oct 10, 2022
7532330
Copy higher-order ocean advection routines
trhille Oct 11, 2022
aac672a
Update Makefile to include fct modules
trhille Mar 8, 2023
47d6154
Initialize fct from tracer_setup
trhille Mar 8, 2023
5dd26c6
Add li_mesh module
trhille Mar 9, 2023
e549c55
Comment out irrelevant parameters and routine in li_mesh
trhille Mar 9, 2023
f97dd56
Add li_config module
trhille Mar 9, 2023
ab8ec14
Add fct variables to Registry
trhille Mar 9, 2023
494d092
Remove ocean variables from li_advection_fct and li_advection_fct_shared
trhille Mar 9, 2023
d9f9317
Update shared Makefile to include li_config
trhille Mar 9, 2023
9518f49
Fix call to li_advection_fct_tend
trhille Mar 9, 2023
30d387c
Fix typo in call to li_config
trhille Mar 9, 2023
414eac6
Remove call to tracer_advection_vert_flx
trhille Mar 9, 2023
83f5168
Clean up mesh variable definitions in li_mesh
trhille Mar 10, 2023
79edb95
Fix public parameter allocations
trhille Mar 13, 2023
3c42538
Clean up li_advection_fct_tend
trhille Mar 13, 2023
a364f7a
Add support for fo thickness with fct tracer advection
trhille Mar 14, 2023
e85d3fd
Apply tendencies to tracers with fct advection
trhille Mar 16, 2023
6da1573
Pass layerThicknessOld to fct tracer advection routine
trhille Mar 16, 2023
8734303
Add support for fct thickness advection
trhille Mar 16, 2023
8d08525
Use cellMask_dynamicMargin to calculate advMaskHighOrder
trhille Mar 17, 2023
36ea0a4
Use dynamic ice mask to define advMaskHighOrder
trhille Mar 22, 2023
12981f5
Use boundaryCell to define advMaskHighOrder
trhille Mar 22, 2023
2c66078
Update nTracers as tracers are added
trhille Mar 22, 2023
ab87706
Allocate arrays after nTracers has been calculated
trhille Mar 23, 2023
0f66471
Pass array of 1s as dummy tracer for fct thickness advection
trhille Mar 23, 2023
7e3d897
Fix bug in marking boundaryCell
trhille Mar 23, 2023
0e6fbb9
Add passiveTracer to help verify advection schemes
trhille Mar 23, 2023
697f7f9
Increase max number of tracers to accomodate passiveTracer
trhille Mar 23, 2023
dae96e7
Pass layerThickness as tracer instead of array of 1s
trhille Mar 24, 2023
4c87809
Change normalThicknessFlux, layerThickness, and tracer definitions
trhille Mar 27, 2023
aa85232
Try new mask for 2nd order terms
trhille Apr 19, 2023
70ec7bb
Make 2nd order and 3rd-4th order masks mutually exclusive
trhille Apr 19, 2023
4104681
Clean up 2nd order mask
trhille Apr 20, 2023
4f313f1
Call li_tracer_advection_fct_tend for thickness and tracers separately
trhille Apr 20, 2023
5889ba6
Make fct conserve mass
trhille Apr 21, 2023
fd6792b
Fix first order flux at ice edge
trhille Apr 21, 2023
8884ab3
Add openOceanMask to avoid calving into holes
matthewhoffman Jul 18, 2023
8d2f023
Make conserve tracer volume
trhille Aug 3, 2023
af40b00
Merge branch 'matthewhoffman/mali/stop_hole_calving' into develop
trhille Aug 9, 2023
b1a86d7
Advance clock early in time step
hollyhan Jul 19, 2023
38f3f2b
Simple cleanup after code review
trhille Aug 18, 2023
7cff4b7
Throw error forr fct thickness with fo tracer
trhille Aug 18, 2023
9530ad5
Make activeTracerHorizontalAdvectionEdgeFlux optional
trhille Aug 18, 2023
aa2999a
Fix bug with activeTracerHorizontalAdvectionEdgeFlux
trhille Aug 20, 2023
35a89ae
Fix the case of fo thickness, none tracer advection
trhille Aug 22, 2023
e35b9b4
Update config_start_time and config_stop_time
trhille Aug 23, 2023
d887372
Merge 'hollyhan/hollyhan/mali/fix_mpas_alarm_issue' into MALI-Dev/dev…
trhille Aug 23, 2023
0d7c14c
Merge branch 'trhille/update_start_stop_time_defaults' into MALI-Dev/…
matthewhoffman Aug 28, 2023
f43c26b
Only pass layer thickness tracer for first call to fct
trhille Aug 28, 2023
8f218c3
Change passiveTracer to passiveTracer2d
trhille Aug 28, 2023
52d9a0b
Enable fct thickness advection without tracer advection
trhille Sep 1, 2023
7ac9859
Merge branch 'trhille/add_higher_order_advection' into MALI-Dev/develop
matthewhoffman Sep 5, 2023
8c56d8e
Remove MPAS_OPENACC directives
trhille Aug 28, 2023
92ae305
Update comments and module/routine descriptions
trhille Sep 6, 2023
6be43b8
Remove commented vertical fct code
trhille Sep 6, 2023
cc8ea3b
Merge branch 'trhille/further_fct_cleanup' into MALI-Dev/develop
matthewhoffman Sep 7, 2023
f0ad694
Add non-dynamic cells to openOceanMask to fix calving bug
trhille Sep 12, 2023
4b668c7
Update description of openOceanMask in Registry.xml
trhille Sep 12, 2023
6d0d572
Merge branch 'trhille/fix_shelf_calving_bug' into MALI-Dev/develop
trhille Sep 12, 2023
8ace510
Merge 'E3SM-Project/master' into MALI-Dev/develop
trhille Sep 25, 2023
c387e76
Remove commented code and unused variables from li_mesh
trhille Oct 2, 2023
f5d2e27
Merge remote-tracking branch 'trhille/cleanup_li_mesh' into MALI-Dev/…
matthewhoffman Oct 3, 2023
8599138
Add higher order thickness flux on edges to Registry
trhille Oct 4, 2023
4eb8b82
Calculate higher-order fluxAcrossGroundingLine
trhille Oct 4, 2023
8be7fbb
Generalize layerThicknessEdgeFlux for all thickness advection
trhille Oct 4, 2023
1343d1d
Merge branch 'trhille/higher_order_flux_across_grounding_line' into M…
matthewhoffman Oct 9, 2023
7df9b12
Fix small conservation error when using fct thickness and tracer adve…
trhille Oct 19, 2023
81b36a9
Merge branch 'trhille/fix_fct_tracer_conservation_bug' into MALI-Dev/…
trhille Oct 26, 2023
4ec4101
Add RK2 loop in time integration module
trhille Aug 31, 2023
bf947b6
Pass rkTend to advection routine
trhille Aug 31, 2023
c703988
Finalize thickness and tracers at end of RK loop
trhille Aug 31, 2023
bf88eb8
Correct dimensions of rkTend
trhille Aug 31, 2023
220e2a4
Update halos for rkTend in each step of RK loop
trhille Aug 31, 2023
9ccdde6
Ensure damage >= damageNye after RK integration
trhille Aug 31, 2023
5d1e573
Generalize RK time integration
trhille Sep 3, 2023
278a5d7
Fix forward Euler time integration
trhille Sep 4, 2023
af21705
Rename files, modules, and routines to include Runge-Kutta
trhille Sep 4, 2023
63a169b
Add SSP-RK3 time integration
trhille Sep 4, 2023
b920b33
Update RK2 and RK4 substeps using 0th step solution
trhille Sep 6, 2023
dc33a67
Only use SSP RK2 and RK3 methods
trhille Sep 7, 2023
74c014f
Some cleanup
trhille Sep 7, 2023
e938e92
Add option for 4-stage SSPRK3
trhille Sep 20, 2023
f0c9a1f
Include SMB and BMB within RK loop
trhille Sep 21, 2023
79b4635
Fix SMB and BMB budget for forward euler
trhille Sep 22, 2023
413f304
Some more cleanup
trhille Oct 3, 2023
954ecce
Fix bug in groundedSfcMassBalApplied after Runge-Kutta loop
trhille Oct 4, 2023
606cbb0
Calculate groundedToFloatingThickness and grounding line flux after RK
trhille Oct 4, 2023
35fe8fa
Reset layerThickness when using config_restore_thickness_after_advection
trhille Oct 5, 2023
07fdc99
Update stresses and strain rates after calving
trhille Oct 6, 2023
f875198
Update thickness and tracer halos before velocity solve
trhille Oct 6, 2023
20fdec7
Update temperature and waterFrac in RK loop, but not enthalpy
trhille Oct 9, 2023
fbb6d6d
Simple clean-up after code review
trhille Oct 27, 2023
d7eac5c
Initialize RK weights to large negative values
trhille Oct 30, 2023
3bcd1d9
Restore calving front within RK loop
trhille Oct 30, 2023
13f0908
Remove support for config_rk_order = 1
trhille Oct 30, 2023
e7e1f30
Include calving in Runge-Kutta loop
trhille Oct 31, 2023
add0633
Calculate layerThickness after calving in RK loop
trhille Nov 2, 2023
7073b89
Revert "Calculate layerThickness after calving in RK loop"
trhille Nov 6, 2023
fb0315f
Revert "Include calving in Runge-Kutta loop"
trhille Nov 6, 2023
51802e1
Average fluxAcrossGroundingLineOnCells in time integration module
trhille Nov 6, 2023
ca28f5b
Add logic to control whether velocity is solved before and/or after c…
trhille Nov 8, 2023
4cda648
Make config_update_velocity_before_calving = .false. the default
trhille Nov 8, 2023
9ac9af2
Always update velocity after calving if it was not updated before cal…
trhille Nov 8, 2023
e2a2f0b
Move subglacial hydro and bed topography updates back to their former…
trhille Nov 8, 2023
859158a
Merge branch 'trhille/implement_rk_time_integration' into MALI-Dev/de…
matthewhoffman Nov 11, 2023
a8addcd
Keep previous heatDissipation when solver fails
matthewhoffman Jan 5, 2024
00a57d6
Merge branch 'matthewhoffman/mali/fix_dissipation_when_solver_fails' …
trhille Jan 5, 2024
2a5e068
Make bld files consistent with Registry changes
jonbob Jan 4, 2024
9af3b1e
Add new modules to landice.cmake
matthewhoffman Jan 16, 2024
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
6 changes: 6 additions & 0 deletions components/mpas-albany-landice/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,8 @@ if ($MALI_DYNAMIC eq 'TRUE') {
} else {
add_default($nl, 'config_tracer_advection', 'val'=>"none");
}
add_default($nl, 'config_horiz_tracer_adv_order');
add_default($nl, 'config_advection_coef_3rd_order');
add_default($nl, 'config_restore_thickness_after_advection');
add_default($nl, 'config_zero_sfcMassBalApplied_over_bare_land');

Expand Down Expand Up @@ -509,6 +511,7 @@ add_default($nl, 'config_damagecalvingParameter');
add_default($nl, 'config_ismip6_retreat_k');
add_default($nl, 'config_calving_error_threshold');
add_default($nl, 'config_distribute_unablatedVolumeDynCell');
add_default($nl, 'config_update_velocity_before_calving');

##################################
# Namelist group: thermal_solver #
Expand Down Expand Up @@ -574,6 +577,8 @@ add_default($nl, 'config_dynamic_thickness');

add_default($nl, 'config_dt');
add_default($nl, 'config_time_integration');
add_default($nl, 'config_rk_order');
add_default($nl, 'config_rk3_stages');
add_default($nl, 'config_adaptive_timestep');
add_default($nl, 'config_min_adaptive_timestep');
add_default($nl, 'config_max_adaptive_timestep');
Expand Down Expand Up @@ -635,6 +640,7 @@ add_default($nl, 'config_print_calving_info');
add_default($nl, 'config_print_thermal_info');
add_default($nl, 'config_always_compute_fem_grid');
add_default($nl, 'config_print_velocity_cleanup_details');
add_default($nl, 'config_check_tracer_monotonicity');

####################################
# Namelist group: subglacial_hydro #
Expand Down
6 changes: 6 additions & 0 deletions components/mpas-albany-landice/bld/build-namelist-section
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ add_default($nl, 'config_effective_pressure_max');

add_default($nl, 'config_thickness_advection');
add_default($nl, 'config_tracer_advection');
add_default($nl, 'config_horiz_tracer_adv_order');
add_default($nl, 'config_advection_coef_3rd_order');
add_default($nl, 'config_restore_thickness_after_advection');
add_default($nl, 'config_zero_sfcMassBalApplied_over_bare_land');

Expand Down Expand Up @@ -71,6 +73,7 @@ add_default($nl, 'config_damagecalvingParameter');
add_default($nl, 'config_ismip6_retreat_k');
add_default($nl, 'config_calving_error_threshold');
add_default($nl, 'config_distribute_unablatedVolumeDynCell');
add_default($nl, 'config_update_velocity_before_calving');

##################################
# Namelist group: thermal_solver #
Expand Down Expand Up @@ -136,6 +139,8 @@ add_default($nl, 'config_dynamic_thickness');

add_default($nl, 'config_dt');
add_default($nl, 'config_time_integration');
add_default($nl, 'config_rk_order');
add_default($nl, 'config_rk3_stages');
add_default($nl, 'config_adaptive_timestep');
add_default($nl, 'config_min_adaptive_timestep');
add_default($nl, 'config_max_adaptive_timestep');
Expand Down Expand Up @@ -197,6 +202,7 @@ add_default($nl, 'config_print_calving_info');
add_default($nl, 'config_print_thermal_info');
add_default($nl, 'config_always_compute_fem_grid');
add_default($nl, 'config_print_velocity_cleanup_details');
add_default($nl, 'config_check_tracer_monotonicity');

####################################
# Namelist group: subglacial_hydro #
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
<!-- advection -->
<config_thickness_advection>'fo'</config_thickness_advection>
<config_tracer_advection>'none'</config_tracer_advection>
<config_horiz_tracer_adv_order>3</config_horiz_tracer_adv_order>
<config_advection_coef_3rd_order>0.25</config_advection_coef_3rd_order>
<config_restore_thickness_after_advection>.false.</config_restore_thickness_after_advection>
<config_zero_sfcMassBalApplied_over_bare_land>.true.</config_zero_sfcMassBalApplied_over_bare_land>

Expand Down Expand Up @@ -62,6 +64,7 @@
<config_ismip6_retreat_k>-170.0</config_ismip6_retreat_k>
<config_calving_error_threshold>0.1</config_calving_error_threshold>
<config_distribute_unablatedVolumeDynCell>.false.</config_distribute_unablatedVolumeDynCell>
<config_update_velocity_before_calving>.false.</config_update_velocity_before_calving>

<!-- thermal_solver -->
<config_thermal_solver>'none'</config_thermal_solver>
Expand Down Expand Up @@ -115,6 +118,8 @@
<!-- time_integration -->
<config_dt>'0000-00-01_00:00:00'</config_dt>
<config_time_integration>'forward_euler'</config_time_integration>
<config_rk_order>2</config_rk_order>
<config_rk3_stages>3</config_rk3_stages>
<config_adaptive_timestep>.false.</config_adaptive_timestep>
<config_min_adaptive_timestep>3600.0</config_min_adaptive_timestep>
<config_max_adaptive_timestep>3.15e9</config_max_adaptive_timestep>
Expand All @@ -129,8 +134,8 @@
<!-- time_management -->
<config_do_restart>.false.</config_do_restart>
<config_restart_timestamp_name>'rpointer.glc'</config_restart_timestamp_name>
<config_start_time>'0000-01-01_00:00:00'</config_start_time>
<config_stop_time>'0000-01-01_00:00:00'</config_stop_time>
<config_start_time>'0001-01-01_00:00:00'</config_start_time>
<config_stop_time>'0001-01-01_00:00:00'</config_stop_time>
<config_run_duration>'none'</config_run_duration>
<config_calendar_type CALENDAR="NO_LEAP">'noleap'</config_calendar_type>
<config_calendar_type>'gregorian'</config_calendar_type>
Expand Down Expand Up @@ -159,6 +164,7 @@
<config_print_thermal_info>.false.</config_print_thermal_info>
<config_always_compute_fem_grid>.true.</config_always_compute_fem_grid>
<config_print_velocity_cleanup_details>.false.</config_print_velocity_cleanup_details>
<config_check_tracer_monotonicity>.false.</config_check_tracer_monotonicity>

<!-- subglacial_hydro -->
<config_SGH>.false.</config_SGH>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,15 +139,31 @@ Default: Defined in namelist_defaults.xml
category="advection" group="advection">
Selection of the method for advecting thickness ('fo' = first-order upwinding).

Valid values: 'fo', 'none'
Valid values: 'fo', 'fct', 'none'
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_tracer_advection" type="char*1024"
category="advection" group="advection">
Selection of the method for advecting tracers.

Valid values: 'fo', 'none'
Valid values: 'fo', 'fct', 'none'
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_horiz_tracer_adv_order" type="integer"
category="advection" group="advection">
Order of polynomial used for tracer reconstruction at cell edges

Valid values: 2, 3 and 4
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_advection_coef_3rd_order" type="real"
category="advection" group="advection">
Reconstruction of 3rd-order reconstruction to blend with 4th-order reconstuction. Equivalent to beta in Skamarock and Gassmann (2011) eq. 7. 0 is fully 4th order, 1 is fully 3rd order.

Valid values: any real between 0 and 1
Default: Defined in namelist_defaults.xml
</entry>

Expand Down Expand Up @@ -469,6 +485,14 @@ Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_update_velocity_before_calving" type="logical"
category="calving" group="calving">
If true, add an additional velocity solve between advection and calving. If false, use velocity field from beginning of time step to calculate calving rate. For certain calving laws, like damage threshold calving, it is not necessary to update the velocity before calving, while for von Mises stress and eigencalving, it is more accurate to have an updated velocity state before solving for calvingThickness.

Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>


<!-- thermal_solver -->

Expand Down Expand Up @@ -835,9 +859,25 @@ Default: Defined in namelist_defaults.xml

<entry id="config_time_integration" type="char*1024"
category="time_integration" group="time_integration">
Time integration method (currently, only forward Euler is supported).
Time integration method.

Valid values: 'forward_euler'
Valid values: 'forward_euler' or 'runge_kutta'
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_rk_order" type="integer"
category="time_integration" group="time_integration">
Order of Runge-Kutta time integration to use. A value of 1 would be equivalent to forward euler, but will cause an error to avoid unnecessary redundancy. Values of 2 and 3 indicate strong-stability preserving RK2 and RK3. There is currently no support for classical RK2 or RK4 methods.

Valid values: 2 or 3
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_rk3_stages" type="integer"
category="time_integration" group="time_integration">
Number of stages for strong stability preserving RK3 time integration. If set to 3, this involves 3 velocity solves and a maximum CFL fraction of 1. If set to 4, this involves 4 velocity solves, but the maximum CFL fraction is 2.

Valid values: 3 or 4
Default: Defined in namelist_defaults.xml
</entry>

Expand Down Expand Up @@ -1133,6 +1173,14 @@ Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_check_tracer_monotonicity" type="logical"
category="debug" group="debug">
Check tracer monotonicity at the end of the monotonic advection routine and write warnings to log file if not monotonic.

Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>


<!-- subglacial_hydro -->

Expand Down
53 changes: 44 additions & 9 deletions components/mpas-albany-landice/src/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<dim name="nISMIP6OceanLayers" units="unitless"
description="The number of layers in the ISMIP6 ocean temperature dataset."
/>
<dim name="maxTracersAdvect" definition="2" units="unitless"
<dim name="maxTracersAdvect" definition="4" units="unitless"
description="The maximum number of tracers to be advected."
/>
<dim name="nRegions" definition="1" units="unitless"
Expand Down Expand Up @@ -110,12 +110,20 @@
<nml_record name="advection" in_defaults="true">
<nml_option name="config_thickness_advection" type="character" default_value="fo" units="unitless"
description="Selection of the method for advecting thickness ('fo' = first-order upwinding)."
possible_values="'fo', 'none'"
possible_values="'fo', 'fct', 'none'"
/>
<nml_option name="config_tracer_advection" type="character" default_value="none" units="unitless"
description="Selection of the method for advecting tracers."
possible_values="'fo', 'none'"
/>
possible_values="'fo', 'fct', 'none'"
/>
<nml_option name="config_horiz_tracer_adv_order" type="integer" default_value="3" units="unitless"
description="Order of polynomial used for tracer reconstruction at cell edges"
possible_values="2, 3 and 4"
/>
<nml_option name="config_advection_coef_3rd_order" type="real" default_value="0.25" units="unitless"
description="Reconstruction of 3rd-order reconstruction to blend with 4th-order reconstuction. Equivalent to beta in Skamarock and Gassmann (2011) eq. 7. 0 is fully 4th order, 1 is fully 3rd order."
possible_values="any real between 0 and 1"
/>
<nml_option name="config_restore_thickness_after_advection" type="logical" default_value=".false." units="unitless"
description="If true, reset thickness to values at previous timestep after advection occurs. This is used for spinning up tracer fields such as damage. When this is true, geometry changes from surface and basal mass balance (grounded or floating) and facemelting are not retained, but changes from calving are."
possible_values=".true. or .false."
Expand Down Expand Up @@ -284,6 +292,10 @@
description="If true, then distribute unablatedVolumeDynCell among dynamic neighbors when converting ablation velocity to ablation thickness. This should only be used as a clean-up measure, while limiting the timestep based on ablation velocity should be used as the primary method of getting accurate ablation thickness from ablation velocity. If you choose to set config_adaptive_timestep_calvingCFL_fraction much larger than 1.0 (which is not recommended), setting this option to true usually results in more accurate calving behavior. "
possible_values=".true. or .false."
/>
<nml_option name="config_update_velocity_before_calving" type="logical" default_value=".false." units="unitless"
description="If true, add an additional velocity solve between advection and calving. If false, use velocity field from beginning of time step to calculate calving rate. For certain calving laws, like damage threshold calving, it is not necessary to update the velocity before calving, while for von Mises stress and eigencalving, it is more accurate to have an updated velocity state before solving for calvingThickness."
possible_values=".true. or .false."
/>
</nml_record>

<nml_record name="thermal_solver" in_defaults="true">
Expand Down Expand Up @@ -477,8 +489,16 @@
possible_values="Any time interval of the format 'YYYY-MM-DD_HH:MM:SS', but limited by CFL condition."
/>
<nml_option name="config_time_integration" type="character" default_value="forward_euler" units="unitless"
description="Time integration method (currently, only forward Euler is supported)."
possible_values="'forward_euler'"
description="Time integration method."
possible_values="'forward_euler' or 'runge_kutta'"
/>
<nml_option name="config_rk_order" type="integer" default_value="2" units="unitless"
description="Order of Runge-Kutta time integration to use. A value of 1 would be equivalent to forward euler, but will cause an error to avoid unnecessary redundancy. Values of 2 and 3 indicate strong-stability preserving RK2 and RK3. There is currently no support for classical RK2 or RK4 methods."
possible_values="2 or 3"
/>
<nml_option name="config_rk3_stages" type="integer" default_value="3" units="stages"
description="Number of stages for strong stability preserving RK3 time integration. If set to 3, this involves 3 velocity solves and a maximum CFL fraction of 1. If set to 4, this involves 4 velocity solves, but the maximum CFL fraction is 2."
possible_values="3 or 4"
/>
<nml_option name="config_adaptive_timestep" type="logical" default_value=".false." units="unitless"
description="Determines if the time step should be adjusted based on the CFL condition or should be steady in time. If true, the config_dt_* options are ignored."
Expand Down Expand Up @@ -533,11 +553,11 @@
description="Path to the filename for restart timestamps to be read and written from."
possible_values="Path to a file."
/>
<nml_option name="config_start_time" type="character" default_value="0000-01-01_00:00:00" units="unitless"
<nml_option name="config_start_time" type="character" default_value="0001-01-01_00:00:00" units="unitless"
description="Timestamp describing the initial time of the simulation. If it is set to 'file', the initial time is read from the filename specified by config_restart_timestamp_name (defaults to 'restart_timestamp')."
possible_values="'YYYY-MM-DD_HH:MM:SS' (items in the format string may be dropped from the left if not needed, and the components on either side of the underscore may be replaced with a single integer representing the rightmost unit)"
/>
<nml_option name="config_stop_time" type="character" default_value="0000-01-01_00:00:00" units="unitless"
<nml_option name="config_stop_time" type="character" default_value="0001-01-01_00:00:00" units="unitless"
description="Timestamp describing the final time of the simulation. If it is set to 'none' the final time is determined from config_start_time and config_run_duration. If config_run_duration is also specified, it takes precedence over config_stop_time. Set config_stop_time to be equal to config_start_time (and config_run_duration to 'none') to perform a diagnostic solve only."
possible_values="'YYYY-MM-DD_HH:MM:SS' or 'none' (items in the format string may be dropped from the left if not needed, and the components on either side of the underscore may be replaced with a single integer representing the rightmost unit)"
/>
Expand Down Expand Up @@ -638,6 +658,10 @@
description="After velocity is calculated there are a few checks for appropriate values in certain geometric configurations. Setting this option to .true. will cause detailed information about those adjustments to be printed."
possible_values=".true. or .false."
/>
<nml_option name="config_check_tracer_monotonicity" type="logical" default_value=".false."
description="Check tracer monotonicity at the end of the monotonic advection routine and write warnings to log file if not monotonic."
possible_values=".true. or .false."
/>
</nml_record>


Expand Down Expand Up @@ -741,6 +765,7 @@
<var name="uReconstructX" packages="higherOrderVelocity"/>
<var name="uReconstructY" packages="higherOrderVelocity"/>
<var name="basalFrictionFlux"/>
<var name="passiveTracer2d"/>
<var name="damage"/>
<var name="calvingVelocityData"/>
<var name="basalMeltInput" packages="hydro"/>
Expand Down Expand Up @@ -850,6 +875,7 @@
<var name="waterPressure" packages="hydro"/>
<var name="channelArea" packages="hydro"/> <!-- this is only needed if running with channels - could be package-controlled -->
<var name="waterFluxMask" packages="hydro"/>
<var name="passiveTracer2d"/>
<var name="damage"/>
<var name="calvingVelocityData"/>
<var name="damageMax"/>
Expand Down Expand Up @@ -1207,9 +1233,12 @@ is the value of that variable from the *previous* time level!
<var name="floatingBasalMassBalApplied" type="real" dimensions="nCells Time" units="kg m^{-2} s^{-1}"
description="Applied basal mass balance on floating regions"
/>
<var name="calvingMask" type="integer" dimensions="nCells Time" units="m" time_levs="1"
<var name="calvingMask" type="integer" dimensions="nCells Time" units="" time_levs="1"
description="mask of grid cells that should be calved. 0=no calving, 1=should be calved"
/>
<var name="openOceanMask" type="integer" dimensions="nCells Time" units="" time_levs="1"
description="mask of open ocean cells, including floating non-dynamic cells. Used to eliminate holes in ice shelf from calving"
/>
<var name="calvingFrontMask" type="integer" dimensions="nCells Time" units="none" time_levs="1"
description="mask of the calving front position on cells"
/>
Expand Down Expand Up @@ -1270,6 +1299,9 @@ is the value of that variable from the *previous* time level!
<var name="calvingVelocityData" type="real" dimensions="nCells Time" units="m s^{-1}" time_levs="1"
description="rate of calving front retreat due to calving, represented as a velocity normal to the calving front (in the x-y plane), given by the input netCDF file."
/>
<var name="passiveTracer2d" type="real" dimensions="nCells Time" units="none" time_levs="1"
description="passive tracer used to verify advection routines"
/>
<var name="damage" type="real" dimensions="nCells Time" units="none" time_levs="1"
description="Damage is parameterized as the local ice thickness divided by the fracture depth, such that unfractured ice has damage=0 and ice fractured through its full thickness has damage=1"
/>
Expand Down Expand Up @@ -1413,6 +1445,9 @@ is the value of that variable from the *previous* time level!
<var name="layerNormalVelocity" type="real" dimensions="nVertLevels nEdges Time" units="m s^{-1}"
description="horizonal velocity, normal component to an edge, layer midpoint"
/>
<var name="layerThicknessEdgeFlux" type="real" dimensions="nVertLevels nEdges Time" units="m^2 s^{-1}"
description="layer-normal thickness flux on edges"
/>
<var name="normalVelocityInitial" type="real" dimensions="nVertInterfaces nEdges Time" units="m s^{-1}"
description="horizonal velocity, normal component to an edge, computed at initialization"
/>
Expand Down
Loading