Changeset 12759 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmicro.F90
- Timestamp:
- 2020-04-17T00:17:29+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmicro.F90
r12537 r12759 68 68 INTEGER :: ji, jj, jk 69 69 REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 70 REAL(wp) :: zgraze , zdenom, zdenom2 71 REAL(wp) :: zfact , zfood, zfoodlim, zbeta 70 REAL(wp) :: zgraze , zdenom, zdenom2, zfact, zfood, zfoodlim, zbeta 72 71 REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 73 72 REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 74 REAL(wp) :: zrespz, ztortz, zgrasrat , zgrasratn75 REAL(wp) :: zgraz p, zgrazm, zgrazsd76 REAL(wp) :: z grazmf, zgrazsf, zgrazpf73 REAL(wp) :: zrespz, ztortz, zgrasratf, zgrasratn 74 REAL(wp) :: zgraznc, zgrazpoc, zgrazdc, zgrazpof, zgrazdf, zgraznf 75 REAL(wp) :: zsigma, zdiffdn, ztmp1, ztmp2, ztmp3, ztmptot, zproport 77 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 78 77 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d, zzligprod … … 92 91 zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 93 92 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz 93 94 ! Proportion of nano and diatoms that are within the size range 95 ! accessible to microzooplankton. 96 zproport = min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 94 97 95 98 ! linear mortality of mesozooplankton … … 113 116 ! big for microzooplankton. 114 117 ! -------------------------------------------------------- 115 zcompadi = MIN( MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia)118 zcompadi = zproport * MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ) 116 119 zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 ) 117 120 zcompapoc = MAX( ( trb(ji,jj,jk,jppoc) - xthreshpoc ), 0.e0 ) … … 130 133 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 131 134 132 ! The grazing pressure on each prey is computed assuming passive switching. This 133 ! is equivalent to assuming that microzooplankton have an opportunistic feeding 134 ! behaviour. 135 ! ----------------------------------------------------------------------------- 136 zgrazp = zgraze * xprefn * zcompaph * zdenom2 137 zgrazm = zgraze * xprefc * zcompapoc * zdenom2 138 zgrazsd = zgraze * xprefd * zcompadi * zdenom2 139 140 zgrazpf = zgrazp * trb(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn) 141 zgrazmf = zgrazm * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 142 zgrazsf = zgrazsd * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 143 ! 144 zgraztotc = zgrazp + zgrazm + zgrazsd 145 zgraztotf = zgrazpf + zgrazsf + zgrazmf 146 zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk) 135 ! An active switching parameterization is used here. 136 ! We don't use the KTW parameterization proposed by 137 ! Vallina et al. because it tends to produce too steady biomass 138 ! composition and the variance of Chl is too low as it grazes 139 ! too strongly on winning organisms. We use a generalized 140 ! switching parameterization proposed by Morozov and 141 ! Petrovskii (2013) 142 ! ------------------------------------------------------------ 143 ! The width of the selection window is increased when preys 144 ! have low abundance, .i.e. zooplankton become less specific 145 ! to avoid starvation. 146 ! ---------------------------------------------------------- 147 zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 148 zsigma = 0.5 + 1.0*zsigma 149 zdiffdn = exp( -ABS(log(1.67 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 150 ztmp1 = xprefn * zcompaph * ( zcompaph + zdiffdn * zcompadi ) / ( 1.0 + zdiffdn ) 151 ztmp2 = xprefd * zcompadi * ( zdiffdn * zcompaph + zcompadi ) / ( 1.0 + zdiffdn ) 152 ztmp3 = xprefc * zcompapoc**2 153 ztmptot = ztmp1 + ztmp2 + ztmp3 + rtrn 154 ztmp1 = ztmp1 / ztmptot 155 ztmp2 = ztmp2 / ztmptot 156 ztmp3 = ztmp3 / ztmptot 157 158 zgraznc = zgraze * ztmp1 * zdenom 159 zgrazdc = zgraze * ztmp2 * zdenom 160 zgrazpoc = zgraze * ztmp3 * zdenom 161 162 zgraznf = zgraznc * trb(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn) 163 zgrazpof = zgrazpoc * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 164 zgrazdf = zgrazdc * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 165 ! 166 zgraztotc = zgraznc + zgrazpoc + zgrazdc 167 zgraztotf = zgraznf + zgrazdf + zgrazpof 168 zgraztotn = zgraznc * quotan(ji,jj,jk) + zgrazpoc + zgrazdc * quotad(ji,jj,jk) 147 169 148 170 ! Grazing by microzooplankton … … 157 179 ! Fulton, 2012) 158 180 ! ----------------------------------------------------------------------------- 159 zgrasrat 181 zgrasratf = ( zgraztotf + rtrn ) / ( zgraztotc + rtrn ) 160 182 zgrasratn = ( zgraztotn + rtrn ) / ( zgraztotc + rtrn ) 161 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3)183 zepshert = MIN( 1., zgrasratn, zgrasratf / ferat3) 162 184 zbeta = MAX(0., (epsher - epshermin) ) 163 185 zepsherf = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 164 186 zepsherq = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 ) 165 187 zepsherv = zepsherf * zepshert * zepsherq 166 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv )188 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasratf - ferat3 * zepsherv ) 167 189 zgrarem = zgraztotc * ( 1. - zepsherv - unass ) 168 190 zgrapoc = zgraztotc * unass … … 190 212 zmortz = ztortz + zrespz 191 213 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zmortz + zepsherv * zgraztotc 192 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraz p193 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgraz sd194 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgraz p* trb(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn)195 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgraz sd* trb(ji,jj,jk,jpdch)/(trb(ji,jj,jk,jpdia)+rtrn)196 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgraz sd* trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)197 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgraz sd* trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)198 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraz pf199 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgraz sf200 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgraz m214 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraznc 215 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazdc 216 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgraznc * trb(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn) 217 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazdc * trb(ji,jj,jk,jpdch)/(trb(ji,jj,jk,jpdia)+rtrn) 218 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazdc * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn) 219 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazdc * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn) 220 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf 221 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazdf 222 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazpoc 201 223 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 202 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgraz m203 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgraz mf224 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc 225 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazpof 204 226 ! 205 227 ! Calcite remineralization due to zooplankton activity 206 228 ! part of the ingested calcite is dissolving in the acidic gut 207 zprcaca = xfracal(ji,jj,jk) * zgraz p229 zprcaca = xfracal(ji,jj,jk) * zgraznc 208 230 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 209 231 !
Note: See TracChangeset
for help on using the changeset viewer.