Changeset 12537 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90
- Timestamp:
- 2020-03-11T16:02:54+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90
r12524 r12537 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Quota model for iron 9 9 !!---------------------------------------------------------------------- 10 !! p4z_meso : Compute the sources/sinks for mesozooplankton 11 !! p4z_meso_init : Initialization of the parameters for mesozooplankton 10 !! p4z_meso : Compute the sources/sinks for mesozooplankton 11 !! p4z_meso_init : Initialization of the parameters for mesozooplankton 12 !! p4z_meso_alloc : Allocate variables for mesozooplankton 12 13 !!---------------------------------------------------------------------- 13 14 USE oce_trc ! shared variables between ocean and passive tracers … … 23 24 PUBLIC p4z_meso ! called in p4zbio.F90 24 25 PUBLIC p4z_meso_init ! called in trcsms_pisces.F90 25 PUBLIC p4z_meso_alloc 26 26 PUBLIC p4z_meso_alloc ! called in trcini_pisces.F90 27 28 !! * Shared module variables 27 29 REAL(wp), PUBLIC :: part2 !: part of calcite not dissolved in mesozoo guts 28 30 REAL(wp), PUBLIC :: xpref2d !: mesozoo preference for diatoms … … 46 48 REAL(wp), PUBLIC :: xfracmig !: Fractional biomass of meso that performs DVM 47 49 LOGICAL , PUBLIC :: ln_dvm_meso !: Boolean to activate DVM of mesozooplankton 48 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: depmig 49 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: kmig 50 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: depmig !: DVM of mesozooplankton : migration depth 51 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: kmig !: Vertical indice of the the migration depth 50 52 51 53 !!---------------------------------------------------------------------- … … 61 63 !! 62 64 !! ** Purpose : Compute the sources/sinks for mesozooplankton 65 !! This includes ingestion and assimilation, flux feeding 66 !! and mortality. We use a passive prey switching 67 !! parameterization. 68 !! All living compartments smaller than mesozooplankton 69 !! are potential preys of mesozooplankton as well as small 70 !! sinking particles 63 71 !! 64 72 !! ** Method : - ??? … … 68 76 INTEGER :: ji, jj, jk, jkt 69 77 REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 70 REAL(wp) :: zgraze2 , zdenom, zdenom2 71 REAL(wp) :: zfact , zfood, zfoodlim, zproport, zbeta 78 REAL(wp) :: zgraze2 , zdenom, zdenom2, zfact , zfood, zfoodlim, zproport, zbeta 72 79 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2, zfracal, zgrazcal 73 80 REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 74 81 REAL(wp) :: zmigreltime, zprcaca, zmortz, zgrasrat, zgrasratn 75 REAL(wp) :: zrespz, ztortz, zgrazd, zgrazz, zgrazpof 76 REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 77 REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 78 REAL(wp) :: zrum, zcodel, zargu, zval 82 REAL(wp) :: zrespz, ztortz, zgrazd, zgrazz, zgrazpof, zgrazn, zgrazpoc, zgraznf, zgrazf 83 REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg, zrum, zcodel, zargu, zval 79 84 CHARACTER (len=25) :: charout 80 85 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 … … 95 100 ! 96 101 ! Diurnal vertical migration of mesozooplankton 102 ! Computation of the migration depth 97 103 ! --------------------------------------------- 98 104 IF (ln_dvm_meso) CALL p4z_meso_depmig … … 104 110 zfact = xstep * tgfunc2(ji,jj,jk) * zcompam 105 111 106 ! Respiration rates of both zooplankton 107 ! ------------------------------------- 112 ! linear mortality of mesozooplankton 113 ! A michaelis menten modulation term is used to avoid extinction of 114 ! mesozooplankton at very low food concentration. Mortality is 115 116 ! enhanced in low O2 waters 117 ! ----------------------------------------------------------------- 108 118 zrespz = resrat2 * zfact * ( trb(ji,jj,jk,jpmes) / ( xkmort + trb(ji,jj,jk,jpmes) ) & 109 119 & + 3. * nitrfac(ji,jj,jk) ) 110 120 111 ! Zooplankton mortality. A square function has been selected with 112 ! no real reason except that it seems to be more stable and may mimic predation 113 ! --------------------------------------------------------------- 121 ! Zooplankton quadratic mortality. A square function has been selected with 122 ! to mimic predation and disease (density dependent mortality). It also tends 123 ! to stabilise the model 124 ! ------------------------------------------------------------------------- 114 125 ztortz = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) ) 115 ! 126 127 ! Computation of the abundance of the preys 128 ! A threshold can be specified in the namelist 129 ! -------------------------------------------- 116 130 zcompadi = MAX( ( trb(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 117 131 zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 118 132 zcompapoc = MAX( ( trb(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 119 133 ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 120 ! it is to predation by mesozooplankton 134 ! it is to predation by mesozooplankton. We use a quota dependant parameterization 135 ! as a low quota indicates oligotrophic conditions which are charatcerized by 136 ! small cells 121 137 ! ------------------------------------------------------------------------------- 122 138 zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) & … … 124 140 125 141 ! Mesozooplankton grazing 126 ! ------------------------ 142 ! The total amount of food is the sum of all preys accessible to mesozooplankton 143 ! multiplied by their food preference 144 ! A threshold can be specified in the namelist (xthresh2). However, when food 145 ! concentration is close to this threshold, it is decreased to avoid the 146 ! accumulation of food in the mesozoopelagic domain 147 ! ------------------------------------------------------------------------------- 127 148 zfood = xpref2d * zcompadi + xpref2z * zcompaz + xpref2n * zcompaph + xpref2c * zcompapoc 128 149 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) … … 131 152 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk)) 132 153 154 ! The grazing pressure on each prey is computed assuming passive switching. This 155 ! is equivalent to assuming that mesozooplankton have an opportunistic feeding 156 ! behaviour. 157 ! ----------------------------------------------------------------------------- 133 158 zgrazd = zgraze2 * xpref2d * zcompadi * zdenom2 134 159 zgrazz = zgraze2 * xpref2z * zcompaz * zdenom2 … … 140 165 zgrazpof = zgrazpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn) 141 166 142 ! Mesozooplankton flux feeding on GOC 143 ! ---------------------------------- 167 ! Mesozooplankton flux feeding on GOC and POC. The feeding pressure 168 ! is proportional to the flux 169 ! ------------------------------------------------------------------ 144 170 zgrazffeg = grazflux * xstep * wsbio4(ji,jj,jk) & 145 171 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) & … … 150 176 & * (1. - nitrfac(ji,jj,jk)) 151 177 zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 152 !178 153 179 zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 154 ! Compute the proportion of filter feeders 180 ! Compute the proportion of filter feeders. It is assumed steady state. 181 ! --------------------------------------------------------------------- 155 182 zproport = (zgrazffep + zgrazffeg)/(rtrn + zgraztotc) 183 156 184 ! Compute fractionation of aggregates. It is assumed that 157 185 ! diatoms based aggregates are more prone to fractionation 158 186 ! since they are more porous (marine snow instead of fecal pellets) 187 ! ----------------------------------------------------------------- 159 188 zratio = trb(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn ) 160 189 zratio2 = zratio * zratio … … 164 193 zfracfe = zfrac * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 165 194 195 ! Flux feeding is multiplied by the fractional biomass of flux feeders 166 196 zgrazffep = zproport * zgrazffep 167 197 zgrazffeg = zproport * zgrazffeg … … 176 206 zgrazing(ji,jj,jk) = zgraztotc 177 207 178 ! Mesozooplankton efficiency 179 ! -------------------------- 208 ! Mesozooplankton efficiency. 209 ! We adopt a formulation proposed by Mitra et al. (2007) 210 ! The gross growth efficiency is controled by the most limiting nutrient. 211 ! Growth is also further decreased when the food quality is poor. This is currently 212 ! hard coded : it can be decreased by up to 50% (zepsherq) 213 ! GGE can also be decreased when food quantity is high, zepsherf (Montagnes and 214 ! Fulton, 2012) 215 ! ----------------------------------------------------------------------------------- 180 216 zgrasrat = ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 181 217 zgrasratn = ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) … … 189 225 ! --------------------------------------------- 190 226 zmortz = ztortz + zrespz 227 ! Mortality induced by the upper trophic levels, ztortz, is allocated 228 ! according to a infinite chain of predators (ANderson et al., 2013) 191 229 zmortzgoc = unass2 / ( 1. - epsher2 ) * ztortz + zrespz 192 230 tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz + zepsherv * zgraztotc … … 208 246 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zgrazfffg - zfracfe 209 247 ! Calcite remineralization due to zooplankton activity 248 ! part2 of the ingested calcite is dissolving in the acidic gut 210 249 zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + rtrn ) 211 250 zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal … … 218 257 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal + zprcaca ) 219 258 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 220 221 ! Correct the fluxes for the effect of DVM 222 ! A fixed fraction of mesozooplankton is assumed to migrate 259 260 ! Computation of total excretion and egestion by mesozoo. 223 261 ! --------------------------------------------------------- 224 262 zgrarem(ji,jj,jk) = zgraztotc * ( 1. - zepsherv - unass2 ) & … … 232 270 END DO 233 271 272 ! Computation of the effect of DVM by mesozooplankton 273 ! This part is only activated if ln_dvm_meso is set to true 274 ! The parameterization has been published in Gorgues et al. (2019). 275 ! ----------------------------------------------------------------- 234 276 IF (ln_dvm_meso) THEN 235 277 ALLOCATE( zgramigrem(jpi,jpj), zgramigref(jpi,jpj), zgramigpoc(jpi,jpj), zgramigpof(jpi,jpj) ) … … 253 295 END DO 254 296 255 297 ! Compute the amount of materials that will go into vertical migration 298 ! This fraction is sumed over the euphotic zone and is removed from 299 ! the fluxes driven by mesozooplankton in the euphotic zone. 300 ! -------------------------------------------------------------------- 256 301 DO jk = 1, jpk 257 302 DO jj = 1, jpj 258 303 DO ji = 1, jpi 259 260 ! Compute the amount of materials that will go into vertical migration261 304 zmigreltime = (1. - zstrn(ji,jj)) 262 305 IF ( gdept_n(ji,jj,jk) <= heup(ji,jj) ) THEN … … 279 322 END DO 280 323 324 ! The inorganic and organic fluxes induced by migrating organisms are added at the 325 ! the migration depth (corresponding indice is set by kmig) 326 ! -------------------------------------------------------------------------------- 281 327 DO jj = 1, jpj 282 328 DO ji = 1, jpi … … 296 342 DEALLOCATE( zstrn ) 297 343 344 ! End of the ln_dvm_meso part 298 345 ENDIF 299 346 … … 302 349 DO ji = 1, jpi 303 350 ! Update the arrays TRA which contain the biological sources and sinks 351 ! This only concerns the variables which are affected by DVM (inorganic 352 ! nutrients, DOC agands, and particulate organic carbon). 304 353 zgrarsig = zgrarem(ji,jj,jk) * sigma2 305 354 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarsig … … 324 373 END DO 325 374 ! 375 ! Write the output 326 376 IF( lk_iomput .AND. knt == nrdttrc ) THEN 327 377 ALLOCATE( zw3d(jpi,jpj,jpk) ) … … 364 414 !! ** Purpose : Initialization of mesozooplankton parameters 365 415 !! 366 !! ** Method : Read the namp ismes namelist and check the parameters416 !! ** Method : Read the namp4zmes namelist and check the parameters 367 417 !! called at the first timestep (nittrc000) 368 418 !! … … 383 433 ENDIF 384 434 ! 385 REWIND( numnatp_ref ) ! Namelist namp ismes in reference namelist : Pisces mesozooplankton435 REWIND( numnatp_ref ) ! Namelist namp4zmes in reference namelist : Pisces mesozooplankton 386 436 READ ( numnatp_ref, namp4zmes, IOSTAT = ios, ERR = 901) 387 437 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist' ) 388 REWIND( numnatp_cfg ) ! Namelist namp ismes in configuration namelist : Pisces mesozooplankton438 REWIND( numnatp_cfg ) ! Namelist namp4zmes in configuration namelist : Pisces mesozooplankton 389 439 READ ( numnatp_cfg, namp4zmes, IOSTAT = ios, ERR = 902 ) 390 440 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist' ) … … 427 477 !! temperature and chlorophylle following the parameterization 428 478 !! proposed by Bianchi et al. (2013) 429 !!430 !! ** input :431 479 !!---------------------------------------------------------------------- 432 480 INTEGER :: ji, jj, jk … … 447 495 ! Compute the averaged values of oxygen, temperature over the domain 448 496 ! 150m to 500 m depth. 449 ! 497 ! ------------------------------------------------------------------ 450 498 DO jk =1, jpk 451 499 DO jj = 1, jpj … … 462 510 END DO 463 511 512 ! Compute the difference between surface values and the mean values in the mesopelagic 513 ! domain 514 ! ------------------------------------------------------------------------------------ 464 515 DO jj = 1, jpj 465 516 DO ji = 1, jpi … … 472 523 ! Bianchi et al. (2013) 473 524 ! ------------------------------------------------------------------- 474 !475 525 DO jj = 1, jpj 476 526 DO ji = 1, jpi … … 484 534 ! Computation of the corresponding jk indice 485 535 ! ------------------------------------------ 486 !487 536 DO jk = 1, jpk-1 488 537 DO jj = 1, jpj … … 501 550 ! that it falls above the OMZ 502 551 ! ----------------------------------------------------------------------- 503 !504 552 DO ji =1, jpi 505 553 DO jj = 1, jpj … … 530 578 END FUNCTION p4z_meso_alloc 531 579 532 533 580 !!====================================================================== 534 581 END MODULE p4zmeso
Note: See TracChangeset
for help on using the changeset viewer.