Changeset 10368 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p5zmeso.F90
- Timestamp:
- 2018-12-03T12:45:01+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p5zmeso.F90
r10070 r10368 27 27 REAL(wp), PUBLIC :: part2 !: part of calcite not dissolved in mesozoo guts 28 28 REAL(wp), PUBLIC :: xpref2c !: mesozoo preference for POC 29 REAL(wp), PUBLIC :: xpref2 p!: mesozoo preference for nanophyto29 REAL(wp), PUBLIC :: xpref2n !: mesozoo preference for nanophyto 30 30 REAL(wp), PUBLIC :: xpref2z !: mesozoo preference for zooplankton 31 31 REAL(wp), PUBLIC :: xpref2d !: mesozoo preference for Diatoms … … 40 40 REAL(wp), PUBLIC :: mzrat2 !: microzooplankton mortality rate 41 41 REAL(wp), PUBLIC :: grazrat2 !: maximal mesozoo grazing rate 42 REAL(wp), PUBLIC :: xkgraz2 !: non assimilated fraction of P by mesozoo 43 REAL(wp), PUBLIC :: unass2c !: Efficicency of mesozoo growth 44 REAL(wp), PUBLIC :: unass2n !: Efficicency of mesozoo growth 45 REAL(wp), PUBLIC :: unass2p !: Efficicency of mesozoo growth 46 REAL(wp), PUBLIC :: epsher2 !: half sturation constant for grazing 2 42 REAL(wp), PUBLIC :: xkgraz2 !: Half-saturation constant of assimilation 43 REAL(wp), PUBLIC :: unass2c !: Non-assimilated fraction of food 44 REAL(wp), PUBLIC :: unass2n !: Non-assimilated fraction of food 45 REAL(wp), PUBLIC :: unass2p !: Non-assimilated fraction of food 46 REAL(wp), PUBLIC :: epsher2 !: Growth efficiency of mesozoo 47 REAL(wp), PUBLIC :: epsher2min !: Minimum growth efficiency of mesozoo 47 48 REAL(wp), PUBLIC :: ssigma2 !: Fraction excreted as semi-labile DOM 48 49 REAL(wp), PUBLIC :: srespir2 !: Active respiration … … 85 86 CHARACTER (len=25) :: charout 86 87 REAL(wp) :: zrfact2, zmetexcess 87 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing 88 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 88 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 89 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zz2ligprod 89 90 90 91 !!--------------------------------------------------------------------- … … 92 93 IF( ln_timing ) CALL timing_start('p5z_meso') 93 94 ! 95 94 96 zgrazing(:,:,:) = 0._wp 97 zfezoo2 (:,:,:) = 0._wp 98 ! 99 IF (ln_ligand) THEN 100 ALLOCATE( zz2ligprod(jpi,jpj,jpk) ) 101 zz2ligprod(:,:,:) = 0._wp 102 ENDIF 95 103 96 104 zmetexcess = 0.0 … … 111 119 ! no real reason except that it seems to be more stable and may mimic predation 112 120 ! --------------------------------------------------------------- 113 ztortz = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) 121 ztortz = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk)) 114 122 115 123 ! Computation of the abundance of the preys … … 124 132 ! Mesozooplankton grazing 125 133 ! ------------------------ 126 zfood = xpref2d * zcompadi + xpref2z * zcompaz + xpref2 p* zcompaph + xpref2c * zcompapoc &134 zfood = xpref2d * zcompadi + xpref2z * zcompaz + xpref2n * zcompaph + xpref2c * zcompapoc & 127 135 & + xpref2m * zcompames 128 136 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) 129 137 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 130 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) 138 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk)) 131 139 132 140 ! An active switching parameterization is used here. … … 138 146 ! most abundant species 139 147 ! ------------------------------------------------------------ 140 ztmp1 = xpref2 p* zcompaph**1.5148 ztmp1 = xpref2n * zcompaph**1.5 141 149 ztmp2 = xpref2m * zcompames**1.5 142 150 ztmp3 = xpref2c * zcompapoc**1.5 … … 170 178 ! ---------------------------------- 171 179 zgrazffeg = grazflux * xstep * wsbio4(ji,jj,jk) & 172 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) 180 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) & 181 & * (1. - nitrfac(ji,jj,jk)) 173 182 zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 174 183 zgrazffng = zgrazffeg * trb(ji,jj,jk,jpgon) / (trb(ji,jj,jk,jpgoc) + rtrn) 175 184 zgrazffpg = zgrazffeg * trb(ji,jj,jk,jpgop) / (trb(ji,jj,jk,jpgoc) + rtrn) 176 185 zgrazffep = grazflux * xstep * wsbio3(ji,jj,jk) & 177 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 186 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) & 187 & * (1. - nitrfac(ji,jj,jk)) 178 188 zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 179 189 zgrazffnp = zgrazffep * trb(ji,jj,jk,jppon) / (trb(ji,jj,jk,jppoc) + rtrn) … … 226 236 ! --------------------------------------------------- 227 237 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat3) 228 zbeta = 1./ (epsher2 - 0.2)229 zepsherf = 0.2 + 1./ (zbeta + 0.04 * 12. * zfood *1E6)238 zbeta = MAX(0., (epsher2 - epsher2min) ) 239 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 230 240 zepsherv = zepsherf * zepshert 231 241 … … 290 300 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc 291 301 ! 292 IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz 302 IF( ln_ligand ) THEN 303 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz 304 zz2ligprod(ji,jj,jk) = zgradoc * ldocz 305 ENDIF 293 306 ! 294 307 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon … … 296 309 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem 297 310 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref 311 zfezoo2(ji,jj,jk) = zgraref 298 312 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarem 299 313 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgraren … … 351 365 CALL iom_put( "PCAL", zw3d ) 352 366 ENDIF 367 IF( iom_use( "FEZOO2" ) ) THEN 368 zw3d(:,:,:) = zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 369 CALL iom_put( "FEZOO2", zw3d ) 370 ENDIF 371 IF( iom_use( "LPRODZ2" ) .AND. ln_ligand ) THEN 372 zw3d(:,:,:) = zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 373 CALL iom_put( "LPRODZ2" , zw3d ) 374 ENDIF 353 375 DEALLOCATE( zw3d ) 354 376 ENDIF … … 379 401 INTEGER :: ios ! Local integer output status for namelist read 380 402 !! 381 NAMELIST/namp5zmes/part2, bmetexc2, grazrat2, resrat2, mzrat2, xpref2c, xpref2 p, xpref2z, &403 NAMELIST/namp5zmes/part2, bmetexc2, grazrat2, resrat2, mzrat2, xpref2c, xpref2n, xpref2z, & 382 404 & xpref2m, xpref2d, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 383 & xthresh2mes, xthresh2, xkgraz2, epsher2, ssigma2, unass2c, &405 & xthresh2mes, xthresh2, xkgraz2, epsher2, epsher2min, ssigma2, unass2c, & 384 406 & unass2n, unass2p, srespir2, grazflux 385 407 !!---------------------------------------------------------------------- … … 399 421 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 400 422 WRITE(numout,*) ' part of calcite not dissolved in mesozoo guts part2 = ', part2 401 WRITE(numout,*) ' mesozoo preference for nano. xpref2 p = ', xpref2p423 WRITE(numout,*) ' mesozoo preference for nano. xpref2n = ', xpref2n 402 424 WRITE(numout,*) ' mesozoo preference for diatoms xpref2d = ', xpref2d 403 425 WRITE(numout,*) ' mesozoo preference for zoo xpref2z = ', xpref2z … … 415 437 WRITE(numout,*) ' mesozoo flux feeding rate grazflux = ', grazflux 416 438 WRITE(numout,*) ' C egested fraction of food by mesozoo unass2c = ', unass2c 417 WRITE(numout,*) ' Cegested fraction of food by mesozoo unass2n = ', unass2n418 WRITE(numout,*) ' Cegested fraction of food by mesozoo unass2p = ', unass2p439 WRITE(numout,*) ' N egested fraction of food by mesozoo unass2n = ', unass2n 440 WRITE(numout,*) ' P egested fraction of food by mesozoo unass2p = ', unass2p 419 441 WRITE(numout,*) ' Efficicency of Mesozoo growth epsher2 = ', epsher2 442 WRITE(numout,*) ' Minimum Efficiency of Mesozoo growth epsher2min =', epsher2min 420 443 WRITE(numout,*) ' Fraction excreted as semi-labile DOM ssigma2 = ', ssigma2 421 444 WRITE(numout,*) ' Active respiration srespir2 = ', srespir2
Note: See TracChangeset
for help on using the changeset viewer.