New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4148 for branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90 – NEMO

Ignore:
Timestamp:
2013-11-04T13:54:28+01:00 (10 years ago)
Author:
cetlod
Message:

merge in trunk changes between r3853 and r3940 and commit the changes, see ticket #1169

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r3751 r4148  
    6969      REAL(wp) ::  zwflux, zfminus, zfplus 
    7070      REAL(wp) ::  zlim, zfact, zfactcal 
    71       REAL(wp) ::  zo2, zno3, zflx, zpdenit, z1pdenit 
     71      REAL(wp) ::  zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit 
    7272      REAL(wp) ::  zsiloss, zcaloss, zwsbio3, zwsbio4, zwscal, zdep, zwstpoc 
    7373      REAL(wp) ::  ztrfer, ztrpo4, zwdust 
     
    105105            DO ji = 1, jpi 
    106106               zdep    = rfact2 / fse3t(ji,jj,1) 
    107     !           zwflux  = ( emps(ji,jj) - emp(ji,jj) ) & 
    108     !           &        * tsn(ji,jj,1,jp_sal) / ( tsn(ji,jj,1,jp_sal) - 6.0 ) / 1000. 
    109                zwflux = 0. 
    110                zfminus = MIN( 0., -zwflux ) * trn(ji,jj,1,jpfer) * zdep 
    111                zfplus  = MAX( 0., -zwflux ) * 10E-9 * zdep 
     107               zwflux  = fmmflx(ji,jj) / 1000._wp 
     108               zfminus = MIN( 0._wp, -zwflux ) * trn(ji,jj,1,jpfer) * zdep 
     109               zfplus  = MAX( 0._wp, -zwflux ) * icefeinput * zdep 
    112110               zironice(ji,jj) =  zfplus + zfminus 
    113111            END DO 
     
    135133         ENDIF 
    136134         zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 28.1  * rmtss ) 
    137          zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31.   * rmtss ) 
     135         zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31.   * rmtss ) / po4r  
    138136         !                                              ! Iron solubilization of particles in the water column 
    139137         zwdust = 0.005 / ( wdust * 55.85 * 30.42 ) / ( 45. * rday )  
     
    246244#endif 
    247245 
    248       ! THEN this loss is scaled at each bottom grid cell for 
    249       ! equilibrating the total budget of silica in the ocean. 
    250       ! Thus, the amount of silica lost in the sediments equal 
    251       ! the supply at the surface (dust+rivers) 
     246      ! This loss is scaled at each bottom grid cell for equilibrating the total budget of silica in the ocean. 
     247      ! Thus, the amount of silica lost in the sediments equal the supply at the surface (dust+rivers) 
    252248      ! ------------------------------------------------------ 
    253249#if ! defined key_sed 
     
    302298 
    303299#if ! defined key_sed 
    304             zpdenit  = MIN( ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 
     300            ! The 0.5 factor in zpdenit and zdenitt is to avoid negative NO3 concentration after both denitrification 
     301            ! in the sediments and just above the sediments. Not very clever, but simpliest option. 
     302            zpdenit  = MIN( 0.5 * ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 
    305303            z1pdenit = zwstpoc * zrivno3 - zpdenit 
    306             trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) + z1pdenit 
    307             trn(ji,jj,ikt,jppo4) = trn(ji,jj,ikt,jppo4) + zpdenit 
    308             trn(ji,jj,ikt,jpnh4) = trn(ji,jj,ikt,jpnh4) + zpdenit 
    309             trn(ji,jj,ikt,jpno3) = trn(ji,jj,ikt,jpno3) - rdenit * zpdenit 
    310             trn(ji,jj,ikt,jptal) = trn(ji,jj,ikt,jptal) + rno3 * ( 1. + rdenit ) * zpdenit 
    311             trn(ji,jj,ikt,jpdic) = trn(ji,jj,ikt,jpdic) + zpdenit 
     304            zolimit = MIN( ( trn(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 
     305            zdenitt = MIN(  0.5 * ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, z1pdenit * nitrfac(ji,jj,ikt) ) 
     306            trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) + z1pdenit - zolimit - zdenitt 
     307            trn(ji,jj,ikt,jppo4) = trn(ji,jj,ikt,jppo4) + zpdenit + zolimit + zdenitt 
     308            trn(ji,jj,ikt,jpnh4) = trn(ji,jj,ikt,jpnh4) + zpdenit + zolimit + zdenitt 
     309            trn(ji,jj,ikt,jpno3) = trn(ji,jj,ikt,jpno3) - rdenit * (zpdenit + zdenitt) 
     310            trn(ji,jj,ikt,jpoxy) = trn(ji,jj,ikt,jpoxy) - zolimit * o2ut 
     311            trn(ji,jj,ikt,jptal) = trn(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * (zpdenit + zdenitt) ) 
     312            trn(ji,jj,ikt,jpdic) = trn(ji,jj,ikt,jpdic) + zpdenit + zolimit + zdenitt 
    312313            zwork4(ji,jj) = rdenit * zpdenit * fse3t(ji,jj,ikt) 
    313314#endif 
Note: See TracChangeset for help on using the changeset viewer.