- Timestamp:
- 2019-12-11T17:15:54+01:00 (5 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zbc.F90
r12182 r12193 55 55 CONTAINS 56 56 57 SUBROUTINE p4z_bc( kt )57 SUBROUTINE p4z_bc( kt, Kbb, Kmm, Krhs ) 58 58 !!---------------------------------------------------------------------- 59 59 !! *** routine p4z_bc *** … … 66 66 !! 67 67 !!---------------------------------------------------------------------- 68 INTEGER, INTENT(in) :: kt ! ocean time step 68 INTEGER, INTENT(in) :: kt ! ocean time step 69 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level index 69 70 ! 70 71 INTEGER :: ji, jj, jk, jl … … 86 87 ! 87 88 jl = n_trc_indsbc(jpfer) 88 zirondep(:,:,1) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t _n(:,:,1) / rn_sbc_time89 zirondep(:,:,1) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t(:,:,1,Kmm) / rn_sbc_time 89 90 ! ! Iron solubilization of particles in the water column 90 91 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j 91 92 zwdust = 0.03 / ( wdust / rday ) / ( 270. * rday ) 92 93 DO jk = 2, jpkm1 93 zirondep(:,:,jk) = ( mfrac * dust(:,:) * zwdust / mMass_Fe ) * rfact * EXP( -gdept _n(:,:,jk) / 540. )94 tr a(:,:,jk,jpfer) = tra(:,:,jk,jpfer) + zirondep(:,:,jk)95 tr a(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zirondep(:,:,jk) * 0.02394 zirondep(:,:,jk) = ( mfrac * dust(:,:) * zwdust / mMass_Fe ) * rfact * EXP( -gdept(:,:,jk,Kmm) / 540. ) 95 tr(:,:,jk,jpfer,Krhs) = tr(:,:,jk,jpfer,Krhs) + zirondep(:,:,jk) 96 tr(:,:,jk,jppo4,Krhs) = tr(:,:,jk,jppo4,Krhs) + zirondep(:,:,jk) * 0.023 96 97 ENDDO 97 98 ! 98 99 IF( lk_iomput ) THEN 99 100 IF( iom_use( "Irondep" ) ) & 100 & CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfactr * e3t _n(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron101 & CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfactr * e3t(:,:,1,Kmm) * tmask(:,:,1) ) ! surface downward dust depo of iron 101 102 IF( iom_use( "pdust" ) ) & 102 103 & CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface … … 117 118 zcoef = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) * tmask(ji,jj,1) 118 119 zrivdin = rf_trcfac(jl) * sf_trccbc(jl)%fnow(ji,jj,1) * zcoef 119 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - rno3 * zrivdin * rfact120 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - rno3 * zrivdin * rfact 120 121 ENDDO 121 122 END DO … … 129 130 IF( ln_trc_sbc(jpno3) ) THEN 130 131 jl = n_trc_indsbc(jpno3) 131 zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t _n(:,:,1) / rn_sbc_time132 tr a(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * zndep(:,:) * rfact132 zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t(:,:,1,Kmm) / rn_sbc_time 133 tr(:,:,1,jptal,Krhs) = tr(:,:,1,jptal,Krhs) - rno3 * zndep(:,:) * rfact 133 134 ENDIF 134 135 IF( ln_trc_sbc(jpnh4) ) THEN 135 136 jl = n_trc_indsbc(jpnh4) 136 zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t _n(:,:,1) / rn_sbc_time137 tr a(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * zndep(:,:) * rfact137 zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t(:,:,1,Kmm) / rn_sbc_time 138 tr(:,:,1,jptal,Krhs) = tr(:,:,1,jptal,Krhs) - rno3 * zndep(:,:) * rfact 138 139 ENDIF 139 140 DEALLOCATE( zndep ) … … 149 150 DO jj = 1, jpj 150 151 DO ji = 1, jpi 151 zdep = rfact / e3t _n(ji,jj,1)152 zdep = rfact / e3t(ji,jj,1,Kmm) 152 153 zwflux = fmmflx(ji,jj) / 1000._wp 153 zironice(ji,jj) = MAX( -0.99 * tr b(ji,jj,1,jpfer), -zwflux * icefeinput * zdep )154 zironice(ji,jj) = MAX( -0.99 * tr(ji,jj,1,jpfer,Kbb), -zwflux * icefeinput * zdep ) 154 155 END DO 155 156 END DO 156 157 ! 157 tr a(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:)158 tr(:,:,1,jpfer,Krhs) = tr(:,:,1,jpfer,Krhs) + zironice(:,:) 158 159 ! 159 160 IF( lk_iomput .AND. iom_use( "Ironice" ) ) & 160 & CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfactr * e3t _n(:,:,1) * tmask(:,:,1) ) ! iron flux from ice161 & CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfactr * e3t(:,:,1,Kmm) * tmask(:,:,1) ) ! iron flux from ice 161 162 ! 162 163 DEALLOCATE( zironice ) … … 167 168 ! ------------------------------------------------------ 168 169 IF( ln_ironsed .AND. .NOT.lk_sed ) THEN 169 tr a(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact170 tr(:,:,:,jpfer,Krhs) = tr(:,:,:,jpfer,Krhs) + ironsed(:,:,:) * rfact 170 171 ! 171 172 IF( lk_iomput .AND. iom_use( "Ironsed" ) ) & … … 179 180 DO jk = 1, jpk 180 181 hydrofe(:,:,jk) = ( MAX( rtrn, sf_hydrofe(1)%fnow(:,:,jk) ) * hratio ) & 181 & / ( e1e2t(:,:) * e3t _n(:,:,jk) * ryyss + rtrn ) / 1000._wp &182 & / ( e1e2t(:,:) * e3t(:,:,jk,Kmm) * ryyss + rtrn ) / 1000._wp & 182 183 & * tmask(:,:,jk) 183 184 ENDDO 184 tr a(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact185 IF( ln_ligand ) tr a(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * lgw_rath ) * rfact185 tr(:,:,:,jpfer,Krhs) = tr(:,:,:,jpfer,Krhs) + hydrofe(:,:,:) * rfact 186 IF( ln_ligand ) tr(:,:,:,jplgw,Krhs) = tr(:,:,:,jplgw,Krhs) + ( hydrofe(:,:,:) * lgw_rath ) * rfact 186 187 ! 187 188 IF( lk_iomput .AND. iom_use( "HYDR" ) ) & … … 193 194 194 195 195 SUBROUTINE p4z_bc_init 196 SUBROUTINE p4z_bc_init( Kmm ) 196 197 !!---------------------------------------------------------------------- 197 198 !! *** routine p4z_bc_init *** … … 205 206 !! 206 207 !!---------------------------------------------------------------------- 208 INTEGER, INTENT( in ) :: Kmm ! time level index 207 209 INTEGER :: ji, jj, jk, jm 208 210 INTEGER :: ii0, ii1, ij0, ij1 … … 229 231 ENDIF 230 232 ! !* set file information 231 REWIND( numnatp_ref ) ! Namelist nampisbc in reference namelist : Pisces external sources of nutrients232 233 READ ( numnatp_ref, nampisbc, IOSTAT = ios, ERR = 901) 233 234 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisbc in reference namelist' ) 234 REWIND( numnatp_cfg ) ! Namelist nampisbc in configuration namelist : Pisces external sources of nutrients235 235 READ ( numnatp_cfg, nampisbc, IOSTAT = ios, ERR = 902 ) 236 236 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisbc in configuration namelist' ) … … 328 328 DO jj = 1, jpj 329 329 DO ji = 1, jpi 330 zexpide = MIN( 8.,( gdept _n(ji,jj,jk) / 500. )**(-1.5) )330 zexpide = MIN( 8.,( gdept(ji,jj,jk,Kmm) / 500. )**(-1.5) ) 331 331 zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 332 332 zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 )
Note: See TracChangeset
for help on using the changeset viewer.