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

New treatment of ice shelf boundaries #467

Merged
merged 1 commit into from
Oct 7, 2023

Conversation

alex-huth
Copy link

Previously, ice-shelf Dirichlet boundary conditions only allowed u-velocity and v-velocity to be set to the same value (which is enforced by setting the value of parameters u_face_mask or v_face_mask to 3). This functionality is retained here, but now setting u_face_mask or v_face_mask to 5 enforces a Dirichlet boundary for u-velocity only along the respective cell face. Similarly, setting u_face_mask or v_face_mask to 6 enforces the Dirichlet boundary for v-velocity only along the respective cell face. This functionality is required for most ice-sheet modeling configurations, e.g. the idealized MISMIP+ configuration requires setting v-velocity only to 0 along its lateral boundaries, but with free-slip conditions enforced for u-velocity. Adding this capability required changes throughout the ice-shelf code.

Further changes were needed for how driving stress and Neumann conditions at computational boundaries are calculated in subroutine calc_shelf_driving_stress, and calls to subroutine apply_boundary_values were eliminated because they were not justified and caused errors. The new boundary treatment was tested by comparing simulated and analytical solutions for 1-D ice shelf flow with free-slip lateral boundary conditions and steady inflow enforced at the upstream boundary. This test required the addition of a new parameter ADVECT_SHELF, which if false (as in the 1-D test case), turns off ice-shelf thickness evolution. By default, ADVECT_SHELF=True.

The new boundary treatment was also justified in 2-D by correctly simulating the expected MISMIP+ steady-state.

@codecov
Copy link

codecov bot commented Aug 24, 2023

Codecov Report

Merging #467 (2a189b2) into dev/gfdl (e2deaec) will decrease coverage by 0.01%.
The diff coverage is 0.00%.

❗ Current head 2a189b2 differs from pull request most recent head a0c20c8. Consider uploading reports for the commit a0c20c8 to get more accurate results

@@             Coverage Diff              @@
##           dev/gfdl     #467      +/-   ##
============================================
- Coverage     37.83%   37.83%   -0.01%     
============================================
  Files           270      270              
  Lines         78336    78340       +4     
  Branches      14500    14503       +3     
============================================
  Hits          29639    29639              
- Misses        43293    43297       +4     
  Partials       5404     5404              
Files Coverage Δ
src/ice_shelf/MOM_ice_shelf_initialize.F90 0.00% <0.00%> (ø)
src/ice_shelf/MOM_ice_shelf_dynamics.F90 0.00% <0.00%> (ø)

... and 1 file with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

Copy link
Member

@Hallberg-NOAA Hallberg-NOAA left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem sensible after a visual inspection, and this code does compile.

We are not yet testing the ice-shelf dynamics code or using it in any active configurations. As written, these changes seem safe enough, but once the series of ~10 PRs are accepted to bring the ice-shelf dynamics up to the point where it is working properly in the first few test cases, the entirety of the MOM6 ice-shelf code should undergo a comprehensive code review, including extensive self-consistency testing. For now, though, it is my recommendation that we should accept this PR.

Previously, ice-shelf Dirichlet boundary conditions only allowed u-velocity and v-velocity to be set to the same value (which is enforced by setting the value of parameters u_face_mask or v_face_mask to 3). This functionality is retained here, but now setting u_face_mask or v_face_mask to 5 enforces a Dirichlet boundary for u-velocity only along the respective cell face. Similarly, setting u_face_mask or v_face_mask to 6 enforces the Dirichlet boundary for v-velocity only along the respective cell face. This functionality is required for most ice-sheet modeling configurations, e.g. the idealized MISMIP+ configuration requires setting v-velocity only to 0 along its lateral boundaries, but with free-slip conditions enforced for u-velocity. Adding this capability required changes throughout the ice-shelf code.

Further changes were needed for how driving stress and Neummann conditions at computational boundaries are calculated in subroutine calc_shelf_driving_stress, and calls to subroutine apply_boundary_values were eliminated because they were not justified and caused errors. The new boundary treatment was tested by comparing simulated and analytical solutions for 1-D ice shelf flow with free-slip lateral boundary conditions and positive u_velocity enforced at the western boundary. This required the addition of a new parameter ADVECT_SHELF, which if false (as in the 1-D test case), turns off ice-shelf thickness evolution. By default, ADVECT_SHELF=True.

The new boundary treatment was also justified in 2-D by correctly simulating the expected MISMIP+ steady-state.
@Hallberg-NOAA
Copy link
Member

This has passed pipeline testing at https://gitlab.gfdl.noaa.gov/ogrp/MOM6/-/pipelines/20857.

@Hallberg-NOAA Hallberg-NOAA merged commit 3650339 into NOAA-GFDL:dev/gfdl Oct 7, 2023
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants