- Timestamp:
- 2016-09-30T16:56:23+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r6848 r6966 33 33 !! * Shared module variables 34 34 LOGICAL , PUBLIC :: ln_newprod !: 35 REAL(wp), PUBLIC :: pislope !:36 REAL(wp), PUBLIC :: pislope 2!:35 REAL(wp), PUBLIC :: pislopen !: 36 REAL(wp), PUBLIC :: pisloped !: 37 37 REAL(wp), PUBLIC :: xadap !: 38 REAL(wp), PUBLIC :: excret !:39 REAL(wp), PUBLIC :: excret 2!:38 REAL(wp), PUBLIC :: excretn !: 39 REAL(wp), PUBLIC :: excretd !: 40 40 REAL(wp), PUBLIC :: bresp !: 41 41 REAL(wp), PUBLIC :: chlcnm !: … … 51 51 52 52 REAL(wp) :: r1_rday !: 1 / rday 53 REAL(wp) :: texcret !: 1 - excret54 REAL(wp) :: texcret 2 !: 1 - excret253 REAL(wp) :: texcretn !: 1 - excretn 54 REAL(wp) :: texcretd !: 1 - excretd 55 55 56 56 … … 78 78 INTEGER :: ji, jj, jk 79 79 REAL(wp) :: zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 80 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap 81 REAL(wp) :: zlim, zsilfac2, zsiborn, zprod, zproreg, zproreg2 82 REAL(wp) :: zmxltst, zmxlday, zmaxday, zdocprod 83 REAL(wp) :: zpislopen , zpislope2n 80 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsilfac2, zsiborn 81 REAL(wp) :: zprod, zproreg, zproreg2, zprochln, zprochld 82 REAL(wp) :: zmaxday, zdocprod, zpislopen, zpisloped 84 83 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup 85 84 REAL(wp) :: zfact 86 85 CHARACTER (len=25) :: charout 87 86 REAL(wp), POINTER, DIMENSION(:,: ) :: zstrn, zw2d 88 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead , zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d89 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca , zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd87 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d 88 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd 90 89 REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl 91 90 !!--------------------------------------------------------------------- … … 95 94 ! Allocate temporary workspace 96 95 CALL wrk_alloc( jpi, jpj, zstrn ) 97 CALL wrk_alloc( jpi, jpj, jpk, zpislopead , zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt )96 CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt ) 98 97 CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 99 CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 100 ! 101 zprorca (:,:,:) = 0._wp 102 zprorcad(:,:,:) = 0._wp 103 zprofed (:,:,:) = 0._wp 104 zprofen (:,:,:) = 0._wp 105 zprochln(:,:,:) = 0._wp 106 zprochld(:,:,:) = 0._wp 107 zpronew (:,:,:) = 0._wp 108 zpronewd(:,:,:) = 0._wp 109 zprdia (:,:,:) = 0._wp 110 zprbio (:,:,:) = 0._wp 111 zprdch (:,:,:) = 0._wp 112 zprnch (:,:,:) = 0._wp 113 zysopt (:,:,:) = 0._wp 98 CALL wrk_alloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 99 ! 100 zprorcan(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp 101 zprofen (:,:,:) = 0._wp ; zysopt (:,:,:) = 0._wp 102 zpronewn(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp ; zprdia (:,:,:) = 0._wp 103 zprbio (:,:,:) = 0._wp ; zprdch (:,:,:) = 0._wp ; zprnch (:,:,:) = 0._wp 114 104 115 105 ! Computation of the optimal production … … 144 134 zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * zval 145 135 ENDIF 146 zmxl_fac(ji,jj,jk) = ( 1. - exp( -0.2 * zmxl_fac(ji,jj,jk) ) ) * ( 1. - fr_i(ji,jj) )147 zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * ( 1. - fr_i(ji,jj) )136 zmxl_fac(ji,jj,jk) = ( 1. - exp( -0.2 * zmxl_fac(ji,jj,jk) ) ) 137 zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) 148 138 ENDIF 149 139 END DO … … 166 156 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 167 157 ! 168 zpislopead (ji,jj,jk) = pislope* ( 1.+ zadap * EXP( -0.25 * enano(ji,jj,jk) ) ) &158 zpislopeadn(ji,jj,jk) = pislopen * ( 1.+ zadap * EXP( -0.25 * enano(ji,jj,jk) ) ) & 169 159 & * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 170 160 ! 171 zpislopead 2(ji,jj,jk) = (pislope * zconctemp2 + pislope2* zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) &161 zpislopeadd(ji,jj,jk) = (pislopen * zconctemp2 + pisloped * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 172 162 & * trb(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 173 163 ENDIF … … 183 173 ! Computation of production function for Carbon 184 174 ! --------------------------------------------- 185 zpislopen = zpislopead(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) &175 zpislopen = zpislopeadn(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 186 176 & * zmxl_fac(ji,jj,jk) * rday + rtrn) 187 zpislope 2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) &177 zpisloped = zpislopeadd(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 188 178 & * zmxl_fac(ji,jj,jk) * rday + rtrn) 189 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen 190 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope 2n* ediat(ji,jj,jk) ) )179 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 180 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 191 181 ! Computation of production function for Chlorophyll 192 182 !-------------------------------------------------- 193 zpislopen = zpislopead(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn )194 zpislope 2n = zpislopead2(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn )195 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen 196 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope 2n* ediat(ji,jj,jk) ) )183 zpislopen = zpislopeadn(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 184 zpisloped = zpislopeadd(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 185 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 186 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 197 187 ENDIF 198 188 END DO … … 206 196 ! Computation of production function for Carbon 207 197 ! --------------------------------------------- 208 zpislopen = zpislopead(ji,jj,jk) / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn )209 zpislope 2n = zpislopead2(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn )210 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen 211 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope 2n* ediat(ji,jj,jk) ) )198 zpislopen = zpislopeadn(ji,jj,jk) / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 199 zpisloped = zpislopeadd(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 200 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 201 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 212 202 ! Computation of production function for Chlorophyll 213 203 !-------------------------------------------------- 214 zpislopen = zpislopen 215 zpislope 2n = zpislope2n* zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn )216 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen 217 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope 2n* ediat(ji,jj,jk) ) )204 zpislopen = zpislopen * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 205 zpisloped = zpisloped * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 206 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 207 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 218 208 ENDIF 219 209 END DO … … 221 211 END DO 222 212 ENDIF 223 224 213 225 214 ! Computation of a proxy of the N/C ratio … … 264 253 END DO 265 254 255 ! Sea-ice effect on production 256 257 DO jk = 1, jpkm1 258 zprbio(:,:,jk) = zprbio(:,:,jk) * ( 1. - fr_i(:,:) ) 259 zprdia(:,:,jk) = zprdia(:,:,jk) * ( 1. - fr_i(:,:) ) 260 END DO 261 262 266 263 ! Computation of the various production terms 267 264 !CDIR NOVERRCHK … … 272 269 DO ji = 1, jpi 273 270 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 274 ! production terms for nanophyto. 275 zprorca (ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2276 zpronew (ji,jj,jk) = zprorca(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn )271 ! production terms for nanophyto. (C) 272 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 273 zpronewn(ji,jj,jk) = zprorcan(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 277 274 ! 278 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 279 zratio = zratio / fecnm 275 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) 280 276 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 281 zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) &277 zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 282 278 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) ) & 283 279 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) ) & 284 280 & * zmax * trb(ji,jj,jk,jpphy) * rfact2 285 ! production terms for diatom ees281 ! production terms for diatoms (C) 286 282 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 287 283 zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 288 284 ! 289 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 290 zratio = zratio / fecdm 285 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) 291 286 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 292 zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) &287 zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 293 288 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) ) & 294 289 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) ) & … … 299 294 END DO 300 295 296 ! Computation of the chlorophyll production terms 301 297 DO jk = 1, jpkm1 302 298 DO jj = 1, jpj … … 305 301 ! production terms for nanophyto. ( chlorophyll ) 306 302 znanotot = enano(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 307 zprod = rday * zprorca (ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk)308 zprochln (ji,jj,jk) = chlcmin * 12. * zprorca(ji,jj,jk)309 zprochln (ji,jj,jk) = zprochln(ji,jj,jk)+ (chlcnm-chlcmin) * 12. * zprod / &310 & ( zpislopead (ji,jj,jk) * znanotot +rtrn)311 ! production terms for diatom ees ( chlorophyll )303 zprod = rday * zprorcan(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 304 zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 305 zprochln = zprochln + (chlcnm-chlcmin) * 12. * zprod / & 306 & ( zpislopeadn(ji,jj,jk) * znanotot +rtrn) 307 ! production terms for diatoms ( chlorophyll ) 312 308 zdiattot = ediat(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 313 309 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 314 zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 315 zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + (chlcdm-chlcmin) * 12. * zprod / & 316 & ( zpislopead2(ji,jj,jk) * zdiattot +rtrn ) 310 zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 311 zprochld = zprochld + (chlcdm-chlcmin) * 12. * zprod / & 312 & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 313 ! Update the arrays TRA which contain the Chla sources and sinks 314 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln * texcretn 315 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld * texcretd 317 316 ENDIF 318 317 END DO … … 324 323 DO jj = 1, jpj 325 324 DO ji =1 ,jpi 326 zproreg = zprorca(ji,jj,jk) - zpronew(ji,jj,jk) 327 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 328 zdocprod = excret2 * zprorcad(ji,jj,jk) + excret * zprorca(ji,jj,jk) 329 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 330 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk) 331 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 332 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorca(ji,jj,jk) * texcret 333 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * texcret 334 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcret 335 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcret2 336 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2 337 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2 338 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2 339 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod 340 zfeup = texcret * zprofen(ji,jj,jk) + texcret2 * zprofed(ji,jj,jk) 325 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 326 zproreg = zprorcan(ji,jj,jk) - zpronewn(ji,jj,jk) 327 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 328 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) 329 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 330 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk) 331 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 332 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcretn 333 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcretn 334 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd 335 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 336 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 337 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod 338 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 341 339 #if defined key_ligand 342 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet340 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 343 341 #endif 344 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & 345 & + ( o2ut + o2nit ) * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) 346 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 347 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 348 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 349 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 350 & - rno3 * ( zproreg + zproreg2 ) 351 END DO 342 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & 343 & + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 344 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 345 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 346 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 347 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 348 & - rno3 * ( zproreg + zproreg2 ) 349 ENDIF 350 END DO 352 351 END DO 353 352 END DO … … 356 355 ! Total primary production per year 357 356 IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. knt == nrdttrc ) ) & 358 & tpp = glob_sum( ( zprorca (:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) )357 & tpp = glob_sum( ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 359 358 360 359 IF( lk_iomput ) THEN … … 365 364 ! 366 365 IF( iom_use( "PPPHY" ) .OR. iom_use( "PPPHY2" ) ) THEN 367 zw3d(:,:,:) = zprorca 366 zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 368 367 CALL iom_put( "PPPHY" , zw3d ) 369 368 ! … … 372 371 ENDIF 373 372 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) ) THEN 374 zw3d(:,:,:) = zpronew 373 zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 375 374 CALL iom_put( "PPNEWN" , zw3d ) 376 375 ! … … 408 407 ENDIF 409 408 IF( iom_use( "TPP" ) ) THEN 410 zw3d(:,:,:) = ( zprorca (:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production409 zw3d(:,:,:) = ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production 411 410 CALL iom_put( "TPP" , zw3d ) 412 411 ENDIF 413 412 IF( iom_use( "TPNEW" ) ) THEN 414 zw3d(:,:,:) = ( zpronew (:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production413 zw3d(:,:,:) = ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production 415 414 CALL iom_put( "TPNEW" , zw3d ) 416 415 ENDIF … … 422 421 zw2d(:,:) = 0. 423 422 DO jk = 1, jpkm1 424 zw2d(:,:) = zw2d(:,:) + zprorca 423 zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano 425 424 ENDDO 426 425 CALL iom_put( "INTPPPHY" , zw2d ) … … 435 434 zw2d(:,:) = 0. 436 435 DO jk = 1, jpkm1 437 zw2d(:,:) = zw2d(:,:) + ( zprorca (:,:,jk) + zprorcad(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp436 zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 438 437 ENDDO 439 438 CALL iom_put( "INTPP" , zw2d ) … … 442 441 zw2d(:,:) = 0. 443 442 DO jk = 1, jpkm1 444 zw2d(:,:) = zw2d(:,:) + ( zpronew (:,:,jk) + zpronewd(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod443 zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod 445 444 ENDDO 446 445 CALL iom_put( "INTPNEW" , zw2d ) … … 468 467 IF( ln_diatrc ) THEN 469 468 zfact = 1.e+3 * rfact2r 470 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca 469 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorcan(:,:,:) * zfact * tmask(:,:,:) 471 470 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zfact * tmask(:,:,:) 472 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew 471 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronewn(:,:,:) * zfact * tmask(:,:,:) 473 472 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zfact * tmask(:,:,:) 474 473 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) … … 487 486 ! 488 487 CALL wrk_dealloc( jpi, jpj, zstrn ) 489 CALL wrk_dealloc( jpi, jpj, jpk, zpislopead , zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt )488 CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt ) 490 489 CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 491 CALL wrk_dealloc( jpi, jpj, jpk, zprorca , zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd )490 CALL wrk_dealloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 492 491 ! 493 492 IF( nn_timing == 1 ) CALL timing_stop('p4z_prod') … … 508 507 !!---------------------------------------------------------------------- 509 508 ! 510 NAMELIST/nampisprod/ pislope , pislope2, xadap, ln_newprod, bresp, excret, excret2, &509 NAMELIST/nampisprod/ pislopen, pisloped, xadap, ln_newprod, bresp, excretn, excretd, & 511 510 & chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 512 511 INTEGER :: ios ! Local integer output status for namelist read … … 526 525 WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod' 527 526 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 528 WRITE(numout,*) ' Enable new parame. of production (T/F) ln_newprod =', ln_newprod527 WRITE(numout,*) ' Enable new parame. of production (T/F) ln_newprod =', ln_newprod 529 528 WRITE(numout,*) ' mean Si/C ratio grosip =', grosip 530 WRITE(numout,*) ' P-I slope pislope =', pislope531 WRITE(numout,*) ' Acclimation factor to low light xadap =', xadap532 WRITE(numout,*) ' excretion ratio of nanophytoplankton excret =', excret533 WRITE(numout,*) ' excretion ratio of diatoms excret 2 =', excret2529 WRITE(numout,*) ' P-I slope pislopen =', pislopen 530 WRITE(numout,*) ' Acclimation factor to low light xadap =', xadap 531 WRITE(numout,*) ' excretion ratio of nanophytoplankton excretn =', excretn 532 WRITE(numout,*) ' excretion ratio of diatoms excretd =', excretd 534 533 IF( ln_newprod ) THEN 535 534 WRITE(numout,*) ' basal respiration in phytoplankton bresp =', bresp 536 535 WRITE(numout,*) ' Maximum Chl/C in phytoplankton chlcmin =', chlcmin 537 536 ENDIF 538 WRITE(numout,*) ' P-I slope for diatoms pislope 2 =', pislope2537 WRITE(numout,*) ' P-I slope for diatoms pisloped =', pisloped 539 538 WRITE(numout,*) ' Minimum Chl/C in nanophytoplankton chlcnm =', chlcnm 540 539 WRITE(numout,*) ' Minimum Chl/C in diatoms chlcdm =', chlcdm … … 544 543 ! 545 544 r1_rday = 1._wp / rday 546 texcret = 1._wp - excret547 texcret 2 = 1._wp - excret2545 texcretn = 1._wp - excretn 546 texcretd = 1._wp - excretd 548 547 tpp = 0._wp 549 548 !
Note: See TracChangeset
for help on using the changeset viewer.