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

Implement box model test from 2001 JCP paper #151

Merged
merged 36 commits into from
Oct 22, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
3d7e193
Add gbox80 grid configuration
Jun 20, 2018
5c7d7bc
Add option files for the box2001 case (Hunke, E.C., 2001. Viscout-pl…
Jun 20, 2018
aeacd1e
Modifications and additions to F90 files required for the box2001 case
Jun 20, 2018
a6bcb95
Update box2001 namelist file to have both N/S and E/W boundary types …
Jun 21, 2018
e1f4d2e
modifications to allow for constant coriolis
Jul 9, 2018
23ea0fc
modifications for updates to namelist file
Jul 9, 2018
0c793f7
Update ice_in to include coriolis and x/y_spacing variables
Jul 9, 2018
b5fe395
replace x_spacing and y_spacing with dxrect and dyrect in the namelists
Aug 2, 2018
3fd0afe
Add to the box2001 namelist file
Aug 6, 2018
52a0b51
Add new 'thermo' namelist variable to disable thermodynamics. Add co…
Sep 12, 2018
266af9e
Update rectgrid subroutine to set a land mask of 2 grid points around…
Sep 12, 2018
4e8140c
Update user-guide case settings documentation to include the new name…
Sep 12, 2018
c363c30
Fix bug in documentation added in previous commit for box2001
Sep 12, 2018
e843dab
More updates to user guide case settings for box2001 test case
Sep 12, 2018
be79463
Remove duplicate namelist definition in user guide testing
Sep 12, 2018
e8cefca
Add description of box2001 test to the testing documentation
Sep 12, 2018
4a0ef80
Typo fix in documentation
Sep 12, 2018
d3e2a94
Fix indentation
Sep 13, 2018
9d647c8
Updates to remove the thermo namelist variable, and instead turn off …
Sep 21, 2018
f66a56d
Modifications to not call init_flux_* in cice_run if the 2001 test ca…
Sep 28, 2018
d7d095b
Add new kridge and ktransport namelist options, as well as conditiona…
Oct 9, 2018
88b1010
Merge branch 'master' into box2001
mattdturner Oct 11, 2018
e3bea89
Resolve namelist errors that were introduced during the merge conflic…
Oct 11, 2018
a3784d1
Fix a bug that caused binary data to be written to the log file
Oct 12, 2018
428278a
Remove unused variables from ice_step
Oct 15, 2018
52eaef9
Remove unused variables from ice_forcing file
Oct 16, 2018
724f96f
initialize ice state
eclare108213 Oct 17, 2018
eba943c
replace land_override with close_boundaries.
Oct 19, 2018
6e349b8
Replace 'default' with 'latitude' as the default coriolis value
Oct 19, 2018
4611adb
Update documentation to include new namelist variables kridge and ktr…
Oct 19, 2018
64f0d92
Merge branch 'master' into box2001
mattdturner Oct 19, 2018
bd675af
Re-add dxrect and dyrect as variables in ice_init. This was a bug in…
Oct 19, 2018
6e5109d
correct configuration options
eclare108213 Oct 20, 2018
2689ed4
miscellaneous updates, increased run length
eclare108213 Oct 20, 2018
4626b06
use strax,y (input directly) instead of strairx,yT (calculated) and s…
eclare108213 Oct 21, 2018
5e1b713
Update CICE_RunMod conditionals from 'ktherm > 0' to 'ktherm >= 0' si…
Oct 22, 2018
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
Prev Previous commit
Next Next commit
Add new 'thermo' namelist variable to disable thermodynamics. Add cod…
…e to set coriolis term to zero. Update box2001 namelist option file
  • Loading branch information
turner committed Sep 12, 2018
commit 52a0b5100ba5a7d36b793c1d85e6c37dda493547
3 changes: 3 additions & 0 deletions cicecore/cicedynB/dynamics/ice_dyn_shared.F90
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ module ice_dyn_shared

integer (kind=int_kind), public :: &
kdyn , & ! type of dynamics ( 1 = evp, 2 = eap )
thermo , & ! thermodynamics off (0) or on (1)
ndte ! number of subcycles: ndte=dt/dte

character (len=char_len), public :: &
Expand Down Expand Up @@ -135,6 +136,8 @@ subroutine init_evp (dt)
! Coriolis parameter
if (trim(coriolis) == 'constant') then
fcor_blk(i,j,iblk) = 1.46e-4_dbl_kind ! Hibler 1979, N. Hem; 1/s
else if (trim(coriolis) == 'zero') then
fcor_blk(i,j,iblk) = 0.0
else
fcor_blk(i,j,iblk) = c2*omega*sin(ULAT(i,j,iblk)) ! 1/s
endif
Expand Down
7 changes: 5 additions & 2 deletions cicecore/cicedynB/general/ice_init.F90
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ subroutine input_data
use ice_grid, only: grid_file, gridcpl_file, kmt_file, grid_type, grid_format, &
dxrect, dyrect
use ice_dyn_shared, only: ndte, kdyn, revised_evp, yield_curve, &
basalstress, Ktens, e_ratio, coriolis
basalstress, Ktens, e_ratio, coriolis, thermo
use ice_transport_driver, only: advection
use ice_restoring, only: restore_ice
#ifdef CESMCOUPLED
Expand Down Expand Up @@ -151,7 +151,7 @@ subroutine input_data

namelist /dynamics_nml/ &
kdyn, ndte, revised_evp, yield_curve, &
advection, coriolis, &
advection, coriolis, thermo, &
kstrength, krdg_partic, krdg_redist, mu_rdg, &
e_ratio, Ktens, Cf, basalstress

Expand Down Expand Up @@ -246,6 +246,7 @@ subroutine input_data
kitd = 1 ! type of itd conversions (0 = delta, 1 = linear)
kcatbound = 1 ! category boundary formula (0 = old, 1 = new, etc)
kdyn = 1 ! type of dynamics (1 = evp, 2 = eap)
thermo = 1 ! set to 1 for thoermodynamics on, and thermo off (0=thermo off)
ndtd = 1 ! dynamic time steps per thermodynamic time step
ndte = 120 ! subcycles per dynamics timestep: ndte=dt_dyn/dte
revised_evp = .false. ! if true, use revised procedure for evp dynamics
Expand Down Expand Up @@ -484,6 +485,7 @@ subroutine input_data
call broadcast_scalar(kitd, master_task)
call broadcast_scalar(kcatbound, master_task)
call broadcast_scalar(kdyn, master_task)
call broadcast_scalar(thermo, master_task)
call broadcast_scalar(ndtd, master_task)
call broadcast_scalar(ndte, master_task)
call broadcast_scalar(revised_evp, master_task)
Expand Down Expand Up @@ -863,6 +865,7 @@ subroutine input_data
write(nu_diag,1020) ' kcatbound = ', &
kcatbound
write(nu_diag,1020) ' kdyn = ', kdyn
write(nu_diag,1020) ' thermo = ', thermo
write(nu_diag,1020) ' ndtd = ', ndtd
write(nu_diag,1020) ' ndte = ', ndte
write(nu_diag,1010) ' revised_evp = ', &
Expand Down
26 changes: 22 additions & 4 deletions cicecore/drivers/cice/CICE_RunMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ module CICE_RunMod
use icepack_intfc, only: icepack_max_aero
use icepack_intfc, only: icepack_query_parameters
use icepack_intfc, only: icepack_query_tracer_flags, icepack_query_tracer_numbers
use ice_blocks, only: nx_block, ny_block
use ice_flux, only: uatm, vatm, strairxT, strairyT, wind, rhoa

implicit none
private
Expand Down Expand Up @@ -136,7 +138,7 @@ subroutine ice_step
use ice_domain, only: halo_info, nblocks
use ice_domain_size, only: nslyr
use ice_dyn_eap, only: write_restart_eap
use ice_dyn_shared, only: kdyn
use ice_dyn_shared, only: kdyn, thermo
use ice_flux, only: scale_factor, init_history_therm, &
daidtt, daidtd, dvidtt, dvidtd, dagedtt, dagedtd
use ice_history, only: accum_hist
Expand All @@ -158,10 +160,12 @@ subroutine ice_step

integer (kind=int_kind) :: &
iblk , & ! block index
i,j , & ! loop counter
k ! dynamics supercycling index

real (kind=dbl_kind) :: &
offset ! d(age)/dt time offset
offset , & ! d(age)/dt time offset
tau ! part of wind stress

logical (kind=log_kind) :: &
tr_iage, tr_FY, tr_lvl, &
Expand Down Expand Up @@ -202,7 +206,7 @@ subroutine ice_step
!-----------------------------------------------------------------
! Scale radiation fields
!-----------------------------------------------------------------

if(thermo.ne.0) then
if (calc_Tsfc) call prep_radiation (dt, iblk)

!-----------------------------------------------------------------
Expand All @@ -213,6 +217,20 @@ subroutine ice_step
call biogeochemistry (dt, iblk) ! biogeochemistry
call step_therm2 (dt, iblk) ! ice thickness distribution thermo

else ! for box problem
!wind stress

do j = 1, ny_block
do i = 1, nx_block
wind(i,j,iblk) = sqrt(uatm(i,j,iblk)**2 + vatm(i,j,iblk)**2)
tau = rhoa(i,j,iblk) * 0.0012_dbl_kind * wind(i,j,iblk)
strairxT(i,j,iblk) = tau * uatm(i,j,iblk)
strairyT(i,j,iblk) = tau * vatm(i,j,iblk)
enddo
enddo

endif

enddo ! iblk
!$OMP END PARALLEL DO

Expand Down Expand Up @@ -255,7 +273,7 @@ subroutine ice_step
!$OMP PARALLEL DO PRIVATE(iblk)
do iblk = 1, nblocks

call step_radiation (dt, iblk)
if (thermo.ne.0) call step_radiation (dt, iblk)

!-----------------------------------------------------------------
! get ready for coupling and the next time step
Expand Down
1 change: 1 addition & 0 deletions configuration/scripts/ice_in
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@

&dynamics_nml
kdyn = 1
thermo = 1
ndte = 120
revised_evp = .false.
advection = 'remap'
Expand Down
11 changes: 6 additions & 5 deletions configuration/scripts/options/set_nml.box2001
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ice_ic = 'default'
restart = .false.
restart_ext = .true.
restart_format = 'bin'
dumpfreq_n = 5
dumpfreq_n = 1
histfreq = 'd','x','x','x','x'
grid_type = 'rectangular'
grid_file = 'grid'
Expand All @@ -15,8 +15,8 @@ tr_iage = .false.
tr_FY = .false.
tr_lvl = .false.
tr_pond_lvl = .false.
kitd = 0
ktherm = 0
kitd = 1
ktherm = 2
kstrength = 0
atmbndy = 'constant'
atm_data_type = 'box'
Expand All @@ -30,7 +30,8 @@ f_uatm = 'd'
f_vatm = 'd'
f_uocn = 'd'
f_vocn = 'd'
coriolis = 'constant'
coriolis = 'zero'
dxrect = 16.e5
dyrect = 16.e5
kdyn = 0
thermo = 0
f_Tsfc = 'd'