Add regularized coulomb & debris friction tests for MISMIP+#938
Add regularized coulomb & debris friction tests for MISMIP+#938matthewhoffman wants to merge 9 commits intoMPAS-Dev:mainfrom
Conversation
Also add it to the full integration suite
* shorten smoke test length * add fallback for core_per_node
Refactor smoke_test and run_model for MISMIP+ case to support 3 variants: weertman, regularized coulomb, debris friction Each has a different yaml file, which is selected based on the variant.
8e98237 to
2d041e8
Compare
| # Side Set Discretizations: | ||
| # basalside: | ||
| # Exodus Output File Name: albany_output_basal.exo | ||
|
|
There was a problem hiding this comment.
Do we need to set a uniform Flow Rate, or the default one based on the temperature is correct?
There was a problem hiding this comment.
The spinup uses this uniform flow rate, it's one of the parameters set as a constant for the intercomparison project
There was a problem hiding this comment.
Are the flow rate lines supposed to be in their own section LandIce Viscosity , or is it okay to set them there under Basal Friction Coefficient?
There was a problem hiding this comment.
Are the flow rate lines supposed to be in their own section
LandIce Viscosity, or is it okay to set them there underBasal Friction Coefficient?
The flow-rate lines in the Basal Friction Coefficient section are only used for the boundary condition. If they are not specified in the Basal Friction Coefficient section, they are inferred from the ones in the LandIce Viscosity.
| Mu Type: Field | ||
| Power Exponent: 0.3333333333 | ||
| Effective Pressure Type: Hydrostatic Computed at Nodes | ||
| Zero Beta On Floating Ice: true |
There was a problem hiding this comment.
Zero Beta On Floating Ice: true
This is no longer needed. It's on if glp is enabled. It goes to zero anyway on nodes on floating ice.
|
|
||
| with xr.open_dataset(mesh_filename) as ds_mesh: | ||
| ds_mesh['muFriction'].loc[:] = 0.4 | ||
| ds_mesh['bedRoughnessBC'] = xr.full_like(ds_mesh['muFriction'], |
There was a problem hiding this comment.
I think this should be bedRoughnessRC.
I also think the value here for bedRoughnessRC should be multiplied by 1000. If I recall correctly, when the value is set in the mesh, we use MPAS units (m^-1). But if it's set in the albany_input.yaml file, we use Albany units (km^-1). Is that correct? I checked LandIce_BasalFrictionCoefficient_Def.hpp and Interface.cpp but didn't see any scaling applied...
There was a problem hiding this comment.
bed roughness in is [m] in MPAS / netcdf grid, and in [km] in Albany / exodus grid.
The conversion happens in the Interface_velocity_solver.cpp file
|
|
||
| with xr.open_dataset(mesh_filename) as ds_mesh: | ||
| ds_mesh['muFriction'].loc[:] = 0.4 | ||
| ds_mesh['bedRoughnessBC'] = xr.full_like(ds_mesh['muFriction'], |
There was a problem hiding this comment.
I think this should be bedRoughnessRC.
| ds_mesh['bedRoughnessBC'] = xr.full_like(ds_mesh['muFriction'], | ||
| 6000.0) | ||
| ds_mesh['basalDebrisFactor'] = xr.where( | ||
| ds_mesh['xCell'] < 200000.0, 3.2e-2, 0.0) |
There was a problem hiding this comment.
We may as well add bulkFriction coefficient for testing too?
ds_mesh['bulkFriction'] = xr.where(
ds_mesh['xCell'] < 400000.0, 0.005, 0.0)
There was a problem hiding this comment.
@jeremy-brooks-1 , is the x value where this changes meant to be different than that for basaDebrisFactor?
|
Update: this appears ready to merge, barring any further adjustments from @mperego and @jeremy-brooks-1 . But we will wait to merge until the MALI-Dev/E3SM PR is merged and the submodule can be updated. |



This PR adds new MALI tests for the new debris friction law capability and the existing regularized coulomb capability. It adds variants to the MISMIP+ smoke test for these friction laws and the existing weertman friction law. Each of three variants have separate yaml files appropriate for that friction law. The standard input file consisting of a spunup 2km state is modified for the regularized coulomb and debris friction variants to use appropriate parameters values as input fields. These are not meant to be consistent with the spunup glacier state in the file, but allow the smoke test to test each of the 3 friction laws for a reasonable glacier state. The PR also adds the RC and DF variants to the full_integration suite so that we have test coverage for those friction laws.
Checklist
api.rst) has any new or modified class, method and/or functions listedMALI-Devsubmodule has been updated with relevant MALI changesTestingin this PR) any testing that was used to verify the changes