Changeset 6231 for branches/CNRS
- Timestamp:
- 2016-01-12T11:51:52+01:00 (8 years ago)
- Location:
- branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/CONFIG/ORCA2_OFF_PISCES_QUOTA/EXP00/namelist_pisces
r5290 r6231 40 40 xkmort = 1.E-8 ! half saturation constant for mortality 41 41 ferat3 = 10.E-6 ! Fe/C in zooplankton 42 no3rat3 = 0.1 67! N/C ratio in zooplankton43 po4rat3 = 0.0094 ! P/C ratio in zooplankton42 no3rat3 = 0.182 ! N/C ratio in zooplankton 43 po4rat3 = 0.0094 ! P/C ratio in zooplankton 44 44 wsbio2 = 50. ! Big particles sinking speed 45 45 niter1max = 1 ! Maximum number of iterations for POC 46 46 niter2max = 1 ! Maximum number of iterations for GOC 47 bmetexcess = .true. ! Excess carbon for respiration 47 48 / 48 49 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' … … 53 54 concdno3 = 4E-6 ! Phosphate half saturation for diatoms 54 55 concnnh4 = 1.5E-6 ! NH4 half saturation for phyto 55 concpnh4 = 3E-756 concpnh4 = 4E-7 56 57 concdnh4 = 2E-6 ! NH4 half saturation for diatoms 57 58 concnpo4 = 3E-6 ! PO4 half saturation for phyto 58 concppo4 = 1 E-659 concppo4 = 1.5E-6 59 60 concdpo4 = 4E-6 ! PO4 half saturation for diatoms 60 61 concnfer = 3E-9 ! Iron half saturation for phyto 61 concpfer = 1 E-962 concpfer = 1.5E-9 62 63 concdfer = 4E-9 ! Iron half saturation for diatoms 63 64 concbfe = 1.E-11 ! Half-saturation for Fe limitation of Bacteria … … 77 78 qfpopt = 7.E-6 78 79 qfdopt = 7.E-6 ! Optimal quota of diatoms 79 caco3r = 0.35 80 caco3r = 0.35 ! mean rain ratio 80 81 qnnmin = 0.29 81 qnnmax = 1. 52582 qnnmax = 1.39 82 83 qpnmin = 0.28 83 84 qpnmax = 1.06 84 85 qnpmin = 0.42 85 qnpmax = 1. 52586 qnpmax = 1.39 86 87 qppmin = 0.25 87 88 qppmax = 0.7 88 89 qndmin = 0.25 89 qndmax = 1. 52590 qndmax = 1.39 90 91 qpdmin = 0.29 91 92 qpdmax = 1.32 … … 108 109 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 109 110 pislope = 3. ! P-I slope 110 pislopep = 4. ! P-I slope for picophytoplankton111 pislopep = 3. ! P-I slope for picophytoplankton 111 112 pislope2 = 3. ! P-I slope for diatoms 112 113 xadap = 0. ! Adaptation factor to low light … … 117 118 thetannm = 0.25 ! Maximum Chl/N in nanophytoplankton 118 119 thetanpm = 0.25 ! Maximum Chl/N in picophytoplankton 119 thetandm = 0.3 5! Maximum Chl/N in diatoms120 thetandm = 0.3 ! Maximum Chl/N in diatoms 120 121 chlcmin = 0.004 ! Minimum Chl/c in phytoplankton 121 122 grosip = 0.131 ! mean Si/C ratio … … 128 129 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 129 130 wchl = 0.01 ! quadratic mortality of phytoplankton 130 wchlp = 0.0 01131 wchlp = 0.01 131 132 wchld = 0.01 ! maximum quadratic mortality of diatoms 132 133 wchldm = 0.02 ! maximum quadratic mortality of diatoms … … 155 156 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 156 157 epsher2 = 0.5 ! Efficicency of Mesozoo growth 157 ssigma2 = 0. 7! Fraction excreted as semi-labile DOM158 ssigma2 = 0.5 ! Fraction excreted as semi-labile DOM 158 159 srespir2 = 0.2 ! Active respiration 159 160 unass2c = 0.3 ! non assimilated fraction of P by mesozoo … … 169 170 resrat = 0.03 ! exsudation rate of zooplankton 170 171 mzrat = 0.005 ! zooplankton mortality rate 171 xprefc = 0. 2! Microzoo preference for POM172 xprefc = 0.1 ! Microzoo preference for POM 172 173 xprefn = 1. ! Microzoo preference for Nanophyto 173 xprefp = 1. 5174 xprefp = 1.6 174 175 xprefd = 1.0 ! Microzoo preference for Diatoms 175 176 xprefz = 0.3 ! Microzoo preference for microzooplankton … … 182 183 xkgraz = 20.E-6 ! half sturation constant for grazing 183 184 epsher = 0.5 ! Efficiency of microzoo growth 184 ssigma = 0. 7! Fraction excreted as semi-labile DOM185 ssigma = 0.5 ! Fraction excreted as semi-labile DOM 185 186 srespir = 0.2 ! Active respiration 186 187 unassc = 0.3 ! non assimilated fraction of C by zoo … … 200 201 &nampisrem ! parameters for remineralization 201 202 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 202 xremikc = 0. 35 ! remineralization rate of DOC203 xremikc = 0.25 ! remineralization rate of DOC 203 204 xremikn = 0.35 ! remineralization rate of DON 204 xremikp = 0. 35! remineralization rate of DOP205 xremipc = 0.02 5! remineralisation rate of POC206 xremipn = 0.0 3! remineralisation rate of PON207 xremipp = 0.03 5! remineralisation rate of POP205 xremikp = 0.4 ! remineralization rate of DOP 206 xremipc = 0.02 ! remineralisation rate of POC 207 xremipn = 0.025 ! remineralisation rate of PON 208 xremipp = 0.03 ! remineralisation rate of POP 208 209 nitrif = 0.05 ! NH4 nitrification rate 209 210 xsirem = 0.003 ! remineralization rate of Si … … 211 212 xsilab = 0.5 ! Fraction of labile biogenic silica 212 213 oxymin = 1.E-6 ! Half-saturation constant for anoxia 213 oxymin = 6.E-6 ! Minimum O2 concentration for oxic remin. 214 oxymin2 = 6.E-6 ! Minimum O2 concentration for oxic remin. 215 feratb = 20E-6 ! Bacterial Fe/C ratio 216 xkferb = 3E-10 ! Half-saturation constant for bact. Fe/C 214 217 / 215 218 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 216 219 &nampiscal ! parameters for Calcite chemistry 217 220 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 218 kdca = 6.! calcite dissolution rate constant (1/time)219 nca = 1. ! order of dissolution reaction (dimensionless)221 kdca = 2.5 ! calcite dissolution rate constant (1/time) 222 nca = 4. ! order of dissolution reaction (dimensionless) 220 223 / 221 224 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' … … 250 253 wdust = 2.0 ! Dust sinking speed 251 254 icefeinput = 15.e-9 ! Iron concentration in sea ice 252 nitrfix = 1. e-7 ! Nitrogen fixation rate255 nitrfix = 1.5e-7 ! Nitrogen fixation rate 253 256 diazolight = 30. ! Diazotrophs sensitivity to light (W/m2) 254 257 concfediaz = 1.e-10 ! Diazotrophs half-saturation Cste for Iron -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r5288 r6231 22 22 USE fldread ! time interpolation 23 23 USE prtctl_trc ! print control for debugging 24 USE lib_mpp ! distribued memory computing library 25 24 26 25 27 … … 73 75 INTEGER, INTENT(in) :: kt, jnt ! ocean time step 74 76 ! 75 INTEGER :: ji, jj, jk 77 INTEGER :: ji, jj, jk, jn 76 78 INTEGER :: irgb 77 79 REAL(wp) :: zchl, zxsi0r -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r5266 r6231 72 72 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdic, rivalk !: river input fields 73 73 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdin, rivdip !: river input fields 74 #if defined key_pisces_quota 75 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdon, rivdop !: river input fields 76 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdoc !: river input fields 77 #endif 74 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdsi !: river input fields 75 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nitdep !: atmospheric N deposition … … 118 122 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_dust > 1 ) ) THEN 119 123 CALL fld_read( kt, 1, sf_dust ) 120 dust(:,:) = sf_dust(1)%fnow(:,:,1) 124 dust(:,:) = sf_dust(1)%fnow(:,:,1) * tmask(:,:,1) 121 125 ENDIF 122 126 ENDIF … … 139 143 zcoef = ryyss * cvol(ji,jj,1) 140 144 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & 141 & * 1.E3 / ( 12. * zcoef + rtrn ) 145 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 146 #if defined key_pisces_quota 147 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) ) & 148 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 149 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) ) & 150 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 151 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) ) & 152 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 153 rivdoc(ji,jj) = ( sf_river(jr_doc)%fnow(ji,jj,1) ) & 154 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 155 rivdon(ji,jj) = ( sf_river(jr_don)%fnow(ji,jj,1) ) & 156 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 157 rivdop(ji,jj) = ( sf_river(jr_dop)%fnow(ji,jj,1) ) & 158 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 159 #else 142 160 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) + sf_river(jr_doc)%fnow(ji,jj,1) ) & 143 & * 1.E3 / ( 12. * zcoef + rtrn)161 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 144 162 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) + sf_river(jr_don)%fnow(ji,jj,1) ) & 145 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) 163 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 146 164 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) + sf_river(jr_dop)%fnow(ji,jj,1) ) & 147 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) 165 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 166 #endif 148 167 rivdsi(ji,jj) = sf_river(jr_dsi)%fnow(ji,jj,1) & 149 & * 1.E3 / ( 28.1 * zcoef + rtrn)168 & * 1.E3 / ( 28.1 * zcoef + rtrn ) * tmask(ji,jj,1) 150 169 END DO 151 170 END DO … … 159 178 DO jj = 1, jpj 160 179 DO ji = 1, jpi 161 nitdep(ji,jj) = sf_ndepo(1)%fnow(ji,jj,1) / rno3 / ( 14E6 * ryyss * fse3t(ji,jj,1) + rtrn ) 180 nitdep(ji,jj) = sf_ndepo(1)%fnow(ji,jj,1) / rno3 / ( 14E6 & 181 & * ryyss * fse3t(ji,jj,1) + rtrn ) * tmask(ji,jj,1) 162 182 END DO 163 183 END DO … … 318 338 ! 319 339 ALLOCATE( rivdic(jpi,jpj), rivalk(jpi,jpj), rivdin(jpi,jpj), rivdip(jpi,jpj), rivdsi(jpi,jpj) ) 340 #if defined key_pisces_quota 341 ALLOCATE( rivdon(jpi,jpj), rivdop(jpi,jpj), rivdoc(jpi,jpj) ) 342 #endif 320 343 ! 321 344 ALLOCATE( sf_river(jpriv), rivinput(jpriv), STAT=ierr1 ) !* allocate and fill sf_river (forcing structure) with sn_river_ … … 455 478 zexpide = MIN( 8.,( fsdept(ji,jj,jk) / 500. )**(-1.5) ) 456 479 zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 457 zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 ) 480 zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 ) * tmask(ji,jj,jk) 458 481 END DO 459 482 END DO … … 463 486 ironsed(:,:,jpk) = 0._wp 464 487 DO jk = 1, jpkm1 465 ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 488 ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 466 489 END DO 467 490 DEALLOCATE( zcmask) … … 481 504 CALL iom_close( numhydro ) 482 505 ! 483 hydrofe(:,:,:) = ( hydrofe(:,:,:) * hratio ) / ( cvol(:,:,:) * ryyss + rtrn ) / 1000._wp 506 hydrofe(:,:,:) = ( hydrofe(:,:,:) * hratio ) / ( cvol(:,:,:) * ryyss + rtrn ) / 1000._wp * tmask(:,:,:) 484 507 ! 485 508 ENDIF -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r4624 r6231 61 61 INTEGER, INTENT( in ) :: kt ! ocean time-step index 62 62 !! 63 INTEGER :: j nt, jn, jl63 INTEGER :: ji,jj,jnt, jn, jl, jk 64 64 CHARACTER (len=25) :: charout 65 65 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrdpis … … 374 374 375 375 IF(lwp) WRITE(numout,*) ' TALK mean : ', zalksum 376 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksum376 trn(:,:,:,jptal) = MIN(2800E-6, trn(:,:,:,jptal) * alkmean / zalksum) 377 377 378 378 IF(lwp) WRITE(numout,*) ' PO4 mean : ', zpo4sum 379 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sum379 trn(:,:,:,jppo4) = MIN(400E-6, trn(:,:,:,jppo4) * po4mean / zpo4sum ) 380 380 381 381 IF(lwp) WRITE(numout,*) ' NO3 mean : ', zno3sum 382 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sum382 trn(:,:,:,jpno3) = MIN(400E-6, trn(:,:,:,jpno3) * no3mean / zno3sum ) 383 383 384 384 IF(lwp) WRITE(numout,*) ' SiO3 mean : ', zsilsum -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zlim.F90
r5288 r6231 219 219 xnanodop(ji,jj,jk) = trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdop) + xkdoc ) & 220 220 & * ( 1.0 - xnanopo4(ji,jj,jk) ) 221 xnanodop(ji,jj,jk) = 0. 221 222 ! 222 223 zfalim = (1.-fananof) / fananof … … 227 228 ! 228 229 zration = trn(ji,jj,jk,jpnph) * z1_trnphy 230 zration = MIN(xqnnmax(ji,jj,jk), MAX( 2. * xqnnmin(ji,jj,jk), zration )) 229 231 fvnuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqnnmin(ji,jj,jk) / (zration + rtrn) & 230 232 & * MAX(0., (1. - zratchl * znanochl / 12. ) ) … … 248 250 xpicodop(ji,jj,jk) = trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdop) + xkdoc ) & 249 251 & * ( 1.0 - xpicopo4(ji,jj,jk) ) 252 xpicodop(ji,jj,jk) = 0. 250 253 ! 251 254 zfalim = (1.-fapicof) / fapicof … … 256 259 ! 257 260 zration = trn(ji,jj,jk,jpnpi) * z1_trnpic 261 zration = MIN(xqnpmax(ji,jj,jk), MAX( 2. * xqnpmin(ji,jj,jk), zration )) 258 262 fvpuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqnpmin(ji,jj,jk) / (zration + rtrn) & 259 263 & * MAX(0., (1. - zratchl * zpicochl / 12. ) ) … … 277 281 xdiatdop(ji,jj,jk) = trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdop) + xkdoc ) & 278 282 & * ( 1.0 - xdiatpo4(ji,jj,jk) ) 283 xdiatdop(ji,jj,jk) = 0. 279 284 ! 280 285 zfalim = (1.-fadiatf) / fadiatf … … 285 290 ! 286 291 zration = trn(ji,jj,jk,jpndi) * z1_trndia 292 zration = MIN(xqndmax(ji,jj,jk), MAX( 2. * xqndmin(ji,jj,jk), zration )) 287 293 fvduptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqndmin(ji,jj,jk) / (zration + rtrn) & 288 294 & * MAX(0., (1. - zratchl * zdiatchl / 12. ) ) … … 351 357 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trn(ji,jj,jk,jpndi) / ( trn(ji,jj,jk,jpdia) + rtrn ) + 0.13 352 358 xqpdmin(ji,jj,jk) = 0.13 + 0.2 * 0.0128 * 16. 359 353 360 END DO 354 361 END DO … … 360 367 DO jj = 1, jpj 361 368 DO ji = 1, jpi 369 zlim1 = trn(ji,jj,jk,jpnh4) / ( trn(ji,jj,jk,jpnh4) + concnnh4 ) + trn(ji,jj,jk,jpno3) & 370 & / ( trn(ji,jj,jk,jpno3) + concnno3 ) * ( 1.0 - trn(ji,jj,jk,jpnh4) & 371 & / ( trn(ji,jj,jk,jpnh4) + concnnh4 ) ) 372 zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnpo4 ) 373 zlim3 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + 5.E-11 ) 362 374 ztem1 = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 363 375 ztem2 = tsn(ji,jj,jk,jp_tem) - 10. 364 376 zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) ) 365 377 366 xfracal(ji,jj,jk) = caco3r * ztem1 / ( 2. + ztem1 ) * (1. + trn(ji,jj,jk,jpphy) / ( 5E-7 & 367 & + trn(ji,jj,jk,jpphy) ) ) * zetot1 * ( 1. + EXP(-ztem2 * ztem2 / 25. ) ) & 368 & * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 369 xfracal(ji,jj,jk) = MAX( 0.05, MIN( 0.8 , xfracal(ji,jj,jk) ) ) 378 ! xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 ) & 379 xfracal(ji,jj,jk) = caco3r & 380 & * ztem1 / ( 1. + ztem1 ) * MAX( 1., trn(ji,jj,jk,jpphy)*1E6 ) & 381 & * ( 1. + EXP(-ztem2 * ztem2 / 25. ) ) & 382 & * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 383 xfracal(ji,jj,jk) = MAX( 0.02, MIN( 0.8 , xfracal(ji,jj,jk) ) ) 370 384 END DO 371 385 END DO -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90
r5288 r6231 81 81 REAL(wp) :: zmortzgoc, zfracc, zfracn, zfracp, zfracfe, zratio, zratio2 82 82 REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 83 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf 84 REAL(wp) :: zgradoc, zgradon, zgradop, zgratmp, zgradoct, zgradont, zgra fert, zgradopt83 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 84 REAL(wp) :: zgradoc, zgradon, zgradop, zgratmp, zgradoct, zgradont, zgrareft, zgradopt 85 85 REAL(wp) :: zgrapoc, zgrapon, zgrapop, zgrapof, zprcaca, zmortz 86 REAL(wp) :: zexcess, zgrarem, zgraren, zgrarep, zgra fer86 REAL(wp) :: zexcess, zgrarem, zgraren, zgrarep, zgraref 87 87 REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf 88 88 REAL(wp) :: ztmp1, ztmp2, ztmp3, ztmp4, ztmp5, ztmptot … … 90 90 REAL znumpoc 91 91 #endif 92 REAL(wp) :: zgrazdc, zgrazz, zgrazm, zgrazpof, zgrazcal 92 REAL(wp) :: zgrazdc, zgrazz, zgrazm, zgrazpof, zgrazcal, zfracal 93 93 REAL(wp) :: zgraznc, zgrazpoc, zgrazpon, zgrazpop, zgraznf, zgrazdf 94 94 REAL(wp) :: zgraznp, zgraznn, zgrazdn, zgrazdp … … 96 96 REAL(wp) :: zgrazffnp, zgrazffng, zgrazffpp, zgrazffpg 97 97 CHARACTER (len=25) :: charout 98 REAL(wp) :: zrfact2 98 REAL(wp) :: zrfact2, zmetexcess 99 99 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing 100 100 … … 107 107 zgrazing(:,:,:) = 0._wp 108 108 ENDIF 109 110 zmetexcess = 0.0 111 IF ( bmetexcess ) zmetexcess = 1.0 109 112 110 113 DO jk = 1, jpkm1 … … 141 144 ! ------------------------ 142 145 zfood = xpref2d * zcompadi + xpref2z * zcompaz + xpref2p * zcompaph + xpref2c * zcompapoc & 143 & + xpref2 c * zcompapoc + xpref2m * zcompames146 & + xpref2m * zcompames 144 147 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) 145 148 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) … … 265 268 ! Excess carbon in the food is used preferentially 266 269 ! ---------------- ------------------------------ 267 zexcess = zgraztotc * zepsherf * (1.0 - zepshert) 270 zexcess = zgraztotc * zepsherf * (1.0 - zepshert) * zmetexcess 268 271 zbasresb = MAX(0., zrespz - zexcess) 269 272 zbasresi = zexcess + MIN(0., zrespz - zexcess) 270 273 zrespirc = srespir2 * zepsherv * zgraztotc + zbasresb 271 274 275 ! When excess carbon is used, the other elements in excess 276 ! are also used proportionally to their abundance 277 ! -------------------------------------------------------- 278 zexcess = ( zgrasratn/ no3rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 279 zbasresn = zbasresi * zexcess * zgrasratn 280 zexcess = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 281 zbasresp = zbasresi * zexcess * zgrasratp 282 zexcess = ( zgrasratf/ ferat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 283 zbasresf = zbasresi * zexcess * zgrasratf 284 272 285 ! Voiding of the excessive elements as organic matter 273 286 ! -------------------------------------------------------- 274 287 zgradoct = (1. - unass2c - zepsherv) * zgraztotc - zbasresi 275 zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc 276 zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc 277 zgra fert = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc288 zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 289 zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 290 zgrareft = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc - zbasresf 278 291 ztmp1 = ( 1. - epsher2 - unass2c ) /( 1. - 0.8 * epsher2 ) * ztortz 279 292 zgradoc = (zgradoct + ztmp1) * ssigma2 … … 281 294 zgradop = (zgradopt + po4rat3 * ztmp1) * ssigma2 282 295 zgratmp = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz 296 297 ! Since only semilabile DOM is represented in PISCES 298 ! part of DOM is in fact labile and is then released 299 ! as dissolved inorganic compounds (ssigma2) 300 ! -------------------------------------------------- 283 301 zgrarem = zgratmp + ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 284 302 zgraren = no3rat3 * zgratmp + ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 285 303 zgrarep = po4rat3 * zgratmp + ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 286 zgra fer = zgrafert + ferat3 * ( ztmp1 + zgratmp )304 zgraref = zgrareft + ferat3 * ( ztmp1 + zgratmp ) 287 305 288 306 ! Defecation as a result of non assimilated products 289 307 ! -------------------------------------------------- 290 308 zgrapoc = zgraztotc * unass2c + unass2c / ( 1. - 0.8 * epsher2 ) * ztortz 291 zgrapon = zgraztotn * unass2n + no3rat3 * unass2 c/ ( 1. - 0.8 * epsher2 ) * ztortz292 zgrapop = zgraztotp * unass2p + po4rat3 * unass2 c/ ( 1. - 0.8 * epsher2 ) * ztortz309 zgrapon = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - 0.8 * epsher2 ) * ztortz 310 zgrapop = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - 0.8 * epsher2 ) * ztortz 293 311 zgrapof = zgraztotf * unass2c + ferat3 * unass2c / ( 1. - 0.8 * epsher2 ) * ztortz 312 313 ! Addition of respiration to the release of inorganic nutrients 314 ! ------------------------------------------------------------- 315 zgrarem = zgrarem + zbasresi + zrespirc 316 zgraren = zgraren + zbasresn + zrespirc * no3rat3 317 zgrarep = zgrarep + zbasresp + zrespirc * po4rat3 318 zgraref = zgraref + zbasresf + zrespirc * ferat3 294 319 295 320 ! Update the arrays TRA which contain the biological sources and 296 321 ! sinks 297 322 ! -------------------------------------------------------------- 298 zrespirn = zrespirc * no3rat3 299 zrespirp = zrespirc * po4rat3 300 zgrafer = zgrafer + zrespirc * ferat3 301 302 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarep + zrespirp 303 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgraren + zrespirn 323 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarep 324 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgraren 304 325 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc 305 326 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon 306 327 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop 307 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * (zgrarem + zrespirc)308 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgra fer309 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + z respirc + zgrarem310 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * (zgraren + zrespirn)328 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem 329 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref 330 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarem 331 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgraren 311 332 tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) + zepsherv * zgraztotc - zrespirc & 312 333 & - ztortz - zgrazm … … 334 355 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazfffp - zgrazpof & 335 356 & + zgrapof 336 zgrazcal = zgrazffep * ( 1. - part2 ) * trn(ji,jj,jk,jpcal) / ( trn(ji,jj,jk,jppoc) + rtrn ) 357 zfracal = trn(ji,jj,jk,jpcal) / (trn(ji,jj,jk,jppoc) + rtrn ) 358 zgrazcal = ( zgrazffep + zgrazpoc ) * (1. - part2) * zfracal 337 359 #else 338 360 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfracc … … 344 366 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 345 367 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zgrazfffg + zgrapof - zfracfe 346 zgrazcal = zgrazffeg * ( 1. - part2 ) * trn(ji,jj,jk,jpcal) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 368 zfracal = trn(ji,jj,jk,jpcal) / (trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + rtrn ) 369 zgrazcal = ( zgrazffeg + zgrazpoc ) * (1. - part2) * zfracal 347 370 #endif 348 371 ! calcite production -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmicro.F90
r5288 r6231 83 83 REAL(wp) :: ztmp1, ztmp2, ztmp3, ztmp4, ztmp5, ztmptot 84 84 REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 85 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf 86 REAL(wp) :: zgradoc, zgradon, zgradop, zgra fer, zgradoct, zgradont, zgradopt, zgrafert87 REAL(wp) :: zexcess, zgraren, zgrarep, zgrarem 85 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 86 REAL(wp) :: zgradoc, zgradon, zgradop, zgraref, zgradoct, zgradont, zgradopt, zgrareft 87 REAL(wp) :: zexcess, zgraren, zgrarep, zgrarem, zfracal, zgrazcal 88 88 REAL(wp) :: zgrapoc, zgrapon, zgrapop, zgrapof, zprcaca, zmortz 89 89 REAL(wp) :: zrespz, ztortz, zgrasratf, zgrasratn, zgrasratp 90 90 REAL(wp) :: zgraznc, zgraznn, zgraznp, zgrazpoc, zgrazpon, zgrazpop, zgrazpof 91 91 REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz 92 REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2 92 REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess 93 93 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing 94 94 CHARACTER (len=25) :: charout … … 98 98 ! 99 99 IF( ln_diatrc .AND. lk_iomput ) CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 100 ! 101 zmetexcess = 0.0 102 IF ( bmetexcess ) zmetexcess = 1.0 100 103 ! 101 104 DO jk = 1, jpkm1 … … 201 204 ! Excess carbon in the food is used preferentially 202 205 ! ------------------------------------------------ 203 zexcess = zgraztotc * zepsherf * (1.0 - zepshert) 206 zexcess = zgraztotc * zepsherf * (1.0 - zepshert) * zmetexcess 204 207 zbasresb = MAX(0., zrespz - zexcess) 205 208 zbasresi = zexcess + MIN(0., zrespz - zexcess) 206 209 zrespirc = srespir * zepsherv * zgraztotc + zbasresb 210 211 ! When excess carbon is used, the other elements in excess 212 ! are also used proportionally to their abundance 213 ! -------------------------------------------------------- 214 zexcess = ( zgrasratn/ no3rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 215 zbasresn = zbasresi * zexcess * zgrasratn 216 zexcess = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 217 zbasresp = zbasresi * zexcess * zgrasratp 218 zexcess = ( zgrasratf/ ferat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 219 zbasresf = zbasresi * zexcess * zgrasratf 207 220 208 221 ! Voiding of the excessive elements as DOM 209 222 ! ---------------------------------------- 210 223 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 224 zgradont = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 225 zgradopt = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 226 zgrareft = (1. - unassc) * zgraztotf - zepsherv * ferat3 * zgraztotc - zbasresf 227 228 ! Since only semilabile DOM is represented in PISCES 229 ! part of DOM is in fact labile and is then released 230 ! as dissolved inorganic compounds (ssigma) 231 ! -------------------------------------------------- 214 232 zgradoc = zgradoct * ssigma 215 233 zgradon = zgradont * ssigma … … 218 236 zgraren = (1.0 - ssigma) * zgradont 219 237 zgrarep = (1.0 - ssigma) * zgradopt 220 zgra fer = zgrafert238 zgraref = zgrareft 221 239 222 240 ! Defecation as a result of non assimilated products … … 227 245 zgrapof = zgraztotf * unassc 228 246 247 ! Addition of respiration to the release of inorganic nutrients 248 ! ------------------------------------------------------------- 249 zgrarem = zgrarem + zbasresi + zrespirc 250 zgraren = zgraren + zbasresn + zrespirc * no3rat3 251 zgrarep = zgrarep + zbasresp + zrespirc * po4rat3 252 zgraref = zgraref + zbasresf + zrespirc * ferat3 253 229 254 ! Update of the TRA arrays 230 255 ! ------------------------ 231 zrespirn = zrespirc * no3rat3 232 zrespirp = zrespirc * po4rat3 233 zgrafer = zgrafer + zrespirc * ferat3 234 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 256 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarep 257 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgraren 237 258 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc 238 259 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon 239 260 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop 240 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * ( zrespirc + zgrarem )241 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgra fer261 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem 262 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref 242 263 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc & 243 264 & - ztortz - zgrazz … … 271 292 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 272 293 ! 294 zfracal = trn(ji,jj,jk,jpcal) / (trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + rtrn ) 295 zgrazcal = zgrazpoc * (1. - part ) * zfracal 273 296 zprcaca = part * zprcaca 274 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc + zgrarem - zprcaca 275 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 276 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + rno3 * ( zrespirn + zgraren ) + zprcaca 297 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarem - zprcaca + zgrazcal 298 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal - zprcaca ) & 299 & + rno3 * zgraren 300 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca - zgrazcal 277 301 #if defined key_kriest 278 302 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortz * xkr_dmicro & -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmort.F90
r5288 r6231 88 88 DO jj = 1, jpj 89 89 DO ji = 1, jpi 90 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - 1e- 8), 0.e0 )90 zcompaph = MAX( ( trn(ji,jj,jk,jpphy) - 1e-9 ), 0.e0 ) 91 91 zstep = xstep 92 92 # if defined key_degrad … … 168 168 DO jj = 1, jpj 169 169 DO ji = 1, jpi 170 zcompaph = MAX( ( trn(ji,jj,jk,jppic) - 1e- 8), 0.e0 )170 zcompaph = MAX( ( trn(ji,jj,jk,jppic) - 1e-9 ), 0.e0 ) 171 171 zstep = xstep 172 172 # if defined key_degrad … … 242 242 DO ji = 1, jpi 243 243 244 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1E- 8), 0. )244 zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1E-9), 0. ) 245 245 246 246 ! Aggregation term for diatoms is increased in case of nutrient -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90
r5288 r6231 146 146 147 147 ! Computation of the optimal production 148 prmaxn(:,:,:) = ( 0. 8_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:)149 prmaxp(:,:,:) = 0. 6 / 0.8* prmaxn(:,:,:)148 prmaxn(:,:,:) = ( 0.65_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:) 149 prmaxp(:,:,:) = 0.5 / 0.65 * prmaxn(:,:,:) 150 150 prmaxd(:,:,:) = prmaxn(:,:,:) 151 zprnut(:,:,:) = 0. 8_wp * r1_rday * tgfunc(:,:,:)151 zprnut(:,:,:) = 0.65_wp * r1_rday * tgfunc(:,:,:) 152 152 153 153 IF( lk_degrad ) THEN … … 241 241 zlim = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 ) 242 242 zsilim = MIN( zprdia(ji,jj,jk) / ( prmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 243 zsilfac = 4.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0243 zsilfac = 3.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0 244 244 zsiborn = trn(ji,jj,jk,jpsil) * trn(ji,jj,jk,jpsil) * trn(ji,jj,jk,jpsil) 245 245 IF (gphit(ji,jj) < -30 ) THEN … … 310 310 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 311 311 zprofmax = zprnutmax * qfnmax * zmax 312 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 4. - 3.6* xlimnfe(ji,jj,jk) &312 zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 3. - 2.4 * xlimnfe(ji,jj,jk) & 313 313 & / ( xlimnfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn & 314 314 & + xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) … … 347 347 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 348 348 zprofmax = zprnutmax * qfpmax * zmax 349 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 4. - 3.6* xlimpfe(ji,jj,jk) &349 zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 3. - 2.4 * xlimpfe(ji,jj,jk) & 350 350 & / ( xlimpfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn & 351 351 & + xpicono3(ji,jj,jk) + xpiconh4(ji,jj,jk) ) * (1. - xpicofer(ji,jj,jk) ) ) … … 386 386 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 387 387 zprofmax = zprnutmax * qfdmax * zmax 388 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 4. - 3.6* xlimdfe(ji,jj,jk) &388 zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 3. - 2.4 * xlimdfe(ji,jj,jk) & 389 389 & / ( xlimdfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn & 390 390 & + xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zrem.F90
r5288 r6231 51 51 REAL(wp), PUBLIC :: oxymin !: half saturation constant for anoxia 52 52 REAL(wp), PUBLIC :: oxymin2 !: Minimum O2 concentration for oxic remin. 53 REAL(wp), PUBLIC :: feratb !: Fe/C quota in bacteria 54 REAL(wp), PUBLIC :: xkferb !: Half-saturation constant for bacteria Fe/C 53 55 54 56 … … 107 109 DO jj = 1, jpj 108 110 DO ji = 1, jpi 109 zdep = MAX( hmld(ji,jj), heup _01(ji,jj) )111 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 110 112 IF( fsdept(ji,jj,jk) < zdep ) THEN 111 113 zdepbac(ji,jj,jk) = MIN( 0.7 * ( trn(ji,jj,jk,jpzoo) + 2.* trn(ji,jj,jk,jpmes) ), 4.e-6 ) … … 143 145 ! of the bacterial activity. 144 146 ! ----------------------------------------------------------------- 145 zremik = zstep / 1.e-6 * MAX(0.0 2, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk)147 zremik = zstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 146 148 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 147 149 148 150 zremikc = xremikc * zremik 149 zremikn = xremikn * zremik * 1.0 / (5.6*rno3)150 zremikp = xremikp * zremik * 1.0 / (75.0*po4r)151 zremikn = xremikn / xremikc 152 zremikp = xremikp / xremikc 151 153 152 154 ! Ammonification in oxic waters with oxygen consumption … … 155 157 zolimic = MAX( 0.e0, MIN( ( trn(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) ) 156 158 zwork1(ji,jj,jk) = zolimic 157 zolimin = z olimic * trn(ji,jj,jk,jpdon) / ( trn(ji,jj,jk,jpdoc) + rtrn )158 zolimip = z olimic * trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdoc) + rtrn )159 zolimin = zremikn * zolimic * trn(ji,jj,jk,jpdon) / ( trn(ji,jj,jk,jpdoc) + rtrn ) 160 zolimip = zremikp * zolimic * trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdoc) + rtrn ) 159 161 160 162 ! Ammonification in suboxic waters with denitrification … … 163 165 denitrc(ji,jj,jk) = MIN( ( trn(ji,jj,jk,jpno3) - rtrn ) / rdenit, zolimit ) 164 166 denitrc (ji,jj,jk) = MAX( 0.e0, denitrc (ji,jj,jk) ) 165 zdenitrn = denitrc(ji,jj,jk) * trn(ji,jj,jk,jpdon) / ( trn(ji,jj,jk,jpdoc) + rtrn )166 zdenitrp = denitrc(ji,jj,jk) * trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdoc) + rtrn )167 zdenitrn = zremikn * denitrc(ji,jj,jk) * trn(ji,jj,jk,jpdon) / ( trn(ji,jj,jk,jpdoc) + rtrn ) 168 zdenitrp = zremikp * denitrc(ji,jj,jk) * trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdoc) + rtrn ) 167 169 168 170 ! Update of trends TRA … … 221 223 ! studies (especially at Papa) have shown this uptake to be significant 222 224 ! ---------------------------------------------------------- 223 zbactfer = ferat 3* rfact2 * prmaxp(ji,jj,jk) * xlimbacl(ji,jj,jk) &224 & * biron(ji,jj,jk) / ( 2E-10+ biron(ji,jj,jk) ) &225 zbactfer = feratb * rfact2 * prmaxp(ji,jj,jk) * xlimbacl(ji,jj,jk) & 226 & * biron(ji,jj,jk) / ( xkferb + biron(ji,jj,jk) ) & 225 227 & * zdepprod(ji,jj,jk) * zdepbac(ji,jj,jk) 226 228 #if defined key_kriest … … 326 328 ! constant and specified in the namelist. 327 329 ! ---------------------------------------------------------- 328 zdep = MAX( hmld(ji,jj), heup _01(ji,jj) )330 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 329 331 zdep = MAX( 0., fsdept(ji,jj,jk) - zdep ) 330 332 ztem = MAX( tsn(ji,jj,1,jp_tem), 0. ) … … 379 381 !!---------------------------------------------------------------------- 380 382 NAMELIST/nampisrem/ xremikc, xremikn, xremikp, xremipc, xremipn, xremipp, & 381 & nitrif, xsirem, xsiremlab, xsilab, oxymin, oxymin2 383 & nitrif, xsirem, xsiremlab, xsilab, oxymin, oxymin2, & 384 & feratb, xkferb 382 385 INTEGER :: ios ! Local integer output status for namelist read 383 386 … … 407 410 WRITE(numout,*) ' half saturation constant for anoxia oxymin =', oxymin 408 411 WRITE(numout,*) ' Minimum O2 concentration for oxic remin. oxymin2 =', oxymin2 412 WRITE(numout,*) ' Bacterial Fe/C ratio feratb =', feratb 413 WRITE(numout,*) ' Half-saturation constant for bact. Fe/C xkferb =', xkferb 409 414 ENDIF 410 415 ! -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsed.F90
r5288 r6231 62 62 ! 63 63 INTEGER, INTENT(in) :: kt, jnt ! ocean time step 64 INTEGER :: ji, jj, jk, ikt 64 INTEGER :: ji, jj, jk, ikt, jn 65 65 #if ! defined key_sed 66 66 REAL(wp) :: zsumsedsi, zsumsedpo4, zsumsedcal … … 76 76 ! 77 77 CHARACTER (len=25) :: charout 78 REAL(wp), POINTER, DIMENSION(:,: ) :: z pdep, zsidep, zwork1, zwork2, zwork3, zwork478 REAL(wp), POINTER, DIMENSION(:,: ) :: zsidep, zwork1, zwork2, zwork3, zwork4 79 79 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice, zbureff 80 80 REAL(wp), POINTER, DIMENSION(:,: ) :: zwsbio3, zwsbio4, zwscal 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrpo4, ztrdop, znitrpot, zirondep, zsoufer 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrpo4, ztrdop, znitrpot, zirondep, zsoufer, zpdep 82 82 !!--------------------------------------------------------------------- 83 83 ! … … 132 132 IF( ln_dust ) THEN 133 133 ! 134 CALL wrk_alloc( jpi, jpj, z pdep, zsidep )135 CALL wrk_alloc( jpi, jpj, jpk, z irondep )134 CALL wrk_alloc( jpi, jpj, zsidep ) 135 CALL wrk_alloc( jpi, jpj, jpk, zpdep, zirondep ) 136 136 ! ! Iron and Si deposition at the surface 137 137 IF( ln_solub ) THEN … … 143 143 ENDIF 144 144 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 28.1 145 zpdep (:,: ) = 0.1 * 0.021* dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 31. / po4r145 zpdep (:,:,1) = 0.2 * 0.023 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 31. / po4r 146 146 ! ! Iron solubilization of particles in the water column 147 147 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j … … 150 150 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 & 151 151 & * EXP( -fsdept(:,:,jk) / 540. ) 152 zpdep(:,:,jk) = dust(:,:) * mfrac * 0.023 * zwdust * rfact2 & 153 & * EXP( -fsdept(:,:,jk) / 540. ) 152 154 END DO 153 155 ! ! Iron solubilization of particles in the water column 154 trn(:,:, 1,jppo4) = trn(:,:,1,jppo4) + zpdep (:,:)156 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) + zpdep (:,:,:) 155 157 trn(:,:,1,jpsil) = trn(:,:,1,jpsil) + zsidep (:,:) 156 158 trn(:,:,:,jpfer) = trn(:,:,:,jpfer) + zirondep(:,:,:) … … 167 169 ENDIF 168 170 ENDIF 169 CALL wrk_dealloc( jpi, jpj, z pdep, zsidep )170 CALL wrk_dealloc( jpi, jpj, jpk, z irondep )171 CALL wrk_dealloc( jpi, jpj, zsidep ) 172 CALL wrk_dealloc( jpi, jpj, jpk, zpdep, zirondep ) 171 173 ! 172 174 ENDIF … … 176 178 IF( ln_river ) THEN 177 179 trn(:,:,1,jppo4) = trn(:,:,1,jppo4) + rivdip(:,:) * rfact2 180 trn(:,:,1,jpdop) = trn(:,:,1,jpdop) + rivdop(:,:) * rfact2 178 181 trn(:,:,1,jpno3) = trn(:,:,1,jpno3) + rivdin(:,:) * rfact2 182 trn(:,:,1,jpdon) = trn(:,:,1,jpdon) + rivdon(:,:) * rfact2 179 183 trn(:,:,1,jpfer) = trn(:,:,1,jpfer) + rivdic(:,:) * 5.e-5 * rfact2 180 184 trn(:,:,1,jpsil) = trn(:,:,1,jpsil) + rivdsi(:,:) * rfact2 181 185 trn(:,:,1,jpdic) = trn(:,:,1,jpdic) + rivdic(:,:) * rfact2 186 trn(:,:,1,jpdoc) = trn(:,:,1,jpdoc) + rivdoc(:,:) * rfact2 182 187 trn(:,:,1,jptal) = trn(:,:,1,jptal) + ( rivalk(:,:) - rno3 * rivdin(:,:) ) * rfact2 183 188 ENDIF 184 189 185 190 ! Add the external input of nutrients from nitrogen deposition 186 191 ! ---------------------------------------------------------- … … 207 212 & CALL iom_put( "HYDR", hydrofe(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! hydrothermal iron input 208 213 ENDIF 209 210 214 211 215 ! OA: Warning, the following part is necessary, especially with Kriest … … 310 314 END DO 311 315 END DO 316 312 317 313 318 DO jj = 1, jpj … … 345 350 ! in the sediments and just above the sediments. Not very clever, but simpliest option. 346 351 zpdenit = MIN( 0.5 * ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 352 zpdenit = MAX( 0., zpdenit ) 347 353 z1pdenit = zwstpoc * zrivno3 - zpdenit 348 354 zolimit = MIN( ( trn(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 349 355 zdenitt = MIN( 0.5 * ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, z1pdenit * nitrfac(ji,jj,ikt) ) 356 zolimit = MAX( 0., zolimit ) 357 zdenitt = MAX( 0., zdenitt ) 350 358 trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) + z1pdenit - zolimit - zdenitt 351 359 trn(ji,jj,ikt,jpdon) = trn(ji,jj,ikt,jpdon) + (z1pdenit - zolimit - zdenitt) * zwstpon / (zwstpoc + rtrn) … … 424 432 END DO 425 433 426 427 434 IF( ln_check_mass ) THEN 428 435 ! Global budget of N SMS : denitrification in the water column and in the sediment -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsink.F90
r5288 r6231 112 112 DO jj = 1, jpj 113 113 DO ji = 1,jpi 114 zmax = MAX( heup_01(ji,jj), hmld(ji,jj) )115 zfact = MAX( 0., fsdepw(ji,jj,jk+1) - zmax ) / 5000._wp116 114 wsbio4(ji,jj,jk) = wsbio2 117 115 END DO … … 121 119 ! limit the values of the sinking speeds to avoid numerical instabilities 122 120 wsbio3(:,:,:) = wsbio 123 wscal(:,:,:) = wsbio4(:,:,:) 121 124 122 ! 125 123 ! OA This is (I hope) a temporary solution for the problem that may … … 169 167 END DO 170 168 169 wscal (:,:,:) = wsbio4(:,:,:) 170 171 171 ! Initializa to zero all the sinking arrays 172 172 ! ----------------------------------------- … … 196 196 CALL p4z_sink2( wsbio4, sinking2p, jpgop, iiter2 ) 197 197 CALL p4z_sink2( wsbio4, sinkfer2, jpbfe, iiter2 ) 198 CALL p4z_sink2( ws cal, sinksil , jpgsi, iiter2 )199 CALL p4z_sink2( wscal 198 CALL p4z_sink2( wsbio4, sinksil , jpgsi, iiter2 ) 199 CALL p4z_sink2( wscal, sinkcal , jpcal, iiter2 ) 200 200 END DO 201 201 -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsms.F90
r5288 r6231 170 170 !! natkriest ("key_kriest") 171 171 !!---------------------------------------------------------------------- 172 NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, no3rat3, po4rat3, wsbio2, niter1max, niter2max 172 NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, no3rat3, po4rat3, wsbio2, niter1max, niter2max, bmetexcess 173 173 #if defined key_kriest 174 174 NAMELIST/nampiskrp/ xkr_eta, xkr_zeta, xkr_ncontent, xkr_mass_min, xkr_mass_max … … 199 199 WRITE(numout,*) ' Maximum number of iterations for POC niter1max =', niter1max 200 200 WRITE(numout,*) ' Maximum number of iterations for GOC niter2max =', niter2max 201 WRITE(numout,*) ' Use excess carbon for respiration bmetexcess =', bmetexcess 201 202 ENDIF 202 203 -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r5289 r6231 49 49 REAL(wp) :: xkmort !: ??? 50 50 REAL(wp) :: ferat3 !: ??? 51 LOGICAL :: bmetexcess !: ??? 51 52 52 53 !!* diagnostic parameters -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r4607 r6231 58 58 !! or read data or analytical formulation 59 59 !!--------------------------------------------------------------------- 60 INTEGER :: j k, jn, jl ! dummy loop indices60 INTEGER :: ji,jj,jk, jn, jl ! dummy loop indices 61 61 CHARACTER (len=25) :: charout 62 62 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 4D workspace … … 138 138 ENDIF 139 139 ! 140 trn(:,:,:,:) = MAX(0., trn(:,:,:,:) ) 140 141 trb(:,:,:,:) = trn(:,:,:,:) 141 142 ! 142 ENDIF 143 143 ENDIF 144 144 145 tra(:,:,:,:) = 0._wp 145 146 -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r4152 r6231 103 103 DO jn = 1, jptra 104 104 CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 105 trn(:,:,:,jn) = trn(:,:,:,jn) * tmask(:,:,:) 105 106 END DO 106 107 107 108 DO jn = 1, jptra 108 109 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 110 trb(:,:,:,jn) = trb(:,:,:,jn) * tmask(:,:,:) 109 111 END DO 110 112 !
Note: See TracChangeset
for help on using the changeset viewer.