Skip to content

Commit

Permalink
Merge pull request #7 from NCAR/lipscomb/misomip_cleanup
Browse files Browse the repository at this point in the history
Changes from MISOMIP branch to support marine ice sheets

This commit includes many changes made on the MISOMIP branch over the past several months. The changes were made with the initial goal of supporting MISMIP+ and ISOMIP+ experiments,
and the longer-term goal of enabling simulations of marine ice in real ice sheets.

The following are the major changes:

* A new module (glissade_bmlt_float.F90) to support different options for sub-shelf melting
* A subgrid calving front parameterization based on Albrecht et al. (2011), whereby calving-front cells are treated as partly filled cells whose effective thickness is derived from cells upstream
* New masks to support the subgrid calving front scheme
* New calving options, including thickness-based calving and eigencalving, that use the subgrid calving front scheme
* An option to limit the thickness of marine ice cliffs
* An option to turn off basal melt in partly grounded cells
* Various numerical changes to make marine ice simulations more stable
* A change in order of operations, putting the addition of SMB/BMB before horizontal transport
* New diagnostics for global mass conservation and fluxes
* Improved support for outflow boundary conditions
* Support for an adaptive time step based on the maximum CFL number
* Changes in grounding-line computations, to make the GLP more robust and the logic simpler
* Modified lateral boundary condition for grounded marine-based ice
* Preliminary work toward a plume model of subshelf melting
* Some new diagnostic fields, including grounding-line fluxes
* Various code cleanup

Many of these commits are answer-changing for non-default settings, and a few are answer-changing for default settings. The changes are relatively small, generally ~1-2% or less for standard LIVV tests (dome, ISMIP_HOM, confined shelf, circular shelf) and for MISMIP+.

Some of these changes, including the unfinished plume model, will likely be redacted before the CISM2.1 release. Others may be labeled as preliminary and not fully supported.
  • Loading branch information
billsacks authored Nov 22, 2017
2 parents cb01a9d + d7f99fe commit a8dab7f
Show file tree
Hide file tree
Showing 50 changed files with 17,614 additions and 3,858 deletions.
8 changes: 6 additions & 2 deletions cism_driver/cism_front_end.F90
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ subroutine cism_init_dycore(model)

use glide_stop, only: glide_finalise
use glide_diagnostics
use glimmer_paramets, only: thk0

implicit none

Expand Down Expand Up @@ -215,7 +216,8 @@ subroutine cism_init_dycore(model)

call t_startf('initial_write_diagnostics')
call glide_write_diagnostics(model, time, &
tstep_count = model%numerics%tstep_count)
tstep_count = model%numerics%tstep_count, &
minthick_in = model%numerics%thklim*thk0) ! m
call t_stopf('initial_write_diagnostics')

end if ! whichdycore .ne. DYCORE_BISICLES
Expand Down Expand Up @@ -253,6 +255,7 @@ subroutine cism_run_dycore(model)

use glide_stop, only: glide_finalise
use glide_diagnostics
use glimmer_paramets, only: thk0

implicit none

Expand Down Expand Up @@ -343,7 +346,8 @@ subroutine cism_run_dycore(model)

call t_startf('write_diagnostics')
call glide_write_diagnostics(model, time, &
tstep_count = model%numerics%tstep_count)
tstep_count = model%numerics%tstep_count, &
minthick_in = model%numerics%thklim*thk0) ! m
call t_stopf('write_diagnostics')

! update time from dycore advance
Expand Down
5 changes: 3 additions & 2 deletions libglad/glad_initialise.F90
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ subroutine glad_i_initialise_gcm(config, instance, &

! Initialise a GLAD ice model instance for GCM coupling

use glimmer_paramets, only: GLC_DEBUG
use glimmer_paramets, only: GLC_DEBUG, thk0
use glimmer_log
use glimmer_config
use glimmer_coordinates, only : coordsystem_new
Expand Down Expand Up @@ -263,7 +263,8 @@ subroutine glad_i_initialise_gcm(config, instance, &

call glide_write_diagnostics(instance%model, &
instance%model%numerics%time, &
tstep_count = instance%model%numerics%tstep_count)
tstep_count = instance%model%numerics%tstep_count, &
minthick_in = instance%model%numerics%thklim*thk0) ! m

! Write netCDF output for this instance

Expand Down
4 changes: 2 additions & 2 deletions libglad/glad_io.F90.default
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! WARNING: this file was automatically generated on
! Sun, 21 May 2017 18:06:10 +0000
! Thu, 16 Nov 2017 22:28:05 +0000
! from ncdf_template.F90.in
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Expand All @@ -12,7 +12,7 @@

!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!
! glad_io.F90.default - part of the Community Ice Sheet Model (CISM)
! ncdf_template.F90.in - part of the Community Ice Sheet Model (CISM)
!
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!
Expand Down
4 changes: 2 additions & 2 deletions libglad/glad_mbal_io.F90.default
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! WARNING: this file was automatically generated on
! Sun, 21 May 2017 18:06:11 +0000
! Thu, 16 Nov 2017 22:28:05 +0000
! from ncdf_template.F90.in
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Expand All @@ -12,7 +12,7 @@

!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!
! glad_mbal_io.F90.default - part of the Community Ice Sheet Model (CISM)
! ncdf_template.F90.in - part of the Community Ice Sheet Model (CISM)
!
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!
Expand Down
2 changes: 1 addition & 1 deletion libglad/glad_output_fluxes.F90
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ subroutine accumulate_output_fluxes(output_fluxes, model)

! Convert to kg/m^2/s
output_fluxes%rofl_sum(:,:) = output_fluxes%rofl_sum(:,:) &
+ model%temper%bmlt(:,:) * thk0/tim0 * rhoi
+ model%basal_melt%bmlt(:,:) * thk0/tim0 * rhoi

!--------------------------------------------------------------------
! Accumulate basal heat flux
Expand Down
3 changes: 2 additions & 1 deletion libglad/glad_timestep.F90
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,8 @@ subroutine glad_i_tstep_gcm(time, instance, &

call glide_write_diagnostics(instance%model, &
instance%model%numerics%time, &
tstep_count = instance%model%numerics%tstep_count)
tstep_count = instance%model%numerics%tstep_count, &
minthick_in = instance%model%numerics%thklim*thk0) ! m

! write netCDF output

Expand Down
10 changes: 5 additions & 5 deletions libglide/glide.F90
Original file line number Diff line number Diff line change
Expand Up @@ -391,8 +391,8 @@ subroutine glide_initialise(model)

call register_model(model)

! initialise model diagnostics \
! initialise model diagnostics

call glide_init_diag(model)

!WHL - debug
Expand Down Expand Up @@ -586,13 +586,13 @@ subroutine glide_init_state_diagnostic(model, evolve_ice)
model%geomderv%dusrfdns, &
model%velocity%ubas, &
model%velocity%vbas, &
model%temper%bmlt, &
model%basal_melt%bmlt, &
GLIDE_IS_FLOAT(model%geometry%thkmask))

! Note: calcbwat computes stagbwat
call calcbwat(model, &
model%options%whichbwat, &
model%temper%bmlt, &
model%basal_melt%bmlt, &
model%temper%bwat, &
model%temper%bwatflx, &
model%geometry%thck, &
Expand Down Expand Up @@ -857,7 +857,7 @@ subroutine glide_tstep_p1(model,time)
! Update hydrology, if needed ------------------------------------------------
call calcbwat(model, &
model%options%whichbwat, &
model%temper%bmlt, &
model%basal_melt%bmlt, &
model%temper%bwat, &
model%temper%bwatflx, &
model%geometry%thck, &
Expand Down
Loading

0 comments on commit a8dab7f

Please sign in to comment.