Changeset 12377 for NEMO/trunk/src/TOP/PISCES/P4Z/p4zmeso.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/TOP/PISCES/P4Z/p4zmeso.F90
r12276 r12377 44 44 REAL(wp), PUBLIC :: grazflux !: mesozoo flux feeding rate 45 45 46 !! * Substitutions 47 # include "do_loop_substitute.h90" 46 48 !!---------------------------------------------------------------------- 47 49 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 51 53 CONTAINS 52 54 53 SUBROUTINE p4z_meso( kt, knt )55 SUBROUTINE p4z_meso( kt, knt, Kbb, Krhs ) 54 56 !!--------------------------------------------------------------------- 55 57 !! *** ROUTINE p4z_meso *** … … 60 62 !!--------------------------------------------------------------------- 61 63 INTEGER, INTENT(in) :: kt, knt ! ocean time step and ??? 64 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 62 65 ! 63 66 INTEGER :: ji, jj, jk … … 77 80 IF( ln_timing ) CALL timing_start('p4z_meso') 78 81 ! 79 DO jk = 1, jpkm1 80 DO jj = 1, jpj 81 DO ji = 1, jpi 82 zcompam = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 ) 83 zfact = xstep * tgfunc2(ji,jj,jk) * zcompam 84 85 ! Respiration rates of both zooplankton 86 ! ------------------------------------- 87 zrespz = resrat2 * zfact * ( trb(ji,jj,jk,jpmes) / ( xkmort + trb(ji,jj,jk,jpmes) ) & 88 & + 3. * nitrfac(ji,jj,jk) ) 89 90 ! Zooplankton mortality. A square function has been selected with 91 ! no real reason except that it seems to be more stable and may mimic predation 92 ! --------------------------------------------------------------- 93 ztortz = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk) ) 94 ! 95 zcompadi = MAX( ( trb(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 ) 96 zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 ) 97 zcompapoc = MAX( ( trb(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 ) 98 ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 99 ! it is to predation by mesozooplankton 100 ! ------------------------------------------------------------------------------- 101 zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) & 102 & * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) ) 103 104 ! Mesozooplankton grazing 105 ! ------------------------ 106 zfood = xpref2d * zcompadi + xpref2z * zcompaz + xpref2n * zcompaph + xpref2c * zcompapoc 107 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) 108 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 109 zdenom2 = zdenom / ( zfood + rtrn ) 110 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk)) 111 112 zgrazd = zgraze2 * xpref2d * zcompadi * zdenom2 113 zgrazz = zgraze2 * xpref2z * zcompaz * zdenom2 114 zgrazn = zgraze2 * xpref2n * zcompaph * zdenom2 115 zgrazpoc = zgraze2 * xpref2c * zcompapoc * zdenom2 116 117 zgraznf = zgrazn * trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn) 118 zgrazf = zgrazd * trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn) 119 zgrazpof = zgrazpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn) 120 121 ! Mesozooplankton flux feeding on GOC 122 ! ---------------------------------- 123 zgrazffeg = grazflux * xstep * wsbio4(ji,jj,jk) & 124 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) & 125 & * (1. - nitrfac(ji,jj,jk)) 126 zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 127 zgrazffep = grazflux * xstep * wsbio3(ji,jj,jk) & 128 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) & 129 & * (1. - nitrfac(ji,jj,jk)) 130 zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 131 ! 132 zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 133 ! Compute the proportion of filter feeders 134 zproport = (zgrazffep + zgrazffeg)/(rtrn + zgraztotc) 135 ! Compute fractionation of aggregates. It is assumed that 136 ! diatoms based aggregates are more prone to fractionation 137 ! since they are more porous (marine snow instead of fecal pellets) 138 zratio = trb(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn ) 139 zratio2 = zratio * zratio 140 zfrac = zproport * grazflux * xstep * wsbio4(ji,jj,jk) & 141 & * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) & 142 & * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) ) 143 zfracfe = zfrac * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn) 144 145 zgrazffep = zproport * zgrazffep 146 zgrazffeg = zproport * zgrazffeg 147 zgrazfffp = zproport * zgrazfffp 148 zgrazfffg = zproport * zgrazfffg 149 zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 150 zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) & 151 & + zgrazpoc + zgrazffep + zgrazffeg 152 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 153 154 ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 155 zgrazing2(ji,jj,jk) = zgraztotc 156 157 ! Mesozooplankton efficiency 158 ! -------------------------- 159 zgrasrat = ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 160 zgrasratn = ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) 161 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3) 162 zbeta = MAX(0., (epsher2 - epsher2min) ) 163 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 164 zepsherv = zepsherf * zepshert 165 166 zgrarem2 = zgraztotc * ( 1. - zepsherv - unass2 ) & 167 & + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz 168 zgrafer2 = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 169 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 170 zgrapoc2 = zgraztotc * unass2 171 172 ! Update the arrays TRA which contain the biological sources and sinks 173 zgrarsig = zgrarem2 * sigma2 174 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarsig 175 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig 176 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem2 - zgrarsig 177 ! 178 IF( ln_ligand ) THEN 179 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem2 - zgrarsig) * ldocz 180 zz2ligprod(ji,jj,jk) = (zgrarem2 - zgrarsig) * ldocz 181 ENDIF 182 ! 183 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 184 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer2 185 zfezoo2(ji,jj,jk) = zgrafer2 186 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 187 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig 188 189 zmortz = ztortz + zrespz 190 zmortzgoc = unass2 / ( 1. - epsher2 ) * ztortz + zrespz 191 tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz + zepsherv * zgraztotc 192 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd 193 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zgrazz 194 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgrazn 195 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazn * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) + rtrn ) 196 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazd * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpdia) + rtrn ) 197 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 198 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 199 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf 200 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 201 202 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 203 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 204 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc - zgrazffep 205 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 206 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zmortzgoc + zgrapoc2 207 consgoc(ji,jj,jk) = consgoc(ji,jj,jk) - zgrazffeg - zfrac 208 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 209 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 210 & + zgraztotf * unass2 - zfracfe 211 zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + rtrn ) 212 zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal 213 ! calcite production 214 zprcaca = xfracal(ji,jj,jk) * zgrazn 215 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 216 ! 217 zprcaca = part2 * zprcaca 218 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 219 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal + zprcaca ) 220 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 221 END DO 222 END DO 223 END DO 82 DO_3D_11_11( 1, jpkm1 ) 83 zcompam = MAX( ( tr(ji,jj,jk,jpmes,Kbb) - 1.e-9 ), 0.e0 ) 84 zfact = xstep * tgfunc2(ji,jj,jk) * zcompam 85 86 ! Respiration rates of both zooplankton 87 ! ------------------------------------- 88 zrespz = resrat2 * zfact * ( tr(ji,jj,jk,jpmes,Kbb) / ( xkmort + tr(ji,jj,jk,jpmes,Kbb) ) & 89 & + 3. * nitrfac(ji,jj,jk) ) 90 91 ! Zooplankton mortality. A square function has been selected with 92 ! no real reason except that it seems to be more stable and may mimic predation 93 ! --------------------------------------------------------------- 94 ztortz = mzrat2 * 1.e6 * zfact * tr(ji,jj,jk,jpmes,Kbb) * (1. - nitrfac(ji,jj,jk) ) 95 ! 96 zcompadi = MAX( ( tr(ji,jj,jk,jpdia,Kbb) - xthresh2dia ), 0.e0 ) 97 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - xthresh2zoo ), 0.e0 ) 98 zcompapoc = MAX( ( tr(ji,jj,jk,jppoc,Kbb) - xthresh2poc ), 0.e0 ) 99 ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone 100 ! it is to predation by mesozooplankton 101 ! ------------------------------------------------------------------------------- 102 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - xthresh2phy ), 0.e0 ) & 103 & * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) ) 104 105 ! Mesozooplankton grazing 106 ! ------------------------ 107 zfood = xpref2d * zcompadi + xpref2z * zcompaz + xpref2n * zcompaph + xpref2c * zcompapoc 108 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) 109 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 110 zdenom2 = zdenom / ( zfood + rtrn ) 111 zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jpmes,Kbb) * (1. - nitrfac(ji,jj,jk)) 112 113 zgrazd = zgraze2 * xpref2d * zcompadi * zdenom2 114 zgrazz = zgraze2 * xpref2z * zcompaz * zdenom2 115 zgrazn = zgraze2 * xpref2n * zcompaph * zdenom2 116 zgrazpoc = zgraze2 * xpref2c * zcompapoc * zdenom2 117 118 zgraznf = zgrazn * tr(ji,jj,jk,jpnfe,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn) 119 zgrazf = zgrazd * tr(ji,jj,jk,jpdfe,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn) 120 zgrazpof = zgrazpoc * tr(ji,jj,jk,jpsfe,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn) 121 122 ! Mesozooplankton flux feeding on GOC 123 ! ---------------------------------- 124 zgrazffeg = grazflux * xstep * wsbio4(ji,jj,jk) & 125 & * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jpgoc,Kbb) * tr(ji,jj,jk,jpmes,Kbb) & 126 & * (1. - nitrfac(ji,jj,jk)) 127 zgrazfffg = zgrazffeg * tr(ji,jj,jk,jpbfe,Kbb) / (tr(ji,jj,jk,jpgoc,Kbb) + rtrn) 128 zgrazffep = grazflux * xstep * wsbio3(ji,jj,jk) & 129 & * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jppoc,Kbb) * tr(ji,jj,jk,jpmes,Kbb) & 130 & * (1. - nitrfac(ji,jj,jk)) 131 zgrazfffp = zgrazffep * tr(ji,jj,jk,jpsfe,Kbb) / (tr(ji,jj,jk,jppoc,Kbb) + rtrn) 132 ! 133 zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 134 ! Compute the proportion of filter feeders 135 zproport = (zgrazffep + zgrazffeg)/(rtrn + zgraztotc) 136 ! Compute fractionation of aggregates. It is assumed that 137 ! diatoms based aggregates are more prone to fractionation 138 ! since they are more porous (marine snow instead of fecal pellets) 139 zratio = tr(ji,jj,jk,jpgsi,Kbb) / ( tr(ji,jj,jk,jpgoc,Kbb) + rtrn ) 140 zratio2 = zratio * zratio 141 zfrac = zproport * grazflux * xstep * wsbio4(ji,jj,jk) & 142 & * tr(ji,jj,jk,jpgoc,Kbb) * tr(ji,jj,jk,jpmes,Kbb) & 143 & * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) ) 144 zfracfe = zfrac * tr(ji,jj,jk,jpbfe,Kbb) / (tr(ji,jj,jk,jpgoc,Kbb) + rtrn) 145 146 zgrazffep = zproport * zgrazffep 147 zgrazffeg = zproport * zgrazffeg 148 zgrazfffp = zproport * zgrazfffp 149 zgrazfffg = zproport * zgrazfffg 150 zgraztotc = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 151 zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) & 152 & + zgrazpoc + zgrazffep + zgrazffeg 153 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 154 155 ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 156 zgrazing2(ji,jj,jk) = zgraztotc 157 158 ! Mesozooplankton efficiency 159 ! -------------------------- 160 zgrasrat = ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 161 zgrasratn = ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) 162 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3) 163 zbeta = MAX(0., (epsher2 - epsher2min) ) 164 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 165 zepsherv = zepsherf * zepshert 166 167 zgrarem2 = zgraztotc * ( 1. - zepsherv - unass2 ) & 168 & + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz 169 zgrafer2 = zgraztotc * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 170 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 171 zgrapoc2 = zgraztotc * unass2 172 173 ! Update the arrays TRA which contain the biological sources and sinks 174 zgrarsig = zgrarem2 * sigma2 175 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zgrarsig 176 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zgrarsig 177 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zgrarem2 - zgrarsig 178 ! 179 IF( ln_ligand ) THEN 180 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + (zgrarem2 - zgrarsig) * ldocz 181 zz2ligprod(ji,jj,jk) = (zgrarem2 - zgrarsig) * ldocz 182 ENDIF 183 ! 184 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - o2ut * zgrarsig 185 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + zgrafer2 186 zfezoo2(ji,jj,jk) = zgrafer2 187 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zgrarsig 188 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * zgrarsig 189 190 zmortz = ztortz + zrespz 191 zmortzgoc = unass2 / ( 1. - epsher2 ) * ztortz + zrespz 192 tr(ji,jj,jk,jpmes,Krhs) = tr(ji,jj,jk,jpmes,Krhs) - zmortz + zepsherv * zgraztotc 193 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) - zgrazd 194 tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) - zgrazz 195 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) - zgrazn 196 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 ) 197 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 ) 198 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 ) 199 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 ) 200 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) - zgraznf 201 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) - zgrazf 202 203 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) - zgrazpoc - zgrazffep + zfrac 204 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 205 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc - zgrazffep 206 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 207 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zmortzgoc + zgrapoc2 208 consgoc(ji,jj,jk) = consgoc(ji,jj,jk) - zgrazffeg - zfrac 209 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) - zgrazpof - zgrazfffp + zfracfe 210 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + ferat3 * zmortzgoc - zgrazfffg & 211 & + zgraztotf * unass2 - zfracfe 212 zfracal = tr(ji,jj,jk,jpcal,Kbb) / (tr(ji,jj,jk,jppoc,Kbb) + tr(ji,jj,jk,jpgoc,Kbb) + rtrn ) 213 zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal 214 ! calcite production 215 zprcaca = xfracal(ji,jj,jk) * zgrazn 216 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 217 ! 218 zprcaca = part2 * zprcaca 219 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zgrazcal - zprcaca 220 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2. * ( zgrazcal + zprcaca ) 221 tr(ji,jj,jk,jpcal,Krhs) = tr(ji,jj,jk,jpcal,Krhs) - zgrazcal + zprcaca 222 END_3D 224 223 ! 225 224 IF( lk_iomput .AND. knt == nrdttrc ) THEN 226 227 225 CALL iom_put( "PCAL" , prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) ! Calcite production 226 IF( iom_use("GRAZ2") ) THEN ! Total grazing of phyto by zooplankton 228 227 zgrazing2(:,:,jpk) = 0._wp ; CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 229 228 ENDIF … … 236 235 ENDIF 237 236 ! 238 IF( ln_ctl) THEN ! print mean trends (used for debugging)237 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 239 238 WRITE(charout, FMT="('meso')") 240 239 CALL prt_ctl_trc_info(charout) 241 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)240 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 242 241 ENDIF 243 242 ! … … 271 270 ENDIF 272 271 ! 273 REWIND( numnatp_ref )274 272 READ ( numnatp_ref, namp4zmes, IOSTAT = ios, ERR = 901) 275 273 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist' ) 276 277 REWIND( numnatp_cfg )278 274 READ ( numnatp_cfg, namp4zmes, IOSTAT = ios, ERR = 902 ) 279 275 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.