- Timestamp:
- 2020-03-11T16:02:54+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zsed.F90
r10788 r12537 2 2 !!====================================================================== 3 3 !! *** MODULE p4sed *** 4 !! TOP : PISCES Compute loss of organic matter in the sediments 4 !! TOP : PISCES Compute loss of biogenic matter in the sediments 5 !! Compute gain/loss of tracers from dust, rivers and 6 !! sediments 7 !! This module is used both by PISCES and PISCES-QUOTA 5 8 !!====================================================================== 6 9 !! History : 1.0 ! 2004-03 (O. Aumont) Original code … … 8 11 !! 3.4 ! 2011-06 (C. Ethe) USE of fldread 9 12 !! 3.5 ! 2012-07 (O. Aumont) improvment of river input of nutrients 10 !!---------------------------------------------------------------------- 13 !!----------------------------------------------------------------------- 11 14 !! p4z_sed : Compute loss of organic matter in the sediments 12 !!---------------------------------------------------------------------- 15 !! : Compute gain/loss of tracers from dust, rivers and 16 !! sediments 17 !!----------------------------------------------------------------------- 13 18 USE oce_trc ! shared variables between ocean and passive tracers 14 19 USE trc ! passive tracers common variables … … 43 48 !! *** ROUTINE p4z_sed *** 44 49 !! 45 !! ** Purpose : Compute loss of organic matter in the sediments. This 46 !! is by no way a sediment model. The loss is simply 47 !! computed to balance the inout from rivers and dust 50 !! ** Purpose : Compute loss of biogenic matter in the sediments. This 51 !! is by no way a real sediment model. The loss is simply 52 !! computed from metamodels. 53 !! Loss/gain of tracers are also computed here for 54 !! dust, rivers, sediments and hydrothermal vents (Fe) 55 !! N2 fixation is modeled using an implicit approach 48 56 !! 49 57 !! ** Method : - ??? … … 93 101 zsedc (:,:) = 0.e0 94 102 95 ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 103 ! Iron input/uptake due to sea ice : Crude parameterization based on 104 ! Lancelot et al. Iron concentration in sea-ice is constant and set 105 ! in the namelist_pisces (icefeinput). ln_ironice is forced to false 106 ! when nn_ice_tr = 1 96 107 ! ---------------------------------------------------- 97 108 IF( ln_ironice ) THEN … … 99 110 ALLOCATE( zironice(jpi,jpj) ) 100 111 ! 112 ! Compute the iron flux between sea ice and sea water 101 113 DO jj = 1, jpj 102 114 DO ji = 1, jpi … … 106 118 END DO 107 119 END DO 108 ! 120 ! Update of the TRA array 109 121 tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:) 110 122 ! … … 121 133 ! 122 134 ALLOCATE( zsidep(jpi,jpj), zpdep(jpi,jpj,jpk), zirondep(jpi,jpj,jpk) ) 123 ! ! Iron and Si deposition at the surface 135 ! Iron, P and Si deposition at the surface 136 ! Iron flux at the surface due to dust deposition. Solubility can be 137 ! be variable if ln_solub is set to true. In that case, solubility 138 ! has to be provided in the specific input file (read in p4zsbc) 139 ! ------------------------------------------------------------------ 124 140 IF( ln_solub ) THEN 125 141 zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss … … 127 143 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss 128 144 ENDIF 145 ! Si and P flux at the surface due to dust deposition. The content 146 ! and the solubility are hard coded 147 ! ---------------------------------------------------------------- 129 148 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1 130 149 zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r 131 ! ! Iron solubilization of particles in the water column 132 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j 133 zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 150 ! Iron solubilization of particles in the water column 151 ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/d 152 ! Dust are supposed to sink at wdust sinking speed. 3% of the iron 153 ! in dust is hypothesized to be soluble at a dissolution rate set to 154 ! 1/(250 days). The vertical distribution of iron in dust is computed 155 ! from a steady state assumption. Parameters are very uncertain and 156 ! are estimated from the literature quoted in Raiswell et al. (2011) 157 ! ------------------------------------------------------------------- 158 zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 250. * rday ) 134 159 DO jk = 2, jpkm1 135 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / 540.)160 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / (250. * wdust) ) 136 161 zpdep (:,:,jk) = zirondep(:,:,jk) * 0.023 137 162 END DO 138 ! ! Iron solubilization of particles in the water column163 ! Solubilization of particles in the water column (Si, P, Fe) 139 164 tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep (:,:) 140 165 DO jk = 1, jpkm1 … … 156 181 157 182 ! Add the external input of nutrients from river 158 ! ---------------------------------------------- ------------183 ! ---------------------------------------------- 159 184 IF( ln_river ) THEN 160 185 DO jj = 1, jpj … … 171 196 ENDDO 172 197 ENDDO 198 ! When prognostic ligands are activated, ligands are supplied 199 ! to the ocean by rivers. We assume that the amount of ligands 200 ! is equal to that of iron (iron is completely complexed) 201 ! ------------------------------------------------------------ 173 202 IF (ln_ligand) THEN 174 203 DO jj = 1, jpj … … 180 209 ENDDO 181 210 ENDIF 211 ! PISCES-QUOTA part 182 212 IF( ln_p5z ) THEN 183 213 DO jj = 1, jpj … … 200 230 201 231 ! Add the external input of iron from hydrothermal vents 202 ! ------------------------------------------------------ 232 ! Please refer to Tagliabue et al. (2010) for more information 233 ! ------------------------------------------------------------ 203 234 IF( ln_hydrofe ) THEN 204 235 tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact2 … … 211 242 ENDIF 212 243 213 ! OA: Warning, the following part is necessary to avoid CFL problems above the sediments 244 ! OA: Warning, the following part is necessary to avoid CFL problems 245 ! above the sediments. Vertical sinking speed is limited using the 246 ! typical CFL criterion 214 247 ! -------------------------------------------------------------------- 215 248 DO jj = 1, jpj … … 222 255 END DO 223 256 ! 257 ! No sediment module activated 224 258 IF( .NOT.lk_sed ) THEN 225 259 ! … … 233 267 ENDIF 234 268 235 ! Computation of the sediment denitrification proportion: The metamodel from midlleburg (2006) is being used 236 ! Computation of the fraction of organic matter that is permanently buried from Dunne's model 269 ! Computation of the sediment denitrification proportion: The metamodel 270 ! from Middleburg (2006) is used 271 ! Computation of the fraction of organic matter that is permanently 272 ! buried from Dunne's model (2007) 237 273 ! ------------------------------------------------------- 238 274 DO jj = 1, jpj … … 259 295 ENDIF 260 296 261 ! This loss is scaled at each bottom grid cell for equilibrating the total budget of silica in the ocean. 262 ! Thus, the amount of silica lost in the sediments equal the supply at the surface (dust+rivers) 263 ! ------------------------------------------------------ 297 ! Fraction of dSi that is remineralized in the sediments. This is 298 ! set so that the burial in sediments equals the total input of Si 299 ! by rivers and dust (sedsilfrac) 300 ! ---------------------------------------------------------------- 264 301 IF( .NOT.lk_sed ) zrivsil = 1._wp - sedsilfrac 265 302 303 ! Loss of bSi and CaCO3 to the sediments 266 304 DO jj = 1, jpj 267 305 DO ji = 1, jpi … … 278 316 ! 279 317 IF( .NOT.lk_sed ) THEN 318 ! Dissolution of CaCO3 and bSi in the sediments. This is 319 ! instantaneous since here sediments are not explicitly 320 ! modeled. The amount of CaCO3 that dissolves in the sediments 321 ! is computed using a metamodel constructed from Archer (1996) 322 ! ------------------------------------------------------------ 280 323 DO jj = 1, jpj 281 324 DO ji = 1, jpi … … 298 341 ENDIF 299 342 ! 343 ! Loss of particulate organic carbon and Fe to the sediments 300 344 DO jj = 1, jpj 301 345 DO ji = 1, jpi … … 311 355 END DO 312 356 ! 357 ! Loss of particulate organic N and P to the sediments (p5z) 313 358 IF( ln_p5z ) THEN 314 359 DO jj = 1, jpj … … 327 372 328 373 IF( .NOT.lk_sed ) THEN 374 ! Degradation of organic matter in the sediments. The metamodel of 375 ! Middleburg (2006) is used here to mimic the diagenetic reactions. 329 376 ! The 0.5 factor in zpdenit is to avoid negative NO3 concentration after 330 377 ! denitrification in the sediments. Not very clever, but simpliest option. 378 ! ------------------------------------------------------------------------ 331 379 DO jj = 1, jpj 332 380 DO ji = 1, jpi … … 360 408 361 409 362 ! Nitrogen fixation process 363 ! Small source iron from particulate inorganic iron364 !----------------------------------- 410 ! Nitrogen fixation process : light limitation of diazotrophy 411 ! Small source of iron from particulate inorganic iron (photochemistry) 412 !---------------------------------------------------------------------- 365 413 DO jk = 1, jpkm1 366 414 zlight (:,:,jk) = ( 1.- EXP( -etot_ndcy(:,:,jk) / diazolight ) ) * ( 1. - fr_i(:,:) ) 367 415 zsoufer(:,:,jk) = zlight(:,:,jk) * 2E-11 / ( 2E-11 + biron(:,:,jk) ) 368 416 ENDDO 417 418 ! Diazotrophy (nitrogen fixation) is modeled according to an empirical 419 ! formulation. This is described in Aumont et al. (2015). Limitation 420 ! by P and Fe is computed. Inhibition by high N concentrations is imposed. 421 ! Diazotrophy sensitivity to temperature is parameterized as in 422 ! Ye et al. (2012) 423 ! ------------------------------------------------------------------------ 369 424 IF( ln_p4z ) THEN 425 ! PISCES part 370 426 DO jk = 1, jpkm1 371 427 DO jj = 1, jpj 372 428 DO ji = 1, jpi 373 ! !Potential nitrogen fixation dependant on temperature and iron429 ! Potential nitrogen fixation dependant on temperature and iron 374 430 ztemp = tsn(ji,jj,jk,jp_tem) 375 431 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 376 ! Potential nitrogen fixation dependant on temperature and iron377 432 xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 378 433 xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) … … 388 443 END DO 389 444 ELSE ! p5z 445 ! PISCES-QUOTA part 390 446 DO jk = 1, jpkm1 391 447 DO jj = 1, jpj 392 448 DO ji = 1, jpi 393 ! !Potential nitrogen fixation dependant on temperature and iron449 ! Potential nitrogen fixation dependant on temperature and iron 394 450 ztemp = tsn(ji,jj,jk,jp_tem) 395 451 zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 396 ! Potential nitrogen fixation dependant on temperature and iron397 452 xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 398 453 xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) … … 410 465 ENDIF 411 466 412 ! Nitrogen changedue to nitrogen fixation413 ! ---------------------------------------- 467 ! Update of the TRA arrays due to nitrogen fixation 468 ! ------------------------------------------------- 414 469 IF( ln_p4z ) THEN 470 ! PISCES part 415 471 DO jk = 1, jpkm1 416 472 DO jj = 1, jpj … … 428 484 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 429 485 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 430 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trb(ji,jj,jk,jppo4) ) &431 & * 0.001 * trb(ji,jj,jk,jpdoc) * xstep432 486 END DO 433 487 END DO 434 488 END DO 435 489 ELSE ! p5z 490 ! PISCES-QUOTA part 436 491 DO jk = 1, jpkm1 437 492 DO jj = 1, jpj … … 475 530 CALL iom_put( "INTNFIX" , zwork ) 476 531 ENDIF 477 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 478 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) 479 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * zfact ) 480 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) 532 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) ! Permanent burial of CaCO3 in sediments 533 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) ! Permanent burial of bSi in sediments 534 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * zfact ) ! Permanent burial of OC in sediments 535 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) ! Denitrification in the sediments 481 536 ENDIF 482 537 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.