- Timestamp:
- 2017-09-18T14:58:22+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r6315 r8532 66 66 REAL(wp) :: zwflux, zfminus, zfplus 67 67 REAL(wp) :: zlim, zfact, zfactcal 68 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, z denitt, zolimit68 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zolimit 69 69 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 70 70 REAL(wp) :: ztrfer, ztrpo4, zwdust, zlight … … 303 303 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 304 304 tra(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zcaloss * zrivalk 305 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss / zdep306 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss / zdep305 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss * fse3t(ji,jj,ikt) 306 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss * fse3t(ji,jj,ikt) 307 307 #endif 308 308 END DO … … 330 330 331 331 #if ! defined key_sed 332 ! The 0.5 factor in zpdenit and zdenitt is to avoid negative NO3 concentration after both denitrification 333 ! in the sediments and just above the sediments. Not very clever, but simpliest option. 334 zpdenit = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 332 ! The 0.5 factor in zpdenit is to avoid negative NO3 concentration after 333 ! denitrification in the sediments. Not very clever, but simpliest option. 334 zpdenit = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, & 335 zdenit2d(ji,jj) * zwstpoc * zrivno3 * (1. - nitrfac2(ji,jj,jk) ) ) 335 336 z1pdenit = zwstpoc * zrivno3 - zpdenit 336 337 zolimit = MIN( ( trb(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 337 zdenitt = MIN( 0.5 * ( trb(ji,jj,ikt,jpno3) - rtrn ) / rdenit, z1pdenit * nitrfac(ji,jj,ikt) ) 338 tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit - zdenitt 339 tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit + zdenitt 340 tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit + zdenitt 341 tra(ji,jj,ikt,jpno3) = tra(ji,jj,ikt,jpno3) - rdenit * (zpdenit + zdenitt) 338 tra(ji,jj,ikt,jpdoc) = tra(ji,jj,ikt,jpdoc) + z1pdenit - zolimit 339 tra(ji,jj,ikt,jppo4) = tra(ji,jj,ikt,jppo4) + zpdenit + zolimit 340 tra(ji,jj,ikt,jpnh4) = tra(ji,jj,ikt,jpnh4) + zpdenit + zolimit 341 tra(ji,jj,ikt,jpno3) = tra(ji,jj,ikt,jpno3) - rdenit * zpdenit 342 342 tra(ji,jj,ikt,jpoxy) = tra(ji,jj,ikt,jpoxy) - zolimit * o2ut 343 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * (zpdenit + zdenitt))344 tra(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zpdenit + zolimit + zdenitt345 sdenit(ji,jj) = rdenit * zpdenit / zdep346 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc / zdep343 tra(ji,jj,ikt,jptal) = tra(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * zpdenit ) 344 tra(ji,jj,ikt,jpdic) = tra(ji,jj,ikt,jpdic) + zpdenit + zolimit 345 sdenit(ji,jj) = rdenit * zpdenit * fse3t(ji,jj,ikt) 346 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc * fse3t(ji,jj,ikt) 347 347 #endif 348 348 END DO … … 391 391 IF( lk_iomput ) THEN 392 392 IF( knt == nrdttrc ) THEN 393 zfact = 1.e+3 * rfact2r * rno3 ! conversion from molC/l/kt to molN/m3/s394 IF( iom_use("Nfix" ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * zfact * tmask(:,:,:) ) ! nitrogen fixation393 zfact = 1.e+3 * rfact2r ! conversion from molC/l/kt to molC/m3/s 394 IF( iom_use("Nfix" ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) ) ! nitrogen fixation 395 395 IF( iom_use("INTNFIX") ) THEN ! nitrogen fixation rate in ocean ( vertically integrated ) 396 396 zwork1(:,:) = 0. 397 397 DO jk = 1, jpkm1 398 zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * zfact * fse3t(:,:,jk) * tmask(:,:,jk)398 zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * fse3t(:,:,jk) * tmask(:,:,jk) 399 399 ENDDO 400 400 CALL iom_put( "INTNFIX" , zwork1 ) 401 401 ENDIF 402 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * 1.e+3)403 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * 1.e+3)404 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * 1.e+3)405 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * 1.e+3 * rno3)402 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 403 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) 404 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * zfact ) 405 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * rno3 * zfact ) 406 406 ENDIF 407 407 ELSE 408 IF( ln_diatrc ) & 409 & trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) 408 IF( ln_diatrc ) THEN 409 zfact = 1.e+3 * rfact2r ! conversion from molC/l/kt to molC/m3/s 410 trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * zfact * fse3t(:,:,1) * tmask(:,:,1) 411 ENDIF 410 412 ENDIF 411 413 !
Note: See TracChangeset
for help on using the changeset viewer.