- Timestamp:
- 2017-05-09T12:14:45+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zagg.F90
r7190 r8003 36 36 CONTAINS 37 37 38 #if ! defined key_kriest39 38 !!---------------------------------------------------------------------- 40 39 !! 'standard particles parameterisation' ??? … … 68 67 ! 69 68 zstep = xstep 70 # if defined key_degrad71 zstep = zstep * facvol(ji,jj,jk)72 # endif73 69 zfact = zstep * xdiss(ji,jj,jk) 74 70 ! Part I : Coagulation dependent on turbulence … … 146 142 147 143 #else 148 !!----------------------------------------------------------------------149 !! 'Kriest parameterisation' key_kriest ???150 !!----------------------------------------------------------------------151 152 SUBROUTINE p5z_agg ( kt, knt )153 !!---------------------------------------------------------------------154 !! *** ROUTINE p5z_agg ***155 !!156 !! ** Purpose : Compute aggregation of particles157 !!158 !! ** Method : - ???159 !!---------------------------------------------------------------------160 !161 INTEGER, INTENT(in) :: kt, knt162 !163 INTEGER :: ji, jj, jk164 REAL(wp) :: zagg1, zagg2, zagg3, zagg4, zagg5, zfract, zaggsi, zaggsh165 REAL(wp) :: zagg , zaggdoc, zaggdoc1, znumdoc166 REAL(wp) :: znum , zeps, zfm, zgm, zsm, zfactn, zfactp167 REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5168 REAL(wp) :: zval1, zval2, zval3, zval4169 CHARACTER (len=25) :: charout170 !!---------------------------------------------------------------------171 !172 IF( nn_timing == 1 ) CALL timing_start('p5z_agg')173 !174 ! Exchange between organic matter compartments due to coagulation/disaggregation175 ! ---------------------------------------------------176 177 zval1 = 1. + xkr_zeta178 zval2 = 1. + xkr_eta179 zval3 = 3. + xkr_eta180 zval4 = 4. + xkr_eta181 182 DO jk = 1,jpkm1183 DO jj = 1,jpj184 DO ji = 1,jpi185 IF( tmask(ji,jj,jk) /= 0.e0 ) THEN186 187 znum = trb(ji,jj,jk,jppoc)/(trb(ji,jj,jk,jpnum)+rtrn) / xkr_massp188 !-------------- To avoid sinking speed over 50 m/day -------189 znum = min(xnumm(jk),znum)190 znum = MAX( 1.1,znum)191 !------------------------------------------------------------192 zeps = ( zval1 * znum - 1.) / ( znum - 1.)193 zdiv = MAX( 1.e-4, ABS( zeps - zval3) ) * SIGN( 1., zeps - zval3 )194 zdiv1 = MAX( 1.e-4, ABS( zeps - 4. ) ) * SIGN( 1., zeps - 4. )195 zdiv2 = zeps - 2.196 zdiv3 = zeps - 3.197 zdiv4 = zeps - zval2198 zdiv5 = 2.* zeps - zval4199 zfm = xkr_frac**( 1.- zeps )200 zsm = xkr_frac**xkr_eta201 202 ! Part I : Coagulation dependant on turbulence203 ! ----------------------------------------------204 zagg1 = 0.163 * trb(ji,jj,jk,jpnum)**2 &205 & * 2.*( (zfm-1.)*(zfm*xkr_mass_max**3-xkr_mass_min**3) &206 & * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min) &207 & * (zfm*xkr_mass_max**2-xkr_mass_min**2) &208 & * (zeps-1.)**2/(zdiv2*zdiv3))209 zagg2 = 2*0.163*trb(ji,jj,jk,jpnum)**2*zfm &210 & * ((xkr_mass_max**3+3.*(xkr_mass_max**2 &211 & * xkr_mass_min*(zeps-1.)/zdiv2 &212 & + xkr_mass_max*xkr_mass_min**2*(zeps-1.)/zdiv3) &213 & + xkr_mass_min**3*(zeps-1)/zdiv1) &214 & - zfm*xkr_mass_max**3*(1.+3.*((zeps-1.) &215 & / (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))216 217 zagg3 = 0.163*trb(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3218 219 ! Aggregation of small into large particles220 ! Part II : Differential settling221 ! ----------------------------------------------222 zagg4 = 2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2* &223 & xkr_wsbio_min*(zeps-1.)**2 &224 & *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4) &225 & -(1.-zfm)/(zdiv*(zeps-1.)))- &226 & ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2) &227 & *xkr_eta)/(zdiv*zdiv3*zdiv5) )228 229 zagg5 = 2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2 &230 & *(zeps-1.)*zfm*xkr_wsbio_min &231 & *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2) &232 & /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2) &233 & /zdiv)234 235 !236 ! Fractionnation by swimming organisms237 ! ------------------------------------238 zfract = 2.*3.141*0.125*trb(ji,jj,jk,jpmes)*12./0.12/0.06**3*trb(ji,jj,jk,jpnum) &239 & * (0.01/xkr_mass_min)**(1.-zeps)*0.1**2 &240 & * 10000.*xstep241 242 ! Aggregation of DOC to small particles243 ! --------------------------------------244 zaggdoc = 0.83 * trb(ji,jj,jk,jpdoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc) &245 & + 0.005 * 231. * trb(ji,jj,jk,jpdoc) * xstep * trb(ji,jj,jk,jpdoc)246 zaggdoc1 = 271. * trb(ji,jj,jk,jppoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc) &247 & + 0.02 * 16706. * trb(ji,jj,jk,jppoc) * xstep * trb(ji,jj,jk,jpdoc)248 249 # if defined key_degrad250 zagg1 = zagg1 * facvol(ji,jj,jk)251 zagg2 = zagg2 * facvol(ji,jj,jk)252 zagg3 = zagg3 * facvol(ji,jj,jk)253 zagg4 = zagg4 * facvol(ji,jj,jk)254 zagg5 = zagg5 * facvol(ji,jj,jk)255 zaggdoc = zaggdoc * facvol(ji,jj,jk)256 zaggdoc1 = zaggdoc1 * facvol(ji,jj,jk)257 # endif258 zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000.259 zaggsi = ( zagg4 + zagg5 ) * xstep / 10.260 zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi )261 !262 znumdoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn )263 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc + zaggdoc1264 zfactn = trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn )265 tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + ( zaggdoc + zaggdoc1 ) * zfactn266 zfactp = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn )267 tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + ( zaggdoc + zaggdoc1 ) * zfactp268 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zfract + zaggdoc / xkr_massp - zagg269 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc1270 271 ENDIF272 END DO273 END DO274 END DO275 !276 IF(ln_ctl) THEN ! print mean trends (used for debugging)277 WRITE(charout, FMT="('agg')")278 CALL prt_ctl_trc_info(charout)279 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)280 ENDIF281 !282 CALL wrk_dealloc( jpi, jpj, jpk, znum3d )283 !284 IF( nn_timing == 1 ) CALL timing_stop('p5z_agg')285 !286 END SUBROUTINE p5z_agg287 288 #endif289 290 #else291 144 !!====================================================================== 292 145 !! Dummy module : No PISCES bio-model
Note: See TracChangeset
for help on using the changeset viewer.