Changeset 8532
- Timestamp:
- 2017-09-18T14:58:22+02:00 (7 years ago)
- Location:
- branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90
r6943 r8532 192 192 DO ji = 1, jpi 193 193 ! denitrification factor computed from O2 levels 194 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - trb(ji,jj,jk,jpoxy) ) &194 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - trb(ji,jj,jk,jpoxy) ) & 195 195 & / ( oxymin + trb(ji,jj,jk,jpoxy) ) ) 196 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 196 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 197 ! 198 ! denitrification factor computed from NO3 levels 199 nitrfac2(ji,jj,jk) = MAX( 0.e0, ( 1.E-6 - trb(ji,jj,jk,jpno3) ) & 200 & / ( 1.E-6 + trb(ji,jj,jk,jpno3) ) ) 201 nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) ) 197 202 END DO 198 203 END DO … … 266 271 ! 267 272 nitrfac (:,:,:) = 0._wp 273 nitrfac2(:,:,:) = 0._wp 268 274 ! 269 275 END SUBROUTINE p4z_lim_init -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r6204 r8532 113 113 ! no real reason except that it seems to be more stable and may mimic predation 114 114 ! --------------------------------------------------------------- 115 ztortz2 = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) 115 ztortz2 = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) ) 116 116 ! 117 117 zcompadi = MAX( ( trb(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) … … 128 128 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 129 129 zdenom2 = zdenom / ( zfood + rtrn ) 130 zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) 130 zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) ) 131 131 132 132 133 zgrazd = zgraze2 * xprefc * zcompadi * zdenom2 … … 144 145 # if ! defined key_kriest 145 146 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) & 146 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 147 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) & 148 & * (1. - nitrfac(ji,jj,jk)) 147 149 zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 148 150 # endif 149 151 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) & 150 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 152 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) & 153 & * (1. - nitrfac(ji,jj,jk)) 151 154 zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 152 155 ! -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r6204 r8532 105 105 ! no real reason except that it seems to be more stable and may mimic predation. 106 106 ! --------------------------------------------------------------- 107 ztortz = mzrat * 1.e6 * zfact * trb(ji,jj,jk,jpzoo) 107 ztortz = mzrat * 1.e6 * zfact * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 108 108 109 109 zcompadi = MIN( MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia ) … … 117 117 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 118 118 zdenom2 = zdenom / ( zfood + rtrn ) 119 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) 119 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 120 120 121 121 zgrazp = zgraze * xpref2p * zcompaph * zdenom2 -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
r6943 r8532 69 69 ! 70 70 INTEGER :: ji, jj, jk 71 REAL(wp) :: zremip, zremik, zsiremin 71 REAL(wp) :: zremip, zremik, zsiremin, zammonic 72 72 REAL(wp) :: zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 73 73 REAL(wp) :: zbactfer, zorem, zorem2, zofer, zolimit … … 80 80 REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac 81 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zw3d 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zoxyrem 82 83 !!--------------------------------------------------------------------- 83 84 ! … … 86 87 ! Allocate temporary workspace 87 88 CALL wrk_alloc( jpi, jpj, ztempbac ) 88 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi )89 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zoxyrem ) 89 90 90 91 ! Initialisation of temprary arrys … … 131 132 ! Ammonification in suboxic waters with denitrification 132 133 ! ------------------------------------------------------- 133 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, & 134 & zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) ) 134 zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 135 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 136 zoxyrem(ji,jj,jk) = zammonic * nitrfac2(ji,jj,jk) 135 137 ! 136 138 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 137 139 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 140 zoxyrem(ji,jj,jk) = MAX( 0.e0, zoxyrem(ji,jj,jk) ) 138 141 ! 139 142 END DO … … 159 162 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk) 160 163 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 161 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 164 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr & 165 & + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 162 166 END DO 163 167 END DO … … 293 297 294 298 DO jk = 1, jpkm1 295 tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk) 296 tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk) 299 tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk) + zoxyrem(:,:,jk) 300 tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk) + zoxyrem(:,:,jk) 297 301 tra(:,:,jk,jpno3) = tra(:,:,jk,jpno3) - denitr (:,:,jk) * rdenit 298 tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk) 302 tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk) - zoxyrem(:,:,jk) 299 303 tra(:,:,jk,jpoxy) = tra(:,:,jk,jpoxy) - zolimi (:,:,jk) * o2ut 300 tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) 301 tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) ) 304 tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) + zoxyrem(:,:,jk) 305 tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + zoxyrem(:,:,jk) & 306 & + ( rdenit + 1.) * denitr(:,:,jk) ) 302 307 END DO 303 308 -
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 ! -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r7607 r8532 452 452 453 453 IF( kt == nittrc000 ) THEN 454 xfact1 = rfact2r * 12. / 1.e15 * ryyss ! conversion molC/kt --> PgC/yr 455 xfact2 = 1.e+3 * rno3 * 14. / 1.e12 * ryyss ! conversion molC/l/s ----> TgN/m3/yr 456 xfact3 = 1.e+3 * rfact2r * rno3 ! conversion molC/l/kt ----> molN/m3/s 454 457 IF( ln_check_mass .AND. lwp) THEN ! Open budget file of NO3, ALK, Si, Fer 455 458 CALL ctl_opn( numco2, 'carbon.budget' , 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 456 459 CALL ctl_opn( numnut, 'nutrient.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 457 460 CALL ctl_opn( numnit, 'nitrogen.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 458 xfact1 = rfact2r * 12. / 1.e15 * ryyss ! conversion molC/kt --> PgC/yr459 xfact2 = 1.e+3 * rno3 * 14. / 1.e12 * ryyss ! conversion molC/l/s ----> TgN/m3/yr460 xfact3 = 1.e+3 * rfact2r * rno3 ! conversion molC/l/kt ----> molN/m3/s461 461 cltxt='time-step Alkalinity Nitrate Phosphorus Silicate Iron' 462 462 IF( lwp ) WRITE(numnut,*) TRIM(cltxt) … … 531 531 IF( iom_use( "tnfix" ) .OR. ( ln_check_mass .AND. kt == nitend ) ) THEN 532 532 znitrpottot = glob_sum ( nitrpot(:,:,:) * nitrfix * cvol(:,:,:) ) 533 CALL iom_put( "tnfix" , znitrpottot * 1.e+3 * rno3 ) ! Global nitrogen fixation molC/l to molN/m3533 CALL iom_put( "tnfix" , znitrpottot * xfact3 ) ! Global nitrogen fixation molC/l to molN/m3 534 534 ENDIF 535 535 ! 536 536 IF( iom_use( "tdenit" ) .OR. ( ln_check_mass .AND. kt == nitend ) ) THEN 537 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) 538 CALL iom_put( "tdenit" , zrdenittot * 1.e+3 * rno3 ) ! Total denitrification molC/l to molN/m3 539 ENDIF 540 ! 541 IF( iom_use( "Sdenit" ) .OR. ( ln_check_mass .AND. kt == nitend ) ) THEN 542 zsdenittot = glob_sum ( sdenit(:,:) * e1e2t(:,:) ) 543 CALL iom_put( "Sdenit", sdenit(:,:) * xfact3 * tmask(:,:,1) ) ! Nitrate reduction in the sediments 537 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) ! denitrification in the water column 538 zsdenittot = glob_sum ( sdenit(:,:) * e1e2t(:,:) * tmask(:,:,1) ) ! denitrification in the sediments 539 CALL iom_put( "tdenit" , ( zrdenittot + zsdenittot ) * xfact3 ) ! Total denitrification in molN/m3 544 540 ENDIF 545 541 -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r7607 r8532 87 87 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xfracal !: ?? 88 88 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: nitrfac !: ?? 89 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: nitrfac2 !: ?? 89 90 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: ?? 90 91 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbacl !: ?? … … 147 148 ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk), & 148 149 & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), & 149 & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), STAT=ierr(3) ) 150 & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), & 151 & nitrfac2(jpi,jpj,jpk), STAT=ierr(3) ) 150 152 151 153 !* Variable for chemistry of the CO2 cycle
Note: See TracChangeset
for help on using the changeset viewer.