Changeset 10362 for NEMO/trunk/src/TOP/PISCES/P4Z/p5zmicro.F90
- Timestamp:
- 2018-11-30T16:38:17+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/TOP/PISCES/P4Z/p5zmicro.F90
r10227 r10362 15 15 USE trc ! passive tracers common variables 16 16 USE sms_pisces ! PISCES Source Minus Sink variables 17 USE p4zlim 17 18 USE p5zlim ! Phytoplankton limitation terms 18 19 USE iom ! I/O manager … … 41 42 REAL(wp), PUBLIC :: mzrat !: microzooplankton mortality rate 42 43 REAL(wp), PUBLIC :: grazrat !: maximal microzoo grazing rate 43 REAL(wp), PUBLIC :: xkgraz !: non assimilated fraction of P by microzoo 44 REAL(wp), PUBLIC :: unassc !: Efficicency of microzoo growth 45 REAL(wp), PUBLIC :: unassn !: Efficicency of microzoo growth 46 REAL(wp), PUBLIC :: unassp !: Efficicency of microzoo growth 47 REAL(wp), PUBLIC :: epsher !: half sturation constant for grazing 1 44 REAL(wp), PUBLIC :: xkgraz !: Half-saturation constant of assimilation 45 REAL(wp), PUBLIC :: unassc !: Non-assimilated part of food 46 REAL(wp), PUBLIC :: unassn !: Non-assimilated part of food 47 REAL(wp), PUBLIC :: unassp !: Non-assimilated part of food 48 REAL(wp), PUBLIC :: epsher !: Growth efficiency for microzoo 49 REAL(wp), PUBLIC :: epshermin !: Minimum growth efficiency for microzoo 48 50 REAL(wp), PUBLIC :: srespir !: half sturation constant for grazing 1 49 51 REAL(wp), PUBLIC :: ssigma !: Fraction excreted as semi-labile DOM … … 82 84 REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz 83 85 REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess 84 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing 85 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 86 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 87 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zzligprod 86 88 CHARACTER (len=25) :: charout 87 89 !!--------------------------------------------------------------------- 88 90 ! 89 91 IF( ln_timing ) CALL timing_start('p5z_micro') 92 ! 93 IF (ln_ligand) THEN 94 ALLOCATE( zzligprod(jpi,jpj,jpk) ) 95 zzligprod(:,:,:) = 0._wp 96 ENDIF 90 97 ! 91 98 zmetexcess = 0.0 … … 106 113 ! no real reason except that it seems to be more stable and may mimic predation. 107 114 ! ------------------------------------------------------------------------------ 108 ztortz = mzrat * 1.e6 * zfact * trb(ji,jj,jk,jpzoo) 115 ztortz = mzrat * 1.e6 * zfact * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 109 116 110 117 ! Computation of the abundance of the preys … … 123 130 zfoodlim = MAX( 0. , zfood - min(xthresh,0.5*zfood) ) 124 131 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 125 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) 132 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 126 133 127 134 ! An active switching parameterization is used here. … … 183 190 ! --------------------------------------------------- 184 191 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat3) 185 zbeta = 1./ (epsher - 0.2)186 zepsherf = 0.2 + 1./ (zbeta + 0.04 * 12. * zfood * 1E6)192 zbeta = MAX( 0., (epsher - epshermin) ) 193 zepsherf = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 187 194 zepsherv = zepsherf * zepshert 188 195 … … 244 251 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc 245 252 ! 246 IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz 253 IF( ln_ligand ) THEN 254 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz 255 zzligprod(ji,jj,jk) = zgradoc * ldocz 256 ENDIF 247 257 ! 248 258 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon … … 250 260 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem 251 261 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref 262 zfezoo(ji,jj,jk) = zgraref 252 263 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc - ztortz - zgrazz 253 264 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraznc … … 288 299 END DO 289 300 ! 290 IF( lk_iomput .AND. knt == nrdttrc ) THEN 291 ALLOCATE( zw3d(jpi,jpj,jpk) ) 292 IF( iom_use( "GRAZ1" ) ) THEN 293 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 294 CALL iom_put( "GRAZ1", zw3d ) 301 IF( lk_iomput ) THEN 302 IF( knt == nrdttrc ) THEN 303 ALLOCATE( zw3d(jpi,jpj,jpk) ) 304 IF( iom_use( "GRAZ1" ) ) THEN 305 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 306 CALL iom_put( "GRAZ1", zw3d ) 307 ENDIF 308 IF( iom_use( "FEZOO" ) ) THEN 309 zw3d(:,:,:) = zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 310 CALL iom_put( "FEZOO", zw3d ) 311 ENDIF 312 IF( iom_use( "LPRODZ" ) .AND. ln_ligand ) THEN 313 zw3d(:,:,:) = zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 314 CALL iom_put( "LPRODZ" , zw3d ) 315 ENDIF 316 DEALLOCATE( zw3d ) 295 317 ENDIF 296 DEALLOCATE( zw3d )297 318 ENDIF 298 319 ! … … 325 346 & xprefp, xprefd, xprefz, xthreshdia, xthreshphy, & 326 347 & xthreshpic, xthreshpoc, xthreshzoo, xthresh, xkgraz, & 327 & epsher, ssigma, srespir, unassc, unassn, unassp348 & epsher, epshermin, ssigma, srespir, unassc, unassn, unassp 328 349 !!---------------------------------------------------------------------- 329 350 ! … … 360 381 WRITE(numout,*) ' P egested fraction of fodd by microzoo unassp =', unassp 361 382 WRITE(numout,*) ' Efficicency of microzoo growth epsher =', epsher 383 WRITE(numout,*) ' Minimum Efficiency of Microzoo growth epshermin =', epshermin 362 384 WRITE(numout,*) ' Fraction excreted as semi-labile DOM ssigma =', ssigma 363 385 WRITE(numout,*) ' Active respiration srespir =', srespir
Note: See TracChangeset
for help on using the changeset viewer.