Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zsed.F90
- Timestamp:
- 2019-05-13T18:34:33+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zsed.F90
r10425 r10975 39 39 CONTAINS 40 40 41 SUBROUTINE p4z_sed( kt, knt )41 SUBROUTINE p4z_sed( kt, knt, Kbb, Kmm, Krhs ) 42 42 !!--------------------------------------------------------------------- 43 43 !! *** ROUTINE p4z_sed *** … … 51 51 ! 52 52 INTEGER, INTENT(in) :: kt, knt ! ocean time step 53 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 53 54 INTEGER :: ji, jj, jk, ikt 54 55 REAL(wp) :: zrivalk, zrivsil, zrivno3 … … 102 103 DO jj = 1, jpj 103 104 DO ji = 1, jpi 104 zdep = rfact2 / e3t _n(ji,jj,1)105 zdep = rfact2 / e3t(ji,jj,1,Kmm) 105 106 zwflux = fmmflx(ji,jj) / 1000._wp 106 zfminus = MIN( 0._wp, -zwflux ) * tr b(ji,jj,1,jpfer) * zdep107 zfminus = MIN( 0._wp, -zwflux ) * tr(ji,jj,1,jpfer,Kbb) * zdep 107 108 zfplus = MAX( 0._wp, -zwflux ) * icefeinput * zdep 108 109 zironice(ji,jj) = zfplus + zfminus … … 110 111 END DO 111 112 ! 112 tr a(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:)113 tr(:,:,1,jpfer,Krhs) = tr(:,:,1,jpfer,Krhs) + zironice(:,:) 113 114 ! 114 115 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironice" ) ) & 115 & CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfact2r * e3t _n(:,:,1) * tmask(:,:,1) ) ! iron flux from ice116 & CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfact2r * e3t(:,:,1,Kmm) * tmask(:,:,1) ) ! iron flux from ice 116 117 ! 117 118 DEALLOCATE( zironice ) … … 126 127 ! ! Iron and Si deposition at the surface 127 128 IF( ln_solub ) THEN 128 zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / e3t _n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss129 zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / e3t(:,:,1,Kmm) / 55.85 + 3.e-10 * r1_ryyss 129 130 ELSE 130 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / e3t _n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss131 ENDIF 132 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t _n(:,:,1) / 28.1133 zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t _n(:,:,1) / 31. / po4r131 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / e3t(:,:,1,Kmm) / 55.85 + 3.e-10 * r1_ryyss 132 ENDIF 133 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t(:,:,1,Kmm) / 28.1 134 zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t(:,:,1,Kmm) / 31. / po4r 134 135 ! ! Iron solubilization of particles in the water column 135 136 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j 136 137 zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 137 138 DO jk = 2, jpkm1 138 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept _n(:,:,jk) / 540. )139 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept(:,:,jk,Kmm) / 540. ) 139 140 zpdep (:,:,jk) = zirondep(:,:,jk) * 0.023 140 141 END DO 141 142 ! ! Iron solubilization of particles in the water column 142 tr a(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep (:,:)143 tr(:,:,1,jpsil,Krhs) = tr(:,:,1,jpsil,Krhs) + zsidep (:,:) 143 144 DO jk = 1, jpkm1 144 tr a(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zpdep (:,:,jk)145 tr a(:,:,jk,jpfer) = tra(:,:,jk,jpfer) + zirondep(:,:,jk)145 tr(:,:,jk,jppo4,Krhs) = tr(:,:,jk,jppo4,Krhs) + zpdep (:,:,jk) 146 tr(:,:,jk,jpfer,Krhs) = tr(:,:,jk,jpfer,Krhs) + zirondep(:,:,jk) 146 147 ENDDO 147 148 ! … … 149 150 IF( knt == nrdttrc ) THEN 150 151 IF( iom_use( "Irondep" ) ) & 151 & CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfact2r * e3t _n(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron152 & CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfact2r * e3t(:,:,1,Kmm) * tmask(:,:,1) ) ! surface downward dust depo of iron 152 153 IF( iom_use( "pdust" ) ) & 153 154 & CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface … … 164 165 DO ji = 1, jpi 165 166 DO jk = 1, nk_rnf(ji,jj) 166 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + rivdip(ji,jj) * rfact2167 tr a(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + rivdin(ji,jj) * rfact2168 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + rivdic(ji,jj) * 5.e-5 * rfact2169 tr a(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + rivdsi(ji,jj) * rfact2170 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + rivdic(ji,jj) * rfact2171 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2172 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + rivdoc(ji,jj) * rfact2167 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + rivdip(ji,jj) * rfact2 168 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + rivdin(ji,jj) * rfact2 169 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + rivdic(ji,jj) * 5.e-5 * rfact2 170 tr(ji,jj,jk,jpsil,Krhs) = tr(ji,jj,jk,jpsil,Krhs) + rivdsi(ji,jj) * rfact2 171 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + rivdic(ji,jj) * rfact2 172 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 173 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + rivdoc(ji,jj) * rfact2 173 174 ENDDO 174 175 ENDDO … … 178 179 DO ji = 1, jpi 179 180 DO jk = 1, nk_rnf(ji,jj) 180 tr a(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + rivdic(ji,jj) * 5.e-5 * rfact2181 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + rivdic(ji,jj) * 5.e-5 * rfact2 181 182 ENDDO 182 183 ENDDO … … 187 188 DO ji = 1, jpi 188 189 DO jk = 1, nk_rnf(ji,jj) 189 tr a(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + rivdop(ji,jj) * rfact2190 tr a(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + rivdon(ji,jj) * rfact2190 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) + rivdop(ji,jj) * rfact2 191 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) + rivdon(ji,jj) * rfact2 191 192 ENDDO 192 193 ENDDO … … 198 199 ! ---------------------------------------------------------- 199 200 IF( ln_ndepo ) THEN 200 tr a(:,:,1,jpno3) = tra(:,:,1,jpno3) + nitdep(:,:) * rfact2201 tr a(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * nitdep(:,:) * rfact2201 tr(:,:,1,jpno3,Krhs) = tr(:,:,1,jpno3,Krhs) + nitdep(:,:) * rfact2 202 tr(:,:,1,jptal,Krhs) = tr(:,:,1,jptal,Krhs) - rno3 * nitdep(:,:) * rfact2 202 203 ENDIF 203 204 … … 205 206 ! ------------------------------------------------------ 206 207 IF( ln_hydrofe ) THEN 207 tr a(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact2208 tr(:,:,:,jpfer,Krhs) = tr(:,:,:,jpfer,Krhs) + hydrofe(:,:,:) * rfact2 208 209 IF( ln_ligand ) THEN 209 tr a(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * lgw_rath ) * rfact2210 tr(:,:,:,jplgw,Krhs) = tr(:,:,:,jplgw,Krhs) + ( hydrofe(:,:,:) * lgw_rath ) * rfact2 210 211 ENDIF 211 212 ! … … 219 220 DO ji = 1, jpi 220 221 ikt = mbkt(ji,jj) 221 zdep = e3t _n(ji,jj,ikt) / xstep222 zdep = e3t(ji,jj,ikt,Kmm) / xstep 222 223 zwsbio4(ji,jj) = MIN( 0.99 * zdep, wsbio4(ji,jj,ikt) ) 223 224 zwsbio3(ji,jj) = MIN( 0.99 * zdep, wsbio3(ji,jj,ikt) ) … … 230 231 ! ------------------------------------------------------ 231 232 IF( ln_ironsed ) THEN 232 tr a(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2233 tr(:,:,:,jpfer,Krhs) = tr(:,:,:,jpfer,Krhs) + ironsed(:,:,:) * rfact2 233 234 ! 234 235 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" ) ) & … … 243 244 IF( tmask(ji,jj,1) == 1 ) THEN 244 245 ikt = mbkt(ji,jj) 245 zflx = ( tr b(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) &246 & + tr b(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E3 * 1E6 / 1E4246 zflx = ( tr(ji,jj,ikt,jpgoc,Kbb) * zwsbio4(ji,jj) & 247 & + tr(ji,jj,ikt,jppoc,Kbb) * zwsbio3(ji,jj) ) * 1E3 * 1E6 / 1E4 247 248 zflx = LOG10( MAX( 1E-3, zflx ) ) 248 zo2 = LOG10( MAX( 10. , tr b(ji,jj,ikt,jpoxy) * 1E6 ) )249 zno3 = LOG10( MAX( 1. , tr b(ji,jj,ikt,jpno3) * 1E6 * rno3 ) )250 zdep = LOG10( gdepw _n(ji,jj,ikt+1) )249 zo2 = LOG10( MAX( 10. , tr(ji,jj,ikt,jpoxy,Kbb) * 1E6 ) ) 250 zno3 = LOG10( MAX( 1. , tr(ji,jj,ikt,jpno3,Kbb) * 1E6 * rno3 ) ) 251 zdep = LOG10( gdepw(ji,jj,ikt+1,Kmm) ) 251 252 zdenit2d(ji,jj) = -2.2567 - 1.185 * zflx - 0.221 * zflx**2 - 0.3995 * zno3 * zo2 + 1.25 * zno3 & 252 253 & + 0.4721 * zo2 - 0.0996 * zdep + 0.4256 * zflx * zo2 253 254 zdenit2d(ji,jj) = 10.0**( zdenit2d(ji,jj) ) 254 255 ! 255 zflx = ( tr b(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) &256 & + tr b(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6256 zflx = ( tr(ji,jj,ikt,jpgoc,Kbb) * zwsbio4(ji,jj) & 257 & + tr(ji,jj,ikt,jppoc,Kbb) * zwsbio3(ji,jj) ) * 1E6 257 258 zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2 258 259 ENDIF … … 270 271 DO ji = 1, jpi 271 272 ikt = mbkt(ji,jj) 272 zdep = xstep / e3t _n(ji,jj,ikt)273 zdep = xstep / e3t(ji,jj,ikt,Kmm) 273 274 zwsc = zwsbio4(ji,jj) * zdep 274 zsiloss = tr b(ji,jj,ikt,jpgsi) * zwsc275 zcaloss = tr b(ji,jj,ikt,jpcal) * zwsc275 zsiloss = tr(ji,jj,ikt,jpgsi,Kbb) * zwsc 276 zcaloss = tr(ji,jj,ikt,jpcal,Kbb) * zwsc 276 277 ! 277 tr a(ji,jj,ikt,jpgsi) = tra(ji,jj,ikt,jpgsi) - zsiloss278 tr a(ji,jj,ikt,jpcal) = tra(ji,jj,ikt,jpcal) - zcaloss278 tr(ji,jj,ikt,jpgsi,Krhs) = tr(ji,jj,ikt,jpgsi,Krhs) - zsiloss 279 tr(ji,jj,ikt,jpcal,Krhs) = tr(ji,jj,ikt,jpcal,Krhs) - zcaloss 279 280 END DO 280 281 END DO … … 284 285 DO ji = 1, jpi 285 286 ikt = mbkt(ji,jj) 286 zdep = xstep / e3t _n(ji,jj,ikt)287 zdep = xstep / e3t(ji,jj,ikt,Kmm) 287 288 zwsc = zwsbio4(ji,jj) * zdep 288 zsiloss = tr b(ji,jj,ikt,jpgsi) * zwsc289 zcaloss = tr b(ji,jj,ikt,jpcal) * zwsc290 tr a(ji,jj,ikt,jpsil) = tra(ji,jj,ikt,jpsil) + zsiloss * zrivsil289 zsiloss = tr(ji,jj,ikt,jpgsi,Kbb) * zwsc 290 zcaloss = tr(ji,jj,ikt,jpcal,Kbb) * zwsc 291 tr(ji,jj,ikt,jpsil,Krhs) = tr(ji,jj,ikt,jpsil,Krhs) + zsiloss * zrivsil 291 292 ! 292 293 zfactcal = MIN( excess(ji,jj,ikt), 0.2 ) 293 294 zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 294 295 zrivalk = sedcalfrac * zfactcal 295 tr a(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0296 tr a(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zcaloss * zrivalk297 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss * e3t _n(ji,jj,ikt)298 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss * e3t _n(ji,jj,ikt)296 tr(ji,jj,ikt,jptal,Krhs) = tr(ji,jj,ikt,jptal,Krhs) + zcaloss * zrivalk * 2.0 297 tr(ji,jj,ikt,jpdic,Krhs) = tr(ji,jj,ikt,jpdic,Krhs) + zcaloss * zrivalk 298 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss * e3t(ji,jj,ikt,Kmm) 299 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss * e3t(ji,jj,ikt,Kmm) 299 300 END DO 300 301 END DO … … 304 305 DO ji = 1, jpi 305 306 ikt = mbkt(ji,jj) 306 zdep = xstep / e3t _n(ji,jj,ikt)307 zdep = xstep / e3t(ji,jj,ikt,Kmm) 307 308 zws4 = zwsbio4(ji,jj) * zdep 308 309 zws3 = zwsbio3(ji,jj) * zdep 309 tr a(ji,jj,ikt,jpgoc) = tra(ji,jj,ikt,jpgoc) - trb(ji,jj,ikt,jpgoc) * zws4310 tr a(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3311 tr a(ji,jj,ikt,jpbfe) = tra(ji,jj,ikt,jpbfe) - trb(ji,jj,ikt,jpbfe) * zws4312 tr a(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3310 tr(ji,jj,ikt,jpgoc,Krhs) = tr(ji,jj,ikt,jpgoc,Krhs) - tr(ji,jj,ikt,jpgoc,Kbb) * zws4 311 tr(ji,jj,ikt,jppoc,Krhs) = tr(ji,jj,ikt,jppoc,Krhs) - tr(ji,jj,ikt,jppoc,Kbb) * zws3 312 tr(ji,jj,ikt,jpbfe,Krhs) = tr(ji,jj,ikt,jpbfe,Krhs) - tr(ji,jj,ikt,jpbfe,Kbb) * zws4 313 tr(ji,jj,ikt,jpsfe,Krhs) = tr(ji,jj,ikt,jpsfe,Krhs) - tr(ji,jj,ikt,jpsfe,Kbb) * zws3 313 314 END DO 314 315 END DO … … 318 319 DO ji = 1, jpi 319 320 ikt = mbkt(ji,jj) 320 zdep = xstep / e3t _n(ji,jj,ikt)321 zdep = xstep / e3t(ji,jj,ikt,Kmm) 321 322 zws4 = zwsbio4(ji,jj) * zdep 322 323 zws3 = zwsbio3(ji,jj) * zdep 323 tr a(ji,jj,ikt,jpgon) = tra(ji,jj,ikt,jpgon) - trb(ji,jj,ikt,jpgon) * zws4324 tr a(ji,jj,ikt,jppon) = tra(ji,jj,ikt,jppon) - trb(ji,jj,ikt,jppon) * zws3325 tr a(ji,jj,ikt,jpgop) = tra(ji,jj,ikt,jpgop) - trb(ji,jj,ikt,jpgop) * zws4326 tr a(ji,jj,ikt,jppop) = tra(ji,jj,ikt,jppop) - trb(ji,jj,ikt,jppop) * zws3324 tr(ji,jj,ikt,jpgon,Krhs) = tr(ji,jj,ikt,jpgon,Krhs) - tr(ji,jj,ikt,jpgon,Kbb) * zws4 325 tr(ji,jj,ikt,jppon,Krhs) = tr(ji,jj,ikt,jppon,Krhs) - tr(ji,jj,ikt,jppon,Kbb) * zws3 326 tr(ji,jj,ikt,jpgop,Krhs) = tr(ji,jj,ikt,jpgop,Krhs) - tr(ji,jj,ikt,jpgop,Kbb) * zws4 327 tr(ji,jj,ikt,jppop,Krhs) = tr(ji,jj,ikt,jppop,Krhs) - tr(ji,jj,ikt,jppop,Kbb) * zws3 327 328 END DO 328 329 END DO … … 335 336 DO ji = 1, jpi 336 337 ikt = mbkt(ji,jj) 337 zdep = xstep / e3t _n(ji,jj,ikt)338 zdep = xstep / e3t(ji,jj,ikt,Kmm) 338 339 zws4 = zwsbio4(ji,jj) * zdep 339 340 zws3 = zwsbio3(ji,jj) * zdep 340 341 zrivno3 = 1. - zbureff(ji,jj) 341 zwstpoc = tr b(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3342 zpdenit = MIN( 0.5 * ( tr b(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 )342 zwstpoc = tr(ji,jj,ikt,jpgoc,Kbb) * zws4 + tr(ji,jj,ikt,jppoc,Kbb) * zws3 343 zpdenit = MIN( 0.5 * ( tr(ji,jj,ikt,jpno3,Kbb) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 343 344 z1pdenit = zwstpoc * zrivno3 - zpdenit 344 zolimit = MIN( ( tr b(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) )345 tr a(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit346 tr a(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit347 tr a(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit348 tr a(ji,jj,ikt,jpno3) = tra(ji,jj,ikt,jpno3) - rdenit * zpdenit349 tr a(ji,jj,ikt,jpoxy) = tra(ji,jj,ikt,jpoxy) - zolimit * o2ut350 tr a(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * zpdenit )351 tr a(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zpdenit + zolimit352 sdenit(ji,jj) = rdenit * zpdenit * e3t _n(ji,jj,ikt)353 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc * e3t _n(ji,jj,ikt)345 zolimit = MIN( ( tr(ji,jj,ikt,jpoxy,Kbb) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 346 tr(ji,jj,ikt,jpdoc,Krhs) = tr(ji,jj,ikt,jpdoc,Krhs) + z1pdenit - zolimit 347 tr(ji,jj,ikt,jppo4,Krhs) = tr(ji,jj,ikt,jppo4,Krhs) + zpdenit + zolimit 348 tr(ji,jj,ikt,jpnh4,Krhs) = tr(ji,jj,ikt,jpnh4,Krhs) + zpdenit + zolimit 349 tr(ji,jj,ikt,jpno3,Krhs) = tr(ji,jj,ikt,jpno3,Krhs) - rdenit * zpdenit 350 tr(ji,jj,ikt,jpoxy,Krhs) = tr(ji,jj,ikt,jpoxy,Krhs) - zolimit * o2ut 351 tr(ji,jj,ikt,jptal,Krhs) = tr(ji,jj,ikt,jptal,Krhs) + rno3 * (zolimit + (1.+rdenit) * zpdenit ) 352 tr(ji,jj,ikt,jpdic,Krhs) = tr(ji,jj,ikt,jpdic,Krhs) + zpdenit + zolimit 353 sdenit(ji,jj) = rdenit * zpdenit * e3t(ji,jj,ikt,Kmm) 354 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc * e3t(ji,jj,ikt,Kmm) 354 355 IF( ln_p5z ) THEN 355 zwstpop = tr b(ji,jj,ikt,jpgop) * zws4 + trb(ji,jj,ikt,jppop) * zws3356 zwstpon = tr b(ji,jj,ikt,jpgon) * zws4 + trb(ji,jj,ikt,jppon) * zws3357 tr a(ji,jj,ikt,jpdon) = tra(ji,jj,ikt,jpdon) + ( z1pdenit - zolimit ) * zwstpon / (zwstpoc + rtrn)358 tr a(ji,jj,ikt,jpdop) = tra(ji,jj,ikt,jpdop) + ( z1pdenit - zolimit ) * zwstpop / (zwstpoc + rtrn)356 zwstpop = tr(ji,jj,ikt,jpgop,Kbb) * zws4 + tr(ji,jj,ikt,jppop,Kbb) * zws3 357 zwstpon = tr(ji,jj,ikt,jpgon,Kbb) * zws4 + tr(ji,jj,ikt,jppon,Kbb) * zws3 358 tr(ji,jj,ikt,jpdon,Krhs) = tr(ji,jj,ikt,jpdon,Krhs) + ( z1pdenit - zolimit ) * zwstpon / (zwstpoc + rtrn) 359 tr(ji,jj,ikt,jpdop,Krhs) = tr(ji,jj,ikt,jpdop,Krhs) + ( z1pdenit - zolimit ) * zwstpop / (zwstpoc + rtrn) 359 360 ENDIF 360 361 END DO … … 375 376 DO ji = 1, jpi 376 377 ! ! Potential nitrogen fixation dependant on temperature and iron 377 ztemp = ts n(ji,jj,jk,jp_tem)378 ztemp = ts(ji,jj,jk,jp_tem,Kmm) 378 379 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 379 380 ! Potential nitrogen fixation dependant on temperature and iron 380 xdianh4 = tr b(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) )381 xdiano3 = tr b(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4)381 xdianh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( concnnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 382 xdiano3 = tr(ji,jj,jk,jpno3,Kbb) / ( concnno3 + tr(ji,jj,jk,jpno3,Kbb) ) * (1. - xdianh4) 382 383 zlim = ( 1.- xdiano3 - xdianh4 ) 383 384 IF( zlim <= 0.1 ) zlim = 0.01 384 385 zfact = zlim * rfact2 385 386 ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 386 ztrpo4(ji,jj,jk) = tr b(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) )387 ztrpo4(ji,jj,jk) = tr(ji,jj,jk,jppo4,Kbb) / ( 1E-6 + tr(ji,jj,jk,jppo4,Kbb) ) 387 388 ztrdp = ztrpo4(ji,jj,jk) 388 389 nitrpot(ji,jj,jk) = zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) … … 395 396 DO ji = 1, jpi 396 397 ! ! Potential nitrogen fixation dependant on temperature and iron 397 ztemp = ts n(ji,jj,jk,jp_tem)398 ztemp = ts(ji,jj,jk,jp_tem,Kmm) 398 399 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 399 400 ! Potential nitrogen fixation dependant on temperature and iron 400 xdianh4 = tr b(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) )401 xdiano3 = tr b(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4)401 xdianh4 = tr(ji,jj,jk,jpnh4,Kbb) / ( concnnh4 + tr(ji,jj,jk,jpnh4,Kbb) ) 402 xdiano3 = tr(ji,jj,jk,jpno3,Kbb) / ( concnno3 + tr(ji,jj,jk,jpno3,Kbb) ) * (1. - xdianh4) 402 403 zlim = ( 1.- xdiano3 - xdianh4 ) 403 404 IF( zlim <= 0.1 ) zlim = 0.01 404 405 zfact = zlim * rfact2 405 406 ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 406 ztrpo4(ji,jj,jk) = tr b(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) )407 ztrdop(ji,jj,jk) = tr b(ji,jj,jk,jpdop) / ( 1E-6 + trb(ji,jj,jk,jpdop) ) * (1. - ztrpo4(ji,jj,jk))407 ztrpo4(ji,jj,jk) = tr(ji,jj,jk,jppo4,Kbb) / ( 1E-6 + tr(ji,jj,jk,jppo4,Kbb) ) 408 ztrdop(ji,jj,jk) = tr(ji,jj,jk,jpdop,Kbb) / ( 1E-6 + tr(ji,jj,jk,jpdop,Kbb) ) * (1. - ztrpo4(ji,jj,jk)) 408 409 ztrdp = ztrpo4(ji,jj,jk) + ztrdop(ji,jj,jk) 409 410 nitrpot(ji,jj,jk) = zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) … … 420 421 DO ji = 1, jpi 421 422 zfact = nitrpot(ji,jj,jk) * nitrfix 422 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zfact / 3.0423 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zfact / 3.0424 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zfact * 2.0 / 3.0425 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zfact * 1.0 / 3.0426 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zfact * 1.0 / 3.0 * 2.0 / 3.0427 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfact * 1.0 / 3.0 * 1.0 / 3.0428 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0429 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0430 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0431 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0432 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday433 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trb(ji,jj,jk,jppo4) ) &434 & * 0.001 * tr b(ji,jj,jk,jpdoc) * xstep423 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zfact / 3.0 424 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * zfact / 3.0 425 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) - zfact * 2.0 / 3.0 426 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zfact * 1.0 / 3.0 427 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zfact * 1.0 / 3.0 * 2.0 / 3.0 428 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zfact * 1.0 / 3.0 * 1.0 / 3.0 429 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 430 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - 30E-6 * zfact * 1.0 / 3.0 431 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 432 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 433 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 434 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + concdnh4 / ( concdnh4 + tr(ji,jj,jk,jppo4,Kbb) ) & 435 & * 0.001 * tr(ji,jj,jk,jpdoc,Kbb) * xstep 435 436 END DO 436 437 END DO … … 441 442 DO ji = 1, jpi 442 443 zfact = nitrpot(ji,jj,jk) * nitrfix 443 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zfact / 3.0444 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zfact / 3.0445 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - 16.0 / 46.0 * zfact * ( 1.0 - 1.0 / 3.0 ) &444 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zfact / 3.0 445 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * zfact / 3.0 446 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) - 16.0 / 46.0 * zfact * ( 1.0 - 1.0 / 3.0 ) & 446 447 & * ztrpo4(ji,jj,jk) / (ztrpo4(ji,jj,jk) + ztrdop(ji,jj,jk) + rtrn) 447 tr a(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zfact * 1.0 / 3.0448 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zfact * 1.0 / 3.0449 tr a(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + 16.0 / 46.0 * zfact / 3.0 &448 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) + zfact * 1.0 / 3.0 449 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zfact * 1.0 / 3.0 450 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) + 16.0 / 46.0 * zfact / 3.0 & 450 451 & - 16.0 / 46.0 * zfact * ztrdop(ji,jj,jk) & 451 452 & / (ztrpo4(ji,jj,jk) + ztrdop(ji,jj,jk) + rtrn) 452 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zfact * 1.0 / 3.0 * 2.0 / 3.0453 tr a(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + zfact * 1.0 / 3.0 * 2.0 /3.0454 tr a(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 2.0 /3.0455 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfact * 1.0 / 3.0 * 1.0 / 3.0456 tr a(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) + zfact * 1.0 / 3.0 * 1.0 /3.0457 tr a(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 1.0 /3.0458 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0459 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0460 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0461 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0462 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday453 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zfact * 1.0 / 3.0 * 2.0 / 3.0 454 tr(ji,jj,jk,jppon,Krhs) = tr(ji,jj,jk,jppon,Krhs) + zfact * 1.0 / 3.0 * 2.0 /3.0 455 tr(ji,jj,jk,jppop,Krhs) = tr(ji,jj,jk,jppop,Krhs) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 2.0 /3.0 456 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zfact * 1.0 / 3.0 * 1.0 / 3.0 457 tr(ji,jj,jk,jpgon,Krhs) = tr(ji,jj,jk,jpgon,Krhs) + zfact * 1.0 / 3.0 * 1.0 /3.0 458 tr(ji,jj,jk,jpgop,Krhs) = tr(ji,jj,jk,jpgop,Krhs) + 16.0 / 46.0 * zfact * 1.0 / 3.0 * 1.0 /3.0 459 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 460 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - 30E-6 * zfact * 1.0 / 3.0 461 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 462 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 463 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 463 464 END DO 464 465 END DO … … 474 475 zwork(:,:) = 0. 475 476 DO jk = 1, jpkm1 476 zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * e3t _n(:,:,jk) * tmask(:,:,jk)477 zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 477 478 ENDDO 478 479 CALL iom_put( "INTNFIX" , zwork ) … … 488 489 WRITE(charout, fmt="('sed ')") 489 490 CALL prt_ctl_trc_info(charout) 490 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)491 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 491 492 ENDIF 492 493 !
Note: See TracChangeset
for help on using the changeset viewer.