From d3d1aafe588ed795b7fb6fdf32ac40a538535f70 Mon Sep 17 00:00:00 2001 From: Anthony Craig Date: Wed, 13 Nov 2019 12:17:49 -0700 Subject: [PATCH] update icepack calls in CICE to add keywords --- cicecore/cicedynB/dynamics/ice_dyn_eap.F90 | 14 +- cicecore/cicedynB/dynamics/ice_dyn_evp.F90 | 14 +- .../dynamics/ice_transport_driver.F90 | 16 +- cicecore/cicedynB/general/ice_init.F90 | 41 +- cicecore/cicedynB/general/ice_step_mod.F90 | 638 ++++++++++-------- .../infrastructure/ice_restart_driver.F90 | 60 +- .../cicedynB/infrastructure/ice_restoring.F90 | 11 +- .../drivers/direct/hadgem3/CICE_InitMod.F90 | 34 +- cicecore/drivers/mct/cesm1/CICE_InitMod.F90 | 34 +- .../drivers/mct/cesm1/ice_prescribed_mod.F90 | 26 +- cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 | 34 +- .../nuopc/cmeps/ice_prescribed_mod.F90 | 29 +- .../drivers/standalone/cice/CICE_InitMod.F90 | 34 +- cicecore/shared/ice_init_column.F90 | 135 ++-- .../scripts/tests/nothread_quicksuite.ts | 6 + icepack | 2 +- 16 files changed, 618 insertions(+), 510 deletions(-) create mode 100644 configuration/scripts/tests/nothread_quicksuite.ts diff --git a/cicecore/cicedynB/dynamics/ice_dyn_eap.F90 b/cicecore/cicedynB/dynamics/ice_dyn_eap.F90 index bc42e4855..8239d00d5 100644 --- a/cicecore/cicedynB/dynamics/ice_dyn_eap.F90 +++ b/cicecore/cicedynB/dynamics/ice_dyn_eap.F90 @@ -346,13 +346,13 @@ subroutine eap (dt) do ij = 1, icellt(iblk) i = indxti(ij, iblk) j = indxtj(ij, iblk) - call icepack_ice_strength (ncat, & - aice (i,j, iblk), & - vice (i,j, iblk), & - aice0 (i,j, iblk), & - aicen (i,j,:,iblk), & - vicen (i,j,:,iblk), & - strength(i,j, iblk) ) + call icepack_ice_strength(ncat=ncat, & + aice = aice (i,j, iblk), & + vice = vice (i,j, iblk), & + aice0 = aice0 (i,j, iblk), & + aicen = aicen (i,j,:,iblk), & + vicen = vicen (i,j,:,iblk), & + strength = strength(i,j, iblk) ) enddo ! ij ! load velocity into array for boundary updates diff --git a/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 b/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 index 002341667..b9c797a9f 100644 --- a/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 +++ b/cicecore/cicedynB/dynamics/ice_dyn_evp.F90 @@ -286,13 +286,13 @@ subroutine evp (dt) do ij = 1, icellt(iblk) i = indxti(ij, iblk) j = indxtj(ij, iblk) - call icepack_ice_strength (ncat, & - aice (i,j, iblk), & - vice (i,j, iblk), & - aice0 (i,j, iblk), & - aicen (i,j,:,iblk), & - vicen (i,j,:,iblk), & - strength(i,j, iblk) ) + call icepack_ice_strength(ncat = ncat, & + aice = aice (i,j, iblk), & + vice = vice (i,j, iblk), & + aice0 = aice0 (i,j, iblk), & + aicen = aicen (i,j,:,iblk), & + vicen = vicen (i,j,:,iblk), & + strength = strength(i,j, iblk) ) enddo ! ij ! load velocity into array for boundary updates diff --git a/cicecore/cicedynB/dynamics/ice_transport_driver.F90 b/cicecore/cicedynB/dynamics/ice_transport_driver.F90 index 6a6114c01..290c3dcef 100644 --- a/cicecore/cicedynB/dynamics/ice_transport_driver.F90 +++ b/cicecore/cicedynB/dynamics/ice_transport_driver.F90 @@ -1679,13 +1679,15 @@ subroutine work_to_state (nx_block, ny_block, & i = indxi(ij) j = indxj(ij) - call icepack_compute_tracers (ntrcr, trcr_depend(:), & - work (ij,narrays+1:narrays+ntrcr), & - aicen(i,j,n), & - vicen(i,j,n), vsnon(i,j,n), & - trcr_base(:,:), n_trcr_strata(:), & - nt_strata(:,:), & - trcrn(i,j,:,n)) + call icepack_compute_tracers(ntrcr=ntrcr, trcr_depend=trcr_depend(:), & + atrcrn = work (ij,narrays+1:narrays+ntrcr), & + aicen = aicen(i,j,n), & + vicen = vicen(i,j,n), & + vsnon = vsnon(i,j,n), & + trcr_base = trcr_base(:,:), & + n_trcr_strata = n_trcr_strata(:), & + nt_strata = nt_strata(:,:), & + trcrn = trcrn(i,j,:,n)) enddo narrays = narrays + ntrcr diff --git a/cicecore/cicedynB/general/ice_init.F90 b/cicecore/cicedynB/general/ice_init.F90 index 239a8c867..ba30ffafa 100644 --- a/cicecore/cicedynB/general/ice_init.F90 +++ b/cicecore/cicedynB/general/ice_init.F90 @@ -1481,21 +1481,21 @@ subroutine init_state enddo if (tmask(i,j,iblk)) & - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk), & - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend (:), & - trcr_base (:,:), & - n_trcr_strata(:), & - nt_strata (:,:)) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend(:), & + trcr_base = trcr_base(:,:), & + n_trcr_strata = n_trcr_strata(:), & + nt_strata = nt_strata(:,:)) aice_init(i,j,iblk) = aice(i,j,iblk) @@ -1797,11 +1797,12 @@ subroutine set_state_var (nx_block, ny_block, & endif vsnon(i,j,n) = min(aicen(i,j,n)*hsno_init,p2*vicen(i,j,n)) - call icepack_init_trcr(Tair(i,j), Tf(i,j), & - salinz(i,j,:), Tmltz(i,j,:), & - Tsfc, & - nilyr, nslyr, & - qin(:), qsn(:)) + call icepack_init_trcr(Tair = Tair(i,j), Tf = Tf(i,j), & + Sprofile = salinz(i,j,:), & + Tprofile = Tmltz(i,j,:), & + Tsfc = Tsfc, & + nilyr = nilyr, nslyr = nslyr, & + qin = qin(:), qsn = qsn(:)) ! surface temperature trcrn(i,j,nt_Tsfc,n) = Tsfc ! deg C diff --git a/cicecore/cicedynB/general/ice_step_mod.F90 b/cicecore/cicedynB/general/ice_step_mod.F90 index 4bbf0aa3b..546098500 100644 --- a/cicecore/cicedynB/general/ice_step_mod.F90 +++ b/cicecore/cicedynB/general/ice_step_mod.F90 @@ -121,16 +121,16 @@ subroutine prep_radiation (iblk) alidr_init(i,j,iblk) = alidr_ai(i,j,iblk) alidf_init(i,j,iblk) = alidf_ai(i,j,iblk) - call icepack_prep_radiation (ncat, nilyr, nslyr, & - aice (i,j, iblk), aicen (i,j, :,iblk), & - swvdr (i,j, iblk), swvdf (i,j, iblk), & - swidr (i,j, iblk), swidf (i,j, iblk), & - alvdr_ai(i,j, iblk), alvdf_ai(i,j, iblk), & - alidr_ai(i,j, iblk), alidf_ai(i,j, iblk), & - scale_factor(i,j,iblk), & - fswsfcn (i,j, :,iblk), fswintn (i,j, :,iblk), & - fswthrun(i,j, :,iblk), fswpenln(i,j,:,:,iblk), & - Sswabsn (i,j,:,:,iblk), Iswabsn (i,j,:,:,iblk)) + call icepack_prep_radiation (ncat=ncat, nilyr=nilyr, nslyr=nslyr, & + scale_factor=scale_factor(i,j,iblk), & + aice = aice (i,j, iblk), aicen = aicen (i,j, :,iblk), & + swvdr = swvdr (i,j, iblk), swvdf = swvdf (i,j, iblk), & + swidr = swidr (i,j, iblk), swidf = swidf (i,j, iblk), & + alvdr_ai = alvdr_ai(i,j, iblk), alvdf_ai = alvdf_ai(i,j, iblk), & + alidr_ai = alidr_ai(i,j, iblk), alidf_ai = alidf_ai(i,j, iblk), & + fswsfcn = fswsfcn (i,j, :,iblk), fswintn = fswintn (i,j, :,iblk), & + fswthrun = fswthrun(i,j, :,iblk), fswpenln = fswpenln(i,j,:,:,iblk), & + Sswabsn = Sswabsn (i,j,:,:,iblk), Iswabsn = Iswabsn (i,j,:,:,iblk)) enddo ! i enddo ! j @@ -284,78 +284,127 @@ subroutine step_therm1 (dt, iblk) endif ! tr_aero if (tmask(i,j,iblk)) & - call icepack_step_therm1(dt, ncat, nilyr, nslyr, n_aero, & - aicen_init (i,j,:,iblk), & - vicen_init (i,j,:,iblk), vsnon_init (i,j,:,iblk), & - aice (i,j, iblk), aicen (i,j,:,iblk), & - vice (i,j, iblk), vicen (i,j,:,iblk), & - vsno (i,j, iblk), vsnon (i,j,:,iblk), & - uvel (i,j, iblk), vvel (i,j, iblk), & - trcrn (i,j,nt_Tsfc,:,iblk), & - trcrn (i,j,nt_qsno:nt_qsno+nslyr-1,:,iblk), & - trcrn (i,j,nt_qice:nt_qice+nilyr-1,:,iblk), & - trcrn (i,j,nt_sice:nt_sice+nilyr-1,:,iblk), & - trcrn (i,j,nt_alvl,:,iblk), & - trcrn (i,j,nt_vlvl,:,iblk), & - trcrn (i,j,nt_apnd,:,iblk), & - trcrn (i,j,nt_hpnd,:,iblk), & - trcrn (i,j,nt_ipnd,:,iblk), & - trcrn (i,j,nt_iage,:,iblk), & - trcrn (i,j,nt_FY ,:,iblk), & - aerosno (:,:,:), aeroice (:,:,:), & - uatm (i,j, iblk), vatm (i,j, iblk), & - wind (i,j, iblk), zlvl (i,j, iblk), & - Qa (i,j, iblk), rhoa (i,j, iblk), & - Tair (i,j, iblk), Tref (i,j, iblk), & - Qref (i,j, iblk), Uref (i,j, iblk), & - Cdn_atm_ratio(i,j, iblk), & - Cdn_ocn (i,j, iblk), Cdn_ocn_skin(i,j, iblk), & - Cdn_ocn_floe(i,j, iblk), Cdn_ocn_keel(i,j, iblk), & - Cdn_atm (i,j, iblk), Cdn_atm_skin(i,j, iblk), & - Cdn_atm_floe(i,j, iblk), Cdn_atm_pond(i,j, iblk), & - Cdn_atm_rdg (i,j, iblk), hfreebd (i,j, iblk), & - hdraft (i,j, iblk), hridge (i,j, iblk), & - distrdg (i,j, iblk), hkeel (i,j, iblk), & - dkeel (i,j, iblk), lfloe (i,j, iblk), & - dfloe (i,j, iblk), & - strax (i,j, iblk), stray (i,j, iblk), & - strairxT (i,j, iblk), strairyT (i,j, iblk), & - potT (i,j, iblk), sst (i,j, iblk), & - sss (i,j, iblk), Tf (i,j, iblk), & - strocnxT (i,j, iblk), strocnyT (i,j, iblk), & - fbot (i,j, iblk), & - Tbot (i,j, iblk), Tsnice (i,j, iblk), & - frzmlt (i,j, iblk), rside (i,j, iblk), & - fsnow (i,j, iblk), frain (i,j, iblk), & - fpond (i,j, iblk), & - fsurf (i,j, iblk), fsurfn (i,j,:,iblk), & - fcondtop (i,j, iblk), fcondtopn (i,j,:,iblk), & - fcondbot (i,j, iblk), fcondbotn (i,j,:,iblk), & - fswsfcn (i,j,:,iblk), fswintn (i,j,:,iblk), & - fswthrun (i,j,:,iblk), fswabs (i,j, iblk), & - flwout (i,j, iblk), & - Sswabsn (i,j,:,:,iblk), Iswabsn (i,j,:,:,iblk), & - flw (i,j, iblk), & - fsens (i,j, iblk), fsensn (i,j,:,iblk), & - flat (i,j, iblk), flatn (i,j,:,iblk), & - evap (i,j, iblk), & - evaps (i,j, iblk), evapi (i,j, iblk), & - fresh (i,j, iblk), fsalt (i,j, iblk), & - fhocn (i,j, iblk), fswthru (i,j, iblk), & - flatn_f (i,j,:,iblk), fsensn_f (i,j,:,iblk), & - fsurfn_f (i,j,:,iblk), fcondtopn_f (i,j,:,iblk), & - faero_atm (i,j,1:n_aero,iblk), & - faero_ocn (i,j,1:n_aero,iblk), & - dhsn (i,j,:,iblk), ffracn (i,j,:,iblk), & - meltt (i,j, iblk), melttn (i,j,:,iblk), & - meltb (i,j, iblk), meltbn (i,j,:,iblk), & - melts (i,j, iblk), meltsn (i,j,:,iblk), & - congel (i,j, iblk), congeln (i,j,:,iblk), & - snoice (i,j, iblk), snoicen (i,j,:,iblk), & - dsnown (i,j,:,iblk), & - lmask_n (i,j, iblk), lmask_s (i,j, iblk), & - mlt_onset (i,j, iblk), frz_onset (i,j, iblk), & - yday, prescribed_ice) + call icepack_step_therm1(dt=dt, ncat=ncat, & + nilyr=nilyr, nslyr=nslyr, n_aero=n_aero, & + aicen_init = aicen_init (i,j,:,iblk), & + vicen_init = vicen_init (i,j,:,iblk), & + vsnon_init = vsnon_init (i,j,:,iblk), & + aice = aice (i,j, iblk), & + aicen = aicen (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vicen = vicen (i,j,:,iblk), & + vsno = vsno (i,j, iblk), & + vsnon = vsnon (i,j,:,iblk), & + uvel = uvel (i,j, iblk), & + vvel = vvel (i,j, iblk), & + Tsfc = trcrn (i,j,nt_Tsfc,:,iblk), & + zqsn = trcrn (i,j,nt_qsno:nt_qsno+nslyr-1,:,iblk), & + zqin = trcrn (i,j,nt_qice:nt_qice+nilyr-1,:,iblk), & + zSin = trcrn (i,j,nt_sice:nt_sice+nilyr-1,:,iblk), & + alvl = trcrn (i,j,nt_alvl,:,iblk), & + vlvl = trcrn (i,j,nt_vlvl,:,iblk), & + apnd = trcrn (i,j,nt_apnd,:,iblk), & + hpnd = trcrn (i,j,nt_hpnd,:,iblk), & + ipnd = trcrn (i,j,nt_ipnd,:,iblk), & + iage = trcrn (i,j,nt_iage,:,iblk), & + FY = trcrn (i,j,nt_FY ,:,iblk), & + aerosno = aerosno (:,:,:), & + aeroice = aeroice (:,:,:), & + uatm = uatm (i,j, iblk), & + vatm = vatm (i,j, iblk), & + wind = wind (i,j, iblk), & + zlvl = zlvl (i,j, iblk), & + Qa = Qa (i,j, iblk), & + rhoa = rhoa (i,j, iblk), & + Tair = Tair (i,j, iblk), & + Tref = Tref (i,j, iblk), & + Qref = Qref (i,j, iblk), & + Uref = Uref (i,j, iblk), & + Cdn_atm_ratio= Cdn_atm_ratio(i,j, iblk), & + Cdn_ocn = Cdn_ocn (i,j, iblk), & + Cdn_ocn_skin = Cdn_ocn_skin(i,j, iblk), & + Cdn_ocn_floe = Cdn_ocn_floe(i,j, iblk), & + Cdn_ocn_keel = Cdn_ocn_keel(i,j, iblk), & + Cdn_atm = Cdn_atm (i,j, iblk), & + Cdn_atm_skin = Cdn_atm_skin(i,j, iblk), & + Cdn_atm_floe = Cdn_atm_floe(i,j, iblk), & + Cdn_atm_pond = Cdn_atm_pond(i,j, iblk), & + Cdn_atm_rdg = Cdn_atm_rdg (i,j, iblk), & + hfreebd = hfreebd (i,j, iblk), & + hdraft = hdraft (i,j, iblk), & + hridge = hridge (i,j, iblk), & + distrdg = distrdg (i,j, iblk), & + hkeel = hkeel (i,j, iblk), & + dkeel = dkeel (i,j, iblk), & + lfloe = lfloe (i,j, iblk), & + dfloe = dfloe (i,j, iblk), & + strax = strax (i,j, iblk), & + stray = stray (i,j, iblk), & + strairxT = strairxT (i,j, iblk), & + strairyT = strairyT (i,j, iblk), & + potT = potT (i,j, iblk), & + sst = sst (i,j, iblk), & + sss = sss (i,j, iblk), & + Tf = Tf (i,j, iblk), & + strocnxT = strocnxT (i,j, iblk), & + strocnyT = strocnyT (i,j, iblk), & + fbot = fbot (i,j, iblk), & + Tbot = Tbot (i,j, iblk), & + Tsnice = Tsnice (i,j, iblk), & + frzmlt = frzmlt (i,j, iblk), & + rside = rside (i,j, iblk), & + fsnow = fsnow (i,j, iblk), & + frain = frain (i,j, iblk), & + fpond = fpond (i,j, iblk), & + fsurf = fsurf (i,j, iblk), & + fsurfn = fsurfn (i,j,:,iblk), & + fcondtop = fcondtop (i,j, iblk), & + fcondtopn = fcondtopn (i,j,:,iblk), & + fcondbot = fcondbot (i,j, iblk), & + fcondbotn = fcondbotn (i,j,:,iblk), & + fswsfcn = fswsfcn (i,j,:,iblk), & + fswintn = fswintn (i,j,:,iblk), & + fswthrun = fswthrun (i,j,:,iblk), & + fswabs = fswabs (i,j, iblk), & + flwout = flwout (i,j, iblk), & + Sswabsn = Sswabsn (i,j,:,:,iblk), & + Iswabsn = Iswabsn (i,j,:,:,iblk), & + flw = flw (i,j, iblk), & + fsens = fsens (i,j, iblk), & + fsensn = fsensn (i,j,:,iblk), & + flat = flat (i,j, iblk), & + flatn = flatn (i,j,:,iblk), & + evap = evap (i,j, iblk), & + evaps = evaps (i,j, iblk), & + evapi = evapi (i,j, iblk), & + fresh = fresh (i,j, iblk), & + fsalt = fsalt (i,j, iblk), & + fhocn = fhocn (i,j, iblk), & + fswthru = fswthru (i,j, iblk), & + flatn_f = flatn_f (i,j,:,iblk), & + fsensn_f = fsensn_f (i,j,:,iblk), & + fsurfn_f = fsurfn_f (i,j,:,iblk), & + fcondtopn_f = fcondtopn_f (i,j,:,iblk), & + faero_atm = faero_atm (i,j,1:n_aero,iblk), & + faero_ocn = faero_ocn (i,j,1:n_aero,iblk), & + dhsn = dhsn (i,j,:,iblk), & + ffracn = ffracn (i,j,:,iblk), & + meltt = meltt (i,j, iblk), & + melttn = melttn (i,j,:,iblk), & + meltb = meltb (i,j, iblk), & + meltbn = meltbn (i,j,:,iblk), & + melts = melts (i,j, iblk), & + meltsn = meltsn (i,j,:,iblk), & + congel = congel (i,j, iblk), & + congeln = congeln (i,j,:,iblk), & + snoice = snoice (i,j, iblk), & + snoicen = snoicen (i,j,:,iblk), & + dsnown = dsnown (i,j,:,iblk), & + lmask_n = lmask_n (i,j, iblk), & + lmask_s = lmask_s (i,j, iblk), & + mlt_onset = mlt_onset (i,j, iblk), & + frz_onset = frz_onset (i,j, iblk), & + yday=yday, prescribed_ice=prescribed_ice) if (tr_aero) then do n = 1, ncat @@ -452,36 +501,51 @@ subroutine step_therm2 (dt, iblk) if (tmask(i,j,iblk)) then - call icepack_step_therm2(dt, ncat, n_aero, nltrcr, & - nilyr, nslyr, & - hin_max (:), nblyr, & - aicen (i,j,:,iblk), & - vicen (i,j,:,iblk), vsnon (i,j,:,iblk), & - aicen_init(i,j,:,iblk), vicen_init(i,j,:,iblk), & - trcrn (i,j,:,:,iblk), & - aice0 (i,j, iblk), aice (i,j, iblk), & - trcr_depend(:), trcr_base(:,:), & - n_trcr_strata(:), nt_strata(:,:), & - Tf (i,j, iblk), sss (i,j, iblk), & - salinz (i,j,:,iblk), & - rside (i,j, iblk), meltl (i,j, iblk), & - frzmlt (i,j, iblk), frazil (i,j, iblk), & - frain (i,j, iblk), fpond (i,j, iblk), & - fresh (i,j, iblk), fsalt (i,j, iblk), & - fhocn (i,j, iblk), update_ocn_f, & - bgrid, cgrid, & - igrid, faero_ocn (i,j,:,iblk), & - first_ice (i,j,:,iblk), fzsal (i,j, iblk), & - flux_bio (i,j,1:nbtrcr,iblk), & - ocean_bio (i,j,1:nbtrcr,iblk), & - frazil_diag(i,j, iblk), & - frz_onset (i,j, iblk), yday) + call icepack_step_therm2(dt=dt, ncat=ncat, n_aero=n_aero, & + nltrcr=nltrcr, nilyr=nilyr, nslyr=nslyr, nblyr=nblyr, & + hin_max = hin_max (:), & + aicen = aicen (i,j,:,iblk), & + vicen = vicen (i,j,:,iblk), & + vsnon = vsnon (i,j,:,iblk), & + aicen_init = aicen_init(i,j,:,iblk), & + vicen_init = vicen_init(i,j,:,iblk), & + trcrn = trcrn (i,j,:,:,iblk), & + aice0 = aice0 (i,j, iblk), & + aice = aice (i,j, iblk), & + trcr_depend= trcr_depend(:), & + trcr_base = trcr_base(:,:), & + n_trcr_strata = n_trcr_strata(:), & + nt_strata = nt_strata(:,:), & + Tf = Tf (i,j, iblk), & + sss = sss (i,j, iblk), & + salinz = salinz (i,j,:,iblk), & + rside = rside (i,j, iblk), & + meltl = meltl (i,j, iblk), & + frzmlt = frzmlt (i,j, iblk), & + frazil = frazil (i,j, iblk), & + frain = frain (i,j, iblk), & + fpond = fpond (i,j, iblk), & + fresh = fresh (i,j, iblk), & + fsalt = fsalt (i,j, iblk), & + fhocn = fhocn (i,j, iblk), & + update_ocn_f = update_ocn_f, & + bgrid = bgrid, & + cgrid = cgrid, & + igrid = igrid, & + faero_ocn = faero_ocn (i,j,:,iblk), & + first_ice = first_ice (i,j,:,iblk), & + fzsal = fzsal (i,j, iblk), & + flux_bio = flux_bio (i,j,1:nbtrcr,iblk), & + ocean_bio = ocean_bio (i,j,1:nbtrcr,iblk), & + frazil_diag = frazil_diag(i,j,iblk), & + frz_onset = frz_onset (i,j, iblk), & + yday = yday) endif ! tmask enddo ! i enddo ! j - + call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -552,18 +616,21 @@ subroutine update_state (dt, daidt, dvidt, dagedt, offset) !----------------------------------------------------------------- ! if (tmask(i,j,iblk)) & - call icepack_aggregate (ncat, aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk), & - vicen(i,j,:,iblk), vsnon(i,j, :,iblk), & - aice (i,j, iblk), & - trcr (i,j,:, iblk), & - vice (i,j, iblk), vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend(:), & - trcr_base (:,:), & - n_trcr_strata(:), & - nt_strata (:,:)) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend(:), & + trcr_base = trcr_base(:,:), & + n_trcr_strata = n_trcr_strata(:), & + nt_strata = nt_strata(:,:)) !----------------------------------------------------------------- ! Compute thermodynamic area and volume tendencies. @@ -711,31 +778,42 @@ subroutine step_dyn_ridge (dt, ndtd, iblk) if (tmask(i,j,iblk)) then - call icepack_step_ridge (dt, ndtd, & - nilyr, nslyr, & - nblyr, & - ncat, hin_max (:), & - rdg_conv (i,j, iblk), rdg_shear(i,j, iblk), & - aicen (i,j,:,iblk), & - trcrn (i,j,:,:,iblk), & - vicen (i,j,:,iblk), vsnon (i,j,:,iblk), & - aice0 (i,j, iblk), trcr_depend(:), & - trcr_base(:,:), n_trcr_strata(:), & - nt_strata(:,:), & - dardg1dt (i,j, iblk), dardg2dt (i,j, iblk), & - dvirdgdt (i,j, iblk), opening (i,j, iblk), & - fpond (i,j, iblk), & - fresh (i,j, iblk), fhocn (i,j, iblk), & - n_aero, & - faero_ocn(i,j,:,iblk), & - aparticn (i,j,:,iblk), krdgn (i,j,:,iblk), & - aredistn (i,j,:,iblk), vredistn (i,j,:,iblk), & - dardg1ndt(i,j,:,iblk), dardg2ndt(i,j,:,iblk), & - dvirdgndt(i,j,:,iblk), & - araftn (i,j,:,iblk), vraftn (i,j,:,iblk), & - aice (i,j, iblk), fsalt (i,j, iblk), & - first_ice(i,j,:,iblk), fzsal (i,j, iblk), & - flux_bio (i,j,1:nbtrcr,iblk) ) + call icepack_step_ridge (dt=dt, ndtd=ndtd, & + nilyr=nilyr, nslyr=nslyr, nblyr=nblyr, & + ncat=ncat, n_aero=n_aero, hin_max=hin_max(:), & + trcr_depend = trcr_depend (:), & + trcr_base = trcr_base (:,:), & + n_trcr_strata = n_trcr_strata(:), & + nt_strata = nt_strata (:,:), & + trcrn = trcrn (i,j,:,:,iblk), & + rdg_conv = rdg_conv (i,j, iblk), & + rdg_shear = rdg_shear(i,j, iblk), & + aicen = aicen (i,j,:,iblk), & + vicen = vicen (i,j,:,iblk), & + vsnon = vsnon (i,j,:,iblk), & + aice0 = aice0 (i,j, iblk), & + dardg1dt = dardg1dt (i,j, iblk), & + dardg2dt = dardg2dt (i,j, iblk), & + dvirdgdt = dvirdgdt (i,j, iblk), & + opening = opening (i,j, iblk), & + fpond = fpond (i,j, iblk), & + fresh = fresh (i,j, iblk), & + fhocn = fhocn (i,j, iblk), & + faero_ocn = faero_ocn(i,j,:,iblk), & + aparticn = aparticn (i,j,:,iblk), & + krdgn = krdgn (i,j,:,iblk), & + aredistn = aredistn (i,j,:,iblk), & + vredistn = vredistn (i,j,:,iblk), & + dardg1ndt = dardg1ndt(i,j,:,iblk), & + dardg2ndt = dardg2ndt(i,j,:,iblk), & + dvirdgndt = dvirdgndt(i,j,:,iblk), & + araftn = araftn (i,j,:,iblk), & + vraftn = vraftn (i,j,:,iblk), & + aice = aice (i,j, iblk), & + fsalt = fsalt (i,j, iblk), & + first_ice = first_ice(i,j,:,iblk), & + fzsal = fzsal (i,j, iblk), & + flux_bio = flux_bio (i,j,1:nbtrcr,iblk)) endif ! tmask @@ -868,46 +946,49 @@ subroutine step_radiation (dt, iblk) if (tmask(i,j,iblk)) then - call icepack_step_radiation (dt, ncat, & - n_algae, tr_zaero, nblyr, & - ntrcr, nbtrcr_sw, & - nilyr, nslyr, n_aero, & - n_zaero, dEdd_algae, nlt_chl_sw, & - nlt_zaero_sw(:), & - swgrid(:), igrid(:), & - fbri(:), & - aicen(i,j,:,iblk), vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - trcrn(i,j,nt_Tsfc,:,iblk), & - trcrn(i,j,nt_alvl,:,iblk), & - trcrn(i,j,nt_apnd,:,iblk), & - trcrn(i,j,nt_hpnd,:,iblk), & - trcrn(i,j,nt_ipnd,:,iblk), & - trcrn(i,j,nt_aero:nt_aero+4*n_aero-1,:,iblk), & - ztrcr_sw, & - ztrcr, & - TLAT(i,j,iblk), TLON(i,j,iblk), & - calendar_type, days_per_year, & - nextsw_cday, yday, & - sec, & - kaer_tab, waer_tab, & - gaer_tab, & - kaer_bc_tab(:,:), waer_bc_tab(:,:), & - gaer_bc_tab(:,:), bcenh(:,:,:), & - modal_aero, & - swvdr(i,j,iblk), swvdf(i,j,iblk), & - swidr(i,j,iblk), swidf(i,j,iblk), & - coszen(i,j,iblk), fsnow(i,j,iblk), & - alvdrn(i,j,:,iblk), alvdfn(i,j,:,iblk), & - alidrn(i,j,:,iblk), alidfn(i,j,:,iblk), & - fswsfcn(i,j,:,iblk), fswintn(i,j,:,iblk), & - fswthrun(i,j,:,iblk), fswpenln(i,j,:,:,iblk), & - Sswabsn(i,j,:,:,iblk), Iswabsn(i,j,:,:,iblk), & - albicen(i,j,:,iblk), albsnon(i,j,:,iblk), & - albpndn(i,j,:,iblk), apeffn(i,j,:,iblk), & - snowfracn(i,j,:,iblk), & - dhsn(i,j,:,iblk), ffracn(i,j,:,iblk), & - l_print_point) + call icepack_step_radiation (dt=dt, ncat=ncat, & + n_algae=n_algae, tr_zaero=tr_zaero, nblyr=nblyr, & + ntrcr=ntrcr, nbtrcr_sw=nbtrcr_sw, & + nilyr=nilyr, nslyr=nslyr, n_aero=n_aero, & + n_zaero=n_zaero, nlt_chl_sw=nlt_chl_sw, & + nlt_zaero_sw=nlt_zaero_sw(:), & + dEdd_algae=dEdd_algae, & + swgrid=swgrid(:), igrid=igrid(:), & + fbri=fbri(:), & + aicen=aicen(i,j, :,iblk), & + vicen=vicen(i,j, :,iblk), & + vsnon=vsnon(i,j, :,iblk), & + Tsfcn=trcrn(i,j,nt_Tsfc,:,iblk), & + alvln=trcrn(i,j,nt_alvl,:,iblk), & + apndn=trcrn(i,j,nt_apnd,:,iblk), & + hpndn=trcrn(i,j,nt_hpnd,:,iblk), & + ipndn=trcrn(i,j,nt_ipnd,:,iblk), & + aeron=trcrn(i,j,nt_aero:nt_aero+4*n_aero-1,:,iblk), & + zbion=ztrcr_sw, & + trcrn=ztrcr, & + TLAT=TLAT(i,j,iblk), TLON=TLON(i,j,iblk), & + calendar_type=calendar_type, & + days_per_year=days_per_year, & + nextsw_cday=nextsw_cday, yday=yday, & + sec=sec, & + kaer_tab=kaer_tab, kaer_bc_tab=kaer_bc_tab(:,:), & + waer_tab=waer_tab, waer_bc_tab=waer_bc_tab(:,:), & + gaer_tab=gaer_tab, gaer_bc_tab=gaer_bc_tab(:,:), & + bcenh=bcenh(:,:,:), & + modal_aero=modal_aero, & + swvdr =swvdr (i,j ,iblk), swvdf =swvdf (i,j ,iblk), & + swidr =swidr (i,j ,iblk), swidf =swidf (i,j ,iblk), & + coszen =coszen (i,j ,iblk), fsnow =fsnow (i,j ,iblk), & + alvdrn =alvdrn (i,j,: ,iblk), alvdfn =alvdfn (i,j,: ,iblk), & + alidrn =alidrn (i,j,: ,iblk), alidfn =alidfn (i,j,: ,iblk), & + fswsfcn =fswsfcn (i,j,: ,iblk), fswintn =fswintn (i,j,: ,iblk), & + fswthrun =fswthrun (i,j,: ,iblk), fswpenln=fswpenln(i,j,:,:,iblk), & + Sswabsn =Sswabsn (i,j,:,:,iblk), Iswabsn =Iswabsn (i,j,:,:,iblk), & + albicen =albicen (i,j,: ,iblk), albsnon =albsnon (i,j,: ,iblk), & + albpndn =albpndn (i,j,: ,iblk), apeffn =apeffn (i,j,: ,iblk), & + snowfracn=snowfracn(i,j,: ,iblk), & + dhsn =dhsn (i,j,: ,iblk), ffracn =ffracn(i,j,:,iblk), & + l_print_point=l_print_point) endif @@ -1027,25 +1108,25 @@ subroutine ocean_mixed_layer (dt, iblk) i = indxi(ij) j = indxj(ij) - call icepack_atm_boundary( 'ocn', & - sst (i,j,iblk), & - potT (i,j,iblk), & - uatm (i,j,iblk), & - vatm (i,j,iblk), & - wind (i,j,iblk), & - zlvl (i,j,iblk), & - Qa (i,j,iblk), & - rhoa (i,j,iblk), & - strairx_ocn(i,j,iblk), & - strairy_ocn(i,j,iblk), & - Tref_ocn (i,j,iblk), & - Qref_ocn (i,j,iblk), & - delt (i,j), & - delq (i,j), & - lhcoef (i,j), & - shcoef (i,j), & - Cdn_atm (i,j,iblk), & - Cdn_atm_ratio(i,j,iblk)) + call icepack_atm_boundary(sfctype = 'ocn', & + Tsf = sst (i,j,iblk), & + potT = potT (i,j,iblk), & + uatm = uatm (i,j,iblk), & + vatm = vatm (i,j,iblk), & + wind = wind (i,j,iblk), & + zlvl = zlvl (i,j,iblk), & + Qa = Qa (i,j,iblk), & + rhoa = rhoa (i,j,iblk), & + strx = strairx_ocn(i,j,iblk), & + stry = strairy_ocn(i,j,iblk), & + Tref = Tref_ocn (i,j,iblk), & + Qref = Qref_ocn (i,j,iblk), & + delt = delt (i,j), & + delq = delq (i,j), & + lhcoef = lhcoef (i,j), & + shcoef = shcoef (i,j), & + Cdn_atm = Cdn_atm (i,j,iblk), & + Cdn_atm_ratio_n = Cdn_atm_ratio(i,j,iblk)) enddo ! ij call icepack_warnings_flush(nu_diag) @@ -1073,19 +1154,19 @@ subroutine ocean_mixed_layer (dt, iblk) i = indxi(ij) j = indxj(ij) - call icepack_ocn_mixed_layer (alvdr_ocn(i,j,iblk), swvdr (i,j,iblk), & - alidr_ocn(i,j,iblk), swidr (i,j,iblk), & - alvdf_ocn(i,j,iblk), swvdf (i,j,iblk), & - alidf_ocn(i,j,iblk), swidf (i,j,iblk), & - sst (i,j,iblk), flwout_ocn(i,j,iblk), & - fsens_ocn(i,j,iblk), shcoef (i,j), & - flat_ocn (i,j,iblk), lhcoef (i,j), & - evap_ocn (i,j,iblk), flw (i,j,iblk), & - delt (i,j), delq (i,j), & - aice (i,j,iblk), fhocn (i,j,iblk), & - fswthru (i,j,iblk), hmix (i,j,iblk), & - Tf (i,j,iblk), qdp (i,j,iblk), & - frzmlt (i,j,iblk), dt) + call icepack_ocn_mixed_layer(alvdr_ocn=alvdr_ocn(i,j,iblk), swvdr =swvdr (i,j,iblk), & + alidr_ocn=alidr_ocn(i,j,iblk), swidr =swidr (i,j,iblk), & + alvdf_ocn=alvdf_ocn(i,j,iblk), swvdf =swvdf (i,j,iblk), & + alidf_ocn=alidf_ocn(i,j,iblk), swidf =swidf (i,j,iblk), & + sst =sst (i,j,iblk), flwout_ocn=flwout_ocn(i,j,iblk), & + fsens_ocn=fsens_ocn(i,j,iblk), shcoef=shcoef(i,j), & + flat_ocn =flat_ocn (i,j,iblk), lhcoef=lhcoef(i,j), & + evap_ocn =evap_ocn (i,j,iblk), flw =flw (i,j,iblk), & + delt =delt (i,j), delq =delq (i,j), & + aice =aice (i,j,iblk), fhocn =fhocn (i,j,iblk), & + fswthru =fswthru (i,j,iblk), hmix =hmix (i,j,iblk), & + Tf =Tf (i,j,iblk), qdp =qdp (i,j,iblk), & + frzmlt =frzmlt (i,j,iblk), dt =dt) enddo ! ij call icepack_warnings_flush(nu_diag) @@ -1172,17 +1253,18 @@ subroutine biogeochemistry (dt, iblk) do j = jlo, jhi do i = ilo, ihi - call icepack_init_OceanConcArray(icepack_max_nbtrcr, & - icepack_max_algae, icepack_max_don, icepack_max_doc, & - icepack_max_dic, icepack_max_aero, icepack_max_fe, & - nit(i,j, iblk), amm (i,j, iblk), & - sil(i,j, iblk), dmsp (i,j, iblk), & - dms(i,j, iblk), algalN(i,j,:,iblk), & - doc(i,j,:,iblk), don (i,j,:,iblk), & - dic(i,j,:,iblk), fed (i,j,:,iblk), & - fep(i,j,:,iblk), zaeros(i,j,:,iblk), & - ocean_bio_all(i,j,:,iblk), & - hum(i,j, iblk)) + call icepack_init_OceanConcArray(max_nbtrcr = icepack_max_nbtrcr, & + max_algae = icepack_max_algae, max_don = icepack_max_don, & + max_doc = icepack_max_doc, max_dic = icepack_max_dic, & + max_aero = icepack_max_aero, max_fe = icepack_max_fe, & + nit = nit(i,j, iblk), amm = amm (i,j, iblk), & + sil = sil(i,j, iblk), dmsp = dmsp (i,j, iblk), & + dms = dms(i,j, iblk), algalN = algalN(i,j,:,iblk), & + doc = doc(i,j,:,iblk), don = don (i,j,:,iblk), & + dic = dic(i,j,:,iblk), fed = fed (i,j,:,iblk), & + fep = fep(i,j,:,iblk), zaeros = zaeros(i,j,:,iblk), & + hum = hum(i,j, iblk), & + ocean_bio_all = ocean_bio_all(i,j,:,iblk)) do mm = 1,nbtrcr ocean_bio(i,j,mm,iblk) = ocean_bio_all(i,j,bio_index_o(mm),iblk) @@ -1193,57 +1275,57 @@ subroutine biogeochemistry (dt, iblk) enddo ! mm endif - call icepack_biogeochemistry(dt, ntrcr, nbtrcr,& - upNO (i,j, iblk), & - upNH (i,j, iblk), & - iDi (i,j,:,:, iblk), & - iki (i,j,:,:, iblk), & - zfswin (i,j,:,:, iblk), & - zsal_tot (i,j, iblk), & - darcy_V (i,j,:, iblk), & - grow_net (i,j, iblk), & - PP_net (i,j, iblk), & - hbri (i,j, iblk), & - dhbr_bot (i,j,:, iblk), & - dhbr_top (i,j,:, iblk), & - Zoo (i,j,:,:, iblk), & - fbio_snoice (i,j,:, iblk), & - fbio_atmice (i,j,:, iblk), & - ocean_bio (i,j,1:nbtrcr, iblk), & - first_ice (i,j,:, iblk), & - fswpenln (i,j,:,:, iblk), & - bphi (i,j,:,:, iblk), & - bTiz (i,j,:,:, iblk), & - ice_bio_net (i,j,1:nbtrcr, iblk), & - snow_bio_net(i,j,1:nbtrcr, iblk), & - fswthrun (i,j,:, iblk), & - Rayleigh_criteria(i,j, iblk), & - sice_rho (i,j,:, iblk), & - fzsal (i,j, iblk), & - fzsal_g (i,j, iblk), & - bgrid, igrid, icgrid, cgrid, & - nblyr, nilyr, nslyr, n_algae, n_zaero, & - ncat, n_doc, n_dic, n_don, n_fed, n_fep, & - meltbn (i,j,:, iblk), & - melttn (i,j,:, iblk), & - congeln (i,j,:, iblk), & - snoicen (i,j,:, iblk), & - sst (i,j, iblk), & - sss (i,j, iblk), & - fsnow (i,j, iblk), & - meltsn (i,j,:, iblk), & - hin_old (i,j,:, iblk), & - flux_bio (i,j,1:nbtrcr, iblk), & - flux_bio_atm(i,j,1:nbtrcr, iblk), & - aicen_init (i,j,:, iblk), & - vicen_init (i,j,:, iblk), & - aicen (i,j,:, iblk), & - vicen (i,j,:, iblk), & - vsnon (i,j,:, iblk), & - aice0 (i,j, iblk), & - trcrn (i,j,:,:,iblk), & - vsnon_init (i,j,:, iblk), & - skl_bgc) + call icepack_biogeochemistry(dt=dt, ntrcr=ntrcr, nbtrcr=nbtrcr,& + bgrid=bgrid, igrid=igrid, icgrid=icgrid, cgrid=cgrid, & + nblyr=nblyr, nilyr=nilyr, nslyr=nslyr, n_algae=n_algae, n_zaero=n_zaero, & + ncat=ncat, n_doc=n_doc, n_dic=n_dic, n_don=n_don, n_fed=n_fed, n_fep=n_fep, & + upNO = upNO (i,j, iblk), & + upNH = upNH (i,j, iblk), & + iDi = iDi (i,j,:,:, iblk), & + iki = iki (i,j,:,:, iblk), & + zfswin = zfswin (i,j,:,:, iblk), & + zsal_tot = zsal_tot (i,j, iblk), & + darcy_V = darcy_V (i,j,:, iblk), & + grow_net = grow_net (i,j, iblk), & + PP_net = PP_net (i,j, iblk), & + hbri = hbri (i,j, iblk), & + dhbr_bot = dhbr_bot (i,j,:, iblk), & + dhbr_top = dhbr_top (i,j,:, iblk), & + Zoo = Zoo (i,j,:,:, iblk), & + fbio_snoice = fbio_snoice (i,j,:, iblk), & + fbio_atmice = fbio_atmice (i,j,:, iblk), & + ocean_bio = ocean_bio (i,j,1:nbtrcr, iblk), & + first_ice = first_ice (i,j,:, iblk), & + fswpenln = fswpenln (i,j,:,:, iblk), & + bphi = bphi (i,j,:,:, iblk), & + bTiz = bTiz (i,j,:,:, iblk), & + ice_bio_net = ice_bio_net (i,j,1:nbtrcr, iblk), & + snow_bio_net = snow_bio_net(i,j,1:nbtrcr, iblk), & + fswthrun = fswthrun (i,j,:, iblk), & + sice_rho = sice_rho (i,j,:, iblk), & + fzsal = fzsal (i,j, iblk), & + fzsal_g = fzsal_g (i,j, iblk), & + meltbn = meltbn (i,j,:, iblk), & + melttn = melttn (i,j,:, iblk), & + congeln = congeln (i,j,:, iblk), & + snoicen = snoicen (i,j,:, iblk), & + sst = sst (i,j, iblk), & + sss = sss (i,j, iblk), & + fsnow = fsnow (i,j, iblk), & + meltsn = meltsn (i,j,:, iblk), & + hin_old = hin_old (i,j,:, iblk), & + flux_bio = flux_bio (i,j,1:nbtrcr, iblk), & + flux_bio_atm = flux_bio_atm(i,j,1:nbtrcr, iblk), & + aicen_init = aicen_init (i,j,:, iblk), & + vicen_init = vicen_init (i,j,:, iblk), & + aicen = aicen (i,j,:, iblk), & + vicen = vicen (i,j,:, iblk), & + vsnon = vsnon (i,j,:, iblk), & + aice0 = aice0 (i,j, iblk), & + trcrn = trcrn (i,j,:,:, iblk), & + vsnon_init = vsnon_init (i,j,:, iblk), & + Rayleigh_criteria = Rayleigh_criteria(i,j,iblk), & + skl_bgc = skl_bgc) enddo ! i enddo ! j diff --git a/cicecore/cicedynB/infrastructure/ice_restart_driver.F90 b/cicecore/cicedynB/infrastructure/ice_restart_driver.F90 index f9a42714e..ca22c6abd 100644 --- a/cicecore/cicedynB/infrastructure/ice_restart_driver.F90 +++ b/cicecore/cicedynB/infrastructure/ice_restart_driver.F90 @@ -493,21 +493,21 @@ subroutine restartfile (ice_ic) do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) & - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk),& - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend, & - trcr_base, & - n_trcr_strata, & - nt_strata) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend, & + trcr_base = trcr_base, & + n_trcr_strata = n_trcr_strata, & + nt_strata = nt_strata) aice_init(i,j,iblk) = aice(i,j,iblk) enddo @@ -856,21 +856,21 @@ subroutine restartfile_v4 (ice_ic) do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) & - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk),& - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend, & - trcr_base, & - n_trcr_strata, & - nt_strata) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend, & + trcr_base = trcr_base, & + n_trcr_strata = n_trcr_strata, & + nt_strata = nt_strata) aice_init(i,j,iblk) = aice(i,j,iblk) enddo diff --git a/cicecore/cicedynB/infrastructure/ice_restoring.F90 b/cicecore/cicedynB/infrastructure/ice_restoring.F90 index a7851ef07..af7959f3e 100644 --- a/cicecore/cicedynB/infrastructure/ice_restoring.F90 +++ b/cicecore/cicedynB/infrastructure/ice_restoring.F90 @@ -511,11 +511,12 @@ subroutine set_restore_var (nx_block, ny_block, & vicen(i,j,n) = hinit(n) * ainit(n) ! m vsnon(i,j,n) = min(aicen(i,j,n)*hsno_init,p2*vicen(i,j,n)) - call icepack_init_trcr(Tair(i,j), Tf(i,j), & - salinz(i,j,:), Tmltz(i,j,:), & - Tsfc, & - nilyr, nslyr, & - qin(:), qsn(:)) + call icepack_init_trcr(Tair=Tair(i,j), Tf=Tf(i,j), & + Sprofile=salinz(i,j,:), & + Tprofile=Tmltz(i,j,:), & + Tsfc=Tsfc, & + nilyr=nilyr, nslyr=nslyr, & + qin=qin(:), qsn=qsn(:)) ! surface temperature trcrn(i,j,nt_Tsfc,n) = Tsfc ! deg C diff --git a/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 b/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 index 17c3f5d6f..ee075d693 100644 --- a/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 +++ b/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 @@ -132,9 +132,9 @@ subroutine cice_init #endif call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat, hin_max) ! ice thickness distribution + call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat, hin_max, c_hi_range) ! output + call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message="subname", & @@ -395,21 +395,21 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk),& - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend, & - trcr_base, & - n_trcr_strata, & - nt_strata) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend, & + trcr_base = trcr_base, & + n_trcr_strata = n_trcr_strata, & + nt_strata = nt_strata) else ! tcraig, reset all tracer values on land to zero trcrn(i,j,:,:,iblk) = c0 diff --git a/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 b/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 index 56d30cb72..87647a2f5 100644 --- a/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 +++ b/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 @@ -136,9 +136,9 @@ subroutine cice_init(mpicom_ice) #endif call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat, hin_max) ! ice thickness distribution + call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat, hin_max, c_hi_range) ! output + call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & @@ -395,21 +395,21 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk),& - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend, & - trcr_base, & - n_trcr_strata, & - nt_strata) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend, & + trcr_base = trcr_base, & + n_trcr_strata = n_trcr_strata, & + nt_strata = nt_strata) else ! tcraig, reset all tracer values on land to zero trcrn(i,j,:,:,iblk) = c0 diff --git a/cicecore/drivers/mct/cesm1/ice_prescribed_mod.F90 b/cicecore/drivers/mct/cesm1/ice_prescribed_mod.F90 index eeb217577..60616fef2 100644 --- a/cicecore/drivers/mct/cesm1/ice_prescribed_mod.F90 +++ b/cicecore/drivers/mct/cesm1/ice_prescribed_mod.F90 @@ -544,17 +544,21 @@ subroutine ice_prescribed_phys ! compute aggregate ice state and open water area !-------------------------------------------------------------------- if (tmask(i,j,iblk)) & - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), trcrn(i,j,1:ntrcr,:,iblk), & - vicen(i,j,:,iblk), vsnon(i,j, :,iblk), & - aice (i,j, iblk), trcr (i,j,1:ntrcr, iblk), & - vice (i,j, iblk), vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend(1:ntrcr), & - trcr_base(1:ntrcr,:), & - n_trcr_strata(1:ntrcr), & - nt_strata(1:ntrcr,:)) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,1:ntrcr,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,1:ntrcr,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend(1:ntrcr), & + trcr_base = trcr_base(1:ntrcr,:), & + n_trcr_strata = n_trcr_strata(1:ntrcr), & + nt_strata = nt_strata(1:ntrcr,:)) enddo ! i enddo ! j diff --git a/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 b/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 index 56d30cb72..87647a2f5 100644 --- a/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 +++ b/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 @@ -136,9 +136,9 @@ subroutine cice_init(mpicom_ice) #endif call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat, hin_max) ! ice thickness distribution + call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat, hin_max, c_hi_range) ! output + call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & @@ -395,21 +395,21 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk),& - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend, & - trcr_base, & - n_trcr_strata, & - nt_strata) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend, & + trcr_base = trcr_base, & + n_trcr_strata = n_trcr_strata, & + nt_strata = nt_strata) else ! tcraig, reset all tracer values on land to zero trcrn(i,j,:,:,iblk) = c0 diff --git a/cicecore/drivers/nuopc/cmeps/ice_prescribed_mod.F90 b/cicecore/drivers/nuopc/cmeps/ice_prescribed_mod.F90 index 8d994e690..bca8c7ab7 100644 --- a/cicecore/drivers/nuopc/cmeps/ice_prescribed_mod.F90 +++ b/cicecore/drivers/nuopc/cmeps/ice_prescribed_mod.F90 @@ -492,20 +492,21 @@ subroutine ice_prescribed_phys !-------------------------------------------------------------------- ! compute aggregate ice state and open water area !-------------------------------------------------------------------- - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,1:ntrcr,:,iblk), & - vicen(i,j,:,iblk), vsnon(i,j, :,iblk), & - aice (i,j, iblk), & - trcr (i,j,1:ntrcr, iblk), & - vice (i,j, iblk), vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend(1:ntrcr), & - trcr_base(1:ntrcr,:), & - n_trcr_strata(1:ntrcr), & - nt_strata(1:ntrcr,:)) - + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,1:ntrcr,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,1:ntrcr,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend(1:ntrcr), & + trcr_base = trcr_base(1:ntrcr,:), & + n_trcr_strata = n_trcr_strata(1:ntrcr), & + nt_strata = nt_strata(1:ntrcr,:)) end if ! tmask enddo ! i enddo ! j diff --git a/cicecore/drivers/standalone/cice/CICE_InitMod.F90 b/cicecore/drivers/standalone/cice/CICE_InitMod.F90 index ddc966b55..038e76bbe 100644 --- a/cicecore/drivers/standalone/cice/CICE_InitMod.F90 +++ b/cicecore/drivers/standalone/cice/CICE_InitMod.F90 @@ -135,9 +135,9 @@ subroutine cice_init #endif call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat, hin_max) ! ice thickness distribution + call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat, hin_max, c_hi_range) ! output + call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & @@ -399,21 +399,21 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate (ncat, & - aicen(i,j,:,iblk), & - trcrn(i,j,:,:,iblk),& - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - aice (i,j, iblk), & - trcr (i,j,:,iblk), & - vice (i,j, iblk), & - vsno (i,j, iblk), & - aice0(i,j, iblk), & - ntrcr, & - trcr_depend, & - trcr_base, & - n_trcr_strata, & - nt_strata) + call icepack_aggregate(ncat = ncat, & + aicen = aicen(i,j,:,iblk), & + trcrn = trcrn(i,j,:,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + aice = aice (i,j, iblk), & + trcr = trcr (i,j,:,iblk), & + vice = vice (i,j, iblk), & + vsno = vsno (i,j, iblk), & + aice0 = aice0(i,j, iblk), & + ntrcr = ntrcr, & + trcr_depend = trcr_depend, & + trcr_base = trcr_base, & + n_trcr_strata = n_trcr_strata, & + nt_strata = nt_strata) else ! tcraig, reset all tracer values on land to zero trcrn(i,j,:,:,iblk) = c0 diff --git a/cicecore/shared/ice_init_column.F90 b/cicecore/shared/ice_init_column.F90 index f86984195..9e4aa57a1 100644 --- a/cicecore/shared/ice_init_column.F90 +++ b/cicecore/shared/ice_init_column.F90 @@ -146,7 +146,7 @@ subroutine init_thermo_vertical !----------------------------------------------------------------- call icepack_query_parameters(depressT_out=depressT) - call icepack_init_thermo(nilyr, sprofile) + call icepack_init_thermo(nilyr=nilyr, sprofile=sprofile) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -331,46 +331,49 @@ subroutine init_shortwave enddo if (tmask(i,j,iblk)) then - call icepack_step_radiation (dt, ncat, & - n_algae, tr_zaero, nblyr, & - ntrcr, nbtrcr_sw, & - nilyr, nslyr, n_aero, & - n_zaero, dEdd_algae, nlt_chl_sw, & - nlt_zaero_sw(:), & - swgrid(:), igrid(:), & - fbri(:), & - aicen(i,j,:,iblk), vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - trcrn(i,j,nt_Tsfc,:,iblk), & - trcrn(i,j,nt_alvl,:,iblk), & - trcrn(i,j,nt_apnd,:,iblk), & - trcrn(i,j,nt_hpnd,:,iblk), & - trcrn(i,j,nt_ipnd,:,iblk), & - trcrn(i,j,nt_aero:nt_aero+4*n_aero-1,:,iblk), & - ztrcr_sw, & - ztrcr, & - TLAT(i,j,iblk), TLON(i,j,iblk), & - calendar_type, days_per_year, & - nextsw_cday, yday, & - sec, & - kaer_tab, waer_tab, & - gaer_tab, & - kaer_bc_tab(:,:), waer_bc_tab(:,:), & - gaer_bc_tab(:,:), bcenh(:,:,:), & - modal_aero, & - swvdr(i,j,iblk), swvdf(i,j,iblk), & - swidr(i,j,iblk), swidf(i,j,iblk), & - coszen(i,j,iblk), fsnow(i,j,iblk), & - alvdrn(i,j,:,iblk), alvdfn(i,j,:,iblk), & - alidrn(i,j,:,iblk), alidfn(i,j,:,iblk), & - fswsfcn(i,j,:,iblk), fswintn(i,j,:,iblk), & - fswthrun(i,j,:,iblk), fswpenln(i,j,:,:,iblk), & - Sswabsn(i,j,:,:,iblk), Iswabsn(i,j,:,:,iblk), & - albicen(i,j,:,iblk), albsnon(i,j,:,iblk), & - albpndn(i,j,:,iblk), apeffn(i,j,:,iblk), & - snowfracn(i,j,:,iblk), & - dhsn(i,j,:,iblk), ffracn(i,j,:,iblk), & - l_print_point, & + call icepack_step_radiation (dt=dt, ncat=ncat, & + n_algae=n_algae, tr_zaero=tr_zaero, nblyr=nblyr, & + ntrcr=ntrcr, nbtrcr_sw=nbtrcr_sw, & + nilyr=nilyr, nslyr=nslyr, n_aero=n_aero, & + n_zaero=n_zaero, nlt_chl_sw=nlt_chl_sw, & + nlt_zaero_sw=nlt_zaero_sw(:), & + dEdd_algae=dEdd_algae, & + swgrid=swgrid(:), igrid=igrid(:), & + fbri=fbri(:), & + aicen=aicen(i,j,:,iblk), & + vicen=vicen(i,j,:,iblk), & + vsnon=vsnon(i,j,:,iblk), & + Tsfcn=trcrn(i,j,nt_Tsfc,:,iblk), & + alvln=trcrn(i,j,nt_alvl,:,iblk), & + apndn=trcrn(i,j,nt_apnd,:,iblk), & + hpndn=trcrn(i,j,nt_hpnd,:,iblk), & + ipndn=trcrn(i,j,nt_ipnd,:,iblk), & + aeron=trcrn(i,j,nt_aero:nt_aero+4*n_aero-1,:,iblk), & + zbion=ztrcr_sw, & + trcrn=ztrcr, & + TLAT=TLAT(i,j,iblk), TLON=TLON(i,j,iblk), & + calendar_type=calendar_type, & + days_per_year=days_per_year, & + nextsw_cday=nextsw_cday, yday=yday, & + sec=sec, & + kaer_tab=kaer_tab, kaer_bc_tab=kaer_bc_tab(:,:), & + waer_tab=waer_tab, waer_bc_tab=waer_bc_tab(:,:), & + gaer_tab=gaer_tab, gaer_bc_tab=gaer_bc_tab(:,:), & + bcenh=bcenh(:,:,:), & + modal_aero=modal_aero, & + swvdr=swvdr(i,j,iblk), swvdf=swvdf(i,j,iblk),& + swidr=swidr(i,j,iblk), swidf=swidf(i,j,iblk),& + coszen=coszen(i,j,iblk), fsnow=fsnow(i,j,iblk),& + alvdrn=alvdrn(i,j,:,iblk), alvdfn=alvdfn(i,j,:,iblk), & + alidrn=alidrn(i,j,:,iblk), alidfn=alidfn(i,j,:,iblk), & + fswsfcn=fswsfcn(i,j,:,iblk), fswintn=fswintn(i,j,:,iblk), & + fswthrun=fswthrun(i,j,:,iblk), fswpenln=fswpenln(i,j,:,:,iblk), & + Sswabsn=Sswabsn(i,j,:,:,iblk), Iswabsn=Iswabsn(i,j,:,:,iblk), & + albicen=albicen(i,j,:,iblk), albsnon=albsnon(i,j,:,iblk), & + albpndn=albpndn(i,j,:,iblk), apeffn=apeffn(i,j,:,iblk), & + snowfracn=snowfracn(i,j,:,iblk), & + dhsn=dhsn(i,j,:,iblk), ffracn=ffracn(i,j,:,iblk), & + l_print_point=l_print_point, & initonly = .true.) endif @@ -677,8 +680,13 @@ subroutine init_bgc() do j = jlo, jhi do i = ilo, ihi - call icepack_init_zsalinity(nblyr, ntrcr_o, RayleighC, & - RayleighR, trcrn_bgc, nt_bgc_S, ncat, sss(i,j,iblk)) + call icepack_init_zsalinity(nblyr=nblyr, ntrcr_o=ntrcr_o, & + Rayleigh_criteria = RayleighC, & + Rayleigh_real = RayleighR, & + trcrn = trcrn_bgc, & + nt_bgc_S = nt_bgc_S, & + ncat = ncat, & + sss = sss(i,j,iblk)) if (.not. restart_zsal) then Rayleigh_real (i,j,iblk) = RayleighR Rayleigh_criteria(i,j,iblk) = RayleighC @@ -720,11 +728,13 @@ subroutine init_bgc() do j = jlo, jhi do i = ilo, ihi call icepack_init_ocean_conc ( & - amm (i,j, iblk), dmsp(i,j, iblk), dms(i,j, iblk), & - algalN(i,j,:,iblk), doc (i,j,:,iblk), dic(i,j,:,iblk), & - don (i,j,:,iblk), fed (i,j,:,iblk), fep(i,j,:,iblk), & - hum (i,j, iblk), nit (i,j, iblk), sil(i,j, iblk), & - zaeros(i,j,:,iblk), icepack_max_dic, icepack_max_don, icepack_max_fe, icepack_max_aero) + amm=amm (i,j, iblk), dmsp=dmsp(i,j, iblk), dms=dms(i,j, iblk), & + algalN=algalN(i,j,:,iblk), doc=doc (i,j,:,iblk), dic=dic(i,j,:,iblk), & + don=don (i,j,:,iblk), fed=fed (i,j,:,iblk), fep=fep(i,j,:,iblk), & + hum=hum (i,j, iblk), nit=nit (i,j, iblk), sil=sil(i,j, iblk), & + zaeros=zaeros(i,j,:,iblk), & + max_dic = icepack_max_dic, max_don = icepack_max_don, & + max_fe = icepack_max_fe, max_aero = icepack_max_aero) enddo ! i enddo ! j @@ -760,14 +770,15 @@ subroutine init_bgc() enddo enddo - call icepack_init_OceanConcArray(icepack_max_nbtrcr, & - icepack_max_algae, icepack_max_don, icepack_max_doc, & - icepack_max_dic, icepack_max_aero, icepack_max_fe, & - nit (i,j, iblk), amm(i,j, iblk), sil (i,j, iblk), & - dmsp(i,j, iblk), dms(i,j, iblk), algalN(i,j,:,iblk), & - doc (i,j,:,iblk), don(i,j,:,iblk), dic (i,j,:,iblk), & - fed (i,j,:,iblk), fep(i,j,:,iblk), zaeros(i,j,:,iblk), & - ocean_bio_all(i,j,:,iblk), hum (i,j, iblk)) + call icepack_init_OceanConcArray(max_nbtrcr=icepack_max_nbtrcr, & + max_algae=icepack_max_algae, max_don=icepack_max_don, & + max_doc=icepack_max_doc, max_fe=icepack_max_fe, & + max_dic=icepack_max_dic, max_aero=icepack_max_aero, & + nit =nit (i,j, iblk), amm=amm(i,j, iblk), sil =sil (i,j, iblk), & + dmsp=dmsp(i,j, iblk), dms=dms(i,j, iblk), algalN=algalN(i,j,:,iblk), & + doc =doc (i,j,:,iblk), don=don(i,j,:,iblk), dic =dic (i,j,:,iblk), & + fed =fed (i,j,:,iblk), fep=fep(i,j,:,iblk), zaeros=zaeros(i,j,:,iblk), & + hum=hum (i,j, iblk), ocean_bio_all=ocean_bio_all(i,j,:,iblk)) enddo ! i enddo ! j @@ -791,10 +802,10 @@ subroutine init_bgc() do j = jlo, jhi do i = ilo, ihi - call icepack_init_bgc(ncat, nblyr, nilyr, ntrcr_o, & - cgrid, igrid, ntrcr, nbtrcr, & - sicen(:,:), trcrn_bgc(:,:), sss(i,j, iblk), & - ocean_bio_all(i,j,:,iblk)) + call icepack_init_bgc(ncat=ncat, nblyr=nblyr, nilyr=nilyr, ntrcr_o=ntrcr_o, & + cgrid=cgrid, igrid=igrid, ntrcr=ntrcr, nbtrcr=nbtrcr, & + sicen=sicen(:,:), trcrn=trcrn_bgc(:,:), sss=sss(i,j, iblk), & + ocean_bio_all=ocean_bio_all(i,j,:,iblk)) enddo ! i enddo ! j enddo ! iblk @@ -835,8 +846,8 @@ subroutine init_hbrine() if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__,line= __LINE__) - call icepack_init_hbrine(bgrid, igrid, cgrid, icgrid, & - swgrid, nblyr, nilyr, phi_snow) + call icepack_init_hbrine(bgrid=bgrid, igrid=igrid, cgrid=cgrid, icgrid=icgrid, & + swgrid=swgrid, nblyr=nblyr, nilyr=nilyr, phi_snow=phi_snow) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) diff --git a/configuration/scripts/tests/nothread_quicksuite.ts b/configuration/scripts/tests/nothread_quicksuite.ts new file mode 100644 index 000000000..535347438 --- /dev/null +++ b/configuration/scripts/tests/nothread_quicksuite.ts @@ -0,0 +1,6 @@ +# Test Grid PEs Sets BFB-compare + +restart gx3 16x1 diag1 +smoke gx3 1x1 debug,diag1,run2day +smoke gx3 4x1 debug,diag1,run2day,thread + diff --git a/icepack b/icepack index 5af464922..68bc397d7 160000 --- a/icepack +++ b/icepack @@ -1 +1 @@ -Subproject commit 5af4649222c6f1529288b721ddaf62ef0e935375 +Subproject commit 68bc397d7b879e70a60a964415016e5e86cac1f4