Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
3a155ba
New glacier module with an initialization subroutine
whlipscomb Jan 22, 2022
5fb2642
Added runtime glacier subroutines
whlipscomb Feb 18, 2022
b3d0ab9
Support exact restart for glacier runs
whlipscomb Feb 23, 2022
18e962e
Glacier mods for inversion and advance/retreat
whlipscomb Mar 4, 2022
4b4dddf
Added a glacier section in the config file
whlipscomb Mar 4, 2022
2a217da
Added glacier diagnostics to the log file
whlipscomb Mar 4, 2022
9343f3d
Glacier fixes for powerlaw_c and acab_applied
whlipscomb Mar 5, 2022
935b9f5
Changed thickness criterion for glacier advance/retreat
whlipscomb Mar 5, 2022
86a5ca2
Changed the glacier volume inversion method
whlipscomb Mar 8, 2022
4a6e8ee
Use a uniform temperature lapse rate for glacier SMB
whlipscomb Mar 14, 2022
c71056c
Modified inversion for glacier powerlaw_c
whlipscomb Mar 18, 2022
dbb62bc
Compute glacier advance/retreat only once a year
whlipscomb Mar 30, 2022
157f4bc
Added glacier_mu_star to the restart file
whlipscomb Aug 16, 2022
1a5383a
Glacier diagnostic fix
whlipscomb Aug 19, 2022
2fbf9f8
Added an option to set a uniform artm anomaly
whlipscomb Aug 21, 2022
8aa2272
Fixed after a rebase
whlipscomb Nov 11, 2022
fa01527
Support for reading and using the observed glacier SMB
whlipscomb Nov 15, 2022
c2434e0
Added a method to adjust artm so that SMB = 0 during spin-up
whlipscomb Nov 30, 2022
c3b42ae
Added a relaxation term to powerlaw_c inversion for glaciers
whlipscomb Nov 30, 2022
6a5a895
Compute snowfall from precip and downscaled artm
whlipscomb Dec 4, 2022
0228fd9
Option to read forcing files just once, at initialization
whlipscomb Dec 10, 2022
2bb3002
Added an option to read a shuffled list of forcing years
whlipscomb Dec 19, 2022
6221191
Option to reduce snowfall outside the initial glacier mask
whlipscomb Jan 12, 2023
c893e8c
Added glacier option match_smb_obs
whlipscomb Feb 4, 2023
749dd7b
Support 2-parameter glacier inversion (mu_star and snow_factor)
whlipscomb Apr 7, 2023
d8659b0
Option to read multiple forcing files just once
whlipscomb Apr 11, 2023
ff99dd5
Changed the SMB computation around glacier margins
whlipscomb May 16, 2023
a45ba7d
Added a temperature correction term for 2-parameter inversion
whlipscomb Jun 3, 2023
0d56a6e
Changed glacier variable names to alpha_snow, beta_artm_aux
whlipscomb Jun 3, 2023
dc84c50
Made some glacier inversion parameters user-configurable
whlipscomb Jun 3, 2023
e0d85a1
Added a glacier area scale factor based on latitute
whlipscomb Jun 3, 2023
e60b601
Changed some timing logic in glissade_glacier_update
whlipscomb Jun 4, 2023
d875008
Added verbose output for read_once forcing
whlipscomb Jun 4, 2023
2c22002
Apply the glacier SMB uniformly through the year
whlipscomb Jul 25, 2023
96f8853
Added an elevation correction for the recent glacier climate
whlipscomb Aug 4, 2023
d840bc7
Distinguish baseline and RGI dates; streamline tuning for mu, alpha, …
whlipscomb Aug 20, 2023
64576ce
Replaced auxiliary climate forcing with anomaly forcing
whlipscomb Aug 23, 2023
51ffe4b
Minor glacier bug fixes
whlipscomb Aug 25, 2023
7d61011
Modified treatment of glacier boundaries
whlipscomb Sep 1, 2023
d056a97
Added inversion logic for glacier updates
whlipscomb Sep 1, 2023
f518286
Support anomaly forcing in forward glacier runs
whlipscomb Sep 8, 2023
bc406be
Changes to support Intel compiler build
whlipscomb Sep 15, 2023
a270ff8
Allow scaling of lengths dew and dns for glaciers
whlipscomb Sep 28, 2023
3f9e184
Added partial cells for SMB weighting
whlipscomb Oct 16, 2023
3214b22
Updated the 1-equation glacier inversion scheme
whlipscomb Oct 18, 2023
38f406a
Added a hybrid restart option
whlipscomb Oct 19, 2023
49a9438
Optional forcewrite to output files when a run finishes
whlipscomb Oct 21, 2023
f703019
Redistribution and other changes for advanced ice
whlipscomb Nov 27, 2023
207c29f
Added glacier diagnostic fields and scalars for thickness inversion
whlipscomb Dec 7, 2023
f0dc53c
Added glacier scalar diagnostics
whlipscomb Dec 24, 2023
1daf662
Modified Cp inversion for advanced glacier cells
whlipscomb Jan 18, 2024
a8a3e5c
Cleaned up glide_finalise subroutines
whlipscomb Mar 13, 2024
4673b25
Added model_id argument in glide_setup.F90
whlipscomb Mar 13, 2024
80a4b39
Edited the README file for the slab stability test
whlipscomb Mar 13, 2024
6c56046
Changes to fix merge inconsistancies after rebase.
Katetc Jun 6, 2024
75a100c
Pull out derecho modules for use at runtime
Katetc Jun 20, 2024
2af0790
Last adjustments to merge diff from Bill
Katetc Jul 11, 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
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,25 @@ P75R
P75S
Stnd
mismip+Ice0

#Ignore compiled topography files
bin_to_cube/bin_to_cube
bin_to_cube/bin_to_cube.o
bin_to_cube/shr_kind_mod.mod
bin_to_cube/shr_kind_mod.o
cube_to_target/cube_to_target
cube_to_target/cube_to_target.o
cube_to_target/reconstruct.mod
cube_to_target/reconstruct.o
cube_to_target/remap.mod
cube_to_target/remap.o
cube_to_target/ridge_ana.mod
cube_to_target/ridge_ana.o
cube_to_target/rot.o
cube_to_target/rotation.mod
cube_to_target/shared_vars.mod
cube_to_target/shared_vars.o
cube_to_target/shr_kind_mod.mod
cube_to_target/shr_kind_mod.o
cube_to_target/smooth_topo_cube.o
cube_to_target/smooth_topo_cube_sph.mod
9 changes: 1 addition & 8 deletions builds/derecho-intel/derecho-intel-cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,7 @@

source /etc/profile.d/z00_modules.csh

module purge
module load ncarenv/23.09
module load intel/2023.2.1
module load ncarcompilers/1.0.0
module load cray-mpich/8.1.27
module load mkl/2023.2.0
module load netcdf/4.9.2
module load cmake/3.26.3
source derecho-intel-modules

# remove old build data:
rm -f ./CMakeCache.txt
Expand Down
13 changes: 2 additions & 11 deletions builds/derecho-intel/derecho-intel-cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,9 @@ fi

source /etc/profile.d/z00_modules.sh

echo CISM: "${cism_top}"


module purge
module load ncarenv/23.09
module load intel/2023.2.1
module load cray-mpich/8.1.27
module load mkl/2023.2.0
module load netcdf/4.9.2
module load ncarcompilers/1.0.0
module load cmake/3.26.3
source derecho-intel-modules

echo CISM: "${cism_top}"

# remove old build data:
rm -f ./CMakeCache.txt
Expand Down
8 changes: 8 additions & 0 deletions builds/derecho-intel/derecho-intel-modules
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module purge
module load ncarenv/23.09
module load intel/2023.2.1
module load ncarcompilers/1.0.0
module load cray-mpich/8.1.27
module load mkl/2023.2.0
module load netcdf/4.9.2
module load cmake/3.26.3
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