- Timestamp:
- 2010-09-17T14:35:46+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/PISCES/p4zrem.F90
r2082 r2104 27 27 PRIVATE 28 28 29 PUBLIC p4z_rem ! called in p4zbio.F90 29 PUBLIC p4z_rem ! called in p4zbio.F90 30 PUBLIC p4z_rem_init ! called in trcsms_pisces.F90 30 31 31 32 !! * Shared module variables … … 41 42 & denitr !: denitrification array 42 43 43 REAL(wp) :: &44 xstep !: Time step duration for biology45 44 46 45 !!* Substitution … … 54 53 CONTAINS 55 54 56 SUBROUTINE p4z_rem( kt, jnt)55 SUBROUTINE p4z_rem( kt ) 57 56 !!--------------------------------------------------------------------- 58 57 !! *** ROUTINE p4z_rem *** … … 62 61 !! ** Method : - ??? 63 62 !!--------------------------------------------------------------------- 64 INTEGER, INTENT(in) :: kt , jnt! ocean time step63 INTEGER, INTENT(in) :: kt ! ocean time step 65 64 INTEGER :: ji, jj, jk 66 65 REAL(wp) :: zremip, zremik , zlam1b 67 66 REAL(wp) :: zkeq , zfeequi, zsiremin 68 REAL(wp) :: zsatur, zsatur2, znusil 67 REAL(wp) :: zsatur, zsatur1, zsatur2, zsatur22, znusil 68 REAL(wp) :: ztem1, ztem2 69 69 REAL(wp) :: zbactfer, zorem, zorem2, zofer 70 70 REAL(wp) :: zosil, zdenom1, zscave, zaggdfe … … 72 72 REAL(wp) :: zofer2, zdenom, zdenom2 73 73 #endif 74 REAL(wp) :: zlamfac, zonitr 74 REAL(wp) :: zlamfac, zonitr, zstep 75 75 REAL(wp), DIMENSION(jpi,jpj) :: ztempbac 76 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zfesatur, zolimi … … 78 78 79 79 !!--------------------------------------------------------------------- 80 81 82 IF( ( kt * jnt ) == nittrc000 ) THEN83 CALL p4z_rem_init ! Initialization (first time-step only)84 xstep = rfact2 / rday ! Time step duration for the biology85 nitrfac(:,:,:) = 0.086 denitr (:,:,:) = 0.087 ENDIF88 80 89 81 … … 94 86 ztempbac(:,:) = 0.0 95 87 96 !Computation of the mean phytoplankton concentration as97 !a crude estimate of the bacterial biomass98 !--------------------------------------------------88 ! Computation of the mean phytoplankton concentration as 89 ! a crude estimate of the bacterial biomass 90 ! -------------------------------------------------- 99 91 100 92 DO jk = 1, jpkm1 … … 114 106 DO jj = 1, jpj 115 107 DO ji = 1, jpi 116 117 ! DENITRIFICATION FACTOR COMPUTED FROM O2 LEVELS 118 ! ---------------------------------------------- 119 108 ! denitrification factor computed from O2 levels 120 109 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - trn(ji,jj,jk,jpoxy) ) & 121 110 & / ( oxymin + trn(ji,jj,jk,jpoxy) ) ) 122 END DO 123 END DO 124 END DO 125 126 nitrfac(:,:,:) = MIN( 1., nitrfac(:,:,:) ) 127 128 129 DO jk = 1, jpkm1 130 DO jj = 1, jpj 131 DO ji = 1, jpi 132 133 ! DOC ammonification. Depends on depth, phytoplankton biomass 134 ! and a limitation term which is supposed to be a parameterization 135 ! of the bacterial activity. 136 ! ---------------------------------------------------------------- 137 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) & 111 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 112 END DO 113 END DO 114 END DO 115 116 DO jk = 1, jpkm1 117 DO jj = 1, jpj 118 DO ji = 1, jpi 138 119 # if defined key_degrad 139 & * facvol(ji,jj,jk) & 120 zstep = xstep * facvol(ji,jj,jk) 121 # else 122 zstep = xstep 140 123 # endif 141 & * zdepbac(ji,jj,jk) 124 ! DOC ammonification. Depends on depth, phytoplankton biomass 125 ! and a limitation term which is supposed to be a parameterization 126 ! of the bacterial activity. 127 zremik = xremik * zstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 142 128 zremik = MAX( zremik, 5.5e-4 * xstep ) 143 129 144 ! Ammonification in oxic waters with oxygen consumption145 ! -----------------------------------------------------130 ! Ammonification in oxic waters with oxygen consumption 131 ! ----------------------------------------------------- 146 132 zolimi(ji,jj,jk) = MIN( ( trn(ji,jj,jk,jpoxy) - rtrn ) / o2ut, & 147 133 & zremik * ( 1.- nitrfac(ji,jj,jk) ) * trn(ji,jj,jk,jpdoc) ) 148 134 149 ! Ammonification in suboxic waters with denitrification150 ! -------------------------------------------------------135 ! Ammonification in suboxic waters with denitrification 136 ! ------------------------------------------------------- 151 137 denitr(ji,jj,jk) = MIN( ( trn(ji,jj,jk,jpno3) - rtrn ) / rdenit, & 152 138 & zremik * nitrfac(ji,jj,jk) * trn(ji,jj,jk,jpdoc) ) … … 167 153 DO jj = 1, jpj 168 154 DO ji = 1, jpi 169 170 ! NH4 nitrification to NO3. Ceased for oxygen concentrations171 ! below 2 umol/L. Inhibited at strong light172 ! ----------------------------------------------------------173 zonitr = nitrif * xstep * trn(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) &174 155 # if defined key_degrad 175 & * facvol(ji,jj,jk) & 156 zstep = xstep * facvol(ji,jj,jk) 157 # else 158 zstep = xstep 176 159 # endif 177 & * ( 1.- nitrfac(ji,jj,jk) ) 178 179 ! 180 ! Update of the tracers trends 181 ! ---------------------------- 182 183 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr 184 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr 185 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 186 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - rno3 * zonitr 160 ! NH4 nitrification to NO3. Ceased for oxygen concentrations 161 ! below 2 umol/L. Inhibited at strong light 162 ! ---------------------------------------------------------- 163 zonitr = nitrif * zstep * trn(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) ) 164 165 ! Update of the tracers trends 166 ! ---------------------------- 167 168 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr 169 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr 170 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 171 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - rno3 * zonitr 187 172 188 173 END DO … … 200 185 DO ji = 1, jpi 201 186 202 ! Bacterial uptake of iron. No iron is available in DOC. So 203 ! Bacteries are obliged to take up iron from the water. Some 204 ! studies (especially at Papa) have shown this uptake to be 205 ! significant 206 ! ---------------------------------------------------------- 187 ! Bacterial uptake of iron. No iron is available in DOC. So 188 ! Bacteries are obliged to take up iron from the water. Some 189 ! studies (especially at Papa) have shown this uptake to be significant 190 ! ---------------------------------------------------------- 207 191 zbactfer = 15.e-6 * rfact2 * 4.* 0.4 * prmax(ji,jj,jk) & 208 & * ( xlimphy(ji,jj,jk) * zdepbac(ji,jj,jk))**2 & 192 & * ( xlimphy(ji,jj,jk) * zdepbac(ji,jj,jk)) & 193 & * ( xlimphy(ji,jj,jk) * zdepbac(ji,jj,jk)) & 209 194 & / ( xkgraz2 + zdepbac(ji,jj,jk) ) & 210 195 & * ( 0.5 + SIGN( 0.5, trn(ji,jj,jk,jpfer) -2.e-11 ) ) … … 216 201 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer 217 202 #endif 218 219 203 END DO 220 204 END DO … … 230 214 DO jj = 1, jpj 231 215 DO ji = 1, jpi 232 233 ! POC disaggregation by turbulence and bacterial activity.234 ! -------------------------------------------------------------235 zremip = xremip * xstep * tgfunc(ji,jj,jk) &236 216 # if defined key_degrad 237 & * facvol(ji,jj,jk) & 217 zstep = xstep * facvol(ji,jj,jk) 218 # else 219 zstep = xstep 238 220 # endif 239 & * ( 1.- 0.5 * nitrfac(ji,jj,jk) ) 240 241 ! POC disaggregation rate is reduced in anoxic zone as shown by 242 ! sediment traps data. In oxic area, the exponent of the martin s 243 ! law is around -0.87. In anoxic zone, it is around -0.35. This 244 ! means a disaggregation constant about 0.5 the value in oxic zones 245 ! ----------------------------------------------------------------- 221 ! POC disaggregation by turbulence and bacterial activity. 222 ! ------------------------------------------------------------- 223 zremip = xremip * zstep * tgfunc(ji,jj,jk) * ( 1.- 0.5 * nitrfac(ji,jj,jk) ) 224 225 ! POC disaggregation rate is reduced in anoxic zone as shown by 226 ! sediment traps data. In oxic area, the exponent of the martin s 227 ! law is around -0.87. In anoxic zone, it is around -0.35. This 228 ! means a disaggregation constant about 0.5 the value in oxic zones 229 ! ----------------------------------------------------------------- 246 230 zorem = zremip * trn(ji,jj,jk,jppoc) 247 231 zofer = zremip * trn(ji,jj,jk,jpsfe) … … 253 237 #endif 254 238 255 ! Update the appropriate tracers trends256 ! -------------------------------------239 ! Update the appropriate tracers trends 240 ! ------------------------------------- 257 241 258 242 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem … … 282 266 DO jj = 1, jpj 283 267 DO ji = 1, jpi 284 285 ! Remineralization rate of BSi depedant on T and saturation 286 ! --------------------------------------------------------- 287 zsatur = ( sio3eq(ji,jj,jk) - trn(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) 288 zsatur = MAX( rtrn, zsatur ) 289 zsatur2 = zsatur * ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**4 290 znusil = 0.225 * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2**9 291 # if defined key_degrad 292 zsiremin = xsirem * xstep * znusil * facvol(ji,jj,jk) 268 # if defined key_degrad 269 zstep = xstep * facvol(ji,jj,jk) 293 270 # else 294 zsiremin = xsirem * xstep * znusil 295 # endif 296 zosil = zsiremin * trn(ji,jj,jk,jpdsi) 271 zstep = xstep 272 # endif 273 ! Remineralization rate of BSi depedant on T and saturation 274 ! --------------------------------------------------------- 275 zsatur = ( sio3eq(ji,jj,jk) - trn(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) 276 zsatur = MAX( rtrn, zsatur ) 277 ztem1 = ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) 278 ztem2 = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.) 279 zsatur1 = zsatur * ztem1 280 zsatur2 = zsatur * ztem2 * ztem2 * ztem2 * ztem2 281 zsatur22 = zsatur2 * zsatur2 282 znusil = 0.225 * zsatur1 + 0.775 * zsatur22 * zsatur22 * zsatur22 * zsatur22 * zsatur2 283 zsiremin = xsirem * zstep * znusil 284 zosil = zsiremin * trn(ji,jj,jk,jpdsi) 297 285 298 286 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zosil 299 287 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil 300 301 288 ! 302 289 END DO … … 317 304 !CDIR NOVERRCHK 318 305 DO ji = 1, jpi 319 ! 320 ! Compute de different ratios for scavenging of iron 321 ! -------------------------------------------------- 306 # if defined key_degrad 307 zstep = xstep * facvol(ji,jj,jk) 308 # else 309 zstep = xstep 310 # endif 311 ! Compute de different ratios for scavenging of iron 312 ! -------------------------------------------------- 322 313 323 314 #if defined key_kriest 324 315 zdenom1 = trn(ji,jj,jk,jppoc) / & 325 316 & ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpdsi) + trn(ji,jj,jk,jpcal) + rtrn ) 326 317 #else 327 318 zdenom = 1. / ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) & 328 319 & + trn(ji,jj,jk,jpdsi) + trn(ji,jj,jk,jpcal) + rtrn ) 329 320 330 zdenom1 = trn(ji,jj,jk,jppoc) * zdenom 331 zdenom2 = trn(ji,jj,jk,jpgoc) * zdenom 332 #endif 333 334 335 ! scavenging rate of iron. this scavenging rate depends on the 336 ! load in particles on which they are adsorbed. The 337 ! parameterization has been taken from studies on Th 338 ! ------------------------------------------------------------ 321 zdenom1 = trn(ji,jj,jk,jppoc) * zdenom 322 zdenom2 = trn(ji,jj,jk,jpgoc) * zdenom 323 #endif 324 ! scavenging rate of iron. this scavenging rate depends on the load in particles 325 ! on which they are adsorbed. The parameterization has been taken from studies on Th 326 ! ------------------------------------------------------------ 339 327 zkeq = fekeq(ji,jj,jk) 340 328 zfeequi = ( -( 1. + zfesatur(ji,jj,jk) * zkeq - zkeq * trn(ji,jj,jk,jpfer) ) & … … 349 337 & + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi) ) * 1.e6 350 338 #endif 351 352 # if defined key_degrad 353 zscave = zfeequi * zlam1b * xstep * facvol(ji,jj,jk) 354 # else 355 zscave = zfeequi * zlam1b * xstep 356 # endif 357 358 ! Increased scavenging for very high iron concentrations 359 ! found near the coasts due to increased lithogenic particles 360 ! and let s say it unknown processes (precipitation, ...) 361 ! ----------------------------------------------------------- 339 zscave = zfeequi * zlam1b * zstep 340 341 ! Increased scavenging for very high iron concentrations 342 ! found near the coasts due to increased lithogenic particles 343 ! and let s say it unknown processes (precipitation, ...) 344 ! ----------------------------------------------------------- 362 345 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 363 346 zlamfac = MIN( 1. , zlamfac ) … … 374 357 #endif 375 358 376 # if defined key_degrad 377 zaggdfe = zlam1b * xstep * 0.5 * ( trn(ji,jj,jk,jpfer) - zfeequi ) * facvol(ji,jj,jk) 378 # else 379 zaggdfe = zlam1b * xstep * 0.5 * ( trn(ji,jj,jk,jpfer) - zfeequi ) 380 # endif 359 zaggdfe = zlam1b * zstep * 0.5 * ( trn(ji,jj,jk,jpfer) - zfeequi ) 381 360 382 361 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfe … … 400 379 ENDIF 401 380 402 ! Update the arrays TRA which contain the biological sources and sinks403 ! --------------------------------------------------------------------381 ! Update the arrays TRA which contain the biological sources and sinks 382 ! -------------------------------------------------------------------- 404 383 405 384 DO jk = 1, jpkm1 … … 452 431 ENDIF 453 432 433 nitrfac(:,:,:) = 0.0 434 denitr (:,:,:) = 0.0 435 454 436 END SUBROUTINE p4z_rem_init 455 456 457 458 459 437 460 438 #else
Note: See TracChangeset
for help on using the changeset viewer.