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 10127 for NEMO/trunk/src/TOP/PISCES/P4Z/p4zsed.F90 – NEMO

Ignore:
Timestamp:
2018-09-13T17:27:54+02:00 (6 years ago)
Author:
cetlod
Message:

Bugfix to allow the use of on-the-fly interpolation for PISCES ancillary data, see ticket #2003

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/TOP/PISCES/P4Z/p4zsed.F90

    r10068 r10127  
    4949      ! 
    5050      INTEGER, INTENT(in) ::   kt, knt ! ocean time step 
    51       INTEGER  ::   ji, jj, jk, ikt 
    52       REAL(wp) ::   zsumsedsi, zsumsedpo4, zsumsedcal 
    53       REAL(wp) ::   zrivalk, zrivsil, zrivno3 
     51      INTEGER  ::  ji, jj, jk, ikt 
     52      REAL(wp) ::  zrivalk, zrivsil, zrivno3 
    5453      REAL(wp) ::  zwflux, zfminus, zfplus 
    5554      REAL(wp) ::  zlim, zfact, zfactcal 
     
    6261      ! 
    6362      CHARACTER (len=25) :: charout 
    64       REAL(wp), DIMENSION(jpi,jpj    ) :: zwork1, zwork2, zwork3 
    65       REAL(wp), DIMENSION(jpi,jpj    ) :: zdenit2d, zbureff 
     63      REAL(wp), DIMENSION(jpi,jpj    ) :: zdenit2d, zbureff, zwork 
    6664      REAL(wp), DIMENSION(jpi,jpj    ) :: zwsbio3, zwsbio4, zwscal 
    6765      REAL(wp), DIMENSION(jpi,jpj    ) :: zsedcal, zsedsi, zsedc 
     
    8280      zdenit2d(:,:) = 0.e0 
    8381      zbureff (:,:) = 0.e0 
    84       zwork1  (:,:) = 0.e0 
    85       zwork2  (:,:) = 0.e0 
    86       zwork3  (:,:) = 0.e0 
     82      zwork   (:,:) = 0.e0 
    8783      zsedsi  (:,:) = 0.e0 
    8884      zsedcal (:,:) = 0.e0 
     
    255251                   &     + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6 
    256252                 zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2 
    257                 ENDIF 
    258               END DO 
    259            END DO  
    260  
    261            ! Loss of biogenic silicon, Caco3 organic carbon in the sediments.  
    262            ! First, the total loss is computed. 
    263            ! The factor for calcite comes from the alkalinity effect 
    264            ! ------------------------------------------------------------- 
    265            DO jj = 1, jpj 
    266               DO ji = 1, jpi 
    267                  IF( tmask(ji,jj,1) == 1 ) THEN 
    268                     ikt = mbkt(ji,jj)  
    269                     zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    270                     zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    271                     ! For calcite, burial efficiency is made a function of saturation 
    272                     zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
    273                     zfactcal      = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    274                     zwork3(ji,jj) = trb(ji,jj,ikt,jpcal) * zwscal(ji,jj) * 2.e0 * zfactcal 
    275                 ENDIF 
    276             END DO 
    277          END DO 
    278          zsumsedsi  = glob_sum( zwork1(:,:) * e1e2t(:,:) ) * r1_rday 
    279          zsumsedpo4 = glob_sum( zwork2(:,:) * e1e2t(:,:) ) * r1_rday 
    280          zsumsedcal = glob_sum( zwork3(:,:) * e1e2t(:,:) ) * r1_rday 
     253              ENDIF 
     254            END DO 
     255         END DO  
    281256         ! 
    282257      ENDIF 
     
    285260      ! Thus, the amount of silica lost in the sediments equal the supply at the surface (dust+rivers) 
    286261      ! ------------------------------------------------------ 
    287       IF( .NOT.lk_sed )  zrivsil =  1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / ( zsumsedsi + rtrn ) 
     262      IF( .NOT.lk_sed )  zrivsil = 1._wp - sedsilfrac 
    288263 
    289264      DO jj = 1, jpj 
     
    312287               zfactcal = MIN( excess(ji,jj,ikt), 0.2 ) 
    313288               zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    314                zrivalk  =  1._wp - ( rivalkinput * r1_ryyss ) * zfactcal / ( zsumsedcal + rtrn ) 
     289               zrivalk  = sedcalfrac * zfactcal 
    315290               tra(ji,jj,ikt,jptal) =  tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 
    316291               tra(ji,jj,ikt,jpdic) =  tra(ji,jj,ikt,jpdic) + zcaloss * zrivalk 
     
    492467            IF( iom_use("Nfix"   ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) )  ! nitrogen fixation  
    493468            IF( iom_use("INTNFIX") ) THEN   ! nitrogen fixation rate in ocean ( vertically integrated ) 
    494                zwork1(:,:) = 0. 
     469               zwork(:,:) = 0. 
    495470               DO jk = 1, jpkm1 
    496                  zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * e3t_n(:,:,jk) * tmask(:,:,jk) 
     471                 zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * e3t_n(:,:,jk) * tmask(:,:,jk) 
    497472               ENDDO 
    498                CALL iom_put( "INTNFIX" , zwork1 )  
     473               CALL iom_put( "INTNFIX" , zwork )  
    499474            ENDIF 
    500475            IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 
Note: See TracChangeset for help on using the changeset viewer.