Skip to content

Commit

Permalink
Merge pull request #35 from apcraig/fsdfixes_tc02
Browse files Browse the repository at this point in the history
This needs to have the icepack hash updated.
  • Loading branch information
dabail10 authored Oct 25, 2024
2 parents 13b62a7 + 7ae7b1f commit cc00472
Show file tree
Hide file tree
Showing 13 changed files with 54 additions and 70 deletions.
2 changes: 0 additions & 2 deletions cicecore/cicedyn/general/ice_forcing.F90
Original file line number Diff line number Diff line change
Expand Up @@ -5473,8 +5473,6 @@ subroutine wave_spec_data
logical (kind=log_kind) :: wave_spec
character(len=*), parameter :: subname = '(wave_spec_data)'



debug_n_d = .false. !usually false

call icepack_query_parameters(secday_out=secday)
Expand Down
17 changes: 7 additions & 10 deletions cicecore/cicedyn/general/ice_step_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ subroutine step_therm1 (dt, iblk)
fswsfcn, fswintn, Sswabsn, Iswabsn, meltsliqn, meltsliq, &
fswthrun, fswthrun_vdr, fswthrun_vdf, fswthrun_idr, fswthrun_idf
use ice_calendar, only: yday
use ice_domain_size, only: ncat, nilyr, nslyr, n_iso, n_aero
use ice_domain_size, only: ncat, nilyr, nslyr, n_iso, n_aero, nfsd
use ice_flux, only: frzmlt, sst, Tf, strocnxT_iavg, strocnyT_iavg, rsiden, fbot, Tbot, Tsnice, &
meltsn, melttn, meltbn, congeln, snoicen, uatmT, vatmT, wlat, &
wind, rhoa, potT, Qa, zlvl, zlvs, strax, stray, flatn, fsensn, fsurfn, fcondtopn, &
Expand Down Expand Up @@ -269,7 +269,7 @@ subroutine step_therm1 (dt, iblk)

integer (kind=int_kind) :: &
ntrcr, nt_apnd, nt_hpnd, nt_ipnd, nt_alvl, nt_vlvl, nt_Tsfc, &
nt_iage, nt_FY, nt_qice, nt_sice, nt_aero, nt_qsno, &
nt_iage, nt_FY, nt_qice, nt_sice, nt_aero, nt_qsno, nt_fsd, &
nt_isosno, nt_isoice, nt_rsnw, nt_smice, nt_smliq

logical (kind=log_kind) :: &
Expand Down Expand Up @@ -304,7 +304,7 @@ subroutine step_therm1 (dt, iblk)
call icepack_query_tracer_indices( &
nt_apnd_out=nt_apnd, nt_hpnd_out=nt_hpnd, nt_ipnd_out=nt_ipnd, &
nt_alvl_out=nt_alvl, nt_vlvl_out=nt_vlvl, nt_Tsfc_out=nt_Tsfc, &
nt_iage_out=nt_iage, nt_FY_out=nt_FY, &
nt_iage_out=nt_iage, nt_FY_out=nt_FY, nt_fsd_out=nt_fsd, &
nt_qice_out=nt_qice, nt_sice_out=nt_sice, &
nt_aero_out=nt_aero, nt_qsno_out=nt_qsno, &
nt_rsnw_out=nt_rsnw, nt_smice_out=nt_smice, nt_smliq_out=nt_smliq, &
Expand Down Expand Up @@ -412,6 +412,7 @@ subroutine step_therm1 (dt, iblk)
ipnd = trcrn (i,j,nt_ipnd,:,iblk), &
iage = trcrn (i,j,nt_iage,:,iblk), &
FY = trcrn (i,j,nt_FY ,:,iblk), &
afsdn = trcrn (i,j,nt_fsd:nt_fsd+nfsd-1,:,iblk), &
rsnwn = rsnwn (:,:), &
smicen = smicen (:,:), &
smliqn = smliqn (:,:), &
Expand Down Expand Up @@ -610,7 +611,7 @@ subroutine step_therm2 (dt, iblk)

use ice_arrays_column, only: hin_max, ocean_bio, wave_sig_ht, &
wave_spectrum, wavefreq, dwavefreq, &
first_ice, bgrid, cgrid, igrid, floe_rad_c, floe_binwidth, &
first_ice, bgrid, cgrid, igrid, &
d_afsd_latg, d_afsd_newi, d_afsd_latm, d_afsd_weld
use ice_calendar, only: yday
use ice_domain_size, only: ncat, nilyr, nslyr, nblyr, nfsd
Expand Down Expand Up @@ -722,9 +723,7 @@ subroutine step_therm2 (dt, iblk)
d_afsd_latg= d_afsd_latg(i,j,:,iblk),&
d_afsd_newi= d_afsd_newi(i,j,:,iblk),&
d_afsd_latm= d_afsd_latm(i,j,:,iblk),&
d_afsd_weld= d_afsd_weld(i,j,:,iblk),&
floe_rad_c = floe_rad_c(:), &
floe_binwidth = floe_binwidth(:))
d_afsd_weld= d_afsd_weld(i,j,:,iblk))
endif ! tmask

enddo ! i
Expand Down Expand Up @@ -861,7 +860,7 @@ end subroutine update_state
subroutine step_dyn_wave (dt)

use ice_arrays_column, only: wave_spectrum, &
d_afsd_wave, floe_rad_l, floe_rad_c, wavefreq, dwavefreq
d_afsd_wave, wavefreq, dwavefreq
use ice_domain_size, only: ncat, nfsd, nfreq
use ice_state, only: trcrn, aicen, aice, vice
use ice_timers, only: ice_timer_start, ice_timer_stop, timer_column, &
Expand Down Expand Up @@ -909,8 +908,6 @@ subroutine step_dyn_wave (dt)
aice = aice (i,j, iblk), &
vice = vice (i,j, iblk), &
aicen = aicen (i,j,:, iblk), &
floe_rad_l = floe_rad_l (:), &
floe_rad_c = floe_rad_c (:), &
wave_spectrum = wave_spectrum(i,j,:, iblk), &
wavefreq = wavefreq (:), &
dwavefreq = dwavefreq (:), &
Expand Down
22 changes: 10 additions & 12 deletions cicecore/drivers/mct/cesm1/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ subroutine cice_init(mpicom_ice)
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down Expand Up @@ -199,6 +199,8 @@ subroutine cice_init(mpicom_ice)
if (trim(runtype) == 'continue' .or. restart) &
call init_shortwave ! initialize radiative transfer

if (write_ic) call accum_hist(dt) ! write initial conditions

! call advance_timestep()

!--------------------------------------------------------------------
Expand Down Expand Up @@ -238,8 +240,6 @@ subroutine cice_init(mpicom_ice)
call init_flux_atm ! initialize atmosphere fluxes sent to coupler
call init_flux_ocn ! initialize ocean fluxes sent to coupler

if (write_ic) call accum_hist(dt) ! write initial conditions

call dealloc_grid ! deallocate temporary grid arrays
if (my_task == master_task) then
call ice_memusage_print(nu_diag,subname//':end')
Expand Down Expand Up @@ -274,7 +274,7 @@ subroutine init_restart
restart_iso, read_restart_iso, &
restart_aero, read_restart_aero, &
restart_hbrine, read_restart_hbrine, &
restart_zsal, restart_bgc
restart_bgc
use ice_restart_driver, only: restartfile
use ice_restart_shared, only: runtype, restart
use ice_state ! almost everything
Expand All @@ -285,7 +285,7 @@ subroutine init_restart
logical(kind=log_kind) :: &
tr_iage, tr_FY, tr_lvl, tr_pond_lvl, &
tr_pond_topo, tr_snow, tr_fsd, tr_iso, tr_aero, tr_brine, &
skl_bgc, z_tracers, solve_zsal
skl_bgc, z_tracers
integer(kind=int_kind) :: &
ntrcr
integer(kind=int_kind) :: &
Expand All @@ -301,7 +301,7 @@ subroutine init_restart
file=__FILE__, line=__LINE__)

call icepack_query_parameters(skl_bgc_out=skl_bgc, &
z_tracers_out=z_tracers, solve_zsal_out=solve_zsal)
z_tracers_out=z_tracers)
call icepack_query_tracer_flags(tr_iage_out=tr_iage, tr_FY_out=tr_FY, &
tr_lvl_out=tr_lvl, tr_pond_lvl_out=tr_pond_lvl, &
tr_pond_topo_out=tr_pond_topo, tr_aero_out=tr_aero, tr_brine_out=tr_brine, &
Expand Down Expand Up @@ -447,8 +447,6 @@ subroutine init_restart
if (trim(runtype) == 'continue') then
if (tr_brine) &
restart_hbrine = .true.
if (solve_zsal) &
restart_zsal = .true.
if (skl_bgc .or. z_tracers) &
restart_bgc = .true.
endif
Expand All @@ -458,7 +456,7 @@ subroutine init_restart
if (tr_brine .and. restart_hbrine) call read_restart_hbrine
endif

if (solve_zsal .or. skl_bgc .or. z_tracers) then ! biogeochemistry
if (skl_bgc .or. z_tracers) then ! biogeochemistry
if (tr_fsd) then
write (nu_diag,*) 'FSD implementation incomplete for use with BGC'
call icepack_warnings_flush(nu_diag)
Expand Down
8 changes: 4 additions & 4 deletions cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,10 @@ subroutine cice_init2()
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down
8 changes: 4 additions & 4 deletions cicecore/drivers/nuopc/dmi/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,10 @@ subroutine cice_init(mpi_comm)
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down
8 changes: 4 additions & 4 deletions cicecore/drivers/standalone/cice/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@ subroutine cice_init
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down
8 changes: 4 additions & 4 deletions cicecore/drivers/unittest/gridavgchk/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@ subroutine cice_init
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down
8 changes: 4 additions & 4 deletions cicecore/drivers/unittest/halochk/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@ subroutine cice_init
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down
8 changes: 4 additions & 4 deletions cicecore/drivers/unittest/opticep/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@ subroutine cice_init
file=__FILE__,line= __LINE__)

if (tr_fsd) call icepack_init_fsd_bounds ( &
floe_rad_l = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range = c_fsd_range, & ! string for history output
floe_rad_l_out = floe_rad_l, & ! fsd size lower bound in m (radius)
floe_rad_c_out = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth_out = floe_binwidth, & ! fsd size bin width in m (radius)
c_fsd_range_out = c_fsd_range, & ! string for history output
write_diags=(my_task == master_task)) ! write diag on master only
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
Expand Down
5 changes: 1 addition & 4 deletions cicecore/drivers/unittest/opticep/ice_init_column.F90
Original file line number Diff line number Diff line change
Expand Up @@ -581,8 +581,7 @@ end subroutine init_snowtracers

subroutine init_fsd(floesize)

use ice_arrays_column, only: floe_rad_c, floe_binwidth, &
wavefreq, dwavefreq, wave_sig_ht, wave_spectrum, &
use ice_arrays_column, only: wavefreq, dwavefreq, wave_sig_ht, wave_spectrum, &
d_afsd_newi, d_afsd_latg, d_afsd_latm, d_afsd_wave, d_afsd_weld
use ice_domain_size, only: ncat, max_blocks, nfsd
use ice_init, only: ice_ic
Expand Down Expand Up @@ -636,8 +635,6 @@ subroutine init_fsd(floesize)

! initialize floe size distribution the same in every column and category
call icepack_init_fsd(ice_ic = ice_ic, &
floe_rad_c = floe_rad_c, & ! fsd size bin centre in m (radius)
floe_binwidth = floe_binwidth, & ! fsd size bin width in m (radius)
afsd = afsd) ! floe size distribution

do iblk = 1, max_blocks
Expand Down
17 changes: 7 additions & 10 deletions cicecore/drivers/unittest/opticep/ice_step_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ subroutine step_therm1 (dt, iblk)
fswsfcn, fswintn, Sswabsn, Iswabsn, meltsliqn, meltsliq, &
fswthrun, fswthrun_vdr, fswthrun_vdf, fswthrun_idr, fswthrun_idf
use ice_calendar, only: yday
use ice_domain_size, only: ncat, nilyr, nslyr, n_iso, n_aero
use ice_domain_size, only: ncat, nilyr, nslyr, n_iso, n_aero, nfsd
use ice_flux, only: frzmlt, sst, Tf, strocnxT_iavg, strocnyT_iavg, rsiden, fbot, Tbot, Tsnice, &
meltsn, melttn, meltbn, congeln, snoicen, uatmT, vatmT, wlat, &
wind, rhoa, potT, Qa, zlvl, zlvs, strax, stray, flatn, fsensn, fsurfn, fcondtopn, &
Expand Down Expand Up @@ -269,7 +269,7 @@ subroutine step_therm1 (dt, iblk)

integer (kind=int_kind) :: &
ntrcr, nt_apnd, nt_hpnd, nt_ipnd, nt_alvl, nt_vlvl, nt_Tsfc, &
nt_iage, nt_FY, nt_qice, nt_sice, nt_aero, nt_qsno, &
nt_iage, nt_FY, nt_qice, nt_sice, nt_aero, nt_qsno, nt_fsd, &
nt_isosno, nt_isoice, nt_rsnw, nt_smice, nt_smliq

logical (kind=log_kind) :: &
Expand Down Expand Up @@ -304,7 +304,7 @@ subroutine step_therm1 (dt, iblk)
call icepack_query_tracer_indices( &
nt_apnd_out=nt_apnd, nt_hpnd_out=nt_hpnd, nt_ipnd_out=nt_ipnd, &
nt_alvl_out=nt_alvl, nt_vlvl_out=nt_vlvl, nt_Tsfc_out=nt_Tsfc, &
nt_iage_out=nt_iage, nt_FY_out=nt_FY, &
nt_iage_out=nt_iage, nt_FY_out=nt_FY, nt_fsd_out=nt_fsd, &
nt_qice_out=nt_qice, nt_sice_out=nt_sice, &
nt_aero_out=nt_aero, nt_qsno_out=nt_qsno, &
nt_rsnw_out=nt_rsnw, nt_smice_out=nt_smice, nt_smliq_out=nt_smliq, &
Expand Down Expand Up @@ -412,6 +412,7 @@ subroutine step_therm1 (dt, iblk)
ipnd = trcrn (i,j,nt_ipnd,:,iblk), &
iage = trcrn (i,j,nt_iage,:,iblk), &
FY = trcrn (i,j,nt_FY ,:,iblk), &
afsdn = trcrn (i,j,nt_fsd:nt_fsd+nfsd-1,:,iblk), &
!opt rsnwn = rsnwn (:,:), &
!opt smicen = smicen (:,:), &
!opt smliqn = smliqn (:,:), &
Expand Down Expand Up @@ -611,7 +612,7 @@ subroutine step_therm2 (dt, iblk)

use ice_arrays_column, only: hin_max, ocean_bio, wave_sig_ht, &
wave_spectrum, wavefreq, dwavefreq, &
first_ice, bgrid, cgrid, igrid, floe_rad_c, floe_binwidth, &
first_ice, bgrid, cgrid, igrid, &
d_afsd_latg, d_afsd_newi, d_afsd_latm, d_afsd_weld
use ice_calendar, only: yday
use ice_domain_size, only: ncat, nilyr, nslyr, nblyr, nfsd
Expand Down Expand Up @@ -724,9 +725,7 @@ subroutine step_therm2 (dt, iblk)
!opt d_afsd_latg= d_afsd_latg(i,j,:,iblk),&
!opt d_afsd_newi= d_afsd_newi(i,j,:,iblk),&
!opt d_afsd_latm= d_afsd_latm(i,j,:,iblk),&
!opt d_afsd_weld= d_afsd_weld(i,j,:,iblk),&
!opt floe_rad_c = floe_rad_c(:), &
!opt floe_binwidth = floe_binwidth(:))
!opt d_afsd_weld= d_afsd_weld(i,j,:,iblk))
)
endif ! tmask

Expand Down Expand Up @@ -864,7 +863,7 @@ end subroutine update_state
subroutine step_dyn_wave (dt)

use ice_arrays_column, only: wave_spectrum, &
d_afsd_wave, floe_rad_l, floe_rad_c, wavefreq, dwavefreq
d_afsd_wave, wavefreq, dwavefreq
use ice_domain_size, only: ncat, nfsd, nfreq
use ice_state, only: trcrn, aicen, aice, vice
use ice_timers, only: ice_timer_start, ice_timer_stop, timer_column, &
Expand Down Expand Up @@ -912,8 +911,6 @@ subroutine step_dyn_wave (dt)
aice = aice (i,j, iblk), &
vice = vice (i,j, iblk), &
aicen = aicen (i,j,:, iblk), &
floe_rad_l = floe_rad_l (:), &
floe_rad_c = floe_rad_c (:), &
wave_spectrum = wave_spectrum(i,j,:, iblk), &
wavefreq = wavefreq (:), &
dwavefreq = dwavefreq (:), &
Expand Down
Loading

0 comments on commit cc00472

Please sign in to comment.