Changeset 12377 for NEMO/trunk/src/TOP/PISCES/P4Z/p5zprod.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/p5zprod.F90
r12280 r12377 50 50 REAL(wp) :: texcretd !: 1 - excret2 51 51 52 !! * Substitutions 53 # include "do_loop_substitute.h90" 52 54 !!---------------------------------------------------------------------- 53 55 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 57 59 CONTAINS 58 60 59 SUBROUTINE p5z_prod( kt , knt )61 SUBROUTINE p5z_prod( kt , knt, Kbb, Kmm, Krhs ) 60 62 !!--------------------------------------------------------------------- 61 63 !! *** ROUTINE p5z_prod *** … … 68 70 ! 69 71 INTEGER, INTENT(in) :: kt, knt 72 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 70 73 ! 71 74 INTEGER :: ji, jj, jk … … 121 124 ! day length in hours 122 125 zstrn(:,:) = 0. 123 DO jj = 1, jpj 124 DO ji = 1, jpi 125 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 126 zargu = MAX( -1., MIN( 1., zargu ) ) 127 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 128 END DO 129 END DO 126 DO_2D_11_11 127 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 128 zargu = MAX( -1., MIN( 1., zargu ) ) 129 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 130 END_2D 130 131 131 132 ! Impact of the day duration on phytoplankton growth 132 DO jk = 1, jpkm1 133 DO jj = 1 ,jpj 134 DO ji = 1, jpi 135 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 136 zval = MAX( 1., zstrn(ji,jj) ) 137 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 138 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 139 ENDIF 140 zmxl_chl(ji,jj,jk) = zval / 24. 141 zmxl_fac(ji,jj,jk) = 1.5 * zval / ( 12. + zval ) 142 ENDIF 143 END DO 144 END DO 145 END DO 133 DO_3D_11_11( 1, jpkm1 ) 134 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 135 zval = MAX( 1., zstrn(ji,jj) ) 136 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 137 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 138 ENDIF 139 zmxl_chl(ji,jj,jk) = zval / 24. 140 zmxl_fac(ji,jj,jk) = 1.5 * zval / ( 12. + zval ) 141 ENDIF 142 END_3D 146 143 147 144 zprbio(:,:,:) = zprmaxn(:,:,:) * zmxl_fac(:,:,:) … … 154 151 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 155 152 156 DO jk = 1, jpkm1 157 DO jj = 1, jpj 158 DO ji = 1, jpi 159 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 160 ! Computation of the P-I slope for nanos and diatoms 161 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 162 zadap = xadap * ztn / ( 2.+ ztn ) 163 ! 164 zpislopeadn(ji,jj,jk) = pislopen * trb(ji,jj,jk,jpnch) & 165 & /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 166 zpislopeadp(ji,jj,jk) = pislopep * ( 1. + zadap * EXP( -0.25 * epico(ji,jj,jk) ) ) & 167 & * trb(ji,jj,jk,jppch) /( trb(ji,jj,jk,jppic) * 12. + rtrn) 168 zpislopeadd(ji,jj,jk) = pisloped * trb(ji,jj,jk,jpdch) & 169 & /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 170 ! 171 zpislopen = zpislopeadn(ji,jj,jk) / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 172 zpislopep = zpislopeadp(ji,jj,jk) / ( zprpic(ji,jj,jk) * rday * xlimpic(ji,jj,jk) + rtrn ) 173 zpisloped = zpislopeadd(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 174 175 ! Computation of production function for Carbon 176 ! --------------------------------------------- 177 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 178 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) ) ) 179 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 180 181 ! Computation of production function for Chlorophyll 182 ! ------------------------------------------------- 183 zpislopen = zpislopen * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 184 zpisloped = zpisloped * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 185 zpislopep = zpislopep * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 186 zprchln(ji,jj,jk) = zprmaxn(ji,jj,jk) * ( 1.- EXP( -zpislopen * enanom(ji,jj,jk) ) ) 187 zprchlp(ji,jj,jk) = zprmaxp(ji,jj,jk) * ( 1.- EXP( -zpislopep * epicom(ji,jj,jk) ) ) 188 zprchld(ji,jj,jk) = zprmaxd(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediatm(ji,jj,jk) ) ) 189 ENDIF 190 END DO 191 END DO 192 END DO 193 194 DO jk = 1, jpkm1 195 DO jj = 1, jpj 196 DO ji = 1, jpi 197 198 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 199 ! Si/C of diatoms 200 ! ------------------------ 201 ! Si/C increases with iron stress and silicate availability 202 ! Si/C is arbitrariliy increased for very high Si concentrations 203 ! to mimic the very high ratios observed in the Southern Ocean (silpot2) 204 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 205 zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 206 zsilfac = 3.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 207 zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 208 IF (gphit(ji,jj) < -30 ) THEN 209 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 210 ELSE 211 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 ) 212 ENDIF 213 zysopt(ji,jj,jk) = grosip * zlim * zsilfac * zsilfac2 214 ENDIF 215 END DO 216 END DO 217 END DO 153 DO_3D_11_11( 1, jpkm1 ) 154 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 155 ! Computation of the P-I slope for nanos and diatoms 156 ztn = MAX( 0., ts(ji,jj,jk,jp_tem,Kmm) - 15. ) 157 zadap = xadap * ztn / ( 2.+ ztn ) 158 ! 159 zpislopeadn(ji,jj,jk) = pislopen * tr(ji,jj,jk,jpnch,Kbb) & 160 & /( tr(ji,jj,jk,jpphy,Kbb) * 12. + rtrn) 161 zpislopeadp(ji,jj,jk) = pislopep * ( 1. + zadap * EXP( -0.25 * epico(ji,jj,jk) ) ) & 162 & * tr(ji,jj,jk,jppch,Kbb) /( tr(ji,jj,jk,jppic,Kbb) * 12. + rtrn) 163 zpislopeadd(ji,jj,jk) = pisloped * tr(ji,jj,jk,jpdch,Kbb) & 164 & /( tr(ji,jj,jk,jpdia,Kbb) * 12. + rtrn) 165 ! 166 zpislopen = zpislopeadn(ji,jj,jk) / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 167 zpislopep = zpislopeadp(ji,jj,jk) / ( zprpic(ji,jj,jk) * rday * xlimpic(ji,jj,jk) + rtrn ) 168 zpisloped = zpislopeadd(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 169 170 ! Computation of production function for Carbon 171 ! --------------------------------------------- 172 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 173 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) ) ) 174 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 175 176 ! Computation of production function for Chlorophyll 177 ! ------------------------------------------------- 178 zpislopen = zpislopen * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 179 zpisloped = zpisloped * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 180 zpislopep = zpislopep * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 181 zprchln(ji,jj,jk) = zprmaxn(ji,jj,jk) * ( 1.- EXP( -zpislopen * enanom(ji,jj,jk) ) ) 182 zprchlp(ji,jj,jk) = zprmaxp(ji,jj,jk) * ( 1.- EXP( -zpislopep * epicom(ji,jj,jk) ) ) 183 zprchld(ji,jj,jk) = zprmaxd(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediatm(ji,jj,jk) ) ) 184 ENDIF 185 END_3D 186 187 DO_3D_11_11( 1, jpkm1 ) 188 189 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 190 ! Si/C of diatoms 191 ! ------------------------ 192 ! Si/C increases with iron stress and silicate availability 193 ! Si/C is arbitrariliy increased for very high Si concentrations 194 ! to mimic the very high ratios observed in the Southern Ocean (silpot2) 195 zlim = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi1 ) 196 zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 197 zsilfac = 3.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 198 zsiborn = tr(ji,jj,jk,jpsil,Kbb) * tr(ji,jj,jk,jpsil,Kbb) * tr(ji,jj,jk,jpsil,Kbb) 199 IF (gphit(ji,jj) < -30 ) THEN 200 zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 201 ELSE 202 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 ) 203 ENDIF 204 zysopt(ji,jj,jk) = grosip * zlim * zsilfac * zsilfac2 205 ENDIF 206 END_3D 218 207 219 208 ! Sea-ice effect on production 220 DO jk = 1, jpkm1 221 DO jj = 1, jpj 222 DO ji = 1, jpi 223 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 224 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 225 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 226 zprnut(ji,jj,jk) = zprnut(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 227 END DO 228 END DO 229 END DO 209 DO_3D_11_11( 1, jpkm1 ) 210 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 211 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 212 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 213 zprnut(ji,jj,jk) = zprnut(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 214 END_3D 230 215 231 216 ! Computation of the various production terms of nanophytoplankton 232 DO jk = 1, jpkm1 233 DO jj = 1, jpj 234 DO ji = 1, jpi 235 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 236 ! production terms for nanophyto. 237 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 238 ! 239 zration = trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 240 zratiop = trb(ji,jj,jk,jppph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 241 zratiof = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 242 zprnutmax = zprnut(ji,jj,jk) * fvnuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpphy) * rfact2 243 ! Uptake of nitrogen 244 zrat = MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) ) 245 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 246 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) ) & 247 & / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 248 zpronewn(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xnanono3(ji,jj,jk) 249 zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 250 ! Uptake of phosphorus 251 zrat = MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 252 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 253 zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) 254 zpropo4n(ji,jj,jk) = zpropmax * xnanopo4(ji,jj,jk) 255 zprodopn(ji,jj,jk) = zpropmax * xnanodop(ji,jj,jk) 256 ! Uptake of iron 257 zrat = MIN( 1., zratiof / qfnmax ) 258 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 259 zprofmax = zprnutmax * qfnmax * zmax 260 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 3. - 2.4 * xlimnfe(ji,jj,jk) & 261 & / ( xlimnfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn & 262 & + xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) 263 ENDIF 264 END DO 265 END DO 266 END DO 217 DO_3D_11_11( 1, jpkm1 ) 218 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 219 ! production terms for nanophyto. 220 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tr(ji,jj,jk,jpphy,Kbb) * rfact2 221 ! 222 zration = tr(ji,jj,jk,jpnph,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) 223 zratiop = tr(ji,jj,jk,jppph,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) 224 zratiof = tr(ji,jj,jk,jpnfe,Kbb) / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) 225 zprnutmax = zprnut(ji,jj,jk) * fvnuptk(ji,jj,jk) / rno3 * tr(ji,jj,jk,jpphy,Kbb) * rfact2 226 ! Uptake of nitrogen 227 zrat = MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) ) 228 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 229 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) ) & 230 & / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 231 zpronewn(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xnanono3(ji,jj,jk) 232 zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 233 ! Uptake of phosphorus 234 zrat = MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 235 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 236 zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) 237 zpropo4n(ji,jj,jk) = zpropmax * xnanopo4(ji,jj,jk) 238 zprodopn(ji,jj,jk) = zpropmax * xnanodop(ji,jj,jk) 239 ! Uptake of iron 240 zrat = MIN( 1., zratiof / qfnmax ) 241 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 242 zprofmax = zprnutmax * qfnmax * zmax 243 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 3. - 2.4 * xlimnfe(ji,jj,jk) & 244 & / ( xlimnfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn & 245 & + xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) 246 ENDIF 247 END_3D 267 248 268 249 ! Computation of the various production terms of picophytoplankton 269 DO jk = 1, jpkm1 270 DO jj = 1, jpj 271 DO ji = 1, jpi 272 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 273 ! production terms for picophyto. 274 zprorcap(ji,jj,jk) = zprpic(ji,jj,jk) * xlimpic(ji,jj,jk) * trb(ji,jj,jk,jppic) * rfact2 275 ! 276 zration = trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) 277 zratiop = trb(ji,jj,jk,jpppi) / ( trb(ji,jj,jk,jppic) + rtrn ) 278 zratiof = trb(ji,jj,jk,jppfe) / ( trb(ji,jj,jk,jppic) + rtrn ) 279 zprnutmax = zprnut(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2 280 ! Uptake of nitrogen 281 zrat = MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 282 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 283 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) ) & 284 & / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 285 zpronewp(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xpicono3(ji,jj,jk) 286 zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) 287 ! Uptake of phosphorus 288 zrat = MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 289 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 290 zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) 291 zpropo4p(ji,jj,jk) = zpropmax * xpicopo4(ji,jj,jk) 292 zprodopp(ji,jj,jk) = zpropmax * xpicodop(ji,jj,jk) 293 ! Uptake of iron 294 zrat = MIN( 1., zratiof / qfpmax ) 295 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 296 zprofmax = zprnutmax * qfpmax * zmax 297 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 3. - 2.4 * xlimpfe(ji,jj,jk) & 298 & / ( xlimpfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn & 299 & + xpicono3(ji,jj,jk) + xpiconh4(ji,jj,jk) ) * (1. - xpicofer(ji,jj,jk) ) ) 300 ENDIF 301 END DO 302 END DO 303 END DO 250 DO_3D_11_11( 1, jpkm1 ) 251 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 252 ! production terms for picophyto. 253 zprorcap(ji,jj,jk) = zprpic(ji,jj,jk) * xlimpic(ji,jj,jk) * tr(ji,jj,jk,jppic,Kbb) * rfact2 254 ! 255 zration = tr(ji,jj,jk,jpnpi,Kbb) / ( tr(ji,jj,jk,jppic,Kbb) + rtrn ) 256 zratiop = tr(ji,jj,jk,jpppi,Kbb) / ( tr(ji,jj,jk,jppic,Kbb) + rtrn ) 257 zratiof = tr(ji,jj,jk,jppfe,Kbb) / ( tr(ji,jj,jk,jppic,Kbb) + rtrn ) 258 zprnutmax = zprnut(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * tr(ji,jj,jk,jppic,Kbb) * rfact2 259 ! Uptake of nitrogen 260 zrat = MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 261 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 262 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) ) & 263 & / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 264 zpronewp(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xpicono3(ji,jj,jk) 265 zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) 266 ! Uptake of phosphorus 267 zrat = MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 268 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 269 zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) 270 zpropo4p(ji,jj,jk) = zpropmax * xpicopo4(ji,jj,jk) 271 zprodopp(ji,jj,jk) = zpropmax * xpicodop(ji,jj,jk) 272 ! Uptake of iron 273 zrat = MIN( 1., zratiof / qfpmax ) 274 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 275 zprofmax = zprnutmax * qfpmax * zmax 276 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 3. - 2.4 * xlimpfe(ji,jj,jk) & 277 & / ( xlimpfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn & 278 & + xpicono3(ji,jj,jk) + xpiconh4(ji,jj,jk) ) * (1. - xpicofer(ji,jj,jk) ) ) 279 ENDIF 280 END_3D 304 281 305 282 ! Computation of the various production terms of diatoms 306 DO jk = 1, jpkm1 307 DO jj = 1, jpj 308 DO ji = 1, jpi 309 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 310 ! production terms for diatomees 311 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 312 ! Computation of the respiration term according to pahlow 313 ! & oschlies (2013) 314 ! 315 zration = trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 316 zratiop = trb(ji,jj,jk,jppdi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 317 zratiof = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 318 zprnutmax = zprnut(ji,jj,jk) * fvduptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpdia) * rfact2 319 ! Uptake of nitrogen 320 zrat = MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 321 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 322 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) ) & 323 & / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimdfe(ji,jj,jk) ) ) 324 zpronewd(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xdiatno3(ji,jj,jk) 325 zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) 326 ! Uptake of phosphorus 327 zrat = MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 328 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 329 zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) 330 zpropo4d(ji,jj,jk) = zpropmax * xdiatpo4(ji,jj,jk) 331 zprodopd(ji,jj,jk) = zpropmax * xdiatdop(ji,jj,jk) 332 ! Uptake of iron 333 zrat = MIN( 1., zratiof / qfdmax ) 334 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 335 zprofmax = zprnutmax * qfdmax * zmax 336 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 3. - 2.4 * xlimdfe(ji,jj,jk) & 337 & / ( xlimdfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn & 338 & + xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) 339 ENDIF 340 END DO 341 END DO 342 END DO 343 344 DO jk = 1, jpkm1 345 DO jj = 1, jpj 346 DO ji = 1, jpi 347 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 348 ! production terms for nanophyto. ( chlorophyll ) 349 znanotot = enanom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 350 zprod = rday * (zpronewn(ji,jj,jk) + zproregn(ji,jj,jk)) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 351 thetannm_n = MIN ( thetannm, ( thetannm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) & 352 & * (1. - 1.14 / 43.4 * 20.)) 353 zprochln = thetannm_n * zprod / ( zpislopeadn(ji,jj,jk) * znanotot + rtrn ) 354 zprochln = MAX(zprochln, chlcmin * 12. * zprorcan (ji,jj,jk) ) 355 ! production terms for picophyto. ( chlorophyll ) 356 zpicotot = epicom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 357 zprod = rday * (zpronewp(ji,jj,jk) + zproregp(ji,jj,jk)) * zprchlp(ji,jj,jk) * xlimpic(ji,jj,jk) 358 thetanpm_n = MIN ( thetanpm, ( thetanpm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) & 359 & * (1. - 1.14 / 43.4 * 20.)) 360 zprochlp = thetanpm_n * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 361 zprochlp = MAX(zprochlp, chlcmin * 12. * zprorcap(ji,jj,jk) ) 362 ! production terms for diatomees ( chlorophyll ) 363 zdiattot = ediatm(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 364 zprod = rday * (zpronewd(ji,jj,jk) + zproregd(ji,jj,jk)) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 365 thetandm_n = MIN ( thetandm, ( thetandm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) & 366 & * (1. - 1.14 / 43.4 * 20.)) 367 zprochld = thetandm_n * zprod / ( zpislopeadd(ji,jj,jk) * zdiattot + rtrn ) 368 zprochld = MAX(zprochld, chlcmin * 12. * zprorcad(ji,jj,jk) ) 369 ! Update the arrays TRA which contain the Chla sources and sinks 370 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln * texcretn 371 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld * texcretd 372 tra(ji,jj,jk,jppch) = tra(ji,jj,jk,jppch) + zprochlp * texcretp 373 ENDIF 374 END DO 375 END DO 376 END DO 283 DO_3D_11_11( 1, jpkm1 ) 284 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 285 ! production terms for diatomees 286 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tr(ji,jj,jk,jpdia,Kbb) * rfact2 287 ! Computation of the respiration term according to pahlow 288 ! & oschlies (2013) 289 ! 290 zration = tr(ji,jj,jk,jpndi,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 291 zratiop = tr(ji,jj,jk,jppdi,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 292 zratiof = tr(ji,jj,jk,jpdfe,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 293 zprnutmax = zprnut(ji,jj,jk) * fvduptk(ji,jj,jk) / rno3 * tr(ji,jj,jk,jpdia,Kbb) * rfact2 294 ! Uptake of nitrogen 295 zrat = MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 296 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 297 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) ) & 298 & / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimdfe(ji,jj,jk) ) ) 299 zpronewd(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xdiatno3(ji,jj,jk) 300 zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) 301 ! Uptake of phosphorus 302 zrat = MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 303 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 304 zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) 305 zpropo4d(ji,jj,jk) = zpropmax * xdiatpo4(ji,jj,jk) 306 zprodopd(ji,jj,jk) = zpropmax * xdiatdop(ji,jj,jk) 307 ! Uptake of iron 308 zrat = MIN( 1., zratiof / qfdmax ) 309 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 310 zprofmax = zprnutmax * qfdmax * zmax 311 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 3. - 2.4 * xlimdfe(ji,jj,jk) & 312 & / ( xlimdfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn & 313 & + xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) 314 ENDIF 315 END_3D 316 317 DO_3D_11_11( 1, jpkm1 ) 318 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 319 ! production terms for nanophyto. ( chlorophyll ) 320 znanotot = enanom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 321 zprod = rday * (zpronewn(ji,jj,jk) + zproregn(ji,jj,jk)) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 322 thetannm_n = MIN ( thetannm, ( thetannm / (1. - 1.14 / 43.4 *ts(ji,jj,jk,jp_tem,Kmm))) & 323 & * (1. - 1.14 / 43.4 * 20.)) 324 zprochln = thetannm_n * zprod / ( zpislopeadn(ji,jj,jk) * znanotot + rtrn ) 325 zprochln = MAX(zprochln, chlcmin * 12. * zprorcan (ji,jj,jk) ) 326 ! production terms for picophyto. ( chlorophyll ) 327 zpicotot = epicom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 328 zprod = rday * (zpronewp(ji,jj,jk) + zproregp(ji,jj,jk)) * zprchlp(ji,jj,jk) * xlimpic(ji,jj,jk) 329 thetanpm_n = MIN ( thetanpm, ( thetanpm / (1. - 1.14 / 43.4 *ts(ji,jj,jk,jp_tem,Kmm))) & 330 & * (1. - 1.14 / 43.4 * 20.)) 331 zprochlp = thetanpm_n * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 332 zprochlp = MAX(zprochlp, chlcmin * 12. * zprorcap(ji,jj,jk) ) 333 ! production terms for diatomees ( chlorophyll ) 334 zdiattot = ediatm(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 335 zprod = rday * (zpronewd(ji,jj,jk) + zproregd(ji,jj,jk)) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 336 thetandm_n = MIN ( thetandm, ( thetandm / (1. - 1.14 / 43.4 *ts(ji,jj,jk,jp_tem,Kmm))) & 337 & * (1. - 1.14 / 43.4 * 20.)) 338 zprochld = thetandm_n * zprod / ( zpislopeadd(ji,jj,jk) * zdiattot + rtrn ) 339 zprochld = MAX(zprochld, chlcmin * 12. * zprorcad(ji,jj,jk) ) 340 ! Update the arrays TRA which contain the Chla sources and sinks 341 tr(ji,jj,jk,jpnch,Krhs) = tr(ji,jj,jk,jpnch,Krhs) + zprochln * texcretn 342 tr(ji,jj,jk,jpdch,Krhs) = tr(ji,jj,jk,jpdch,Krhs) + zprochld * texcretd 343 tr(ji,jj,jk,jppch,Krhs) = tr(ji,jj,jk,jppch,Krhs) + zprochlp * texcretp 344 ENDIF 345 END_3D 377 346 378 347 ! Update the arrays TRA which contain the biological sources and sinks 379 DO jk = 1, jpkm1 380 DO jj = 1, jpj 381 DO ji =1 ,jpi 382 zprontot = zpronewn(ji,jj,jk) + zproregn(ji,jj,jk) 383 zproptot = zpronewp(ji,jj,jk) + zproregp(ji,jj,jk) 384 zprodtot = zpronewd(ji,jj,jk) + zproregd(ji,jj,jk) 385 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) & 386 & + excretp * zprorcap(ji,jj,jk) 387 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zpropo4n(ji,jj,jk) - zpropo4d(ji,jj,jk) & 388 & - zpropo4p(ji,jj,jk) 389 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk) & 390 & - zpronewp(ji,jj,jk) 391 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproregn(ji,jj,jk) - zproregd(ji,jj,jk) & 392 & - zproregp(ji,jj,jk) 393 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcretn & 394 & - zpsino3 * zpronewn(ji,jj,jk) - zpsinh4 * zproregn(ji,jj,jk) & 395 & - zrespn(ji,jj,jk) 396 zcroissn(ji,jj,jk) = tra(ji,jj,jk,jpphy) / rfact2/ (trb(ji,jj,jk,jpphy) + rtrn) 397 tra(ji,jj,jk,jpnph) = tra(ji,jj,jk,jpnph) + zprontot * texcretn 398 tra(ji,jj,jk,jppph) = tra(ji,jj,jk,jppph) + zpropo4n(ji,jj,jk) * texcretn & 399 & + zprodopn(ji,jj,jk) * texcretn 400 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcretn 401 tra(ji,jj,jk,jppic) = tra(ji,jj,jk,jppic) + zprorcap(ji,jj,jk) * texcretp & 402 & - zpsino3 * zpronewp(ji,jj,jk) - zpsinh4 * zproregp(ji,jj,jk) & 403 & - zrespp(ji,jj,jk) 404 zcroissp(ji,jj,jk) = tra(ji,jj,jk,jppic) / rfact2/ (trb(ji,jj,jk,jppic) + rtrn) 405 tra(ji,jj,jk,jpnpi) = tra(ji,jj,jk,jpnpi) + zproptot * texcretp 406 tra(ji,jj,jk,jpppi) = tra(ji,jj,jk,jpppi) + zpropo4p(ji,jj,jk) * texcretp & 407 & + zprodopp(ji,jj,jk) * texcretp 408 tra(ji,jj,jk,jppfe) = tra(ji,jj,jk,jppfe) + zprofep(ji,jj,jk) * texcretp 409 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd & 410 & - zpsino3 * zpronewd(ji,jj,jk) - zpsinh4 * zproregd(ji,jj,jk) & 411 & - zrespd(ji,jj,jk) 412 zcroissd(ji,jj,jk) = tra(ji,jj,jk,jpdia) / rfact2 / (trb(ji,jj,jk,jpdia) + rtrn) 413 tra(ji,jj,jk,jpndi) = tra(ji,jj,jk,jpndi) + zprodtot * texcretd 414 tra(ji,jj,jk,jppdi) = tra(ji,jj,jk,jppdi) + zpropo4d(ji,jj,jk) * texcretd & 415 & + zprodopd(ji,jj,jk) * texcretd 416 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 417 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 418 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) & 419 & + excretp * zprorcap(ji,jj,jk) 420 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + excretd * zprodtot + excretn * zprontot & 421 & + excretp * zproptot 422 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + excretd * zpropo4d(ji,jj,jk) + excretn * zpropo4n(ji,jj,jk) & 423 & - texcretn * zprodopn(ji,jj,jk) - texcretd * zprodopd(ji,jj,jk) + excretp * zpropo4p(ji,jj,jk) & 424 & - texcretp * zprodopp(ji,jj,jk) 425 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproregn(ji,jj,jk) + zproregd(ji,jj,jk) & 426 & + zproregp(ji,jj,jk) ) + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) & 427 & + zpronewd(ji,jj,jk) + zpronewp(ji,jj,jk) ) & 428 & - o2ut * ( zrespn(ji,jj,jk) + zrespp(ji,jj,jk) + zrespd(ji,jj,jk) ) 429 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 430 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 431 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 432 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk) & 433 & + zpsino3 * zpronewn(ji,jj,jk) + zpsinh4 * zproregn(ji,jj,jk) & 434 & + zpsino3 * zpronewp(ji,jj,jk) + zpsinh4 * zproregp(ji,jj,jk) & 435 & + zpsino3 * zpronewd(ji,jj,jk) + zpsinh4 * zproregd(ji,jj,jk) & 436 & + zrespn(ji,jj,jk) + zrespd(ji,jj,jk) + zrespp(ji,jj,jk) 437 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) & 438 & + zpronewp(ji,jj,jk) ) - rno3 * ( zproregn(ji,jj,jk) + zproregd(ji,jj,jk) & 439 & + zproregp(ji,jj,jk) ) 440 END DO 441 END DO 442 END DO 348 DO_3D_11_11( 1, jpkm1 ) 349 zprontot = zpronewn(ji,jj,jk) + zproregn(ji,jj,jk) 350 zproptot = zpronewp(ji,jj,jk) + zproregp(ji,jj,jk) 351 zprodtot = zpronewd(ji,jj,jk) + zproregd(ji,jj,jk) 352 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) & 353 & + excretp * zprorcap(ji,jj,jk) 354 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) - zpropo4n(ji,jj,jk) - zpropo4d(ji,jj,jk) & 355 & - zpropo4p(ji,jj,jk) 356 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk) & 357 & - zpronewp(ji,jj,jk) 358 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) - zproregn(ji,jj,jk) - zproregd(ji,jj,jk) & 359 & - zproregp(ji,jj,jk) 360 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zprorcan(ji,jj,jk) * texcretn & 361 & - zpsino3 * zpronewn(ji,jj,jk) - zpsinh4 * zproregn(ji,jj,jk) & 362 & - zrespn(ji,jj,jk) 363 zcroissn(ji,jj,jk) = tr(ji,jj,jk,jpphy,Krhs) / rfact2/ (tr(ji,jj,jk,jpphy,Kbb) + rtrn) 364 tr(ji,jj,jk,jpnph,Krhs) = tr(ji,jj,jk,jpnph,Krhs) + zprontot * texcretn 365 tr(ji,jj,jk,jppph,Krhs) = tr(ji,jj,jk,jppph,Krhs) + zpropo4n(ji,jj,jk) * texcretn & 366 & + zprodopn(ji,jj,jk) * texcretn 367 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) + zprofen(ji,jj,jk) * texcretn 368 tr(ji,jj,jk,jppic,Krhs) = tr(ji,jj,jk,jppic,Krhs) + zprorcap(ji,jj,jk) * texcretp & 369 & - zpsino3 * zpronewp(ji,jj,jk) - zpsinh4 * zproregp(ji,jj,jk) & 370 & - zrespp(ji,jj,jk) 371 zcroissp(ji,jj,jk) = tr(ji,jj,jk,jppic,Krhs) / rfact2/ (tr(ji,jj,jk,jppic,Kbb) + rtrn) 372 tr(ji,jj,jk,jpnpi,Krhs) = tr(ji,jj,jk,jpnpi,Krhs) + zproptot * texcretp 373 tr(ji,jj,jk,jpppi,Krhs) = tr(ji,jj,jk,jpppi,Krhs) + zpropo4p(ji,jj,jk) * texcretp & 374 & + zprodopp(ji,jj,jk) * texcretp 375 tr(ji,jj,jk,jppfe,Krhs) = tr(ji,jj,jk,jppfe,Krhs) + zprofep(ji,jj,jk) * texcretp 376 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) + zprorcad(ji,jj,jk) * texcretd & 377 & - zpsino3 * zpronewd(ji,jj,jk) - zpsinh4 * zproregd(ji,jj,jk) & 378 & - zrespd(ji,jj,jk) 379 zcroissd(ji,jj,jk) = tr(ji,jj,jk,jpdia,Krhs) / rfact2 / (tr(ji,jj,jk,jpdia,Kbb) + rtrn) 380 tr(ji,jj,jk,jpndi,Krhs) = tr(ji,jj,jk,jpndi,Krhs) + zprodtot * texcretd 381 tr(ji,jj,jk,jppdi,Krhs) = tr(ji,jj,jk,jppdi,Krhs) + zpropo4d(ji,jj,jk) * texcretd & 382 & + zprodopd(ji,jj,jk) * texcretd 383 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) + zprofed(ji,jj,jk) * texcretd 384 tr(ji,jj,jk,jpdsi,Krhs) = tr(ji,jj,jk,jpdsi,Krhs) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 385 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) & 386 & + excretp * zprorcap(ji,jj,jk) 387 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) + excretd * zprodtot + excretn * zprontot & 388 & + excretp * zproptot 389 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) + excretd * zpropo4d(ji,jj,jk) + excretn * zpropo4n(ji,jj,jk) & 390 & - texcretn * zprodopn(ji,jj,jk) - texcretd * zprodopd(ji,jj,jk) + excretp * zpropo4p(ji,jj,jk) & 391 & - texcretp * zprodopp(ji,jj,jk) 392 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) + o2ut * ( zproregn(ji,jj,jk) + zproregd(ji,jj,jk) & 393 & + zproregp(ji,jj,jk) ) + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) & 394 & + zpronewd(ji,jj,jk) + zpronewp(ji,jj,jk) ) & 395 & - o2ut * ( zrespn(ji,jj,jk) + zrespp(ji,jj,jk) + zrespd(ji,jj,jk) ) 396 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 397 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zfeup 398 tr(ji,jj,jk,jpsil,Krhs) = tr(ji,jj,jk,jpsil,Krhs) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 399 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk) & 400 & + zpsino3 * zpronewn(ji,jj,jk) + zpsinh4 * zproregn(ji,jj,jk) & 401 & + zpsino3 * zpronewp(ji,jj,jk) + zpsinh4 * zproregp(ji,jj,jk) & 402 & + zpsino3 * zpronewd(ji,jj,jk) + zpsinh4 * zproregd(ji,jj,jk) & 403 & + zrespn(ji,jj,jk) + zrespd(ji,jj,jk) + zrespp(ji,jj,jk) 404 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) & 405 & + zpronewp(ji,jj,jk) ) - rno3 * ( zproregn(ji,jj,jk) + zproregd(ji,jj,jk) & 406 & + zproregp(ji,jj,jk) ) 407 END_3D 443 408 ! 444 409 IF( ln_ligand ) THEN 445 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp 446 DO jk = 1, jpkm1 447 DO jj = 1, jpj 448 DO ji =1 ,jpi 449 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) + excretp * zprorcap(ji,jj,jk) 450 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 451 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 452 zpligprod1(ji,jj,jk) = zdocprod * ldocp 453 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet 454 END DO 455 END DO 456 END DO 410 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp 411 DO_3D_11_11( 1, jpkm1 ) 412 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) + excretp * zprorcap(ji,jj,jk) 413 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 414 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 415 zpligprod1(ji,jj,jk) = zdocprod * ldocp 416 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet 417 END_3D 457 418 ENDIF 458 419 … … 497 458 ENDIF 498 459 499 IF( ln_ctl) THEN ! print mean trends (used for debugging)460 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 500 461 WRITE(charout, FMT="('prod')") 501 462 CALL prt_ctl_trc_info(charout) 502 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)463 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 503 464 ENDIF 504 465 ! … … 525 486 !!---------------------------------------------------------------------- 526 487 527 REWIND( numnatp_ref )528 488 READ ( numnatp_ref, namp5zprod, IOSTAT = ios, ERR = 901) 529 489 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' ) 530 490 531 REWIND( numnatp_cfg )532 491 READ ( numnatp_cfg, namp5zprod, IOSTAT = ios, ERR = 902 ) 533 492 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.