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

Lipscomb/hma glaciers4 #63

Open
wants to merge 100 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
9d66b78
Made the Glen flow-law exponent 'n' a config variable
whlipscomb Apr 20, 2021
96873ff
Do not call init_isostasy unless isostasy = 1
whlipscomb Apr 21, 2021
0cd3a38
Minor code changes to support the slab test
whlipscomb Jul 31, 2021
61d01a2
Debugged and extended the Dukowicz slab test case
whlipscomb Jul 31, 2021
2c0b4ba
Updated the slab README file
whlipscomb Aug 5, 2021
dc7c898
Changes in the L1L2 solver algorithm
whlipscomb Nov 8, 2021
8a1d3c1
Minor changes in the slab test
whlipscomb Nov 8, 2021
acfd21d
Added a hybrid SIA/SSA solver
whlipscomb Nov 8, 2021
ca6bac7
Final version of L1L2 for TC paper by Robinson et al.
whlipscomb Nov 17, 2021
95dbeb8
Added a flux-routing basal water scheme for Glissade
whlipscomb Apr 5, 2021
d4a4bb7
Parallelized the flux-routing basal water scheme
whlipscomb Apr 19, 2021
c4d394e
More work on flux routing scheme
whlipscomb May 14, 2021
16d5918
Basal hydrology changes to support N. Hemisphere ice sheets
whlipscomb May 23, 2021
3dd890c
Implemented an efficient depression-filling algorithm
whlipscomb May 27, 2021
e2c030b
Bug fixes and cleanup for the EISMINT-2 tests
whlipscomb Aug 24, 2021
3c1c833
Added a Glissade directory for the EISMINT-2 tests
whlipscomb Aug 26, 2021
38885bb
Fixed tf_anomaly initialization
whlipscomb Aug 11, 2021
9b5cc1a
Added Zoet-Iverson sliding law
whlipscomb Aug 6, 2021
de92a21
Modified effecpress, powerlaw_c and coulomb_c options
whlipscomb Sep 6, 2021
2731cf1
Added a coulomb_c elevation option
whlipscomb Sep 14, 2021
d5cf352
Renamed powerlaw_c and coulomb_c constants and fields
whlipscomb Sep 17, 2021
cdf6c80
Removed some ISMIP6-specific I/O options
whlipscomb Sep 17, 2021
ef7054d
Removed the old plume model
whlipscomb Sep 17, 2021
82c4467
Removed the old bmlt inversion scheme
whlipscomb Sep 18, 2021
be7ed04
Do not return bwat from the flux-routing scheme
whlipscomb Oct 14, 2021
4e44616
New functional form for effecpress dependence on bwatflx
whlipscomb Oct 20, 2021
325968d
Added halo updates for bwatflx and effecpress
whlipscomb Oct 22, 2021
d6209a0
Fixed a potential divzero in glissade_grid_operators
whlipscomb Oct 23, 2021
2d6c5ba
Added a velocity target for powerlaw_c and coulomb_c inversion
whlipscomb Dec 4, 2021
40c0d10
Added a relaxation time scale for ocean_p
whlipscomb Jan 10, 2022
15f701c
Changed in inversion initialization
whlipscomb Jan 10, 2022
0a1a80b
Added a relaxation option for mask-based calving
whlipscomb Jan 10, 2022
6d723d9
Added an inversion option for basin-scale flow factors
whlipscomb Feb 2, 2022
a7210e4
Added a term to the coulomb_c inversion equation
whlipscomb Feb 9, 2022
6893dc5
Check and replace fill values
whlipscomb Apr 19, 2022
c0aee67
Changed initialization logic for f_effecpress variables
whlipscomb Jul 6, 2022
2eedb8c
Added an option to invert locally for deltaT_ocn
whlipscomb Jul 28, 2022
e3de77b
Inversion changes: flow_enhancement_factor inversion and relaxation t…
whlipscomb Aug 8, 2022
9c1ede5
Modified flow_factor entry in test config files
whlipscomb Aug 8, 2022
afb2fe3
Simplified the calving mask code
whlipscomb Sep 2, 2022
c9c7a71
Option to set deltaT_ocn based on observed ice thinning rate
whlipscomb Sep 17, 2022
3c48a34
Limit negative deltaT_ocn and support new dH_dt correction
whlipscomb Oct 25, 2022
edf3bc1
Use basin-average deltaT_ocn and dthck_dt_obs for ISMIP6 Antarctic pr…
whlipscomb Oct 31, 2022
ec7628e
Changes in f_ground requirements for icebergs, isthmuses, forced retreat
whlipscomb Nov 11, 2022
fd5aebc
New glacier module with an initialization subroutine
whlipscomb Jan 22, 2022
3dcfdb8
Added runtime glacier subroutines
whlipscomb Feb 18, 2022
0110178
Support exact restart for glacier runs
whlipscomb Feb 23, 2022
b559f6b
Glacier mods for inversion and advance/retreat
whlipscomb Mar 4, 2022
281eb40
Added a glacier section in the config file
whlipscomb Mar 4, 2022
6030bbb
Added glacier diagnostics to the log file
whlipscomb Mar 4, 2022
e7c95d3
Glacier fixes for powerlaw_c and acab_applied
whlipscomb Mar 5, 2022
e6e33d9
Changed thickness criterion for glacier advance/retreat
whlipscomb Mar 5, 2022
ca97f83
Changed the glacier volume inversion method
whlipscomb Mar 8, 2022
7ad2030
Use a uniform temperature lapse rate for glacier SMB
whlipscomb Mar 14, 2022
783c18b
Modified inversion for glacier powerlaw_c
whlipscomb Mar 18, 2022
9d96ed4
Compute glacier advance/retreat only once a year
whlipscomb Mar 30, 2022
e42bf6e
Added glacier_mu_star to the restart file
whlipscomb Aug 16, 2022
2043f8f
Glacier diagnostic fix
whlipscomb Aug 19, 2022
303ba1e
Added an option to set a uniform artm anomaly
whlipscomb Aug 21, 2022
d1f3537
Fixed after a rebase
whlipscomb Nov 11, 2022
f8aea01
Support for reading and using the observed glacier SMB
whlipscomb Nov 15, 2022
5a7b873
Added a method to adjust artm so that SMB = 0 during spin-up
whlipscomb Nov 30, 2022
47291ea
Added a relaxation term to powerlaw_c inversion for glaciers
whlipscomb Nov 30, 2022
d141079
Compute snowfall from precip and downscaled artm
whlipscomb Dec 4, 2022
2a83d33
Option to read forcing files just once, at initialization
whlipscomb Dec 10, 2022
4afbea0
Added an option to read a shuffled list of forcing years
whlipscomb Dec 19, 2022
0717c2c
Option to reduce snowfall outside the initial glacier mask
whlipscomb Jan 12, 2023
281d0fb
Added glacier option match_smb_obs
whlipscomb Feb 4, 2023
b1bc119
Support 2-parameter glacier inversion (mu_star and snow_factor)
whlipscomb Apr 7, 2023
a79ac23
Option to read multiple forcing files just once
whlipscomb Apr 11, 2023
b1ca30c
Changed the SMB computation around glacier margins
whlipscomb May 16, 2023
ebc67d7
Added a temperature correction term for 2-parameter inversion
whlipscomb Jun 3, 2023
ca5869a
Changed glacier variable names to alpha_snow, beta_artm_aux
whlipscomb Jun 3, 2023
c261d06
Made some glacier inversion parameters user-configurable
whlipscomb Jun 3, 2023
24bc1fd
Added a glacier area scale factor based on latitute
whlipscomb Jun 3, 2023
ae5afa3
Changed some timing logic in glissade_glacier_update
whlipscomb Jun 4, 2023
23bcce6
Added verbose output for read_once forcing
whlipscomb Jun 4, 2023
294dfd7
Apply the glacier SMB uniformly through the year
whlipscomb Jul 25, 2023
2141907
Added an elevation correction for the recent glacier climate
whlipscomb Aug 4, 2023
a664da4
Distinguish baseline and RGI dates; streamline tuning for mu, alpha, …
whlipscomb Aug 20, 2023
f888b6a
Replaced auxiliary climate forcing with anomaly forcing
whlipscomb Aug 23, 2023
111a93a
Minor glacier bug fixes
whlipscomb Aug 25, 2023
e618fb0
Modified treatment of glacier boundaries
whlipscomb Sep 1, 2023
e050f61
Added inversion logic for glacier updates
whlipscomb Sep 1, 2023
c1f9561
Support anomaly forcing in forward glacier runs
whlipscomb Sep 8, 2023
fb41a21
Changes to support Intel compiler build
whlipscomb Sep 15, 2023
c8a590b
Allow scaling of lengths dew and dns for glaciers
whlipscomb Sep 28, 2023
c0f31e8
Added partial cells for SMB weighting
whlipscomb Oct 16, 2023
dc42f54
Updated the 1-equation glacier inversion scheme
whlipscomb Oct 18, 2023
d686975
Added a hybrid restart option
whlipscomb Oct 19, 2023
04cae1c
Optional forcewrite to output files when a run finishes
whlipscomb Oct 21, 2023
c3046e5
Redistribution and other changes for advanced ice
whlipscomb Nov 27, 2023
bbc8a79
Added glacier diagnostic fields and scalars for thickness inversion
whlipscomb Dec 7, 2023
dc3c76d
Added glacier scalar diagnostics
whlipscomb Dec 24, 2023
9830c24
Modified Cp inversion for advanced glacier cells
whlipscomb Jan 18, 2024
de4195c
Merge branch 'lipscomb/basal_physics4' into lipscomb/hma_glaciers4
whlipscomb Mar 13, 2024
653211e
Cleaned up glide_finalise subroutines
whlipscomb Mar 13, 2024
9da0847
Added model_id argument in glide_setup.F90
whlipscomb Mar 13, 2024
b65e475
Edited the README file for the slab stability test
whlipscomb Mar 13, 2024
4bf56dd
Merge branch 'main' into lipscomb/hma_glaciers4
whlipscomb May 23, 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
18 changes: 12 additions & 6 deletions cism_driver/cism_front_end.F90
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,12 @@ subroutine cism_init_dycore(model)
call eismint_surftemp(model%eismint_climate,model,time)

! read forcing time slice if needed - this will overwrite values from IC file if there is a conflict.
! Note: The first 'model' is passed to the argument 'data', which is filled by calling glide_read.
call glide_read_forcing(model, model)

! Optionally, read all the time slices at once from selected forcing files.
call glide_read_forcing_once(model, model)

call spinup_lithot(model)

call t_stopf('initialization')
Expand Down Expand Up @@ -225,8 +229,10 @@ subroutine cism_init_dycore(model)


! --- Output the initial state -------------
! Note: For a standard restart, the initial state is not output, because this state
! should already have been written to the output file when the previous run ended.

if (model%options%is_restart == RESTART_FALSE .or. model%options%forcewrite_restart) then
if (model%options%is_restart == NO_RESTART .or. model%options%is_restart == HYBRID_RESTART) then
call t_startf('initial_io_writeall')
call glide_io_writeall(model, model, time=time) ! MJH The optional time argument needs to be supplied
! since we have not yet set model%numerics%time
Expand Down Expand Up @@ -283,16 +289,16 @@ subroutine cism_run_dycore(model)
do while(time + time_eps < model%numerics%tend)

!!! SFP moved block of code for applying time dependent forcing read in from netCDF here,
!!! as opposed to at the end of the time step (commented it out in it's original location for now)
!!! as opposed to at the end of the time step (commented it out in its original location for now)
!!! This is a short-term fix. See additional discussion as part of issue #19 (in cism-piscees github repo).

! Forcing from a 'forcing' data file - will read time slice if needed
! Note: Forcing is read from the appropriate time slice after every dynamic time step.
! This is not strictly necessary if there are multiple time steps per forcing time slice.
! We would need additional logic if we wanted to read a new time slice only when needed
! to replace the current data. TODO: Add this logic?
call t_startf('read_forcing')
call glide_read_forcing(model, model)

! If any forcing data have been read once into Fortran arrays at initialization,
! simply copy the data based on the current forcing time.
call glide_retrieve_forcing(model, model)
call t_stopf('read_forcing')

! Increment time step
Expand Down
19 changes: 15 additions & 4 deletions libglide/glide.F90
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,11 @@ subroutine glide_initialise(model)
! read first time slice
call glide_io_readall(model,model)

! Compute grid cell areas
! Note: cell_area is used for diagnostics only. It is set to dew*dns by default but can be corrected below.
! For the purposes of CISM dynamics, all grid cells are rectangles of dimension dew*dns.
model%geometry%cell_area = model%numerics%dew*model%numerics%dns

! Compute area scale factors for stereographic map projection.
! This should be done after reading the input file, in case the input file contains mapping info.
! Note: Not yet enabled for other map projections.
Expand All @@ -231,6 +236,14 @@ subroutine glide_initialise(model)
model%numerics%dew*len0, &
model%numerics%dns*len0)

! Given the stereographic area correction factors, correct the diagnostic grid cell areas.
! Note: area_factor is actually a length correction factor k; must divide by k^2 to adjust areas.
! TODO: Change the name of area_factor
where (model%projection%stere%area_factor > 0.0d0)
model%geometry%cell_area = &
model%geometry%cell_area / model%projection%stere%area_factor**2
endwhere

endif

! write projection info to log
Expand Down Expand Up @@ -292,9 +305,6 @@ subroutine glide_initialise(model)
! print*, 'Created Glide variables'
! print*, 'max, min bheatflx (W/m2)=', maxval(model%temper%bheatflx), minval(model%temper%bheatflx)

! Compute the cell areas of the grid
model%geometry%cell_area = model%numerics%dew*model%numerics%dns

! If a 2D bheatflx field is present in the input file, it will have been written
! to model%temper%bheatflx. For the case model%options%gthf = 0, we want to use
! a uniform heat flux instead.
Expand Down Expand Up @@ -453,7 +463,8 @@ subroutine glide_init_state_diagnostic(model, evolve_ice)
l_evolve_ice = .true.
end if

if (model%options%is_restart == RESTART_TRUE) then
if (model%options%is_restart == STANDARD_RESTART .or. &
model%options%is_restart == HYBRID_RESTART) then
! On a restart, just assign the basal velocity from uvel/vvel (which are restart variables)
! to ubas/vbas which are used by the temperature solver to calculate basal heating.
! During time stepping ubas/vbas are calculated by slipvelo during thickness evolution or below on a cold start.
Expand Down
Loading