Changeset 4529 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
- Timestamp:
- 2014-03-15T12:00:04+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r4521 r4529 71 71 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit 72 72 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 73 REAL(wp) :: ztrfer, ztrpo4, zwdust 73 REAL(wp) :: ztrfer, ztrpo4, zwdust, zlight 74 74 REAL(wp) :: zrdenittot, zsdenittot, znitrpottot 75 75 ! 76 76 CHARACTER (len=25) :: charout 77 77 REAL(wp), POINTER, DIMENSION(:,: ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice, zbureff 79 79 REAL(wp), POINTER, DIMENSION(:,: ) :: zwsbio3, zwsbio4, zwscal 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep, zsoufer 81 81 !!--------------------------------------------------------------------- 82 82 ! … … 93 93 ! 94 94 ! Allocate temporary workspace 95 CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4 )95 CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4, zbureff ) 96 96 CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 97 CALL wrk_alloc( jpi, jpj, jpk, znitrpot )97 CALL wrk_alloc( jpi, jpj, jpk, znitrpot, zsoufer ) 98 98 99 99 zdenit2d(:,:) = 0.e0 100 zbureff (:,:) = 0.e0 100 101 101 102 ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. … … 131 132 ! ! Iron and Si deposition at the surface 132 133 IF( ln_solub ) THEN 133 zirondep(:,:,1) = solub(:,:) * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss134 zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 134 135 ELSE 135 zirondep(:,:,1) = dustsolub * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss136 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 136 137 ENDIF 137 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 28.1 * rmtss )138 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31. * rmtss ) / po4r138 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 28.1 * rmtss ) 139 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 31. * rmtss ) / po4r 139 140 ! ! Iron solubilization of particles in the water column 140 zwdust = 0.005 / ( wdust * 55.85 * 30.42 ) / ( 45. * rday ) 141 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j 142 zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 141 143 DO jk = 2, jpkm1 142 zirondep(:,:,jk) = dust(:,:) * zwdust * rfact2 * EXP( -fsdept(:,:,jk) / 1000. )144 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -fsdept(:,:,jk) / 540. ) 143 145 END DO 144 146 ! ! Iron solubilization of particles in the water column … … 152 154 IF( jnt == nrdttrc ) THEN 153 155 CALL iom_put( "Irondep", zirondep(:,:,1) * zfact * fse3t(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron 154 CALL iom_put( "pdust" , dust(:,:) / ( wdust * 30.42 * 0.035) * tmask(:,:,1) ) ! dust concentration at surface156 CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 155 157 ENDIF 156 158 ELSE … … 215 217 #if ! defined key_sed 216 218 ! Computation of the sediment denitrification proportion: The metamodel from midlleburg (2006) is being used 219 ! Computation of the fraction of organic matter that is permanently buried from Dunne's model 217 220 ! ------------------------------------------------------- 218 221 DO jj = 1, jpj … … 233 236 & + 0.4721 * zo2 - 0.0996 * zdep + 0.4256 * zflx * zo2 234 237 zdenit2d(ji,jj) = 10.0**( zdenit2d(ji,jj) ) 238 ! 239 zflx = ( trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) & 240 & + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6 241 zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2 235 242 ENDIF 236 243 END DO 237 244 END DO 245 238 246 ! Loss of biogenic silicon, Caco3 organic carbon in the sediments. 239 247 ! First, the total loss is computed. … … 266 274 #if ! defined key_sed 267 275 zrivsil = 1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / zsumsedsi 268 zrivno3 = 1._wp - ( rivdininput * r1_ryyss ) / zsumsedpo4269 276 #endif 270 277 … … 301 308 zws4 = zwsbio4(ji,jj) * zdep 302 309 zws3 = zwsbio3(ji,jj) * zdep 310 zrivno3 = 1. - zbureff(ji,jj) 303 311 # if ! defined key_kriest 304 312 trn(ji,jj,ikt,jpgoc) = trn(ji,jj,ikt,jpgoc) - trn(ji,jj,ikt,jpgoc) * zws4 … … 334 342 335 343 ! Nitrogen fixation process 344 ! Small source iron from particulate inorganic iron 336 345 !----------------------------------- 337 346 DO jk = 1, jpkm1 338 347 DO jj = 1, jpj 339 348 DO ji = 1, jpi 340 ! 349 ! ! Potential nitrogen fixation dependant on temperature and iron 341 350 zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) ) 342 351 IF( zlim <= 0.2 ) zlim = 0.01 … … 348 357 ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 349 358 ztrpo4 = trn (ji,jj,jk,jppo4) / ( concnnh4 + trn (ji,jj,jk,jppo4) ) 359 zlight = ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) ) 350 360 znitrpot(ji,jj,jk) = MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) * r1_rday ) & 351 & * zfact * MIN( ztrfer, ztrpo4 ) * ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) ) 361 & * zfact * MIN( ztrfer, ztrpo4 ) * zlight 362 zsoufer(ji,jj,jk) = zlight * 2E-11 / (2E-11 + biron(ji,jj,jk)) 352 363 END DO 353 364 END DO 354 365 END DO 355 356 IF( ln_check_mass ) THEN357 ! The total gain from nitrogen fixation is scaled to balance the loss by denitrification358 ! -------------------------------------------------------------359 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) )360 zsdenittot = glob_sum ( zwork4(:,:) * e1e2t(:,:) )361 znitrpottot = glob_sum ( znitrpot(:,:,:) * cvol(:,:,:) )362 IF( kt == nitend .AND. jnt == nrdttrc ) THEN363 zfact = 1.e+3 * rfact2r * rno3 * 365. * 86400. * 14. / 1e12364 IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact365 ENDIF366 ENDIF367 366 368 367 ! Nitrogen change due to nitrogen fixation … … 371 370 DO jj = 1, jpj 372 371 DO ji = 1, jpi 373 ! zfact = znitrpot(ji,jj,jk) * ( zrdenittot + zsdenittot ) / znitrpottot374 372 zfact = znitrpot(ji,jj,jk) * nitrfix 375 373 trn(ji,jj,jk,jpnh4) = trn(ji,jj,jk,jpnh4) + zfact 376 374 trn(ji,jj,jk,jptal) = trn(ji,jj,jk,jptal) + rno3 * zfact 377 375 trn(ji,jj,jk,jpoxy) = trn(ji,jj,jk,jpoxy) + o2nit * zfact 378 trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) + 30. / 46. * zfact 376 trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trn(ji,jj,jk,jppo4) ) & 377 & * 0.002 * trn(ji,jj,jk,jpdoc) * rfact2 / rday 378 trn(ji,jj,jk,jpfer) = trn(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 379 379 END DO 380 380 END DO 381 381 END DO 382 383 384 IF( ln_check_mass ) THEN 385 ! Global budget of N SMS : denitrification in the water column and in the sediment 386 ! nitrogen fixation by the diazotrophs 387 ! -------------------------------------------------------------------------------- 388 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) 389 zsdenittot = glob_sum ( zwork4(:,:) * e1e2t(:,:) ) 390 znitrpottot = glob_sum ( znitrpot(:,:,:) * nitrfix * cvol(:,:,:) ) 391 IF( kt == nitend .AND. jnt == nrdttrc ) THEN 392 zfact = 1.e+3 * rfact2r * rno3 * ryyss * 14. / 1e12 393 IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact 394 ENDIF 395 ENDIF 382 396 ! 383 397 IF( ln_diatrc ) THEN
Note: See TracChangeset
for help on using the changeset viewer.