Changeset 5288 for branches/CNRS
- Timestamp:
- 2015-05-22T18:22:18+02:00 (9 years ago)
- Location:
- branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90
r5266 r5288 11 11 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 12 12 !! ! 2011-02 (J. Simeon, J.Orr ) update O2 solubility constants 13 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 13 14 !!---------------------------------------------------------------------- 14 15 #if defined key_pisces || defined key_pisces_quota 15 16 !!---------------------------------------------------------------------- 16 !! 'key_pisces ' PISCES bio-model17 !! 'key_pisces*' PISCES bio-model 17 18 !!---------------------------------------------------------------------- 18 19 !! p4z_che : Sea water chemistry computed following OCMIP protocol -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r5266 r5288 5 5 !!====================================================================== 6 6 !! History : 3.5 ! 2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code 7 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 7 8 !!---------------------------------------------------------------------- 8 9 #if defined key_pisces || defined key_pisces_quota 9 10 !!---------------------------------------------------------------------- 10 11 !! 'key_top' and TOP models 11 !! 'key_pisces ' PISCES bio-model12 !! 'key_pisces*' PISCES bio-model 12 13 !!---------------------------------------------------------------------- 13 14 !! p4z_fechem : Compute remineralization/scavenging of iron -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
r5266 r5288 10 10 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 11 11 !! ! 2011-02 (J. Simeon, J. Orr) Include total atm P correction 12 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 12 13 !!---------------------------------------------------------------------- 13 14 #if defined key_pisces || defined key_pisces_quota 14 15 !!---------------------------------------------------------------------- 15 !! 'key_pisces 'PISCES bio-model16 !! 'key_pisces*' PISCES bio-model 16 17 !!---------------------------------------------------------------------- 17 18 !! p4z_flx : CALCULATES GAS EXCHANGE AND CHEMISTRY AT SEA SURFACE -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90
r5266 r5288 6 6 !! History : 1.0 ! 2004-03 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_pisces || defined key_pisces_quota 10 11 !!---------------------------------------------------------------------- 11 !! 'key_pisces ' PISCES bio-model12 !! 'key_pisces*' PISCES bio-model 12 13 !!---------------------------------------------------------------------- 13 14 !! p4z_int : interpolation and computation of various accessory fields -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r5266 r5288 11 11 !! ! 2011-02 (J. Simeon, J. Orr) Calcon salinity dependence 12 12 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improvment of calcite dissolution 13 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 13 14 !!---------------------------------------------------------------------- 14 15 #if defined key_pisces || defined key_pisces_quota 15 16 !!---------------------------------------------------------------------- 16 !! 'key_pisces ' PISCES bio-model17 !! 'key_pisces*' PISCES bio-model 17 18 !!---------------------------------------------------------------------- 18 19 !! p4z_lys : Compute the CaCO3 dissolution -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r5266 r5288 8 8 !! 3.2 ! 2009-04 (C. Ethe, G. Madec) optimisation 9 9 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improve light availability of nano & diat 10 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 10 11 !!---------------------------------------------------------------------- 11 12 #if defined key_pisces || defined key_pisces_quota … … 218 219 neln(:,:) = 1 ! ------------------------ 219 220 heup(:,:) = 300. 221 heup_01(:,:) = 300. 220 222 221 223 DO jk = 2, nksrp 222 224 DO jj = 1, jpj 223 225 DO ji = 1, jpi 224 IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.0 043* qsr(ji,jj) ) THEN226 IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.01 * parlux * qsr(ji,jj) ) THEN 225 227 neln(ji,jj) = jk+1 ! Euphotic level : 1rst T-level strictly below Euphotic layer 226 228 ! ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 227 229 heup(ji,jj) = fsdepw(ji,jj,jk+1) ! Euphotic layer depth 228 230 ENDIF 231 IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.1 ) THEN 232 heup_01(ji,jj) = fsdepw(ji,jj,jk+1) ! Absolute euphotic layer depth 233 ENDIF 229 234 END DO 230 235 END DO 231 236 END DO 232 237 233 heup(:,:) = MIN( 300., heup(:,:) ) 238 heup(:,:) = MIN( 300., heup(:,:) ) 239 heup_01(:,:) = MIN( 300., heup_01(:,:) ) 234 240 235 241 ! !* mean light over the mixed layer … … 284 290 IF( lk_iomput ) THEN 285 291 IF( jnt == nrdttrc ) THEN 286 CALL iom_put( "Heup", heup (:,: ) * tmask(:,:,1) ) ! euphotic layer deptht292 CALL iom_put( "Heup", heup_01(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 287 293 CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 288 294 ENDIF -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zbio.F90
r5285 r5288 6 6 !! History : 1.0 ! 2004 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3. 0 ! 2015-05 (O. Aumont) PISCES QUOTA8 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 9 9 !!---------------------------------------------------------------------- 10 10 #if defined key_pisces_quota … … 82 82 CALL p4z_opt ( kt, jnt ) ! Optic: PAR in the water column 83 83 CALL p5z_sink ( kt, jnt ) ! vertical flux of particulate organic matter 84 DO jk = 1, jpk85 DO jj = 1, jpj86 DO ji = 1, jpi87 IF (mig(ji) == 72 .and. mjg(jj) == 74 .and. jk == 5) THEN88 DO jn = 1, jptra89 write(0,*) 'plante ',trn(ji,jj,jk,jn)*1E690 END DO91 ENDIF92 END DO93 END DO94 END DO95 84 CALL p4z_fechem(kt, jnt ) ! Iron chemistry/scavenging 96 85 CALL p5z_lim ( kt, jnt ) ! co-limitations by the various nutrients -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zlim.F90
r5266 r5288 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !! 3.4 ! 2011-04 (O. Aumont, C. Ethe) Limitation for iron modelled in quota 9 !! 3.6 ! 2015-0 4 (O. Aumont) variable stoichiometry9 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 10 10 !!---------------------------------------------------------------------- 11 11 #if defined key_pisces_quota … … 476 476 zpsino3 = 2.3 * rno3 477 477 zpsinh4 = 1.8 * rno3 478 ! zpsino3 = 1.1 * rno3479 ! zpsinh4 = 0.6 * rno3480 478 zpsiuptk = 2.3 * rno3 481 479 -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90
r5266 r5288 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Quota model for iron 9 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 9 10 !!---------------------------------------------------------------------- 10 11 #if defined key_pisces_quota … … 47 48 REAL(wp), PUBLIC :: mzrat2 !: microzooplankton mortality rate 48 49 REAL(wp), PUBLIC :: grazrat2 !: maximal mesozoo grazing rate 49 REAL(wp), PUBLIC :: xkgraz2 !: non assimilated fraction of P by mesozoo 50 REAL(wp), PUBLIC :: unass2c 51 REAL(wp), PUBLIC :: unass2n 52 REAL(wp), PUBLIC :: unass2p 50 REAL(wp), PUBLIC :: xkgraz2 !: non assimilated fraction of P by mesozoo 51 REAL(wp), PUBLIC :: unass2c !: Efficicency of mesozoo growth 52 REAL(wp), PUBLIC :: unass2n !: Efficicency of mesozoo growth 53 REAL(wp), PUBLIC :: unass2p !: Efficicency of mesozoo growth 53 54 REAL(wp), PUBLIC :: epsher2 !: half sturation constant for grazing 2 55 REAL(wp), PUBLIC :: ssigma2 !: Fraction excreted as semi-labile DOM 56 REAL(wp), PUBLIC :: srespir2 !: Active respiration 54 57 REAL(wp), PUBLIC :: grazflux !: mesozoo flux feeding rate 55 58 … … 79 82 REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 80 83 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf 81 REAL(wp) :: z excess, zgradoc, zgradon, zgradop84 REAL(wp) :: zgradoc, zgradon, zgradop, zgratmp, zgradoct, zgradont, zgrafert, zgradopt 82 85 REAL(wp) :: zgrapoc, zgrapon, zgrapop, zgrapof, zprcaca, zmortz 83 REAL(wp) :: z grarem, zgraren, zgrarep, zgrafer86 REAL(wp) :: zexcess, zgrarem, zgraren, zgrarep, zgrafer 84 87 REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf 85 88 REAL(wp) :: ztmp1, ztmp2, ztmp3, ztmp4, ztmp5, ztmptot … … 265 268 zbasresb = MAX(0., zrespz - zexcess) 266 269 zbasresi = zexcess + MIN(0., zrespz - zexcess) 267 zrespirc = 0.2 * zepsherv * zgraztotc + zbasresb270 zrespirc = srespir2 * zepsherv * zgraztotc + zbasresb 268 271 269 272 ! Voiding of the excessive elements as organic matter 270 273 ! -------------------------------------------------------- 271 zgradoc = (1. - unass2c - zepsherv) * zgraztotc - zbasresi272 zgradon = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc273 zgradop = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc274 zgrafer = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc274 zgradoct = (1. - unass2c - zepsherv) * zgraztotc - zbasresi 275 zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc 276 zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc 277 zgrafert = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc 275 278 ztmp1 = ( 1. - epsher2 - unass2c ) /( 1. - 0.8 * epsher2 ) * ztortz 276 zgradoc = zgradoc + ztmp1277 zgradon = zgradon + no3rat3 * ztmp1278 zgradop = zgradop + po4rat3 * ztmp1279 zgra fer = zgrafer + ferat3 * ztmp1280 zgrarem = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz281 zgraren = no3rat3 * zgra rem282 zgrarep = po4rat3 * zgra rem283 zgrafer = zgrafer + ferat3 * zgrarem279 zgradoc = (zgradoct + ztmp1) * ssigma2 280 zgradon = (zgradont + no3rat3 * ztmp1) * ssigma2 281 zgradop = (zgradopt + po4rat3 * ztmp1) * ssigma2 282 zgratmp = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz 283 zgrarem = zgratmp + ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 284 zgraren = no3rat3 * zgratmp + ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 285 zgrarep = po4rat3 * zgratmp + ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 286 zgrafer = zgrafert + ferat3 * ( ztmp1 + zgratmp ) 284 287 285 288 ! Defecation as a result of non assimilated products … … 302 305 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon 303 306 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop 304 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * (zgrare n + zrespirn)307 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * (zgrarem + zrespirc) 305 308 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 306 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc 309 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc + zgrarem 307 310 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * (zgraren + zrespirn) 308 311 tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) + zepsherv * zgraztotc - zrespirc & … … 349 352 zprcaca = part2 * zprcaca 350 353 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 351 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal +zprcaca )354 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal - zprcaca ) 352 355 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 353 356 END DO … … 389 392 NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xpref2c, xpref2p, xpref2z, xpref2m, & 390 393 & xpref2d, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 391 & xthresh2mes, xthresh2, xkgraz2, epsher2, unass2c, &392 & unass2n, unass2p, grazflux394 & xthresh2mes, xthresh2, xkgraz2, epsher2, ssigma2, unass2c, & 395 & unass2n, unass2p, srespir2, grazflux 393 396 394 397 INTEGER :: ios ! Local integer output status for namelist read … … 428 431 WRITE(numout,*) ' C egested fraction of food by mesozoo unass2p =', unass2p 429 432 WRITE(numout,*) ' Efficicency of Mesozoo growth epsher2 =', epsher2 430 WRITE(numout,*) ' half sturation constant for grazing 2 xkgraz2 =', xkgraz2 433 WRITE(numout,*) ' Fraction excreted as semi-labile DOM ssigma2 =', ssigma2 434 WRITE(numout,*) ' Active respiration srespir2 =', srespir2 435 WRITE(numout,*) ' half sturation constant for grazing 2 xkgraz2 =', xkgraz2 431 436 ENDIF 432 437 -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmicro.F90
r5266 r5288 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Quota model for iron 9 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 9 10 !!---------------------------------------------------------------------- 10 11 #if defined key_pisces_quota … … 47 48 REAL(wp), PUBLIC :: mzrat !: microzooplankton mortality rate 48 49 REAL(wp), PUBLIC :: grazrat !: maximal microzoo grazing rate 49 REAL(wp), PUBLIC :: xkgraz !: non assimilated fraction of P by microzoo 50 REAL(wp), PUBLIC :: xkgraz !: non assimilated fraction of P by microzoo 50 51 REAL(wp), PUBLIC :: unassc !: Efficicency of microzoo growth 51 52 REAL(wp), PUBLIC :: unassn !: Efficicency of microzoo growth 52 53 REAL(wp), PUBLIC :: unassp !: Efficicency of microzoo growth 53 54 REAL(wp), PUBLIC :: epsher !: half sturation constant for grazing 1 55 REAL(wp), PUBLIC :: srespir !: half sturation constant for grazing 1 56 REAL(wp), PUBLIC :: ssigma !: Fraction excreted as semi-labile DOM 54 57 55 58 … … 81 84 REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 82 85 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf 83 REAL(wp) :: zexcess, zgradoc, zgradon, zgradop, zgrafer 86 REAL(wp) :: zgradoc, zgradon, zgradop, zgrafer, zgradoct, zgradont, zgradopt, zgrafert 87 REAL(wp) :: zexcess, zgraren, zgrarep, zgrarem 84 88 REAL(wp) :: zgrapoc, zgrapon, zgrapop, zgrapof, zprcaca, zmortz 85 89 REAL(wp) :: zrespz, ztortz, zgrasratf, zgrasratn, zgrasratp … … 200 204 zbasresb = MAX(0., zrespz - zexcess) 201 205 zbasresi = zexcess + MIN(0., zrespz - zexcess) 202 zrespirc = 0.2* zepsherv * zgraztotc + zbasresb206 zrespirc = srespir * zepsherv * zgraztotc + zbasresb 203 207 204 208 ! Voiding of the excessive elements as DOM 205 209 ! ---------------------------------------- 206 zgradoc = (1. - unassc - zepsherv) * zgraztotc - zbasresi 207 zgradon = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc 208 zgradop = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc 209 zgrafer = (1. - unassc) * zgraztotf - zepsherv * ferat3 * zgraztotc 210 zgradoct = (1. - unassc - zepsherv) * zgraztotc - zbasresi 211 zgradont = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc 212 zgradopt = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc 213 zgrafert = (1. - unassc) * zgraztotf - zepsherv * ferat3 * zgraztotc 214 zgradoc = zgradoct * ssigma 215 zgradon = zgradont * ssigma 216 zgradop = zgradopt * ssigma 217 zgrarem = (1.0 - ssigma) * zgradoct 218 zgraren = (1.0 - ssigma) * zgradont 219 zgrarep = (1.0 - ssigma) * zgradopt 220 zgrafer = zgrafert 210 221 211 222 ! Defecation as a result of non assimilated products … … 218 229 ! Update of the TRA arrays 219 230 ! ------------------------ 220 zrespirn = zrespirc * no3rat3 231 zrespirn = zrespirc * no3rat3 221 232 zrespirp = zrespirc * po4rat3 222 233 zgrafer = zgrafer + zrespirc * ferat3 223 234 224 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zrespirp 225 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zrespirn 235 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zrespirp + zgrarep 236 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zrespirn + zgraren 226 237 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc 227 238 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon 228 239 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop 229 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zrespirc240 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * ( zrespirc + zgrarem ) 230 241 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 231 242 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc & … … 261 272 ! 262 273 zprcaca = part * zprcaca 263 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc - zprcaca274 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc + zgrarem - zprcaca 264 275 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 265 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + rno3 * zrespirn+ zprcaca276 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + rno3 * ( zrespirn + zgraren ) + zprcaca 266 277 #if defined key_kriest 267 278 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortz * xkr_dmicro & … … 307 318 & xprefp, xprefd, xprefz, xthreshdia, xthreshphy, & 308 319 & xthreshpic, xthreshpoc, xthreshzoo, xthresh, xkgraz, & 309 & epsher, unassc, unassn, unassp320 & epsher, ssigma, srespir, unassc, unassn, unassp 310 321 311 322 INTEGER :: ios ! Local integer output status for namelist read … … 343 354 WRITE(numout,*) ' P egested fraction of fodd by microzoo unassp =', unassp 344 355 WRITE(numout,*) ' Efficicency of microzoo growth epsher =', epsher 356 WRITE(numout,*) ' Fraction excreted as semi-labile DOM ssigma =', ssigma 357 WRITE(numout,*) ' Active respiration srespir =', srespir 345 358 WRITE(numout,*) ' half sturation constant for grazing 1 xkgraz =', xkgraz 346 359 ENDIF -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmort.F90
r5266 r5288 6 6 !! History : 1.0 ! 2002 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_pisces_quota … … 338 339 WRITE(numout,*) ' quadratic mortality of phytoplankton wchl =', wchl 339 340 WRITE(numout,*) ' quadratic mortality of picophyto. wchlp =', wchlp 340 WRITE(numout,*) ' maximum quadratic mortality of diatomswchld =', wchld341 WRITE(numout,*) ' maximum quadratic mortality of diatomswchldm =', wchldm342 WRITE(numout,*) ' phytoplankton mortality ratemprat =', mprat341 WRITE(numout,*) ' quadratic mortality of diatoms wchld =', wchld 342 WRITE(numout,*) ' Additional quadratic mortality of diatoms wchldm =', wchldm 343 WRITE(numout,*) ' nanophyto. mortality rate mprat =', mprat 343 344 WRITE(numout,*) ' picophyto. mortality rate mpratp =', mpratp 344 345 WRITE(numout,*) ' Diatoms mortality rate mprat2 =', mprat2 -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90
r5266 r5288 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !! 3.4 ! 2011-05 (O. Aumont, C. Ethe) New parameterization of light limitation 9 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 9 10 !!---------------------------------------------------------------------- 10 11 #if defined key_pisces_quota … … 40 41 REAL(wp), PUBLIC :: excret2 !: 41 42 REAL(wp), PUBLIC :: bresp !: 42 REAL(wp), PUBLIC :: chlcpm!:43 REAL(wp), PUBLIC :: chlcnm!:44 REAL(wp), PUBLIC :: chlcdm!:43 REAL(wp), PUBLIC :: thetanpm !: 44 REAL(wp), PUBLIC :: thetannm !: 45 REAL(wp), PUBLIC :: thetandm !: 45 46 REAL(wp), PUBLIC :: chlcmin !: 46 47 REAL(wp), PUBLIC :: grosip !: 48 REAL(wp), PUBLIC :: zlimmxln !: 49 REAL(wp), PUBLIC :: zlimmxlp !: 50 REAL(wp), PUBLIC :: zlimmxld !: 47 51 48 52 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prmaxn !: optimal production = f(temperature) … … 84 88 REAL(wp) :: zlim, zsilfac2, zsiborn, zprod, zprontot, zproptot, zprodtot 85 89 REAL(wp) :: zmxltst, zmxlday, zprnutmax 86 REAL(wp) :: zpislopen, zpislopep, zpislope2n , zpsichl87 REAL(wp) :: zrum, zcodel, zargu, zval , thetannm, thetanpm, thetandm90 REAL(wp) :: zpislopen, zpislopep, zpislope2n 91 REAL(wp) :: zrum, zcodel, zargu, zval 88 92 REAL(wp) :: zrfact2 89 93 CHARACTER (len=25) :: charout … … 142 146 143 147 ! Computation of the optimal production 144 zpsichl = 0. 145 thetannm = 0.25 146 thetanpm = 0.25 147 thetandm = 0.35 148 149 prmaxn(:,:,:) = ( 0.8_wp * (1. + zpsino3 * qnpmax + zpsichl ) ) * r1_rday * tgfunc(:,:,:) 148 prmaxn(:,:,:) = ( 0.8_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:) 150 149 prmaxp(:,:,:) = 0.6 / 0.8 * prmaxn(:,:,:) 151 prmaxd(:,:,:) = 0.8 / 0.8 *prmaxn(:,:,:)150 prmaxd(:,:,:) = prmaxn(:,:,:) 152 151 zprnut(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 153 152 … … 258 257 DO jj = 1, jpj 259 258 DO ji = 1, jpi 260 zmxltst = MAX( 0.e0, hmld(ji,jj) - heup (ji,jj) )259 zmxltst = MAX( 0.e0, hmld(ji,jj) - heup_01(ji,jj) ) 261 260 zmxlday = zmxltst * zmxltst * r1_rday 262 zmixnano(ji,jj) = 1. - zmxlday / ( 2.+ zmxlday )263 zmixpico(ji,jj) = 1. - zmxlday / ( 2.+ zmxlday )264 zmixdiat(ji,jj) = 1. - zmxlday / ( 4.+ zmxlday )261 zmixnano(ji,jj) = 1. - zmxlday / ( zlimmxln + zmxlday ) 262 zmixpico(ji,jj) = 1. - zmxlday / ( zlimmxlp + zmxlday ) 263 zmixdiat(ji,jj) = 1. - zmxlday / ( zlimmxld + zmxlday ) 265 264 END DO 266 265 END DO … … 290 289 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trn(ji,jj,jk,jpphy) * rfact2 291 290 ! 292 zrespn(ji,jj,jk) = zprorcan(ji,jj,jk) * zpsichl293 291 zration = trn(ji,jj,jk,jpnph) / ( trn(ji,jj,jk,jpphy) + rtrn ) 294 292 zratiop = trn(ji,jj,jk,jppph) / ( trn(ji,jj,jk,jpphy) + rtrn ) … … 312 310 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 313 311 zprofmax = zprnutmax * qfnmax * zmax 314 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 4. - 4.5* xlimnfe(ji,jj,jk) &312 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 4. - 3.6 * xlimnfe(ji,jj,jk) & 315 313 & / ( xlimnfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn & 316 314 & + xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) … … 328 326 zprorcap(ji,jj,jk) = zprpic(ji,jj,jk) * xlimpic(ji,jj,jk) * trn(ji,jj,jk,jppic) * rfact2 329 327 ! 330 zrespp(ji,jj,jk) = zprorcap(ji,jj,jk) * zpsichl331 328 zration = trn(ji,jj,jk,jpnpi) / ( trn(ji,jj,jk,jppic) + rtrn ) 332 329 zratiop = trn(ji,jj,jk,jpppi) / ( trn(ji,jj,jk,jppic) + rtrn ) … … 350 347 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 351 348 zprofmax = zprnutmax * qfpmax * zmax 352 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 4. - 4.5* xlimpfe(ji,jj,jk) &349 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 4. - 3.6 * xlimpfe(ji,jj,jk) & 353 350 & / ( xlimpfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn & 354 351 & + xpicono3(ji,jj,jk) + xpiconh4(ji,jj,jk) ) * (1. - xpicofer(ji,jj,jk) ) ) … … 367 364 ! Computation of the respiration term according to pahlow 368 365 ! & oschlies (2013) 369 zrespd(ji,jj,jk) = zprorcad(ji,jj,jk) * zpsichl370 366 ! 371 367 zration = trn(ji,jj,jk,jpndi) / ( trn(ji,jj,jk,jpdia) + rtrn ) … … 390 386 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 391 387 zprofmax = zprnutmax * qfdmax * zmax 392 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 4. - 4.5* xlimdfe(ji,jj,jk) &388 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 4. - 3.6 * xlimdfe(ji,jj,jk) & 393 389 & / ( xlimdfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn & 394 390 & + xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) … … 562 558 ! 563 559 NAMELIST/nampisprod/ pislope, pislopep, pislope2, xadap, bresp, excret, excretp, excret2, & 564 & chlcnm, chlcpm, chlcdm, chlcmin, grosip 560 & thetannm, thetanpm, thetandm, chlcmin, grosip, zlimmxln, & 561 & zlimmxlp, zlimmxld 565 562 566 563 INTEGER :: ios ! Local integer output status for namelist read … … 590 587 WRITE(numout,*) ' P-I slope for diatoms pislope2 =', pislope2 591 588 WRITE(numout,*) ' P-I slope for picophytoplankton pislopep =', pislopep 592 WRITE(numout,*) ' Minimum Chl/C in nanophytoplankton chlcnm =', chlcnm 593 WRITE(numout,*) ' Minimum Chl/C in picophytoplankton chlcpm =', chlcpm 594 WRITE(numout,*) ' Minimum Chl/C in diatoms chlcdm =', chlcdm 589 WRITE(numout,*) ' Minimum Chl/N in nanophytoplankton thetannm =', thetannm 590 WRITE(numout,*) ' Minimum Chl/N in picophytoplankton thetanpm =', thetanpm 591 WRITE(numout,*) ' Minimum Chl/N in diatoms thetandm =', thetandm 592 WRITE(numout,*) ' Critical time scale for mixing (nano) zlimmxln =', zlimmxln 593 WRITE(numout,*) ' Critical time scale for mixing (pico) zlimmxlp =', zlimmxlp 594 WRITE(numout,*) ' Critical time scale for mixing (diatoms) zlimmxld =', zlimmxld 595 595 ENDIF 596 596 ! -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zrem.F90
r5266 r5288 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Quota model for iron 9 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 9 10 !!---------------------------------------------------------------------- 10 11 #if defined key_pisces_quota … … 48 49 REAL(wp), PUBLIC :: xsiremlab !: fast remineralisation rate of POC 49 50 REAL(wp), PUBLIC :: xsilab !: fraction of labile biogenic silica 50 REAL(wp), PUBLIC :: oxymin !: halk saturation constant for anoxia 51 REAL(wp), PUBLIC :: oxymin !: half saturation constant for anoxia 52 REAL(wp), PUBLIC :: oxymin2 !: Minimum O2 concentration for oxic remin. 51 53 52 54 … … 105 107 DO jj = 1, jpj 106 108 DO ji = 1, jpi 107 zdep = MAX( hmld(ji,jj), heup (ji,jj) )109 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 108 110 IF( fsdept(ji,jj,jk) < zdep ) THEN 109 111 zdepbac(ji,jj,jk) = MIN( 0.7 * ( trn(ji,jj,jk,jpzoo) + 2.* trn(ji,jj,jk,jpmes) ), 4.e-6 ) … … 123 125 ! denitrification factor computed from O2 levels 124 126 ! ---------------------------------------------- 125 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6- trn(ji,jj,jk,jpoxy) ) &127 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( oxymin2 - trn(ji,jj,jk,jpoxy) ) & 126 128 & / ( oxymin + trn(ji,jj,jk,jpoxy) ) ) 127 129 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) … … 324 326 ! constant and specified in the namelist. 325 327 ! ---------------------------------------------------------- 326 zdep = MAX( hmld(ji,jj), heup (ji,jj) )328 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 327 329 zdep = MAX( 0., fsdept(ji,jj,jk) - zdep ) 328 330 ztem = MAX( tsn(ji,jj,1,jp_tem), 0. ) … … 377 379 !!---------------------------------------------------------------------- 378 380 NAMELIST/nampisrem/ xremikc, xremikn, xremikp, xremipc, xremipn, xremipp, & 379 & nitrif, xsirem, xsiremlab, xsilab, oxymin 381 & nitrif, xsirem, xsiremlab, xsilab, oxymin, oxymin2 380 382 INTEGER :: ios ! Local integer output status for namelist read 381 383 … … 403 405 WRITE(numout,*) ' fraction of labile biogenic silica xsilab =', xsilab 404 406 WRITE(numout,*) ' NH4 nitrification rate nitrif =', nitrif 405 WRITE(numout,*) ' halk saturation constant for anoxia oxymin =', oxymin 407 WRITE(numout,*) ' half saturation constant for anoxia oxymin =', oxymin 408 WRITE(numout,*) ' Minimum O2 concentration for oxic remin. oxymin2 =', oxymin2 406 409 ENDIF 407 410 ! -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsed.F90
r5266 r5288 8 8 !! 3.4 ! 2011-06 (C. Ethe) USE of fldread 9 9 !! 3.5 ! 2012-07 (O. Aumont) improvment of river input of nutrients 10 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 10 11 !!---------------------------------------------------------------------- 11 12 #if defined key_pisces_quota -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsink.F90
r5266 r5288 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Change aggregation formula 9 9 !! 3.5 ! 2012-07 (O. Aumont) Introduce potential time-splitting 10 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 10 11 !!---------------------------------------------------------------------- 11 12 #if defined key_pisces_quota … … 111 112 DO jj = 1, jpj 112 113 DO ji = 1,jpi 113 zmax = MAX( heup (ji,jj), hmld(ji,jj) )114 zmax = MAX( heup_01(ji,jj), hmld(ji,jj) ) 114 115 zfact = MAX( 0., fsdepw(ji,jj,jk+1) - zmax ) / 5000._wp 115 wsbio4(ji,jj,jk) = wsbio2 + ( 200.- wsbio2 ) * zfact116 wsbio4(ji,jj,jk) = wsbio2 116 117 END DO 117 118 END DO -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsms.F90
r5266 r5288 6 6 !! History : 1.0 ! 2004-03 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_pisces_quota
Note: See TracChangeset
for help on using the changeset viewer.