- Timestamp:
- 2021-01-07T23:09:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zrem.F90
r13233 r14276 35 35 REAL(wp), PUBLIC :: xremikn !: remineralisation rate of DON (p5z) 36 36 REAL(wp), PUBLIC :: xremikp !: remineralisation rate of DOP (p5z) 37 REAL(wp), PUBLIC :: xremik !: remineralisation rate of DOC (p4z)38 37 REAL(wp), PUBLIC :: nitrif !: NH4 nitrification rate 39 38 REAL(wp), PUBLIC :: xsirem !: remineralisation rate of biogenic silica … … 71 70 REAL(wp) :: zremik, zremikc, zremikn, zremikp, zsiremin, zfact 72 71 REAL(wp) :: zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 73 REAL(wp) :: zbactfer, zolimit, zonitr, zrfact2 74 REAL(wp) :: zammonic, zoxyremc, zoxyremn, zoxyremp 75 REAL(wp) :: zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 72 REAL(wp) :: zbactfer, zonitr 73 REAL(wp) :: zammonic, zoxyremc, zosil, ztem, zdenitnh4, zolimic 76 74 CHARACTER (len=25) :: charout 77 REAL(wp), DIMENSION(jpi,jpj ) :: ztempbac 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, zdepeff, zfebact 75 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zfacsi, zfacsib, zdepeff, zfebact 79 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 80 77 !!--------------------------------------------------------------------- … … 83 80 ! 84 81 ! Initialisation of arrays 85 zdepprod(:,:,:) = 1._wp86 82 zdepeff (:,:,:) = 0.3_wp 87 ztempbac(:,:) = 0._wp88 83 zfacsib(:,:,:) = xsilab / ( 1.0 - xsilab ) 89 84 zfebact(:,:,:) = 0._wp … … 99 94 DO jj = 1, jpj 100 95 DO ji = 1, jpi 101 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 102 IF( gdept_n(ji,jj,jk) < zdep ) THEN 103 zdepbac(ji,jj,jk) = MIN( 0.7 * ( trb(ji,jj,jk,jpzoo) + 2.* trb(ji,jj,jk,jpmes) ), 4.e-6 ) 104 ztempbac(ji,jj) = zdepbac(ji,jj,jk) 105 ELSE 96 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 97 zdepbac(ji,jj,jk) = 0.6 * ( MAX(0.0, trb(ji,jj,jk,jpzoo) + trb(ji,jj,jk,jpmes) ) * 1.0E6 )**0.6 * 1.E-6 98 IF( gdept_n(ji,jj,jk) >= zdep ) THEN 106 99 zdepmin = MIN( 1., zdep / gdept_n(ji,jj,jk) ) 107 zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj)108 zdepprod(ji,jj,jk) = zdepmin**0.273109 100 zdepeff (ji,jj,jk) = zdepeff(ji,jj,jk) * zdepmin**0.3 110 101 ENDIF … … 113 104 END DO 114 105 115 IF( ln_p4z ) THEN ! Standard PISCES code 116 DO jk = 1, jpkm1 117 DO jj = 1, jpj 118 DO ji = 1, jpi 119 ! DOC ammonification. Depends on a limitation term of the bacterial activity 120 ! and on the implicit bacteria concentration 121 ! -------------------------------------------------------------------------- 122 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 123 zremik = MAX( zremik, 2.74e-4 * xstep ) 124 125 ! Ammonification in oxic waters with oxygen consumption 126 ! ----------------------------------------------------- 127 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 128 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) 129 130 ! Ammonification in suboxic waters with denitrification 131 ! ----------------------------------------------------- 132 zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 133 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 134 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 135 136 ! Ammonification in waters depleted in O2 and NO3 based on 137 ! other redox processes 138 ! -------------------------------------------------------- 139 zoxyremc = zammonic - denitr(ji,jj,jk) 140 ! 141 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 142 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 143 zoxyremc = MAX( 0.e0, zoxyremc ) 144 ! Update of the TRA arrays 145 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 146 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 147 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit 148 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc 149 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut 150 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 151 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc & 152 & + ( rdenit + 1.) * denitr(ji,jj,jk) ) 153 END DO 154 END DO 155 END DO 156 ELSE ! PISCES-QUOTA 157 DO jk = 1, jpkm1 158 DO jj = 1, jpj 159 DO ji = 1, jpi 160 ! DOC ammonification. Depends on a limitation term of the bacterial activity 161 ! and on the implicit bacteria concentration 162 ! --------------------------------------------------------------- 163 zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 164 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 165 166 zremikc = xremikc * zremik 167 zremikn = xremikn / xremikc 168 zremikp = xremikp / xremikc 169 170 ! Ammonification in oxic waters with oxygen consumption 171 ! ----------------------------------------------------- 172 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 173 zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) ) 174 zolimi(ji,jj,jk) = zolimic 175 zolimin = zremikn * zolimic * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 176 zolimip = zremikp * zolimic * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 177 178 ! Ammonification in suboxic waters with denitrification 179 ! ------------------------------------------------------- 180 zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 181 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 182 denitr(ji,jj,jk) = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 183 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk)) 184 zdenitrn = zremikn * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 185 zdenitrp = zremikp * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 186 zoxyremn = zremikn * zoxyremc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 187 zoxyremp = zremikp * zoxyremc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 188 ! Update of the TRA arrays 189 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp + zoxyremp 190 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn + zoxyremn 191 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 192 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) - zoxyremc 193 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn - zoxyremn 194 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp - zoxyremp 195 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 196 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 197 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn ) 198 END DO 199 END DO 200 END DO 201 ! 202 ENDIF 106 DO jk = 1, jpkm1 107 DO jj = 1, jpj 108 DO ji = 1, jpi 109 ! DOC ammonification. Depends on a limitation term of the bacterial activity 110 ! and on the implicit bacteria concentration 111 ! -------------------------------------------------------------------------- 112 zremik = xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 113 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 114 zremikc = xremikc * zremik 115 116 ! Ammonification in oxic waters with oxygen consumption 117 ! ----------------------------------------------------- 118 zolimic = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 119 zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimic ) ) 120 zolimi(ji,jj,jk) = zolimic 121 122 ! Ammonification in suboxic waters with denitrification 123 ! ----------------------------------------------------- 124 zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 125 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 126 denitr(ji,jj,jk) = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 127 128 ! Ammonification in waters depleted in O2 and NO3 based on 129 ! other redox processes 130 ! -------------------------------------------------------- 131 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk) ) 132 133 ! Update of the TRA arrays 134 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 135 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 136 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 137 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 138 IF ( ln_p4z ) THEN ! PISCES-std 139 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimic + denitr(ji,jj,jk) + zoxyremc 140 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimic + denitr(ji,jj,jk) + zoxyremc 141 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimic + zoxyremc + ( rdenit + 1.) * denitr(ji,jj,jk) ) 142 ELSE ! PISCES-QUOTA (p5z) 143 zremikn = xremikn / xremikc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 144 zremikp = xremikp / xremikc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 145 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zremikp * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 146 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zremikn * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 147 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zremikn * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 148 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zremikp * ( zolimic + denitr(ji,jj,jk) + zoxyremc ) 149 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zremikn * ( zolimic + zoxyremc + ( rdenit + 1.) * denitr(ji,jj,jk) ) 150 ENDIF 151 END DO 152 END DO 153 END DO 203 154 204 155 DO jk = 1, jpkm1 … … 211 162 & / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) ) 212 163 zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 213 zdenitnh4 = M IN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4)164 zdenitnh4 = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 ) ) 214 165 ! Update of the tracers trends 215 166 ! ---------------------------- … … 217 168 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4 218 169 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 219 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4170 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 220 171 END DO 221 172 END DO … … 236 187 ! studies (especially at Papa) have shown this uptake to be significant 237 188 ! --------------------------------------------------------------------- 238 zbactfer = feratb * rfact2 * 0.6_wp / rday * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) & 239 & * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) ) & 240 & * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 189 zbactfer = feratb * 0.6_wp * xstep * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) * trb(ji,jj,jk,jpfer) & 190 & / ( xkferb + trb(ji,jj,jk,jpfer) ) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 241 191 242 192 ! Only the transfer of iron from its dissolved form to particles 243 193 ! is treated here. The GGE of bacteria supposed to be equal to 244 194 ! 0.33. This is hard-coded. 245 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0. 33246 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0. 25247 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.0 8248 zfebact(ji,jj,jk) = zbactfer * 0. 33195 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.18 196 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.15 197 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.03 198 zfebact(ji,jj,jk) = zbactfer * 0.18 249 199 blim(ji,jj,jk) = xlimbacl(ji,jj,jk) * zdepbac(ji,jj,jk) / 1.e-6 250 200 END DO … … 304 254 305 255 IF( knt == nrdttrc ) THEN 306 zrfact2 = 1.e3 * rfact2r307 256 ALLOCATE( zw3d(jpi,jpj,jpk) ) 308 257 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s … … 321 270 ENDIF 322 271 IF( iom_use( "FEBACT" ) ) THEN 323 zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * z rfact2! Bacterial iron consumption272 zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zfact ! Bacterial iron consumption 324 273 CALL iom_put( "FEBACT" , zw3d ) 325 274 ENDIF … … 345 294 !! 346 295 !!---------------------------------------------------------------------- 347 NAMELIST/nampisrem/ xremik,nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, &296 NAMELIST/nampisrem/ nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, & 348 297 & xremikc, xremikn, xremikp 349 298 INTEGER :: ios ! Local integer output status for namelist read … … 367 316 WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem' 368 317 IF( ln_p4z ) THEN 369 WRITE(numout,*) ' remineralization rate of DOC xremik =', xremik318 WRITE(numout,*) ' remineralization rate of DOC xremikc =', xremikc 370 319 ELSE 371 320 WRITE(numout,*) ' remineralization rate of DOC xremikc =', xremikc
Note: See TracChangeset
for help on using the changeset viewer.