Changeset 15459 for NEMO/trunk/src/TOP/PISCES/P4Z/p4zpoc.F90
- Timestamp:
- 2021-10-29T10:19:18+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/TOP/PISCES/P4Z/p4zpoc.F90
r15090 r15459 3 3 !! *** MODULE p4zpoc *** 4 4 !! TOP : PISCES Compute remineralization of organic particles 5 !! Same module for both PISCES and PISCES-QUOTA 5 6 !!========================================================================= 6 7 !! History : 1.0 ! 2004 (O. Aumont) Original code … … 8 9 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Quota model for iron 9 10 !! 3.6 ! 2016-03 (O. Aumont) Quota model and diverse 11 !! 4.0 ! 2018 (O. Aumont) Variable lability parameterization 10 12 !!---------------------------------------------------------------------- 11 13 !! p4z_poc : Compute remineralization/dissolution of organic compounds 12 14 !! p4z_poc_init : Initialisation of parameters for remineralisation 15 !! alngam and gamain : computation of the incomplete gamma function 13 16 !!---------------------------------------------------------------------- 14 17 USE oce_trc ! shared variables between ocean and passive tracers … … 22 25 23 26 PUBLIC p4z_poc ! called in p4zbio.F90 24 PUBLIC p4z_poc_init ! called in trc sms_pisces.F9025 PUBLIC alngam ! 27 PUBLIC p4z_poc_init ! called in trcini_pisces.F90 28 PUBLIC alngam ! 26 29 PUBLIC gamain ! 27 30 … … 33 36 REAL(wp), PUBLIC :: rshape !: shape factor of the gamma distribution 34 37 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: alphan, reminp !: 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: alphap !: 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: alphan, reminp !: variable lability of POC and initial distribution 39 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: alphap !: lability distribution of small particles 37 40 38 41 … … 52 55 !! 53 56 !! ** Purpose : Compute remineralization of organic particles 57 !! A reactivity-continuum parameterization is chosen 58 !! to describe the lability of the organic particles 59 !! As a consequence, the remineralisation rates of the 60 !! the different pools change with time as a function of 61 !! the lability distribution 54 62 !! 55 !! ** Method : - ??? 63 !! ** Method : - Computation of the remineralisation rates is performed 64 !! according to reactivity continuum formalism described 65 !! in Aumont et al. (2017). 56 66 !!--------------------------------------------------------------------- 57 67 INTEGER, INTENT(in) :: kt, knt ! ocean time step and ??? … … 83 93 solgoc = 0.04/ 2.56 * 1./ ( 1.-50**(-0.04) ) 84 94 85 ! Initialisation of temp rary arrys95 ! Initialisation of temporary arrays 86 96 IF( ln_p4z ) THEN 87 97 zremipoc(:,:,:) = xremip … … 96 106 zfolimi (:,:,:) = 0. 97 107 108 ! Initialisation of the lability distributions that are set to 109 ! the distribution of newly produced organic particles 98 110 DO jn = 1, jcpoc 99 111 alphag(:,:,:,jn) = alphan(jn) … … 101 113 END DO 102 114 103 ! -----------------------------------------------------------------------104 115 ! Lability parameterization. This is the big particles part (GOC) 105 ! This lability parameterization can be activated only with the standard 106 ! particle scheme. Does not work with Kriest parameterization. 116 ! This lability parameterization is always active. However, if only one 117 ! lability class is specified in the namelist, this is equivalent to 118 ! a standard parameterisation with a constant lability 107 119 ! ----------------------------------------------------------------------- 108 120 ztremint(:,:,:) = zremigoc(:,:,:) … … 192 204 193 205 IF( ln_p4z ) THEN 206 ! The standard PISCES part 194 207 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 195 ! POC disaggregation by turbulence and bacterial activity. 196 ! -------------------------------------------------------- 208 ! POC degradation by bacterial activity. It is a function 209 ! of the mean lability and of temperature. This also includes 210 ! shrinking of particles due to the bacterial activity 211 ! ----------------------------------------------------------- 197 212 zremig = zremigoc(ji,jj,jk) * xstep * tgfunc(ji,jj,jk) 198 213 zorem2 = zremig * tr(ji,jj,jk,jpgoc,Kbb) … … 202 217 zofer3 = zremig * solgoc * tr(ji,jj,jk,jpbfe,Kbb) 203 218 204 ! -------------------------------------219 ! update of the TRA arrays 205 220 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zorem3(ji,jj,jk) 206 221 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) - zorem2 - zorem3(ji,jj,jk) … … 213 228 ELSE 214 229 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 215 ! POC disaggregation by turbulence and bacterial activity. 230 ! POC degradation by bacterial activity. It is a function 231 ! of the mean lability and of temperature. This also includes 232 ! shrinking of particles due to the bacterial activity 216 233 ! -------------------------------------------------------- 217 234 zremig = zremigoc(ji,jj,jk) * xstep * tgfunc(ji,jj,jk) … … 223 240 zofer2 = xremipn / xremipc * zremig * tr(ji,jj,jk,jpbfe,Kbb) 224 241 225 ! -------------------------------------242 ! update of the TRA arrays 226 243 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zorem3(ji,jj,jk) 227 244 tr(ji,jj,jk,jppon,Krhs) = tr(ji,jj,jk,jppon,Krhs) + solgoc * zopon2 … … 246 263 ENDIF 247 264 248 ! ------------------------------------------------------------------249 265 ! Lability parameterization for the small OM particles. This param 250 266 ! is based on the same theoretical background as the big particles. 251 267 ! However, because of its low sinking speed, lability is not supposed 252 268 ! to be equal to its initial value (the value of the freshly produced 253 ! organic matter). It is however uniform in the mixed layer. 254 ! ------------------------------------------------------------------- 255 ! 269 ! organic matter) in the MLD. It is however uniform in the mixed layer. 270 ! --------------------------------------------------------------------- 256 271 totprod (:,:) = 0. 257 272 totthick(:,:) = 0. 258 273 totcons (:,:) = 0. 274 259 275 ! intregrated production and consumption of POC in the mixed layer 260 276 ! ---------------------------------------------------------------- 261 !262 277 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 263 278 zdep = hmld(ji,jj) … … 272 287 273 288 ! Computation of the lability spectrum in the mixed layer. In the mixed 274 ! layer, this spectrum is supposed to be uniform. 289 ! layer, this spectrum is supposed to be uniform as a result of intense 290 ! mixing. 275 291 ! --------------------------------------------------------------------- 276 292 ztremint(:,:,:) = zremipoc(:,:,:) … … 302 318 ENDIF 303 319 304 ! -----------------------------------------------------------------------305 320 ! The lability parameterization is used here. The code is here 306 321 ! almost identical to what is done for big particles. The only difference … … 309 324 ! should be determined before. 310 325 ! ----------------------------------------------------------------------- 311 !312 326 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpkm1) 313 327 IF (tmask(ji,jj,jk) == 1.) THEN … … 386 400 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 387 401 IF (tmask(ji,jj,jk) == 1.) THEN 388 ! POC disaggregation by turbulence and bacterial activity. 402 ! POC disaggregation by turbulence and bacterial activity.It is a function 403 ! of the mean lability and of temperature 389 404 ! -------------------------------------------------------- 390 405 zremip = zremipoc(ji,jj,jk) * xstep * tgfunc(ji,jj,jk) 391 406 zorem = zremip * tr(ji,jj,jk,jppoc,Kbb) 392 407 zofer = zremip * tr(ji,jj,jk,jpsfe,Kbb) 393 408 409 ! Update of the TRA arrays 394 410 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zorem 395 411 orem(ji,jj,jk) = orem(ji,jj,jk) + zorem … … 402 418 ELSE 403 419 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 404 ! POC disaggregation by turbulence and bacterial activity. 405 ! -------------------------------------------------------- 420 ! POC disaggregation by turbulence and bacterial activity.It is a function 421 ! of the mean lability and of temperature 422 !-------------------------------------------------------- 406 423 zremip = zremipoc(ji,jj,jk) * xstep * tgfunc(ji,jj,jk) 407 424 zopoc = zremip * tr(ji,jj,jk,jppoc,Kbb) … … 410 427 zopop = xremipp / xremipc * zremip * tr(ji,jj,jk,jppop,Kbb) 411 428 zofer = xremipn / xremipc * zremip * tr(ji,jj,jk,jpsfe,Kbb) 412 429 430 ! Update of the TRA arrays 413 431 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) - zopoc 414 432 tr(ji,jj,jk,jppon,Krhs) = tr(ji,jj,jk,jppon,Krhs) - zopon … … 426 444 IF( knt == nrdttrc ) THEN 427 445 zrfact2 = 1.e3 * rfact2r 428 CALL iom_put( "REMINP" , zremipoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate 429 CALL iom_put( "REMING" , zremigoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate 430 CALL iom_put( "REMINF" , zfolimi(:,:,:) * tmask(:,:,:) * 1.e+9 * zrfact2 ) ! Remineralisation rate446 CALL iom_put( "REMINP" , zremipoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate of small particles 447 CALL iom_put( "REMING" , zremigoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate of large particles 448 CALL iom_put( "REMINF" , zfolimi(:,:,:) * tmask(:,:,:) * 1.e+9 * zrfact2 ) ! Remineralisation of biogenic particulate iron 431 449 ENDIF 432 450 ENDIF … … 493 511 ALLOCATE( alphan(jcpoc) , reminp(jcpoc) , alphap(jpi,jpj,jpk,jcpoc) ) 494 512 ! 495 IF (jcpoc > 1) THEN 513 IF (jcpoc > 1) THEN ! Case when more than one lability class is used 496 514 ! 497 515 remindelta = LOG(4. * 1000. ) / REAL(jcpoc-1, wp) … … 517 535 reminp(jcpoc) = reminp(jcpoc) * xremip / alphan(jcpoc) 518 536 519 ELSE 537 ELSE ! Only one lability class is used 520 538 alphan(jcpoc) = 1. 521 539 reminp(jcpoc) = xremip
Note: See TracChangeset
for help on using the changeset viewer.