From 2e371d445e0db17397396a2f1e53da8e708c025c Mon Sep 17 00:00:00 2001 From: apcraig Date: Fri, 9 Aug 2024 13:11:31 -0600 Subject: [PATCH] Update BGC Update interfaces and bgc settings consistent with new version of Icepack BGC. --- .../cicedyn/analysis/ice_history_shared.F90 | 2 +- cicecore/cicedyn/dynamics/ice_dyn_eap.F90 | 3 +- cicecore/cicedyn/dynamics/ice_dyn_evp.F90 | 6 +- cicecore/cicedyn/dynamics/ice_dyn_vp.F90 | 13 +- .../cicedyn/dynamics/ice_transport_driver.F90 | 3 +- cicecore/cicedyn/general/ice_forcing.F90 | 15 +- cicecore/cicedyn/general/ice_init.F90 | 5 +- cicecore/cicedyn/general/ice_step_mod.F90 | 108 +++--- .../infrastructure/ice_restart_driver.F90 | 8 +- .../cicedyn/infrastructure/ice_restoring.F90 | 1 - .../drivers/direct/hadgem3/CICE_InitMod.F90 | 19 +- .../direct/nemo_concepts/CICE_InitMod.F90 | 19 +- cicecore/drivers/mct/cesm1/CICE_InitMod.F90 | 19 +- cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 | 18 +- .../drivers/nuopc/cmeps/ice_comp_nuopc.F90 | 4 +- cicecore/drivers/nuopc/dmi/CICE_InitMod.F90 | 20 +- .../drivers/standalone/cice/CICE_InitMod.F90 | 19 +- .../unittest/gridavgchk/CICE_InitMod.F90 | 22 +- .../drivers/unittest/halochk/CICE_InitMod.F90 | 22 +- .../drivers/unittest/opticep/CICE_InitMod.F90 | 19 +- .../unittest/opticep/ice_init_column.F90 | 332 +++++++----------- .../drivers/unittest/opticep/ice_step_mod.F90 | 109 +++--- .../drivers/unittest/sumchk/CICE_InitMod.F90 | 22 +- cicecore/shared/ice_arrays_column.F90 | 8 +- cicecore/shared/ice_distribution.F90 | 2 +- cicecore/shared/ice_init_column.F90 | 329 +++++++---------- configuration/scripts/ice_in | 105 +++--- configuration/scripts/options/set_nml.bgcz | 25 +- .../scripts/options/set_nml.bgczclim | 39 +- configuration/scripts/options/set_nml.bgczm | 25 +- 30 files changed, 582 insertions(+), 759 deletions(-) diff --git a/cicecore/cicedyn/analysis/ice_history_shared.F90 b/cicecore/cicedyn/analysis/ice_history_shared.F90 index d6fa78542..97e0e563f 100644 --- a/cicecore/cicedyn/analysis/ice_history_shared.F90 +++ b/cicecore/cicedyn/analysis/ice_history_shared.F90 @@ -834,7 +834,7 @@ subroutine construct_filename(ncfile,suffix,ns) ! Check whether the filename is already in use. ! Same filename in multiple history streams leads to files being overwritten (not good). - ! The current filename convention means we just have to check latest filename, + ! The current filename convention means we just have to check latest filename, ! not all filenames ever generated because of use of current model date/time in filename. ! write(nu_diag,'(2a,i2,1x,a)') subname, 'debug ncfile= ',ns,trim(ncfile) diff --git a/cicecore/cicedyn/dynamics/ice_dyn_eap.F90 b/cicecore/cicedyn/dynamics/ice_dyn_eap.F90 index cc85d8ab6..8249e3068 100644 --- a/cicecore/cicedyn/dynamics/ice_dyn_eap.F90 +++ b/cicecore/cicedyn/dynamics/ice_dyn_eap.F90 @@ -353,8 +353,7 @@ subroutine eap (dt) do ij = 1, icellT(iblk) i = indxTi(ij, iblk) j = indxTj(ij, iblk) - call icepack_ice_strength(ncat=ncat, & - aice = aice (i,j, iblk), & + call icepack_ice_strength(aice = aice (i,j, iblk), & vice = vice (i,j, iblk), & aice0 = aice0 (i,j, iblk), & aicen = aicen (i,j,:,iblk), & diff --git a/cicecore/cicedyn/dynamics/ice_dyn_evp.F90 b/cicecore/cicedyn/dynamics/ice_dyn_evp.F90 index 68101f579..c858de1c8 100644 --- a/cicecore/cicedyn/dynamics/ice_dyn_evp.F90 +++ b/cicecore/cicedyn/dynamics/ice_dyn_evp.F90 @@ -537,8 +537,7 @@ subroutine evp (dt) do ij = 1, icellT(iblk) i = indxTi(ij, iblk) j = indxTj(ij, iblk) - call icepack_ice_strength(ncat = ncat, & - aice = aice (i,j, iblk), & + call icepack_ice_strength(aice = aice (i,j, iblk), & vice = vice (i,j, iblk), & aice0 = aice0 (i,j, iblk), & aicen = aicen (i,j,:,iblk), & @@ -595,8 +594,7 @@ subroutine evp (dt) do ij = 1, icellT(iblk) i = indxTi(ij, iblk) j = indxTj(ij, iblk) - call icepack_ice_strength(ncat = ncat, & - aice = aice (i,j, iblk), & + call icepack_ice_strength(aice = aice (i,j, iblk), & vice = vice (i,j, iblk), & aice0 = aice0 (i,j, iblk), & aicen = aicen (i,j,:,iblk), & diff --git a/cicecore/cicedyn/dynamics/ice_dyn_vp.F90 b/cicecore/cicedyn/dynamics/ice_dyn_vp.F90 index 0d04bf974..22a53bc59 100644 --- a/cicecore/cicedyn/dynamics/ice_dyn_vp.F90 +++ b/cicecore/cicedyn/dynamics/ice_dyn_vp.F90 @@ -386,13 +386,12 @@ subroutine implicit_solver (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 (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 enddo ! iblk diff --git a/cicecore/cicedyn/dynamics/ice_transport_driver.F90 b/cicecore/cicedyn/dynamics/ice_transport_driver.F90 index fca964593..7d19a7974 100644 --- a/cicecore/cicedyn/dynamics/ice_transport_driver.F90 +++ b/cicecore/cicedyn/dynamics/ice_transport_driver.F90 @@ -1739,8 +1739,7 @@ subroutine work_to_state (nx_block, ny_block, & i = indxi(ij) j = indxj(ij) - call icepack_compute_tracers(ntrcr = ntrcr, & - trcr_depend = trcr_depend(:), & + call icepack_compute_tracers(trcr_depend = trcr_depend(:), & atrcrn = work (ij,narrays+1:narrays+ntrcr), & aicen = aicen(i,j,n), & vicen = vicen(i,j,n), & diff --git a/cicecore/cicedyn/general/ice_forcing.F90 b/cicecore/cicedyn/general/ice_forcing.F90 index 241bf8b5d..26aef9f9c 100755 --- a/cicecore/cicedyn/general/ice_forcing.F90 +++ b/cicecore/cicedyn/general/ice_forcing.F90 @@ -5396,9 +5396,10 @@ subroutine get_wave_spec if (wave_spec) then ! get hardwired frequency bin info and a dummy wave spectrum profile ! the latter is used if wave_spec_type == profile - call icepack_init_wave(nfreq, & - wave_spectrum_profile, & - wavefreq, dwavefreq) + call icepack_init_wave(nfreq = nfreq, & + wave_spectrum_profile = wave_spectrum_profile, & + wavefreq = wavefreq, & + dwavefreq = dwavefreq) ! read more realistic data from a file if ((trim(wave_spec_type) == 'constant').OR.(trim(wave_spec_type) == 'random')) then @@ -5481,10 +5482,10 @@ subroutine wave_spec_data if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) - call icepack_init_wave(nfreq, & - wave_spectrum_profile, & - wavefreq, dwavefreq) - + call icepack_init_wave(nfreq = nfreq, & + wave_spectrum_profile = wave_spectrum_profile, & + wavefreq = wavefreq, & + dwavefreq = dwavefreq) !spec_file = trim(ocn_data_dir)//'/'//trim(wave_spec_file) spec_file = trim(wave_spec_file) diff --git a/cicecore/cicedyn/general/ice_init.F90 b/cicecore/cicedyn/general/ice_init.F90 index a7f84e46e..dbbf7c559 100644 --- a/cicecore/cicedyn/general/ice_init.F90 +++ b/cicecore/cicedyn/general/ice_init.F90 @@ -3021,8 +3021,7 @@ subroutine init_state enddo if (tmask(i,j,iblk)) & - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -3031,7 +3030,6 @@ subroutine init_state 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(:), & @@ -3510,7 +3508,6 @@ subroutine set_state_var (nx_block, ny_block, & Sprofile = salinz(i,j,:), & Tprofile = Tmltz(i,j,:), & Tsfc = Tsfc, & - nilyr = nilyr, nslyr = nslyr, & qin = qin(:), qsn = qsn(:)) ! surface temperature diff --git a/cicecore/cicedyn/general/ice_step_mod.F90 b/cicecore/cicedyn/general/ice_step_mod.F90 index 2726a6101..56805b625 100644 --- a/cicecore/cicedyn/general/ice_step_mod.F90 +++ b/cicecore/cicedyn/general/ice_step_mod.F90 @@ -389,8 +389,7 @@ subroutine step_therm1 (dt, iblk) if (tmask(i,j,iblk)) then - call icepack_step_therm1(dt=dt, ncat=ncat, & - nilyr=nilyr, nslyr=nslyr, & + call icepack_step_therm1(dt=dt, & aicen_init = aicen_init (i,j,:,iblk), & vicen_init = vicen_init (i,j,:,iblk), & vsnon_init = vsnon_init (i,j,:,iblk), & @@ -679,8 +678,7 @@ subroutine step_therm2 (dt, iblk) if (tr_fsd) & wave_sig_ht(i,j,iblk) = c4*SQRT(SUM(wave_spectrum(i,j,:,iblk)*dwavefreq(:))) - call icepack_step_therm2(dt=dt, ncat=ncat, & - nltrcr=nltrcr, nilyr=nilyr, nslyr=nslyr, nblyr=nblyr, & + call icepack_step_therm2(dt=dt, & hin_max = hin_max (:), & aicen = aicen (i,j,:,iblk), & vicen = vicen (i,j,:,iblk), & @@ -708,9 +706,6 @@ subroutine step_therm2 (dt, iblk) fresh = fresh (i,j, iblk), & fsalt = fsalt (i,j, iblk), & fhocn = fhocn (i,j, iblk), & - bgrid = bgrid, & - cgrid = cgrid, & - igrid = igrid, & faero_ocn = faero_ocn (i,j,:,iblk), & first_ice = first_ice (i,j,:,iblk), & flux_bio = flux_bio (i,j,1:nbtrcr,iblk), & @@ -722,7 +717,6 @@ subroutine step_therm2 (dt, iblk) HDO_ocn = HDO_ocn (i,j, iblk), & H2_16O_ocn = H2_16O_ocn(i,j, iblk), & H2_18O_ocn = H2_18O_ocn(i,j, iblk), & - nfsd = nfsd, & wave_sig_ht= wave_sig_ht(i,j,iblk), & wave_spectrum = wave_spectrum(i,j,:,iblk), & wavefreq = wavefreq(:), & @@ -811,8 +805,7 @@ subroutine update_state (dt, daidt, dvidt, dvsdt, dagedt, offset) !----------------------------------------------------------------- ! if (tmask(i,j,iblk)) & - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -821,7 +814,6 @@ subroutine update_state (dt, daidt, dvidt, dvsdt, dagedt, offset) 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(:), & @@ -914,16 +906,18 @@ subroutine step_dyn_wave (dt) do j = jlo, jhi do i = ilo, ihi d_afsd_wave(i,j,:,iblk) = c0 - call icepack_step_wavefracture (wave_spec_type, & - dt, ncat, nfsd, nfreq, & - aice (i,j, iblk), & - vice (i,j, iblk), & - aicen (i,j,:, iblk), & - floe_rad_l(:), floe_rad_c(:), & - wave_spectrum (i,j,:, iblk), & - wavefreq(:), dwavefreq(:), & - trcrn (i,j,:,:,iblk), & - d_afsd_wave (i,j,:, iblk)) + call icepack_step_wavefracture(wave_spec_type = wave_spec_type, & + dt = dt, nfreq = nfreq, & + 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 (:), & + trcrn = trcrn (i,j,:,:,iblk), & + d_afsd_wave = d_afsd_wave (i,j,:, iblk)) end do ! i end do ! j end do ! iblk @@ -1100,13 +1094,12 @@ subroutine step_dyn_ridge (dt, ndtd, iblk) if (tmask(i,j,iblk)) then - 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 (:,:), & + call icepack_step_ridge (dt=dt, ndtd=ndtd, & + 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), & @@ -1223,27 +1216,26 @@ subroutine step_snow (dt, iblk) do j = jlo, jhi do i = ilo, ihi - call icepack_step_snow (dt, nilyr, & - nslyr, ncat, & - wind (i,j, iblk), & - aice (i,j, iblk), & - aicen(i,j,:,iblk), & - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - trcrn(i,j,nt_Tsfc,:,iblk), & - trcrn(i,j,nt_qice,:,iblk), & ! top layer only - trcrn(i,j,nt_sice,:,iblk), & ! top layer only - trcrn(i,j,nt_qsno:nt_qsno+nslyr-1,:,iblk), & - trcrn(i,j,nt_alvl,:,iblk), & - trcrn(i,j,nt_vlvl,:,iblk), & - trcrn(i,j,nt_smice:nt_smice+nslyr-1,:,iblk), & - trcrn(i,j,nt_smliq:nt_smliq+nslyr-1,:,iblk), & - trcrn(i,j,nt_rsnw:nt_rsnw+nslyr-1,:,iblk), & - trcrn(i,j,nt_rhos:nt_rhos+nslyr-1,:,iblk), & - fresh (i,j,iblk), & - fhocn (i,j,iblk), & - fsloss (i,j,iblk), & - fsnow (i,j,iblk)) + call icepack_step_snow (dt = dt, & + wind = wind (i,j, iblk), & + aice = aice (i,j, iblk), & + aicen = aicen(i,j,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + Tsfc = trcrn(i,j,nt_Tsfc,:,iblk), & + zqin1 = trcrn(i,j,nt_qice,:,iblk), & ! top layer only + zSin1 = trcrn(i,j,nt_sice,:,iblk), & ! top layer only + zqsn = trcrn(i,j,nt_qsno:nt_qsno+nslyr-1,:,iblk), & + alvl = trcrn(i,j,nt_alvl,:,iblk), & + vlvl = trcrn(i,j,nt_vlvl,:,iblk), & + smice = trcrn(i,j,nt_smice:nt_smice+nslyr-1,:,iblk), & + smliq = trcrn(i,j,nt_smliq:nt_smliq+nslyr-1,:,iblk), & + rsnw = trcrn(i,j,nt_rsnw:nt_rsnw+nslyr-1,:,iblk), & + rhos_cmpn = trcrn(i,j,nt_rhos:nt_rhos+nslyr-1,:,iblk),& + fresh = fresh (i,j,iblk), & + fhocn = fhocn (i,j,iblk), & + fsloss = fsloss (i,j,iblk), & + fsnow = fsnow (i,j,iblk)) enddo enddo @@ -1383,7 +1375,6 @@ subroutine step_radiation (dt, iblk) if (tmask(i,j,iblk)) then call icepack_step_radiation (dt=dt, & - swgrid=swgrid(:), igrid=igrid(:), & fbri=fbri(:), & aicen=aicen(i,j, :,iblk), & vicen=vicen(i,j, :,iblk), & @@ -1616,7 +1607,7 @@ subroutine biogeochemistry (dt, iblk) use ice_domain_size, only: nblyr, nilyr, nslyr, n_algae, n_zaero, ncat, & n_doc, n_dic, n_don, n_fed, n_fep use ice_flux, only: meltbn, melttn, congeln, snoicen, & - sst, sss, fsnow, meltsn + sst, sss, Tf, fsnow, meltsn use ice_flux_bgc, only: hin_old, flux_bio, flux_bio_atm, faero_atm, & nit, amm, sil, dmsp, dms, algalN, doc, don, dic, fed, fep, zaeros, hum use ice_state, only: aicen_init, vicen_init, aicen, vicen, vsnon, & @@ -1677,10 +1668,7 @@ subroutine biogeochemistry (dt, iblk) do j = jlo, jhi do i = ilo, ihi - call icepack_load_ocean_bio_array(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, & + call icepack_load_ocean_bio_array( & 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), & @@ -1699,10 +1687,7 @@ subroutine biogeochemistry (dt, iblk) enddo ! mm endif - 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, & + call icepack_biogeochemistry(dt=dt, & upNO = upNO (i,j, iblk), & upNH = upNH (i,j, iblk), & iDi = iDi (i,j,:,:, iblk), & @@ -1725,13 +1710,13 @@ subroutine biogeochemistry (dt, 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), & 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), & + Tf = Tf (i,j, iblk), & fsnow = fsnow (i,j, iblk), & meltsn = meltsn (i,j,:, iblk), & hin_old = hin_old (i,j,:, iblk), & @@ -1744,8 +1729,7 @@ subroutine biogeochemistry (dt, iblk) vsnon = vsnon (i,j,:, iblk), & aice0 = aice0 (i,j, iblk), & trcrn = trcrn (i,j,:,:, iblk), & - vsnon_init = vsnon_init (i,j,:, iblk), & - skl_bgc = skl_bgc) + vsnon_init = vsnon_init (i,j,:, iblk)) enddo ! i enddo ! j diff --git a/cicecore/cicedyn/infrastructure/ice_restart_driver.F90 b/cicecore/cicedyn/infrastructure/ice_restart_driver.F90 index bde40dd14..dd9d77807 100644 --- a/cicecore/cicedyn/infrastructure/ice_restart_driver.F90 +++ b/cicecore/cicedyn/infrastructure/ice_restart_driver.F90 @@ -686,8 +686,7 @@ subroutine restartfile (ice_ic) do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) & - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -696,7 +695,6 @@ subroutine restartfile (ice_ic) 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, & @@ -1055,8 +1053,7 @@ subroutine restartfile_v4 (ice_ic) do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) & - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -1065,7 +1062,6 @@ subroutine restartfile_v4 (ice_ic) 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, & diff --git a/cicecore/cicedyn/infrastructure/ice_restoring.F90 b/cicecore/cicedyn/infrastructure/ice_restoring.F90 index 27328d9dd..b7f1b3971 100644 --- a/cicecore/cicedyn/infrastructure/ice_restoring.F90 +++ b/cicecore/cicedyn/infrastructure/ice_restoring.F90 @@ -521,7 +521,6 @@ subroutine set_restore_var (nx_block, ny_block, & Sprofile=salinz(i,j,:), & Tprofile=Tmltz(i,j,:), & Tsfc=Tsfc, & - nilyr=nilyr, nslyr=nslyr, & qin=qin(:), qsn=qsn(:)) ! surface temperature diff --git a/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 b/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 index 3f87f2ca8..c64bd463c 100644 --- a/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 +++ b/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90 @@ -133,9 +133,9 @@ subroutine cice_init call init_coupler_flux ! initialize fluxes exchanged with coupler call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -143,13 +143,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -412,8 +411,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -422,7 +420,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/direct/nemo_concepts/CICE_InitMod.F90 b/cicecore/drivers/direct/nemo_concepts/CICE_InitMod.F90 index 7e2308f20..47b158842 100644 --- a/cicecore/drivers/direct/nemo_concepts/CICE_InitMod.F90 +++ b/cicecore/drivers/direct/nemo_concepts/CICE_InitMod.F90 @@ -133,9 +133,9 @@ subroutine cice_init call init_coupler_flux ! initialize fluxes exchanged with coupler call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -143,13 +143,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -412,8 +411,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -422,7 +420,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 b/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 index 419dbacc9..b9ab6a39d 100644 --- a/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 +++ b/cicecore/drivers/mct/cesm1/CICE_InitMod.F90 @@ -147,9 +147,9 @@ subroutine cice_init(mpicom_ice) call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -157,13 +157,12 @@ subroutine cice_init(mpicom_ice) if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -478,8 +477,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -488,7 +486,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 b/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 index b235ebf0e..ac2268824 100644 --- a/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 +++ b/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90 @@ -118,9 +118,9 @@ subroutine cice_init2() call init_coupler_flux ! initialize fluxes exchanged with coupler call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -128,13 +128,12 @@ subroutine cice_init2() if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -432,7 +431,7 @@ subroutine init_restart() do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & + call icepack_aggregate( & aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & @@ -442,7 +441,6 @@ subroutine init_restart() 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, & diff --git a/cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90 b/cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90 index 3423fbf36..a31a20910 100644 --- a/cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90 +++ b/cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90 @@ -676,7 +676,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) if(mastertask) write(nu_diag,*) trim(subname)//'WARNING: pio_typename from driver needs to be set for netcdf output to work' end if - + #else @@ -843,7 +843,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) idate0 = start_ymd year_init = (idate0/10000) month_init= (idate0-year_init*10000)/100 ! integer month of basedate - day_init = idate0-year_init*10000-month_init*100 + day_init = idate0-year_init*10000-month_init*100 ! - Set use_leap_years based on calendar (as some CICE calls use this instead of the calendar type) if (calendar_type == ice_calendar_gregorian) then diff --git a/cicecore/drivers/nuopc/dmi/CICE_InitMod.F90 b/cicecore/drivers/nuopc/dmi/CICE_InitMod.F90 index 4577113f1..25c126201 100644 --- a/cicecore/drivers/nuopc/dmi/CICE_InitMod.F90 +++ b/cicecore/drivers/nuopc/dmi/CICE_InitMod.F90 @@ -156,9 +156,9 @@ subroutine cice_init(mpi_comm) call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -166,16 +166,16 @@ subroutine cice_init(mpi_comm) if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) + #ifndef CICE_IN_NEMO call init_forcing_ocn(dt) ! initialize sss and sst from data #endif @@ -494,8 +494,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -504,7 +503,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/standalone/cice/CICE_InitMod.F90 b/cicecore/drivers/standalone/cice/CICE_InitMod.F90 index 194293118..edb091941 100644 --- a/cicecore/drivers/standalone/cice/CICE_InitMod.F90 +++ b/cicecore/drivers/standalone/cice/CICE_InitMod.F90 @@ -144,9 +144,9 @@ subroutine cice_init call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -154,13 +154,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -479,8 +478,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -489,7 +487,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/unittest/gridavgchk/CICE_InitMod.F90 b/cicecore/drivers/unittest/gridavgchk/CICE_InitMod.F90 index cb1241a5e..edb091941 100644 --- a/cicecore/drivers/unittest/gridavgchk/CICE_InitMod.F90 +++ b/cicecore/drivers/unittest/gridavgchk/CICE_InitMod.F90 @@ -66,7 +66,7 @@ subroutine cice_init floe_binwidth, c_fsd_range use ice_state, only: alloc_state use ice_flux_bgc, only: alloc_flux_bgc - use ice_calendar, only: dt, dt_dyn, write_ic, & + use ice_calendar, only: dt, write_ic, & init_calendar, advance_timestep, calc_timesteps use ice_communicate, only: init_communicate, my_task, master_task use ice_diagnostics, only: init_diags @@ -144,9 +144,9 @@ subroutine cice_init call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -154,13 +154,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -244,6 +243,7 @@ subroutine cice_init call init_flux_ocn ! initialize ocean fluxes sent to coupler call dealloc_grid ! deallocate temporary grid arrays + if (my_task == master_task) then call ice_memusage_print(nu_diag,subname//':end') endif @@ -478,8 +478,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -488,7 +487,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/unittest/halochk/CICE_InitMod.F90 b/cicecore/drivers/unittest/halochk/CICE_InitMod.F90 index cb1241a5e..edb091941 100644 --- a/cicecore/drivers/unittest/halochk/CICE_InitMod.F90 +++ b/cicecore/drivers/unittest/halochk/CICE_InitMod.F90 @@ -66,7 +66,7 @@ subroutine cice_init floe_binwidth, c_fsd_range use ice_state, only: alloc_state use ice_flux_bgc, only: alloc_flux_bgc - use ice_calendar, only: dt, dt_dyn, write_ic, & + use ice_calendar, only: dt, write_ic, & init_calendar, advance_timestep, calc_timesteps use ice_communicate, only: init_communicate, my_task, master_task use ice_diagnostics, only: init_diags @@ -144,9 +144,9 @@ subroutine cice_init call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -154,13 +154,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -244,6 +243,7 @@ subroutine cice_init call init_flux_ocn ! initialize ocean fluxes sent to coupler call dealloc_grid ! deallocate temporary grid arrays + if (my_task == master_task) then call ice_memusage_print(nu_diag,subname//':end') endif @@ -478,8 +478,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -488,7 +487,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/unittest/opticep/CICE_InitMod.F90 b/cicecore/drivers/unittest/opticep/CICE_InitMod.F90 index 194293118..edb091941 100644 --- a/cicecore/drivers/unittest/opticep/CICE_InitMod.F90 +++ b/cicecore/drivers/unittest/opticep/CICE_InitMod.F90 @@ -144,9 +144,9 @@ subroutine cice_init call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -154,13 +154,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -479,8 +478,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -489,7 +487,6 @@ subroutine init_restart 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, & diff --git a/cicecore/drivers/unittest/opticep/ice_init_column.F90 b/cicecore/drivers/unittest/opticep/ice_init_column.F90 index a55338556..8ba8cdf7f 100644 --- a/cicecore/drivers/unittest/opticep/ice_init_column.F90 +++ b/cicecore/drivers/unittest/opticep/ice_init_column.F90 @@ -109,6 +109,7 @@ module ice_init_column max_loss , max_dfe_doc1 , fr_resp_s , & y_sk_DMS , t_sk_conv , t_sk_ox , & algaltype_diatoms , algaltype_sp , algaltype_phaeo , & + dictype_1 , & doctype_s , doctype_l , dontype_protein , & fedtype_1 , feptype_1 , zaerotype_bc1 , & zaerotype_bc2 , zaerotype_dust1 , zaerotype_dust2 , & @@ -149,7 +150,7 @@ subroutine init_thermo_vertical !----------------------------------------------------------------- call icepack_query_parameters(depressT_out=depressT) - call icepack_init_thermo(nilyr=nilyr, sprofile=sprofile) + call icepack_init_thermo(sprofile=sprofile) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -345,7 +346,6 @@ subroutine init_shortwave if (tmask(i,j,iblk)) then call icepack_step_radiation (dt=dt, & - swgrid=swgrid(:), igrid=igrid(:), & fbri=fbri(:), & aicen=aicen(i,j,:,iblk), & vicen=vicen(i,j,:,iblk), & @@ -656,10 +656,10 @@ subroutine init_fsd(floesize) if (tr_fsd) then ! initialize floe size distribution the same in every column and category - call icepack_init_fsd(nfsd, ice_ic, & - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - afsd) ! floe size distribution + 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 do j = 1, ny_block @@ -670,7 +670,7 @@ subroutine init_fsd(floesize) enddo ! k enddo ! n - call icepack_cleanup_fsd (ncat, nfsd, afsdn) ! renormalize + call icepack_cleanup_fsd (afsdn = afsdn) ! renormalize do n = 1, ncat do k = 1, nfsd @@ -811,9 +811,7 @@ subroutine init_bgc() 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) + zaeros=zaeros(i,j,:,iblk)) enddo ! i enddo ! j @@ -841,10 +839,7 @@ subroutine init_bgc() do j = jlo, jhi do i = ilo, ihi - call icepack_load_ocean_bio_array(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, & + call icepack_load_ocean_bio_array( & 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), & @@ -881,8 +876,7 @@ subroutine init_bgc() trcrn_bgc(k-ntrcr_o,n) = trcrn(i,j,k,n,iblk) enddo enddo - call icepack_init_bgc(ncat=ncat, nblyr=nblyr, nilyr=nilyr, ntrcr_o=ntrcr_o, & - cgrid=cgrid, igrid=igrid, ntrcr=ntrcr, nbtrcr=nbtrcr, & + call icepack_init_bgc( & sicen=sicen(:,:), trcrn=trcrn_bgc(:,:), sss=sss(i,j, iblk), & ocean_bio_all=ocean_bio_all(i,j,:,iblk)) enddo ! i @@ -926,8 +920,7 @@ subroutine init_hbrine() if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__,line= __LINE__) - call icepack_init_hbrine(bgrid=bgrid, igrid=igrid, cgrid=cgrid, icgrid=icgrid, & - swgrid=swgrid, nblyr=nblyr, nilyr=nilyr, phi_snow=phi_snow) + call icepack_init_hbrine(phi_snow=phi_snow) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -1032,6 +1025,7 @@ subroutine input_zbgc algaltype_diatoms , algaltype_sp , algaltype_phaeo , & nitratetype , ammoniumtype , silicatetype , & dmspptype , dmspdtype , humtype , & + dictype_1 , & doctype_s , doctype_l , dontype_protein , & fedtype_1 , feptype_1 , zaerotype_bc1 , & zaerotype_bc2 , zaerotype_dust1 , zaerotype_dust2 , & @@ -1186,6 +1180,7 @@ subroutine input_zbgc dmspptype = p5 ! dmspdtype = -c1 ! humtype = c1 ! + dictype_1 = -c1 ! doctype_s = p5 ! doctype_l = p5 ! dontype_protein = p5 ! @@ -1372,6 +1367,7 @@ subroutine input_zbgc call broadcast_scalar(dmspptype , master_task) call broadcast_scalar(dmspdtype , master_task) call broadcast_scalar(humtype , master_task) + call broadcast_scalar(dictype_1 , master_task) call broadcast_scalar(doctype_s , master_task) call broadcast_scalar(doctype_l , master_task) call broadcast_scalar(dontype_protein , master_task) @@ -1659,16 +1655,113 @@ subroutine input_zbgc ! set values in icepack !----------------------------------------------------------------- - call icepack_init_parameters( & - ktherm_in=ktherm, shortwave_in=shortwave, & - skl_bgc_in=skl_bgc, z_tracers_in=z_tracers, scale_bgc_in=scale_bgc, & - dEdd_algae_in=dEdd_algae, & - solve_zbgc_in=solve_zbgc, & - bgc_flux_type_in=bgc_flux_type, grid_o_in=grid_o, l_sk_in=l_sk, & - initbio_frac_in=initbio_frac, & - grid_oS_in=grid_oS, l_skS_in=l_skS, & - phi_snow_in=phi_snow, frazil_scav_in = frazil_scav, & - modal_aero_in=modal_aero) + call icepack_init_parameters(ktherm_in=ktherm, shortwave_in=shortwave, & + scale_bgc_in=scale_bgc, skl_bgc_in=skl_bgc, z_tracers_in=z_tracers, & + dEdd_algae_in=dEdd_algae, solve_zbgc_in=solve_zbgc, & + bgc_flux_type_in=bgc_flux_type, grid_o_in=grid_o, l_sk_in=l_sk, & + initbio_frac_in=initbio_frac, frazil_scav_in=frazil_scav, & + grid_oS_in=grid_oS, l_skS_in=l_skS, phi_snow_in=phi_snow, & + algal_vel_in=algal_vel, R_dFe2dust_in=R_dFe2dust, & + dustFe_sol_in=dustFe_sol, T_max_in=T_max, fsal_in=fsal, & + op_dep_min_in=op_dep_min, fr_graze_s_in=fr_graze_s, & + fr_graze_e_in=fr_graze_e, fr_mort2min_in=fr_mort2min, & + fr_dFe_in=fr_dFe, k_nitrif_in=k_nitrif, t_iron_conv_in=t_iron_conv, & + max_loss_in=max_loss, max_dfe_doc1_in=max_dfe_doc1, fr_resp_in=fr_resp, & + fr_resp_s_in=fr_resp_s, y_sk_DMS_in=y_sk_DMS, t_sk_conv_in=t_sk_conv, & + t_sk_ox_in=t_sk_ox, modal_aero_in=modal_aero) + call icepack_warnings_flush(nu_diag) + if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & + file=__FILE__, line=__LINE__) + + call icepack_init_parameters ( & + ratio_Si2N_diatoms_in = ratio_Si2N_diatoms, & + ratio_Si2N_sp_in = ratio_Si2N_sp, & + ratio_Si2N_phaeo_in = ratio_Si2N_phaeo, & + ratio_S2N_diatoms_in = ratio_S2N_diatoms, & + ratio_S2N_sp_in = ratio_S2N_sp, & + ratio_S2N_phaeo_in = ratio_S2N_phaeo, & + ratio_Fe2C_diatoms_in = ratio_Fe2C_diatoms, & + ratio_Fe2C_sp_in = ratio_Fe2C_sp, & + ratio_Fe2C_phaeo_in = ratio_Fe2C_phaeo, & + ratio_Fe2N_diatoms_in = ratio_Fe2N_diatoms, & + ratio_Fe2N_sp_in = ratio_Fe2N_sp, & + ratio_Fe2N_phaeo_in = ratio_Fe2N_phaeo, & + ratio_C2N_diatoms_in = ratio_C2N_diatoms, & + ratio_C2N_sp_in = ratio_C2N_sp, & + ratio_C2N_phaeo_in = ratio_C2N_phaeo, & + ratio_chl2N_diatoms_in = ratio_chl2N_diatoms, & + ratio_chl2N_sp_in = ratio_chl2N_sp, & + ratio_chl2N_phaeo_in = ratio_chl2N_phaeo, & + F_abs_chl_diatoms_in = F_abs_chl_diatoms, & + F_abs_chl_sp_in = F_abs_chl_sp, & + F_abs_chl_phaeo_in = F_abs_chl_phaeo, & + ratio_Fe2DON_in = ratio_Fe2DON, & + ratio_C2N_proteins_in = ratio_C2N_proteins, & + ratio_Fe2DOC_s_in = ratio_Fe2DOC_s, & + ratio_Fe2DOC_l_in = ratio_Fe2DOC_l, & + chlabs_diatoms_in = chlabs_diatoms, & + chlabs_sp_in = chlabs_sp, & + chlabs_phaeo_in = chlabs_phaeo, & + alpha2max_low_diatoms_in = alpha2max_low_diatoms, & + alpha2max_low_sp_in = alpha2max_low_sp, & + alpha2max_low_phaeo_in = alpha2max_low_phaeo, & + beta2max_diatoms_in = beta2max_diatoms, & + beta2max_sp_in = beta2max_sp, & + beta2max_phaeo_in = beta2max_phaeo, & + mu_max_diatoms_in = mu_max_diatoms, & + mu_max_sp_in = mu_max_sp, & + mu_max_phaeo_in = mu_max_phaeo, & + grow_Tdep_diatoms_in = grow_Tdep_diatoms, & + grow_Tdep_sp_in = grow_Tdep_sp, & + grow_Tdep_phaeo_in = grow_Tdep_phaeo, & + fr_graze_diatoms_in = fr_graze_diatoms, & + fr_graze_sp_in = fr_graze_sp, & + fr_graze_phaeo_in = fr_graze_phaeo, & + mort_pre_diatoms_in = mort_pre_diatoms, & + mort_pre_sp_in = mort_pre_sp, & + mort_pre_phaeo_in = mort_pre_phaeo, & + mort_Tdep_diatoms_in = mort_Tdep_diatoms, & + mort_Tdep_sp_in = mort_Tdep_sp, & + mort_Tdep_phaeo_in = mort_Tdep_phaeo, & + k_exude_diatoms_in = k_exude_diatoms, & + k_exude_sp_in = k_exude_sp, & + k_exude_phaeo_in = k_exude_phaeo, & + K_Nit_diatoms_in = K_Nit_diatoms, & + K_Nit_sp_in = K_Nit_sp, & + K_Nit_phaeo_in = K_Nit_phaeo, & + K_Am_diatoms_in = K_Am_diatoms, & + K_Am_sp_in = K_Am_sp, & + K_Am_phaeo_in = K_Am_phaeo, & + K_Sil_diatoms_in = K_Sil_diatoms, & + K_Sil_sp_in = K_Sil_sp, & + K_Sil_phaeo_in = K_Sil_phaeo, & + K_Fe_diatoms_in = K_Fe_diatoms, & + K_Fe_sp_in = K_Fe_sp, & + K_Fe_phaeo_in = K_Fe_phaeo, & + f_doc_s_in = f_doc_s, & + f_doc_l_in = f_doc_l, & + f_don_protein_in = f_don_protein, & + kn_bac_protein_in = kn_bac_protein, & + f_don_Am_protein_in = f_don_Am_protein, & + f_exude_s_in = f_exude_s, & + f_exude_l_in = f_exude_l, & + k_bac_s_in = k_bac_s, & + k_bac_l_in = k_bac_l, & + algaltype_diatoms_in = algaltype_diatoms, & + algaltype_sp_in = algaltype_sp, & + algaltype_phaeo_in = algaltype_phaeo, & + dictype_1_in = dictype_1, & + doctype_s_in = doctype_s, & + doctype_l_in = doctype_l, & + dontype_protein_in = dontype_protein, & + fedtype_1_in = fedtype_1, & + feptype_1_in = feptype_1, & + zaerotype_bc1_in = zaerotype_bc1, & + zaerotype_bc2_in = zaerotype_bc2, & + zaerotype_dust1_in = zaerotype_dust1, & + zaerotype_dust2_in = zaerotype_dust2, & + zaerotype_dust3_in = zaerotype_dust3, & + zaerotype_dust4_in = zaerotype_dust4) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -2237,7 +2330,7 @@ subroutine init_zbgc use ice_state, only: trcr_base, trcr_depend, n_trcr_strata, & nt_strata - use ice_arrays_column, only: R_C2N, R_chl2N, R_C2N_DON, R_Si2N, trcrn_sw + use ice_arrays_column, only: R_C2N, R_chl2N, trcrn_sw integer (kind=int_kind) :: & nbtrcr, nbtrcr_sw, nt_fbri, & @@ -2325,46 +2418,6 @@ subroutine init_zbgc logical (kind=log_kind) :: & skl_bgc, z_tracers, dEdd_algae - real (kind=dbl_kind), dimension(icepack_max_algae) :: & - F_abs_chl ! to scale absorption in Dedd - - real (kind=dbl_kind), dimension(icepack_max_algae) :: & - R_S2N , & ! algal S to N (mole/mole) - ! Marchetti et al 2006, 3 umol Fe/mol C for iron limited Pseudo-nitzschia - R_Fe2C , & ! algal Fe to carbon (umol/mmol) - R_Fe2N ! algal Fe to N (umol/mmol) - - real (kind=dbl_kind), dimension(icepack_max_don) :: & - R_Fe2DON ! Fe to N of DON (nmol/umol) - - real (kind=dbl_kind), dimension(icepack_max_doc) :: & - R_Fe2DOC ! Fe to C of DOC (nmol/umol) - - real (kind=dbl_kind), dimension(icepack_max_algae) :: & - chlabs , & ! chla absorption 1/m/(mg/m^3) - alpha2max_low , & ! light limitation (1/(W/m^2)) - beta2max , & ! light inhibition (1/(W/m^2)) - mu_max , & ! maximum growth rate (1/d) - grow_Tdep , & ! T dependence of growth (1/C) - fr_graze , & ! fraction of algae grazed - mort_pre , & ! mortality (1/day) - mort_Tdep , & ! T dependence of mortality (1/C) - k_exude , & ! algal carbon exudation rate (1/d) - K_Nit , & ! nitrate half saturation (mmol/m^3) - K_Am , & ! ammonium half saturation (mmol/m^3) - K_Sil , & ! silicon half saturation (mmol/m^3) - K_Fe ! iron half saturation or micromol/m^3 - - real (kind=dbl_kind), dimension(icepack_max_DON) :: & - f_don , & ! fraction of spilled grazing to DON - kn_bac , & ! Bacterial degredation of DON (1/d) - f_don_Am ! fraction of remineralized DON to Am - - real (kind=dbl_kind), dimension(icepack_max_DOC) :: & - f_doc , & ! fraction of mort_N that goes to each doc pool - f_exude , & ! fraction of exuded carbon to each DOC pool - k_bac ! Bacterial degredation of DOC (1/d) - integer (kind=int_kind) :: & k, mm , & ! loop index nk , & ! layer index @@ -2443,29 +2496,11 @@ subroutine init_zbgc !----------------------------------------------------------------- allocate( & - R_C2N_DON(icepack_max_don), & ! carbon to nitrogen mole ratio of DON pool - R_C2N(icepack_max_algae), & ! algal C to N (mole/mole) + R_C2N (icepack_max_algae), & ! algal C to N (mole/mole) R_chl2N(icepack_max_algae), & ! 3 algal chlorophyll to N (mg/mmol) - R_Si2N(icepack_max_algae), & ! silica to nitrogen mole ratio for algal groups stat=ierr) if (ierr/=0) call abort_ice(subname//' Out of Memory') - R_Si2N(1) = ratio_Si2N_diatoms - R_Si2N(2) = ratio_Si2N_sp - R_Si2N(3) = ratio_Si2N_phaeo - - R_S2N(1) = ratio_S2N_diatoms - R_S2N(2) = ratio_S2N_sp - R_S2N(3) = ratio_S2N_phaeo - - R_Fe2C(1) = ratio_Fe2C_diatoms - R_Fe2C(2) = ratio_Fe2C_sp - R_Fe2C(3) = ratio_Fe2C_phaeo - - R_Fe2N(1) = ratio_Fe2N_diatoms - R_Fe2N(2) = ratio_Fe2N_sp - R_Fe2N(3) = ratio_Fe2N_phaeo - R_C2N(1) = ratio_C2N_diatoms R_C2N(2) = ratio_C2N_sp R_C2N(3) = ratio_C2N_phaeo @@ -2474,121 +2509,6 @@ subroutine init_zbgc R_chl2N(2) = ratio_chl2N_sp R_chl2N(3) = ratio_chl2N_phaeo - F_abs_chl(1) = F_abs_chl_diatoms - F_abs_chl(2) = F_abs_chl_sp - F_abs_chl(3) = F_abs_chl_phaeo - - R_Fe2DON(1) = ratio_Fe2DON - R_C2N_DON(1) = ratio_C2N_proteins - - R_Fe2DOC(1) = ratio_Fe2DOC_s - R_Fe2DOC(2) = ratio_Fe2DOC_l - R_Fe2DOC(3) = c0 - - chlabs(1) = chlabs_diatoms - chlabs(2) = chlabs_sp - chlabs(3) = chlabs_phaeo - - alpha2max_low(1) = alpha2max_low_diatoms - alpha2max_low(2) = alpha2max_low_sp - alpha2max_low(3) = alpha2max_low_phaeo - - beta2max(1) = beta2max_diatoms - beta2max(2) = beta2max_sp - beta2max(3) = beta2max_phaeo - - mu_max(1) = mu_max_diatoms - mu_max(2) = mu_max_sp - mu_max(3) = mu_max_phaeo - - grow_Tdep(1) = grow_Tdep_diatoms - grow_Tdep(2) = grow_Tdep_sp - grow_Tdep(3) = grow_Tdep_phaeo - - fr_graze(1) = fr_graze_diatoms - fr_graze(2) = fr_graze_sp - fr_graze(3) = fr_graze_phaeo - - mort_pre(1) = mort_pre_diatoms - mort_pre(2) = mort_pre_sp - mort_pre(3) = mort_pre_phaeo - - mort_Tdep(1) = mort_Tdep_diatoms - mort_Tdep(2) = mort_Tdep_sp - mort_Tdep(3) = mort_Tdep_phaeo - - k_exude(1) = k_exude_diatoms - k_exude(2) = k_exude_sp - k_exude(3) = k_exude_phaeo - - K_Nit(1) = K_Nit_diatoms - K_Nit(2) = K_Nit_sp - K_Nit(3) = K_Nit_phaeo - - K_Am(1) = K_Am_diatoms - K_Am(2) = K_Am_sp - K_Am(3) = K_Am_phaeo - - K_Sil(1) = K_Sil_diatoms - K_Sil(2) = K_Sil_sp - K_Sil(3) = K_Sil_phaeo - - K_Fe(1) = K_Fe_diatoms - K_Fe(2) = K_Fe_sp - K_Fe(3) = K_Fe_phaeo - - f_don(1) = f_don_protein - kn_bac(1) = kn_bac_protein - f_don_Am(1) = f_don_Am_protein - - f_doc(1) = f_doc_s - f_doc(2) = f_doc_l - - f_exude(1) = f_exude_s - f_exude(2) = f_exude_l - k_bac(1) = k_bac_s - k_bac(2) = k_bac_l - - dictype(:) = -c1 - - algaltype(1) = algaltype_diatoms - algaltype(2) = algaltype_sp - algaltype(3) = algaltype_phaeo - - doctype(1) = doctype_s - doctype(2) = doctype_l - - dontype(1) = dontype_protein - - fedtype(1) = fedtype_1 - feptype(1) = feptype_1 - - zaerotype(1) = zaerotype_bc1 - zaerotype(2) = zaerotype_bc2 - zaerotype(3) = zaerotype_dust1 - zaerotype(4) = zaerotype_dust2 - zaerotype(5) = zaerotype_dust3 - zaerotype(6) = zaerotype_dust4 - - call icepack_init_zbgc ( & -!opt R_S2N_in=R_S2N, R_Fe2C_in=R_Fe2C, R_Fe2N_in=R_Fe2N, R_C2N_in=R_C2N, & -!opt R_chl2N_in=R_chl2N, F_abs_chl_in=F_abs_chl, R_Fe2DON_in=R_Fe2DON, R_Fe2DOC_in=R_Fe2DOC, & -!opt mort_Tdep_in=mort_Tdep, k_exude_in=k_exude, & -!opt K_Nit_in=K_Nit, K_Am_in=K_Am, K_sil_in=K_Sil, K_Fe_in=K_Fe, & -!opt f_don_in=f_don, kn_bac_in=kn_bac, f_don_Am_in=f_don_Am, f_exude_in=f_exude, k_bac_in=k_bac, & -!opt fr_resp_in=fr_resp, algal_vel_in=algal_vel, R_dFe2dust_in=R_dFe2dust, & -!opt dustFe_sol_in=dustFe_sol, T_max_in=T_max, fr_mort2min_in=fr_mort2min, fr_dFe_in=fr_dFe, & -!opt op_dep_min_in=op_dep_min, fr_graze_s_in=fr_graze_s, fr_graze_e_in=fr_graze_e, & -!opt k_nitrif_in=k_nitrif, t_iron_conv_in=t_iron_conv, max_loss_in=max_loss, max_dfe_doc1_in=max_dfe_doc1, & -!opt fr_resp_s_in=fr_resp_s, y_sk_DMS_in=y_sk_DMS, t_sk_conv_in=t_sk_conv, t_sk_ox_in=t_sk_ox, & -!opt mu_max_in=mu_max, R_Si2N_in=R_Si2N, R_C2N_DON_in=R_C2N_DON, chlabs_in=chlabs, & -!opt alpha2max_low_in=alpha2max_low, beta2max_in=beta2max, grow_Tdep_in=grow_Tdep, & -!opt fr_graze_in=fr_graze, mort_pre_in=mort_pre, f_doc_in=f_doc,fsal_in=fsal) - ) - call icepack_warnings_flush(nu_diag) - if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & - file=__FILE__, line=__LINE__) - !----------------------------------------------------------------- ! assign tracer dependencies ! bgc_tracer_type: < 0 purely mobile , >= 0 stationary @@ -2875,7 +2795,11 @@ subroutine init_zbgc call icepack_init_zbgc( & !opt zbgc_init_frac_in=zbgc_init_frac, tau_ret_in=tau_ret, tau_rel_in=tau_rel, & !opt zbgc_frac_init_in=zbgc_frac_init, bgc_tracer_type_in=bgc_tracer_type) - ) + ) + call icepack_warnings_flush(nu_diag) + if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & + file=__FILE__, line=__LINE__) + call icepack_init_tracer_indices( & bio_index_o_in=bio_index_o, bio_index_in=bio_index) call icepack_warnings_flush(nu_diag) diff --git a/cicecore/drivers/unittest/opticep/ice_step_mod.F90 b/cicecore/drivers/unittest/opticep/ice_step_mod.F90 index 64320e601..6e46ec51f 100644 --- a/cicecore/drivers/unittest/opticep/ice_step_mod.F90 +++ b/cicecore/drivers/unittest/opticep/ice_step_mod.F90 @@ -389,8 +389,7 @@ subroutine step_therm1 (dt, iblk) if (tmask(i,j,iblk)) then - call icepack_step_therm1(dt=dt, ncat=ncat, & - nilyr=nilyr, nslyr=nslyr, & + call icepack_step_therm1(dt=dt, & aicen_init = aicen_init (i,j,:,iblk), & vicen_init = vicen_init (i,j,:,iblk), & vsnon_init = vsnon_init (i,j,:,iblk), & @@ -680,8 +679,7 @@ subroutine step_therm2 (dt, iblk) if (tr_fsd) & wave_sig_ht(i,j,iblk) = c4*SQRT(SUM(wave_spectrum(i,j,:,iblk)*dwavefreq(:))) - call icepack_step_therm2(dt=dt, ncat=ncat, & - nltrcr=nltrcr, nilyr=nilyr, nslyr=nslyr, nblyr=nblyr, & + call icepack_step_therm2(dt=dt, & hin_max = hin_max (:), & aicen = aicen (i,j,:,iblk), & vicen = vicen (i,j,:,iblk), & @@ -709,9 +707,6 @@ subroutine step_therm2 (dt, iblk) fresh = fresh (i,j, iblk), & fsalt = fsalt (i,j, iblk), & fhocn = fhocn (i,j, iblk), & - bgrid = bgrid, & - cgrid = cgrid, & - igrid = igrid, & faero_ocn = faero_ocn (i,j,:,iblk), & first_ice = first_ice (i,j,:,iblk), & flux_bio = flux_bio (i,j,1:nbtrcr,iblk), & @@ -813,8 +808,7 @@ subroutine update_state (dt, daidt, dvidt, dvsdt, dagedt, offset) !----------------------------------------------------------------- ! if (tmask(i,j,iblk)) & - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -823,7 +817,6 @@ subroutine update_state (dt, daidt, dvidt, dvsdt, dagedt, offset) 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(:), & @@ -839,7 +832,7 @@ subroutine update_state (dt, daidt, dvidt, dvsdt, dagedt, offset) if (present(daidt)) daidt(i,j,iblk) = (aice(i,j,iblk) - daidt(i,j,iblk)) / dt if (present(dvidt)) dvidt(i,j,iblk) = (vice(i,j,iblk) - dvidt(i,j,iblk)) / dt if (present(dvsdt)) dvsdt(i,j,iblk) = (vsno(i,j,iblk) - dvsdt(i,j,iblk)) / dt - if (tr_iage .and. present(dagedt)) then + if (present(dagedt) .and. tr_iage) then if (offset > c0) then ! thermo if (trcr(i,j,nt_iage,iblk) > c0) & dagedt(i,j,iblk) = (trcr(i,j,nt_iage,iblk) & @@ -916,16 +909,18 @@ subroutine step_dyn_wave (dt) do j = jlo, jhi do i = ilo, ihi d_afsd_wave(i,j,:,iblk) = c0 - call icepack_step_wavefracture (wave_spec_type, & - dt, ncat, nfsd, nfreq, & - aice (i,j, iblk), & - vice (i,j, iblk), & - aicen (i,j,:, iblk), & - floe_rad_l(:), floe_rad_c(:), & - wave_spectrum (i,j,:, iblk), & - wavefreq(:), dwavefreq(:), & - trcrn (i,j,:,:,iblk), & - d_afsd_wave (i,j,:, iblk)) + call icepack_step_wavefracture(wave_spec_type = wave_spec_type, & + dt = dt, nfreq = nfreq, & + 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 (:), & + trcrn = trcrn (i,j,:,:,iblk), & + d_afsd_wave = d_afsd_wave (i,j,:, iblk)) end do ! i end do ! j end do ! iblk @@ -1102,13 +1097,12 @@ subroutine step_dyn_ridge (dt, ndtd, iblk) if (tmask(i,j,iblk)) then - 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 (:,:), & + call icepack_step_ridge (dt=dt, ndtd=ndtd, & + 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), & @@ -1225,27 +1219,26 @@ subroutine step_snow (dt, iblk) do j = jlo, jhi do i = ilo, ihi - call icepack_step_snow (dt, nilyr, & - nslyr, ncat, & - wind (i,j, iblk), & - aice (i,j, iblk), & - aicen(i,j,:,iblk), & - vicen(i,j,:,iblk), & - vsnon(i,j,:,iblk), & - trcrn(i,j,nt_Tsfc,:,iblk), & - trcrn(i,j,nt_qice,:,iblk), & ! top layer only - trcrn(i,j,nt_sice,:,iblk), & ! top layer only - trcrn(i,j,nt_qsno:nt_qsno+nslyr-1,:,iblk), & - trcrn(i,j,nt_alvl,:,iblk), & - trcrn(i,j,nt_vlvl,:,iblk), & - trcrn(i,j,nt_smice:nt_smice+nslyr-1,:,iblk), & - trcrn(i,j,nt_smliq:nt_smliq+nslyr-1,:,iblk), & - trcrn(i,j,nt_rsnw:nt_rsnw+nslyr-1,:,iblk), & - trcrn(i,j,nt_rhos:nt_rhos+nslyr-1,:,iblk), & - fresh (i,j,iblk), & - fhocn (i,j,iblk), & - fsloss (i,j,iblk), & - fsnow (i,j,iblk)) + call icepack_step_snow (dt = dt, & + wind = wind (i,j, iblk), & + aice = aice (i,j, iblk), & + aicen = aicen(i,j,:,iblk), & + vicen = vicen(i,j,:,iblk), & + vsnon = vsnon(i,j,:,iblk), & + Tsfc = trcrn(i,j,nt_Tsfc,:,iblk), & + zqin1 = trcrn(i,j,nt_qice,:,iblk), & ! top layer only + zSin1 = trcrn(i,j,nt_sice,:,iblk), & ! top layer only + zqsn = trcrn(i,j,nt_qsno:nt_qsno+nslyr-1,:,iblk), & + alvl = trcrn(i,j,nt_alvl,:,iblk), & + vlvl = trcrn(i,j,nt_vlvl,:,iblk), & + smice = trcrn(i,j,nt_smice:nt_smice+nslyr-1,:,iblk), & + smliq = trcrn(i,j,nt_smliq:nt_smliq+nslyr-1,:,iblk), & + rsnw = trcrn(i,j,nt_rsnw:nt_rsnw+nslyr-1,:,iblk), & + rhos_cmpn = trcrn(i,j,nt_rhos:nt_rhos+nslyr-1,:,iblk),& + fresh = fresh (i,j,iblk), & + fhocn = fhocn (i,j,iblk), & + fsloss = fsloss (i,j,iblk), & + fsnow = fsnow (i,j,iblk)) enddo enddo @@ -1385,7 +1378,6 @@ subroutine step_radiation (dt, iblk) if (tmask(i,j,iblk)) then call icepack_step_radiation (dt=dt, & - swgrid=swgrid(:), igrid=igrid(:), & fbri=fbri(:), & aicen=aicen(i,j, :,iblk), & vicen=vicen(i,j, :,iblk), & @@ -1619,7 +1611,7 @@ subroutine biogeochemistry (dt, iblk) use ice_domain_size, only: nblyr, nilyr, nslyr, n_algae, n_zaero, ncat, & n_doc, n_dic, n_don, n_fed, n_fep use ice_flux, only: meltbn, melttn, congeln, snoicen, & - sst, sss, fsnow, meltsn + sst, sss, Tf, fsnow, meltsn use ice_flux_bgc, only: hin_old, flux_bio, flux_bio_atm, faero_atm, & nit, amm, sil, dmsp, dms, algalN, doc, don, dic, fed, fep, zaeros, hum use ice_state, only: aicen_init, vicen_init, aicen, vicen, vsnon, & @@ -1680,10 +1672,7 @@ subroutine biogeochemistry (dt, iblk) do j = jlo, jhi do i = ilo, ihi - call icepack_load_ocean_bio_array(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, & + call icepack_load_ocean_bio_array( & 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), & @@ -1702,10 +1691,7 @@ subroutine biogeochemistry (dt, iblk) enddo ! mm endif - 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, & + call icepack_biogeochemistry(dt=dt, & upNO = upNO (i,j, iblk), & upNH = upNH (i,j, iblk), & iDi = iDi (i,j,:,:, iblk), & @@ -1728,13 +1714,13 @@ subroutine biogeochemistry (dt, 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), & 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), & + Tf = Tf (i,j, iblk), & fsnow = fsnow (i,j, iblk), & meltsn = meltsn (i,j,:, iblk), & hin_old = hin_old (i,j,:, iblk), & @@ -1747,8 +1733,7 @@ subroutine biogeochemistry (dt, iblk) vsnon = vsnon (i,j,:, iblk), & aice0 = aice0 (i,j, iblk), & trcrn = trcrn (i,j,:,:, iblk), & - vsnon_init = vsnon_init (i,j,:, iblk), & - skl_bgc = skl_bgc) + vsnon_init = vsnon_init (i,j,:, iblk)) enddo ! i enddo ! j diff --git a/cicecore/drivers/unittest/sumchk/CICE_InitMod.F90 b/cicecore/drivers/unittest/sumchk/CICE_InitMod.F90 index cb1241a5e..edb091941 100644 --- a/cicecore/drivers/unittest/sumchk/CICE_InitMod.F90 +++ b/cicecore/drivers/unittest/sumchk/CICE_InitMod.F90 @@ -66,7 +66,7 @@ subroutine cice_init floe_binwidth, c_fsd_range use ice_state, only: alloc_state use ice_flux_bgc, only: alloc_flux_bgc - use ice_calendar, only: dt, dt_dyn, write_ic, & + use ice_calendar, only: dt, write_ic, & init_calendar, advance_timestep, calc_timesteps use ice_communicate, only: init_communicate, my_task, master_task use ice_diagnostics, only: init_diags @@ -144,9 +144,9 @@ subroutine cice_init call init_thermo_vertical ! initialize vertical thermodynamics - call icepack_init_itd(ncat=ncat, hin_max=hin_max) ! ice thickness distribution + call icepack_init_itd(hin_max=hin_max) ! ice thickness distribution if (my_task == master_task) then - call icepack_init_itd_hist(ncat=ncat, hin_max=hin_max, c_hi_range=c_hi_range) ! output + call icepack_init_itd_hist(hin_max=hin_max, c_hi_range=c_hi_range) ! output endif call icepack_query_tracer_flags(tr_fsd_out=tr_fsd) @@ -154,13 +154,12 @@ subroutine cice_init if (icepack_warnings_aborted()) call abort_ice(trim(subname), & file=__FILE__,line= __LINE__) - if (tr_fsd) call icepack_init_fsd_bounds (nfsd, & ! floe size distribution - floe_rad_l, & ! fsd size lower bound in m (radius) - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - c_fsd_range, & ! string for history output + 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 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, & file=__FILE__, line=__LINE__) @@ -244,6 +243,7 @@ subroutine cice_init call init_flux_ocn ! initialize ocean fluxes sent to coupler call dealloc_grid ! deallocate temporary grid arrays + if (my_task == master_task) then call ice_memusage_print(nu_diag,subname//':end') endif @@ -478,8 +478,7 @@ subroutine init_restart do j = 1, ny_block do i = 1, nx_block if (tmask(i,j,iblk)) then - call icepack_aggregate(ncat = ncat, & - aicen = aicen(i,j,:,iblk), & + call icepack_aggregate(aicen = aicen(i,j,:,iblk), & trcrn = trcrn(i,j,:,:,iblk), & vicen = vicen(i,j,:,iblk), & vsnon = vsnon(i,j,:,iblk), & @@ -488,7 +487,6 @@ subroutine init_restart 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, & diff --git a/cicecore/shared/ice_arrays_column.F90 b/cicecore/shared/ice_arrays_column.F90 index 9480d79bc..337828d60 100644 --- a/cicecore/shared/ice_arrays_column.F90 +++ b/cicecore/shared/ice_arrays_column.F90 @@ -229,12 +229,8 @@ module ice_arrays_column bgc_data_dir ! directory for biogeochemistry data real (kind=dbl_kind), dimension(:), allocatable, public :: & - R_C2N_DON ! carbon to nitrogen mole ratio of DON pool - - real (kind=dbl_kind), dimension(:), allocatable, public :: & - R_C2N , & ! algal C to N (mole/mole) - R_chl2N , & ! 3 algal chlorophyll to N (mg/mmol) - R_Si2N ! silica to nitrogen mole ratio for algal groups + R_chl2N, & ! 3 algal chlorophyll to N (mg/mmol) + R_C2N ! algal C to N (mole/mole) ! floe size distribution real(kind=dbl_kind), dimension(:), allocatable, public :: & diff --git a/cicecore/shared/ice_distribution.F90 b/cicecore/shared/ice_distribution.F90 index d0768fc5a..bc2f72f00 100644 --- a/cicecore/shared/ice_distribution.F90 +++ b/cicecore/shared/ice_distribution.F90 @@ -41,7 +41,7 @@ module ice_distribution ice_distributionGetBlockLoc, & ice_distributionGetBlockID, & create_local_block_ids, & - proc_decomposition + proc_decomposition character (char_len), public :: & processor_shape ! 'square-pop' (approx) POP default config diff --git a/cicecore/shared/ice_init_column.F90 b/cicecore/shared/ice_init_column.F90 index 22cd3184a..fe54c6ccd 100644 --- a/cicecore/shared/ice_init_column.F90 +++ b/cicecore/shared/ice_init_column.F90 @@ -109,6 +109,7 @@ module ice_init_column max_loss , max_dfe_doc1 , fr_resp_s , & y_sk_DMS , t_sk_conv , t_sk_ox , & algaltype_diatoms , algaltype_sp , algaltype_phaeo , & + dictype_1 , & doctype_s , doctype_l , dontype_protein , & fedtype_1 , feptype_1 , zaerotype_bc1 , & zaerotype_bc2 , zaerotype_dust1 , zaerotype_dust2 , & @@ -149,7 +150,7 @@ subroutine init_thermo_vertical !----------------------------------------------------------------- call icepack_query_parameters(depressT_out=depressT) - call icepack_init_thermo(nilyr=nilyr, sprofile=sprofile) + call icepack_init_thermo(sprofile=sprofile) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -345,7 +346,6 @@ subroutine init_shortwave if (tmask(i,j,iblk)) then call icepack_step_radiation (dt=dt, & - swgrid=swgrid(:), igrid=igrid(:), & fbri=fbri(:), & aicen=aicen(i,j,:,iblk), & vicen=vicen(i,j,:,iblk), & @@ -656,10 +656,10 @@ subroutine init_fsd(floesize) if (tr_fsd) then ! initialize floe size distribution the same in every column and category - call icepack_init_fsd(nfsd, ice_ic, & - floe_rad_c, & ! fsd size bin centre in m (radius) - floe_binwidth, & ! fsd size bin width in m (radius) - afsd) ! floe size distribution + 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 do j = 1, ny_block @@ -670,7 +670,7 @@ subroutine init_fsd(floesize) enddo ! k enddo ! n - call icepack_cleanup_fsd (ncat, nfsd, afsdn) ! renormalize + call icepack_cleanup_fsd (afsdn = afsdn) ! renormalize do n = 1, ncat do k = 1, nfsd @@ -811,9 +811,7 @@ subroutine init_bgc() 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) + zaeros=zaeros(i,j,:,iblk)) enddo ! i enddo ! j @@ -841,10 +839,7 @@ subroutine init_bgc() do j = jlo, jhi do i = ilo, ihi - call icepack_load_ocean_bio_array(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, & + call icepack_load_ocean_bio_array( & 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), & @@ -881,8 +876,7 @@ subroutine init_bgc() trcrn_bgc(k-ntrcr_o,n) = trcrn(i,j,k,n,iblk) enddo enddo - call icepack_init_bgc(ncat=ncat, nblyr=nblyr, nilyr=nilyr, ntrcr_o=ntrcr_o, & - cgrid=cgrid, igrid=igrid, ntrcr=ntrcr, nbtrcr=nbtrcr, & + call icepack_init_bgc( & sicen=sicen(:,:), trcrn=trcrn_bgc(:,:), sss=sss(i,j, iblk), & ocean_bio_all=ocean_bio_all(i,j,:,iblk)) enddo ! i @@ -926,8 +920,7 @@ subroutine init_hbrine() if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__,line= __LINE__) - call icepack_init_hbrine(bgrid=bgrid, igrid=igrid, cgrid=cgrid, icgrid=icgrid, & - swgrid=swgrid, nblyr=nblyr, nilyr=nilyr, phi_snow=phi_snow) + call icepack_init_hbrine(phi_snow=phi_snow) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -1032,6 +1025,7 @@ subroutine input_zbgc algaltype_diatoms , algaltype_sp , algaltype_phaeo , & nitratetype , ammoniumtype , silicatetype , & dmspptype , dmspdtype , humtype , & + dictype_1 , & doctype_s , doctype_l , dontype_protein , & fedtype_1 , feptype_1 , zaerotype_bc1 , & zaerotype_bc2 , zaerotype_dust1 , zaerotype_dust2 , & @@ -1186,6 +1180,7 @@ subroutine input_zbgc dmspptype = p5 ! dmspdtype = -c1 ! humtype = c1 ! + dictype_1 = -c1 ! doctype_s = p5 ! doctype_l = p5 ! dontype_protein = p5 ! @@ -1372,6 +1367,7 @@ subroutine input_zbgc call broadcast_scalar(dmspptype , master_task) call broadcast_scalar(dmspdtype , master_task) call broadcast_scalar(humtype , master_task) + call broadcast_scalar(dictype_1 , master_task) call broadcast_scalar(doctype_s , master_task) call broadcast_scalar(doctype_l , master_task) call broadcast_scalar(dontype_protein , master_task) @@ -1659,16 +1655,113 @@ subroutine input_zbgc ! set values in icepack !----------------------------------------------------------------- - call icepack_init_parameters( & - ktherm_in=ktherm, shortwave_in=shortwave, & - skl_bgc_in=skl_bgc, z_tracers_in=z_tracers, scale_bgc_in=scale_bgc, & - dEdd_algae_in=dEdd_algae, & - solve_zbgc_in=solve_zbgc, & - bgc_flux_type_in=bgc_flux_type, grid_o_in=grid_o, l_sk_in=l_sk, & - initbio_frac_in=initbio_frac, & - grid_oS_in=grid_oS, l_skS_in=l_skS, & - phi_snow_in=phi_snow, frazil_scav_in = frazil_scav, & - modal_aero_in=modal_aero) + call icepack_init_parameters(ktherm_in=ktherm, shortwave_in=shortwave, & + scale_bgc_in=scale_bgc, skl_bgc_in=skl_bgc, z_tracers_in=z_tracers, & + dEdd_algae_in=dEdd_algae, solve_zbgc_in=solve_zbgc, & + bgc_flux_type_in=bgc_flux_type, grid_o_in=grid_o, l_sk_in=l_sk, & + initbio_frac_in=initbio_frac, frazil_scav_in=frazil_scav, & + grid_oS_in=grid_oS, l_skS_in=l_skS, phi_snow_in=phi_snow, & + algal_vel_in=algal_vel, R_dFe2dust_in=R_dFe2dust, & + dustFe_sol_in=dustFe_sol, T_max_in=T_max, fsal_in=fsal, & + op_dep_min_in=op_dep_min, fr_graze_s_in=fr_graze_s, & + fr_graze_e_in=fr_graze_e, fr_mort2min_in=fr_mort2min, & + fr_dFe_in=fr_dFe, k_nitrif_in=k_nitrif, t_iron_conv_in=t_iron_conv, & + max_loss_in=max_loss, max_dfe_doc1_in=max_dfe_doc1, fr_resp_in=fr_resp, & + fr_resp_s_in=fr_resp_s, y_sk_DMS_in=y_sk_DMS, t_sk_conv_in=t_sk_conv, & + t_sk_ox_in=t_sk_ox, modal_aero_in=modal_aero) + call icepack_warnings_flush(nu_diag) + if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & + file=__FILE__, line=__LINE__) + + call icepack_init_parameters ( & + ratio_Si2N_diatoms_in = ratio_Si2N_diatoms, & + ratio_Si2N_sp_in = ratio_Si2N_sp, & + ratio_Si2N_phaeo_in = ratio_Si2N_phaeo, & + ratio_S2N_diatoms_in = ratio_S2N_diatoms, & + ratio_S2N_sp_in = ratio_S2N_sp, & + ratio_S2N_phaeo_in = ratio_S2N_phaeo, & + ratio_Fe2C_diatoms_in = ratio_Fe2C_diatoms, & + ratio_Fe2C_sp_in = ratio_Fe2C_sp, & + ratio_Fe2C_phaeo_in = ratio_Fe2C_phaeo, & + ratio_Fe2N_diatoms_in = ratio_Fe2N_diatoms, & + ratio_Fe2N_sp_in = ratio_Fe2N_sp, & + ratio_Fe2N_phaeo_in = ratio_Fe2N_phaeo, & + ratio_C2N_diatoms_in = ratio_C2N_diatoms, & + ratio_C2N_sp_in = ratio_C2N_sp, & + ratio_C2N_phaeo_in = ratio_C2N_phaeo, & + ratio_chl2N_diatoms_in = ratio_chl2N_diatoms, & + ratio_chl2N_sp_in = ratio_chl2N_sp, & + ratio_chl2N_phaeo_in = ratio_chl2N_phaeo, & + F_abs_chl_diatoms_in = F_abs_chl_diatoms, & + F_abs_chl_sp_in = F_abs_chl_sp, & + F_abs_chl_phaeo_in = F_abs_chl_phaeo, & + ratio_Fe2DON_in = ratio_Fe2DON, & + ratio_C2N_proteins_in = ratio_C2N_proteins, & + ratio_Fe2DOC_s_in = ratio_Fe2DOC_s, & + ratio_Fe2DOC_l_in = ratio_Fe2DOC_l, & + chlabs_diatoms_in = chlabs_diatoms, & + chlabs_sp_in = chlabs_sp, & + chlabs_phaeo_in = chlabs_phaeo, & + alpha2max_low_diatoms_in = alpha2max_low_diatoms, & + alpha2max_low_sp_in = alpha2max_low_sp, & + alpha2max_low_phaeo_in = alpha2max_low_phaeo, & + beta2max_diatoms_in = beta2max_diatoms, & + beta2max_sp_in = beta2max_sp, & + beta2max_phaeo_in = beta2max_phaeo, & + mu_max_diatoms_in = mu_max_diatoms, & + mu_max_sp_in = mu_max_sp, & + mu_max_phaeo_in = mu_max_phaeo, & + grow_Tdep_diatoms_in = grow_Tdep_diatoms, & + grow_Tdep_sp_in = grow_Tdep_sp, & + grow_Tdep_phaeo_in = grow_Tdep_phaeo, & + fr_graze_diatoms_in = fr_graze_diatoms, & + fr_graze_sp_in = fr_graze_sp, & + fr_graze_phaeo_in = fr_graze_phaeo, & + mort_pre_diatoms_in = mort_pre_diatoms, & + mort_pre_sp_in = mort_pre_sp, & + mort_pre_phaeo_in = mort_pre_phaeo, & + mort_Tdep_diatoms_in = mort_Tdep_diatoms, & + mort_Tdep_sp_in = mort_Tdep_sp, & + mort_Tdep_phaeo_in = mort_Tdep_phaeo, & + k_exude_diatoms_in = k_exude_diatoms, & + k_exude_sp_in = k_exude_sp, & + k_exude_phaeo_in = k_exude_phaeo, & + K_Nit_diatoms_in = K_Nit_diatoms, & + K_Nit_sp_in = K_Nit_sp, & + K_Nit_phaeo_in = K_Nit_phaeo, & + K_Am_diatoms_in = K_Am_diatoms, & + K_Am_sp_in = K_Am_sp, & + K_Am_phaeo_in = K_Am_phaeo, & + K_Sil_diatoms_in = K_Sil_diatoms, & + K_Sil_sp_in = K_Sil_sp, & + K_Sil_phaeo_in = K_Sil_phaeo, & + K_Fe_diatoms_in = K_Fe_diatoms, & + K_Fe_sp_in = K_Fe_sp, & + K_Fe_phaeo_in = K_Fe_phaeo, & + f_doc_s_in = f_doc_s, & + f_doc_l_in = f_doc_l, & + f_don_protein_in = f_don_protein, & + kn_bac_protein_in = kn_bac_protein, & + f_don_Am_protein_in = f_don_Am_protein, & + f_exude_s_in = f_exude_s, & + f_exude_l_in = f_exude_l, & + k_bac_s_in = k_bac_s, & + k_bac_l_in = k_bac_l, & + algaltype_diatoms_in = algaltype_diatoms, & + algaltype_sp_in = algaltype_sp, & + algaltype_phaeo_in = algaltype_phaeo, & + dictype_1_in = dictype_1, & + doctype_s_in = doctype_s, & + doctype_l_in = doctype_l, & + dontype_protein_in = dontype_protein, & + fedtype_1_in = fedtype_1, & + feptype_1_in = feptype_1, & + zaerotype_bc1_in = zaerotype_bc1, & + zaerotype_bc2_in = zaerotype_bc2, & + zaerotype_dust1_in = zaerotype_dust1, & + zaerotype_dust2_in = zaerotype_dust2, & + zaerotype_dust3_in = zaerotype_dust3, & + zaerotype_dust4_in = zaerotype_dust4) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & file=__FILE__, line=__LINE__) @@ -2237,7 +2330,7 @@ subroutine init_zbgc use ice_state, only: trcr_base, trcr_depend, n_trcr_strata, & nt_strata - use ice_arrays_column, only: R_C2N, R_chl2N, R_C2N_DON, R_Si2N, trcrn_sw + use ice_arrays_column, only: R_C2N, R_chl2N, trcrn_sw integer (kind=int_kind) :: & nbtrcr, nbtrcr_sw, nt_fbri, & @@ -2325,46 +2418,6 @@ subroutine init_zbgc logical (kind=log_kind) :: & skl_bgc, z_tracers, dEdd_algae - real (kind=dbl_kind), dimension(icepack_max_algae) :: & - F_abs_chl ! to scale absorption in Dedd - - real (kind=dbl_kind), dimension(icepack_max_algae) :: & - R_S2N , & ! algal S to N (mole/mole) - ! Marchetti et al 2006, 3 umol Fe/mol C for iron limited Pseudo-nitzschia - R_Fe2C , & ! algal Fe to carbon (umol/mmol) - R_Fe2N ! algal Fe to N (umol/mmol) - - real (kind=dbl_kind), dimension(icepack_max_don) :: & - R_Fe2DON ! Fe to N of DON (nmol/umol) - - real (kind=dbl_kind), dimension(icepack_max_doc) :: & - R_Fe2DOC ! Fe to C of DOC (nmol/umol) - - real (kind=dbl_kind), dimension(icepack_max_algae) :: & - chlabs , & ! chla absorption 1/m/(mg/m^3) - alpha2max_low , & ! light limitation (1/(W/m^2)) - beta2max , & ! light inhibition (1/(W/m^2)) - mu_max , & ! maximum growth rate (1/d) - grow_Tdep , & ! T dependence of growth (1/C) - fr_graze , & ! fraction of algae grazed - mort_pre , & ! mortality (1/day) - mort_Tdep , & ! T dependence of mortality (1/C) - k_exude , & ! algal carbon exudation rate (1/d) - K_Nit , & ! nitrate half saturation (mmol/m^3) - K_Am , & ! ammonium half saturation (mmol/m^3) - K_Sil , & ! silicon half saturation (mmol/m^3) - K_Fe ! iron half saturation or micromol/m^3 - - real (kind=dbl_kind), dimension(icepack_max_DON) :: & - f_don , & ! fraction of spilled grazing to DON - kn_bac , & ! Bacterial degredation of DON (1/d) - f_don_Am ! fraction of remineralized DON to Am - - real (kind=dbl_kind), dimension(icepack_max_DOC) :: & - f_doc , & ! fraction of mort_N that goes to each doc pool - f_exude , & ! fraction of exuded carbon to each DOC pool - k_bac ! Bacterial degredation of DOC (1/d) - integer (kind=int_kind) :: & k, mm , & ! loop index nk , & ! layer index @@ -2443,29 +2496,11 @@ subroutine init_zbgc !----------------------------------------------------------------- allocate( & - R_C2N_DON(icepack_max_don), & ! carbon to nitrogen mole ratio of DON pool - R_C2N(icepack_max_algae), & ! algal C to N (mole/mole) + R_C2N (icepack_max_algae), & ! algal C to N (mole/mole) R_chl2N(icepack_max_algae), & ! 3 algal chlorophyll to N (mg/mmol) - R_Si2N(icepack_max_algae), & ! silica to nitrogen mole ratio for algal groups stat=ierr) if (ierr/=0) call abort_ice(subname//' Out of Memory') - R_Si2N(1) = ratio_Si2N_diatoms - R_Si2N(2) = ratio_Si2N_sp - R_Si2N(3) = ratio_Si2N_phaeo - - R_S2N(1) = ratio_S2N_diatoms - R_S2N(2) = ratio_S2N_sp - R_S2N(3) = ratio_S2N_phaeo - - R_Fe2C(1) = ratio_Fe2C_diatoms - R_Fe2C(2) = ratio_Fe2C_sp - R_Fe2C(3) = ratio_Fe2C_phaeo - - R_Fe2N(1) = ratio_Fe2N_diatoms - R_Fe2N(2) = ratio_Fe2N_sp - R_Fe2N(3) = ratio_Fe2N_phaeo - R_C2N(1) = ratio_C2N_diatoms R_C2N(2) = ratio_C2N_sp R_C2N(3) = ratio_C2N_phaeo @@ -2474,120 +2509,6 @@ subroutine init_zbgc R_chl2N(2) = ratio_chl2N_sp R_chl2N(3) = ratio_chl2N_phaeo - F_abs_chl(1) = F_abs_chl_diatoms - F_abs_chl(2) = F_abs_chl_sp - F_abs_chl(3) = F_abs_chl_phaeo - - R_Fe2DON(1) = ratio_Fe2DON - R_C2N_DON(1) = ratio_C2N_proteins - - R_Fe2DOC(1) = ratio_Fe2DOC_s - R_Fe2DOC(2) = ratio_Fe2DOC_l - R_Fe2DOC(3) = c0 - - chlabs(1) = chlabs_diatoms - chlabs(2) = chlabs_sp - chlabs(3) = chlabs_phaeo - - alpha2max_low(1) = alpha2max_low_diatoms - alpha2max_low(2) = alpha2max_low_sp - alpha2max_low(3) = alpha2max_low_phaeo - - beta2max(1) = beta2max_diatoms - beta2max(2) = beta2max_sp - beta2max(3) = beta2max_phaeo - - mu_max(1) = mu_max_diatoms - mu_max(2) = mu_max_sp - mu_max(3) = mu_max_phaeo - - grow_Tdep(1) = grow_Tdep_diatoms - grow_Tdep(2) = grow_Tdep_sp - grow_Tdep(3) = grow_Tdep_phaeo - - fr_graze(1) = fr_graze_diatoms - fr_graze(2) = fr_graze_sp - fr_graze(3) = fr_graze_phaeo - - mort_pre(1) = mort_pre_diatoms - mort_pre(2) = mort_pre_sp - mort_pre(3) = mort_pre_phaeo - - mort_Tdep(1) = mort_Tdep_diatoms - mort_Tdep(2) = mort_Tdep_sp - mort_Tdep(3) = mort_Tdep_phaeo - - k_exude(1) = k_exude_diatoms - k_exude(2) = k_exude_sp - k_exude(3) = k_exude_phaeo - - K_Nit(1) = K_Nit_diatoms - K_Nit(2) = K_Nit_sp - K_Nit(3) = K_Nit_phaeo - - K_Am(1) = K_Am_diatoms - K_Am(2) = K_Am_sp - K_Am(3) = K_Am_phaeo - - K_Sil(1) = K_Sil_diatoms - K_Sil(2) = K_Sil_sp - K_Sil(3) = K_Sil_phaeo - - K_Fe(1) = K_Fe_diatoms - K_Fe(2) = K_Fe_sp - K_Fe(3) = K_Fe_phaeo - - f_don(1) = f_don_protein - kn_bac(1) = kn_bac_protein - f_don_Am(1) = f_don_Am_protein - - f_doc(1) = f_doc_s - f_doc(2) = f_doc_l - - f_exude(1) = f_exude_s - f_exude(2) = f_exude_l - k_bac(1) = k_bac_s - k_bac(2) = k_bac_l - - dictype(:) = -c1 - - algaltype(1) = algaltype_diatoms - algaltype(2) = algaltype_sp - algaltype(3) = algaltype_phaeo - - doctype(1) = doctype_s - doctype(2) = doctype_l - - dontype(1) = dontype_protein - - fedtype(1) = fedtype_1 - feptype(1) = feptype_1 - - zaerotype(1) = zaerotype_bc1 - zaerotype(2) = zaerotype_bc2 - zaerotype(3) = zaerotype_dust1 - zaerotype(4) = zaerotype_dust2 - zaerotype(5) = zaerotype_dust3 - zaerotype(6) = zaerotype_dust4 - - call icepack_init_zbgc ( & - R_S2N_in=R_S2N, R_Fe2C_in=R_Fe2C, R_Fe2N_in=R_Fe2N, R_C2N_in=R_C2N, & - R_chl2N_in=R_chl2N, F_abs_chl_in=F_abs_chl, R_Fe2DON_in=R_Fe2DON, R_Fe2DOC_in=R_Fe2DOC, & - mort_Tdep_in=mort_Tdep, k_exude_in=k_exude, & - K_Nit_in=K_Nit, K_Am_in=K_Am, K_sil_in=K_Sil, K_Fe_in=K_Fe, & - f_don_in=f_don, kn_bac_in=kn_bac, f_don_Am_in=f_don_Am, f_exude_in=f_exude, k_bac_in=k_bac, & - fr_resp_in=fr_resp, algal_vel_in=algal_vel, R_dFe2dust_in=R_dFe2dust, & - dustFe_sol_in=dustFe_sol, T_max_in=T_max, fr_mort2min_in=fr_mort2min, fr_dFe_in=fr_dFe, & - op_dep_min_in=op_dep_min, fr_graze_s_in=fr_graze_s, fr_graze_e_in=fr_graze_e, & - k_nitrif_in=k_nitrif, t_iron_conv_in=t_iron_conv, max_loss_in=max_loss, max_dfe_doc1_in=max_dfe_doc1, & - fr_resp_s_in=fr_resp_s, y_sk_DMS_in=y_sk_DMS, t_sk_conv_in=t_sk_conv, t_sk_ox_in=t_sk_ox, & - mu_max_in=mu_max, R_Si2N_in=R_Si2N, R_C2N_DON_in=R_C2N_DON, chlabs_in=chlabs, & - alpha2max_low_in=alpha2max_low, beta2max_in=beta2max, grow_Tdep_in=grow_Tdep, & - fr_graze_in=fr_graze, mort_pre_in=mort_pre, f_doc_in=f_doc,fsal_in=fsal) - call icepack_warnings_flush(nu_diag) - if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & - file=__FILE__, line=__LINE__) - !----------------------------------------------------------------- ! assign tracer dependencies ! bgc_tracer_type: < 0 purely mobile , >= 0 stationary @@ -2874,6 +2795,10 @@ subroutine init_zbgc call icepack_init_zbgc( & zbgc_init_frac_in=zbgc_init_frac, tau_ret_in=tau_ret, tau_rel_in=tau_rel, & zbgc_frac_init_in=zbgc_frac_init, bgc_tracer_type_in=bgc_tracer_type) + call icepack_warnings_flush(nu_diag) + if (icepack_warnings_aborted()) call abort_ice(error_message=subname, & + file=__FILE__, line=__LINE__) + call icepack_init_tracer_indices( & bio_index_o_in=bio_index_o, bio_index_in=bio_index) call icepack_warnings_flush(nu_diag) diff --git a/configuration/scripts/ice_in b/configuration/scripts/ice_in index ad29e05ce..554a70eca 100644 --- a/configuration/scripts/ice_in +++ b/configuration/scripts/ice_in @@ -336,23 +336,22 @@ scale_bgc = .false. solve_zsal = .false. restart_zsal = .false. - tr_bgc_Nit = .true. - tr_bgc_C = .true. + tr_bgc_Nit = .false. + tr_bgc_C = .false. tr_bgc_chl = .false. - tr_bgc_Am = .true. - tr_bgc_Sil = .true. + tr_bgc_Am = .false. + tr_bgc_Sil = .false. tr_bgc_DMS = .false. - tr_bgc_PON = .true. - tr_bgc_hum = .true. + tr_bgc_PON = .false. + tr_bgc_hum = .false. tr_bgc_DON = .false. - tr_bgc_Fe = .true. + tr_bgc_Fe = .false. grid_o = 0.006 - grid_o_t = 0.006 - l_sk = 0.024 + l_sk = 20.0 grid_oS = 0.0 l_skS = 0.028 phi_snow = -0.3 - initbio_frac = 0.8 + initbio_frac = 1.0 frazil_scav = 0.8 ratio_Si2N_diatoms = 1.8 ratio_Si2N_sp = 0.0 @@ -370,29 +369,29 @@ ratio_Fe2DOC_s = 0.1 ratio_Fe2DOC_l = 0.033 fr_resp = 0.05 - tau_min = 5200.0 - tau_max = 173000.0 - algal_vel = 0.0000000111 + tau_min = 3600.0 + tau_max = 7776000.0 + algal_vel = 0.0000001 R_dFe2dust = 0.035 dustFe_sol = 0.005 chlabs_diatoms = 0.03 chlabs_sp = 0.01 chlabs_phaeo = 0.05 - alpha2max_low_diatoms = 0.8 - alpha2max_low_sp = 0.67 - alpha2max_low_phaeo = 0.67 - beta2max_diatoms = 0.018 - beta2max_sp = 0.0025 - beta2max_phaeo = 0.01 + alpha2max_low_diatoms = 0.3 + alpha2max_low_sp = 0.2 + alpha2max_low_phaeo = 0.17 + beta2max_diatoms = 0.001 + beta2max_sp = 0.001 + beta2max_phaeo = 0.04 mu_max_diatoms = 1.44 - mu_max_sp = 0.851 - mu_max_phaeo = 0.851 - grow_Tdep_diatoms = 0.06 - grow_Tdep_sp = 0.06 - grow_Tdep_phaeo = 0.06 - fr_graze_diatoms = 0.0 - fr_graze_sp = 0.1 - fr_graze_phaeo = 0.1 + mu_max_sp = 0.41 + mu_max_phaeo = 0.63 + grow_Tdep_diatoms = 0.063 + grow_Tdep_sp = 0.063 + grow_Tdep_phaeo = 0.063 + fr_graze_diatoms = 0.19 + fr_graze_sp = 0.19 + fr_graze_phaeo = 0.19 mort_pre_diatoms = 0.007 mort_pre_sp = 0.007 mort_pre_phaeo = 0.007 @@ -415,10 +414,10 @@ K_Fe_sp = 0.2 K_Fe_phaeo = 0.1 f_don_protein = 0.6 - kn_bac_protein = 0.03 - f_don_Am_protein = 0.25 - f_doc_s = 0.4 - f_doc_l = 0.4 + kn_bac_protein = 0.2 + f_don_Am_protein = 1.0 + f_doc_s = 0.5 + f_doc_l = 0.5 f_exude_s = 1.0 f_exude_l = 1.0 k_bac_s = 0.03 @@ -428,36 +427,36 @@ op_dep_min = 0.1 fr_graze_s = 0.5 fr_graze_e = 0.5 - fr_mort2min = 0.5 - fr_dFe = 0.3 - k_nitrif = 0.0 + fr_mort2min = 0.9 + fr_dFe = 0.9 + k_nitrif = 0.046 t_iron_conv = 3065.0 max_loss = 0.9 max_dfe_doc1 = 0.2 - fr_resp_s = 0.75 - y_sk_DMS = 0.5 - t_sk_conv = 3.0 - t_sk_ox = 10.0 + fr_resp_s = 0.9 + y_sk_DMS = 0.7 + t_sk_conv = 5.0 + t_sk_ox = 12.0 algaltype_diatoms = 0.0 - algaltype_sp = 0.5 + algaltype_sp = 0.0 algaltype_phaeo = 0.5 nitratetype = -1.0 - ammoniumtype = 1.0 + ammoniumtype = 0.0 silicatetype = -1.0 dmspptype = 0.5 - dmspdtype = -1.0 - humtype = 1.0 - doctype_s = 0.5 - doctype_l = 0.5 - dontype_protein = 0.5 - fedtype_1 = 0.5 + dmspdtype = 0.0 + humtype = 0.0 + doctype_s = 0.0 + doctype_l = 0.0 + dontype_protein = 0.0 + fedtype_1 = 0.0 feptype_1 = 0.5 - zaerotype_bc1 = 1.0 - zaerotype_bc2 = 1.0 - zaerotype_dust1 = 1.0 - zaerotype_dust2 = 1.0 - zaerotype_dust3 = 1.0 - zaerotype_dust4 = 1.0 + zaerotype_bc1 = 0.0 + zaerotype_bc2 = 0.0 + zaerotype_dust1 = 0.0 + zaerotype_dust2 = 0.0 + zaerotype_dust3 = 0.0 + zaerotype_dust4 = 0.0 ratio_C2N_diatoms = 7.0 ratio_C2N_sp = 7.0 ratio_C2N_phaeo = 7.0 @@ -467,7 +466,7 @@ F_abs_chl_diatoms = 2.0 F_abs_chl_sp = 4.0 F_abs_chl_phaeo = 5.0 - ratio_C2N_proteins = 7.0 + ratio_C2N_proteins = 5.0 / &icefields_nml diff --git a/configuration/scripts/options/set_nml.bgcz b/configuration/scripts/options/set_nml.bgcz index 46e4dee74..aecfd656a 100644 --- a/configuration/scripts/options/set_nml.bgcz +++ b/configuration/scripts/options/set_nml.bgcz @@ -1,22 +1,19 @@ -nilyr = 7 -nslyr = 1 -ncat = 5 nblyr = 7 n_aero = 0 n_zaero = 3 n_algae = 3 n_doc = 2 -n_dic = 0 +n_dic = 1 n_don = 1 n_fed = 1 n_fep = 1 ice_ic = 'none' tr_brine = .true. +tr_aero = .false. tr_zaero = .true. z_tracers = .true. solve_zbgc = .true. scale_bgc = .true. -bgc_data_type = 'default' tr_bgc_Nit = .true. tr_bgc_C = .true. tr_bgc_Am = .true. @@ -29,3 +26,21 @@ tr_bgc_Fe = .true. # modal_aero = .true. # dEdd_algae = .true. tfrz_option = 'mushy' +highfreq = .true. +natmiter = 10 +oceanmixed_ice = .false. +# +nslyr = 5 +tr_snow = .true. +snwgrain = .true. +use_smliq_pnd = .true. +rsnw_fall = 54.526 +rsnw_tmax = 1500.0 +snw_aging_table = 'file' +snw_filename = 'ICE_MACHINE_INPUTDATA/CICE_data/forcing/snicar_drdt_bst_fit_60_c04262019.nc' +snw_tau_fname = 'snowEmpiricalGrowthParameterTau' +snw_kappa_fname = 'snowEmpiricalGrowthParameterKappa' +snw_drdt0_fname = 'snowPropertyRate' +snw_rhos_fname = 'nGrainAgingSnowDensity' +snw_Tgrd_fname = 'nGrainAgingTempGradient' +snw_T_fname = 'nGrainAgingTemperature' diff --git a/configuration/scripts/options/set_nml.bgczclim b/configuration/scripts/options/set_nml.bgczclim index feb900ede..fcd3baaf6 100644 --- a/configuration/scripts/options/set_nml.bgczclim +++ b/configuration/scripts/options/set_nml.bgczclim @@ -1,25 +1,23 @@ -nilyr = 7 -nslyr = 1 -ncat = 5 +year_init = 2005 +istep0 = 0 +npt_unit = '1' +npt = 168 nblyr = 7 n_aero = 0 n_zaero = 3 n_algae = 3 n_doc = 2 -n_dic = 0 +n_dic = 1 n_don = 1 n_fed = 1 n_fep = 1 -year_init = 2005 -istep0 = 0 -npt = 168 ice_ic = 'none' tr_brine = .true. +tr_aero = .false. tr_zaero = .true. z_tracers = .true. solve_zbgc = .true. scale_bgc = .true. -bgc_data_type = 'clim' tr_bgc_Nit = .true. tr_bgc_C = .true. tr_bgc_Am = .true. @@ -29,6 +27,25 @@ tr_bgc_PON = .true. tr_bgc_hum = .true. tr_bgc_DON = .true. tr_bgc_Fe = .true. -tfrz_option = "mushy" - - +# modal_aero = .true. +# dEdd_algae = .true. +tfrz_option = 'mushy' +highfreq = .true. +natmiter = 10 +oceanmixed_ice = .false. +bgc_data_type = 'clim' +# +nslyr = 5 +tr_snow = .true. +snwgrain = .true. +use_smliq_pnd = .true. +rsnw_fall = 54.526 +rsnw_tmax = 1500.0 +snw_aging_table = 'file' +snw_filename = 'ICE_MACHINE_INPUTDATA/CICE_data/forcing/snicar_drdt_bst_fit_60_c04262019.nc' +snw_tau_fname = 'snowEmpiricalGrowthParameterTau' +snw_kappa_fname = 'snowEmpiricalGrowthParameterKappa' +snw_drdt0_fname = 'snowPropertyRate' +snw_rhos_fname = 'nGrainAgingSnowDensity' +snw_Tgrd_fname = 'nGrainAgingTempGradient' +snw_T_fname = 'nGrainAgingTemperature' diff --git a/configuration/scripts/options/set_nml.bgczm b/configuration/scripts/options/set_nml.bgczm index 53513ca87..fd42ac9c9 100644 --- a/configuration/scripts/options/set_nml.bgczm +++ b/configuration/scripts/options/set_nml.bgczm @@ -1,22 +1,19 @@ -nilyr = 7 -nslyr = 1 -ncat = 5 nblyr = 7 n_aero = 0 n_zaero = 3 n_algae = 3 n_doc = 2 -n_dic = 0 +n_dic = 1 n_don = 1 n_fed = 1 n_fep = 1 ice_ic = 'none' tr_brine = .true. +tr_aero = .false. tr_zaero = .true. z_tracers = .true. solve_zbgc = .true. scale_bgc = .true. -bgc_data_type = 'default' tr_bgc_Nit = .true. tr_bgc_C = .true. tr_bgc_Am = .true. @@ -29,3 +26,21 @@ tr_bgc_Fe = .true. modal_aero = .true. # dEdd_algae = .true. tfrz_option = 'mushy' +highfreq = .true. +natmiter = 10 +oceanmixed_ice = .false. +# +nslyr = 5 +tr_snow = .true. +snwgrain = .true. +use_smliq_pnd = .true. +rsnw_fall = 54.526 +rsnw_tmax = 1500.0 +snw_aging_table = 'file' +snw_filename = 'ICE_MACHINE_INPUTDATA/CICE_data/forcing/snicar_drdt_bst_fit_60_c04262019.nc' +snw_tau_fname = 'snowEmpiricalGrowthParameterTau' +snw_kappa_fname = 'snowEmpiricalGrowthParameterKappa' +snw_drdt0_fname = 'snowPropertyRate' +snw_rhos_fname = 'nGrainAgingSnowDensity' +snw_Tgrd_fname = 'nGrainAgingTempGradient' +snw_T_fname = 'nGrainAgingTemperature'