Changeset 2823 for branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90
- Timestamp:
- 2011-08-09T13:11:24+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90
r2715 r2823 6 6 !! History : 1.0 ! 2004 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Change aggregation formula 9 !!---------------------------------------------------------------------- 8 10 #if defined key_pisces 9 11 !!---------------------------------------------------------------------- 10 12 !! p4z_sink : Compute vertical flux of particulate matter due to gravitational sinking 11 13 !!---------------------------------------------------------------------- 12 USE trc13 USE oce_trc !14 USE sms_pisces 15 USE prtctl_trc 16 USE iom 14 USE oce_trc ! shared variables between ocean and passive tracers 15 USE trc ! passive tracers common variables 16 USE sms_pisces ! PISCES Source Minus Sink variables 17 USE prtctl_trc ! print control for debugging 18 USE iom ! I/O manager 17 19 18 20 IMPLICIT NONE … … 91 93 REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 92 94 REAL(wp) :: zval1, zval2, zval3, zval4 93 #if defined key_diatrc94 95 REAL(wp) :: zrfact2 95 96 INTEGER :: ik1 96 #endif97 97 CHARACTER (len=25) :: charout 98 98 !!--------------------------------------------------------------------- … … 193 193 & * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min) & 194 194 & * (zfm*xkr_mass_max**2-xkr_mass_min**2) & 195 & * (zeps-1.)**2/(zdiv2*zdiv3)) & 196 # if defined key_degrad 197 & *facvol(ji,jj,jk) & 198 # endif 199 & ) 200 201 zagg2 = ( 2*0.163*trn(ji,jj,jk,jpnum)**2*zfm* & 195 & * (zeps-1.)**2/(zdiv2*zdiv3)) 196 197 zagg2 = 2*0.163*trn(ji,jj,jk,jpnum)**2*zfm* & 202 198 & ((xkr_mass_max**3+3.*(xkr_mass_max**2 & 203 199 & *xkr_mass_min*(zeps-1.)/zdiv2 & … … 205 201 & +xkr_mass_min**3*(zeps-1)/zdiv1) & 206 202 & -zfm*xkr_mass_max**3*(1.+3.*((zeps-1.)/ & 207 & (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1)) & 208 # if defined key_degrad 209 & *facvol(ji,jj,jk) & 210 # endif 211 & ) 212 213 zagg3 = ( 0.163*trn(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3 & 214 # if defined key_degrad 215 & *facvol(ji,jj,jk) & 216 # endif 217 & ) 218 219 zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 203 & (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1)) 204 205 zagg3 = 0.163*trn(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3 220 206 221 207 ! Aggregation of small into large particles … … 223 209 ! ---------------------------------------------- 224 210 225 zagg4 = (2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2* &211 zagg4 = 2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2* & 226 212 & xkr_wsbio_min*(zeps-1.)**2 & 227 213 & *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4) & 228 214 & -(1.-zfm)/(zdiv*(zeps-1.)))- & 229 215 & ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2) & 230 & *xkr_eta)/(zdiv*zdiv3*zdiv5) ) & 231 # if defined key_degrad 232 & *facvol(ji,jj,jk) & 233 # endif 234 & ) 235 236 zagg5 = ( 2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2 & 216 & *xkr_eta)/(zdiv*zdiv3*zdiv5) ) 217 218 zagg5 = 2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2 & 237 219 & *(zeps-1.)*zfm*xkr_wsbio_min & 238 220 & *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2) & 239 221 & /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2) & 240 & /zdiv) & 241 # if defined key_degrad 242 & *facvol(ji,jj,jk) & 243 # endif 244 & ) 222 & /zdiv) 245 223 246 224 zaggsi = ( zagg4 + zagg5 ) * xstep / 10. … … 253 231 zaggdoc = ( 0.4 * trn(ji,jj,jk,jpdoc) & 254 232 & + 1018. * trn(ji,jj,jk,jppoc) ) * xstep & 233 & * xdiss(ji,jj,jk) * trn(ji,jj,jk,jpdoc) 234 255 235 # if defined key_degrad 256 & * facvol(ji,jj,jk) & 236 zagg1 = zagg1 * facvol(ji,jj,jk) 237 zagg2 = zagg2 * facvol(ji,jj,jk) 238 zagg3 = zagg3 * facvol(ji,jj,jk) 239 zagg4 = zagg4 * facvol(ji,jj,jk) 240 zagg5 = zagg5 * facvol(ji,jj,jk) 241 zaggdoc = zaggdoc * facvol(ji,jj,jk) 257 242 # endif 258 & * xdiss(ji,jj,jk) * trn(ji,jj,jk,jpdoc) 259 243 zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000. 244 zaggsi = ( zagg4 + zagg5 ) * xstep / 10. 245 zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi ) 246 ! 260 247 znumdoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 261 248 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc … … 335 322 !!---------------------------------------------------------------------- 336 323 ! 337 REWIND( numnat ) ! read nampiskrs338 READ ( numnat, nampiskrs )324 REWIND( numnatp ) ! read nampiskrs 325 READ ( numnat,( nampiskrs ) 339 326 340 327 IF(lwp) THEN … … 457 444 INTEGER :: ji, jj, jk 458 445 REAL(wp) :: zagg1, zagg2, zagg3, zagg4 459 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2 460 REAL(wp) :: zfact, zwsmax, zstep 461 #if defined key_diatrc 446 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 447 REAL(wp) :: zfact, zwsmax, zmax, zstep 462 448 REAL(wp) :: zrfact2 463 449 INTEGER :: ik1 464 #endif465 450 CHARACTER (len=25) :: charout 466 451 !!--------------------------------------------------------------------- … … 471 456 DO jk = 1, jpkm1 472 457 DO jj = 1, jpj 473 DO ji=1,jpi 474 zfact = MAX( 0., fsdepw(ji,jj,jk+1) - hmld(ji,jj) ) / 4000._wp 458 DO ji = 1,jpi 459 zmax = MAX( heup(ji,jj), hmld(ji,jj) ) 460 zfact = MAX( 0., fsdepw(ji,jj,jk+1) - zmax ) / 5000._wp 475 461 wsbio4(ji,jj,jk) = wsbio2 + ( 200.- wsbio2 ) * zfact 476 462 END DO … … 533 519 zfact = zstep * xdiss(ji,jj,jk) 534 520 ! Part I : Coagulation dependent on turbulence 535 zagg1 = 940.* zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc)536 zagg2 = 1.054e4* zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc)521 zagg1 = 354. * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 522 zagg2 = 4452. * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 537 523 538 524 ! Part II : Differential settling 539 525 540 526 ! Aggregation of small into large particles 541 zagg3 = 0.66* zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc)542 zagg4 = 0.e0* zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc)527 zagg3 = 4.7 * zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 528 zagg4 = 0.4 * zstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 543 529 544 530 zagg = zagg1 + zagg2 + zagg3 + zagg4 … … 546 532 547 533 ! Aggregation of DOC to small particles 548 zaggdoc = ( 80.* trn(ji,jj,jk,jpdoc) + 698. * trn(ji,jj,jk,jppoc) ) * zfact * trn(ji,jj,jk,jpdoc) 549 zaggdoc2 = 1.05e4 * zfact * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpdoc) 534 zaggdoc = ( 0.83 * trn(ji,jj,jk,jpdoc) + 271. * trn(ji,jj,jk,jppoc) ) * zfact * trn(ji,jj,jk,jpdoc) 535 zaggdoc2 = 1.07e4 * zfact * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpdoc) 536 zaggdoc3 = 0.02 * ( 16706. * trn(ji,jj,jk,jppoc) + 231. * trn(ji,jj,jk,jpdoc) ) * zstep * trn(ji,jj,jk,jpdoc) 550 537 551 538 ! Update the trends 552 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc 539 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc3 553 540 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 554 541 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 555 542 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 556 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 543 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 557 544 ! 558 545 END DO
Note: See TracChangeset
for help on using the changeset viewer.