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

Update fsd #35

Merged
merged 1 commit into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
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
Loading