Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zmeso.F90
- Timestamp:
- 2019-05-13T18:34:33+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zmeso.F90
r10367 r10975 51 51 CONTAINS 52 52 53 SUBROUTINE p4z_meso( kt, knt )53 SUBROUTINE p4z_meso( kt, knt, Kbb, Krhs ) 54 54 !!--------------------------------------------------------------------- 55 55 !! *** ROUTINE p4z_meso *** … … 60 60 !!--------------------------------------------------------------------- 61 61 INTEGER, INTENT(in) :: kt, knt ! ocean time step and ??? 62 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 62 63 ! 63 64 INTEGER :: ji, jj, jk … … 89 90 DO jj = 1, jpj 90 91 DO ji = 1, jpi 91 zcompam = MAX( ( tr b(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 )92 zcompam = MAX( ( tr(ji,jj,jk,jpmes,Kbb) - 1.e-9 ), 0.e0 ) 92 93 zfact = xstep * tgfunc2(ji,jj,jk) * zcompam 93 94 94 95 ! Respiration rates of both zooplankton 95 96 ! ------------------------------------- 96 zrespz = resrat2 * zfact * ( tr b(ji,jj,jk,jpmes) / ( xkmort + trb(ji,jj,jk,jpmes) ) &97 zrespz = resrat2 * zfact * ( tr(ji,jj,jk,jpmes,Kbb) / ( xkmort + tr(ji,jj,jk,jpmes,Kbb) ) & 97 98 & + 3. * nitrfac(ji,jj,jk) ) 98 99 … … 100 101 ! no real reason except that it seems to be more stable and may mimic predation 101 102 ! --------------------------------------------------------------- 102 ztortz = mzrat2 * 1.e6 * zfact * tr b(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) )103 ! 104 zcompadi = MAX( ( tr b(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 )105 zcompaz = MAX( ( tr b(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 )106 zcompapoc = MAX( ( tr b(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 )103 ztortz = mzrat2 * 1.e6 * zfact * tr(ji,jj,jk,jpmes,Kbb) * (1. - nitrfac(ji,jj,jk) ) 104 ! 105 zcompadi = MAX( ( tr(ji,jj,jk,jpdia,Kbb) - xthresh2dia ), 0.e0 ) 106 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - xthresh2zoo ), 0.e0 ) 107 zcompapoc = MAX( ( tr(ji,jj,jk,jppoc,Kbb) - xthresh2poc ), 0.e0 ) 107 108 ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 108 109 ! it is to predation by mesozooplankton 109 110 ! ------------------------------------------------------------------------------- 110 zcompaph = MAX( ( tr b(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) &111 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - xthresh2phy ), 0.e0 ) & 111 112 & * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) ) 112 113 … … 117 118 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 118 119 zdenom2 = zdenom / ( zfood + rtrn ) 119 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * tr b(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk))120 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jpmes,Kbb) * (1. - nitrfac(ji,jj,jk)) 120 121 121 122 zgrazd = zgraze2 * xpref2d * zcompadi * zdenom2 … … 124 125 zgrazpoc = zgraze2 * xpref2c * zcompapoc * zdenom2 125 126 126 zgraznf = zgrazn * tr b(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn)127 zgrazf = zgrazd * tr b(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn)128 zgrazpof = zgrazpoc * tr b(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn)127 zgraznf = zgrazn * tr(ji,jj,jk,jpnfe,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn) 128 zgrazf = zgrazd * tr(ji,jj,jk,jpdfe,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn) 129 zgrazpof = zgrazpoc * tr(ji,jj,jk,jpsfe,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn) 129 130 130 131 ! Mesozooplankton flux feeding on GOC 131 132 ! ---------------------------------- 132 133 zgrazffeg = grazflux * xstep * wsbio4(ji,jj,jk) & 133 & * tgfunc2(ji,jj,jk) * tr b(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) &134 & * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jpgoc,Kbb) * tr(ji,jj,jk,jpmes,Kbb) & 134 135 & * (1. - nitrfac(ji,jj,jk)) 135 zgrazfffg = zgrazffeg * tr b(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn)136 zgrazfffg = zgrazffeg * tr(ji,jj,jk,jpbfe,Kbb) / (tr(ji,jj,jk,jpgoc,Kbb) + rtrn) 136 137 zgrazffep = grazflux * xstep * wsbio3(ji,jj,jk) & 137 & * tgfunc2(ji,jj,jk) * tr b(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) &138 & * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jppoc,Kbb) * tr(ji,jj,jk,jpmes,Kbb) & 138 139 & * (1. - nitrfac(ji,jj,jk)) 139 zgrazfffp = zgrazffep * tr b(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn)140 zgrazfffp = zgrazffep * tr(ji,jj,jk,jpsfe,Kbb) / (tr(ji,jj,jk,jppoc,Kbb) + rtrn) 140 141 ! 141 142 zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg … … 145 146 ! diatoms based aggregates are more prone to fractionation 146 147 ! since they are more porous (marine snow instead of fecal pellets) 147 zratio = tr b(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn )148 zratio = tr(ji,jj,jk,jpgsi,Kbb) / ( tr(ji,jj,jk,jpgoc,Kbb) + rtrn ) 148 149 zratio2 = zratio * zratio 149 150 zfrac = zproport * grazflux * xstep * wsbio4(ji,jj,jk) & 150 & * tr b(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) &151 & * tr(ji,jj,jk,jpgoc,Kbb) * tr(ji,jj,jk,jpmes,Kbb) & 151 152 & * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) ) 152 zfracfe = zfrac * tr b(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn)153 zfracfe = zfrac * tr(ji,jj,jk,jpbfe,Kbb) / (tr(ji,jj,jk,jpgoc,Kbb) + rtrn) 153 154 154 155 zgrazffep = zproport * zgrazffep … … 181 182 ! Update the arrays TRA which contain the biological sources and sinks 182 183 zgrarsig = zgrarem2 * sigma2 183 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarsig184 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig185 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem2 - zgrarsig184 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zgrarsig 185 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zgrarsig 186 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zgrarem2 - zgrarsig 186 187 ! 187 188 IF( ln_ligand ) THEN 188 tr a(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem2 - zgrarsig) * ldocz189 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + (zgrarem2 - zgrarsig) * ldocz 189 190 zz2ligprod(ji,jj,jk) = (zgrarem2 - zgrarsig) * ldocz 190 191 ENDIF 191 192 ! 192 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig193 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer2193 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - o2ut * zgrarsig 194 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + zgrafer2 194 195 zfezoo2(ji,jj,jk) = zgrafer2 195 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig196 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig196 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zgrarsig 197 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * zgrarsig 197 198 198 199 zmortz = ztortz + zrespz 199 200 zmortzgoc = unass2 / ( 1. - epsher2 ) * ztortz + zrespz 200 tr a(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz + zepsherv * zgraztotc201 tr a(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd202 tr a(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zgrazz203 tr a(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgrazn204 tr a(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazn * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) + rtrn )205 tr a(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazd * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpdia) + rtrn )206 tr a(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn )207 tr a(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn )208 tr a(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf209 tr a(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf210 211 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac201 tr(ji,jj,jk,jpmes,Krhs) = tr(ji,jj,jk,jpmes,Krhs) - zmortz + zepsherv * zgraztotc 202 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) - zgrazd 203 tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) - zgrazz 204 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) - zgrazn 205 tr(ji,jj,jk,jpnch,Krhs) = tr(ji,jj,jk,jpnch,Krhs) - zgrazn * tr(ji,jj,jk,jpnch,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) 206 tr(ji,jj,jk,jpdch,Krhs) = tr(ji,jj,jk,jpdch,Krhs) - zgrazd * tr(ji,jj,jk,jpdch,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 207 tr(ji,jj,jk,jpdsi,Krhs) = tr(ji,jj,jk,jpdsi,Krhs) - zgrazd * tr(ji,jj,jk,jpdsi,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 208 tr(ji,jj,jk,jpgsi,Krhs) = tr(ji,jj,jk,jpgsi,Krhs) + zgrazd * tr(ji,jj,jk,jpdsi,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 209 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) - zgraznf 210 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) - zgrazf 211 212 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) - zgrazpoc - zgrazffep + zfrac 212 213 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 213 214 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc - zgrazffep 214 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac215 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 215 216 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zmortzgoc + zgrapoc2 216 217 consgoc(ji,jj,jk) = consgoc(ji,jj,jk) - zgrazffeg - zfrac 217 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe218 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg &218 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) - zgrazpof - zgrazfffp + zfracfe 219 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + ferat3 * zmortzgoc - zgrazfffg & 219 220 & + zgraztotf * unass2 - zfracfe 220 zfracal = tr b(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + rtrn )221 zfracal = tr(ji,jj,jk,jpcal,Kbb) / (tr(ji,jj,jk,jppoc,Kbb) + tr(ji,jj,jk,jpgoc,Kbb) + rtrn ) 221 222 zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal 222 223 ! calcite production … … 225 226 ! 226 227 zprcaca = part2 * zprcaca 227 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca228 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal + zprcaca )229 tr a(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca228 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zgrazcal - zprcaca 229 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2. * ( zgrazcal + zprcaca ) 230 tr(ji,jj,jk,jpcal,Krhs) = tr(ji,jj,jk,jpcal,Krhs) - zgrazcal + zprcaca 230 231 END DO 231 232 END DO … … 258 259 WRITE(charout, FMT="('meso')") 259 260 CALL prt_ctl_trc_info(charout) 260 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)261 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 261 262 ENDIF 262 263 !
Note: See TracChangeset
for help on using the changeset viewer.