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 9241 for branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90 – NEMO

Ignore:
Timestamp:
2018-01-16T13:59:31+01:00 (6 years ago)
Author:
cetlod
Message:

v3.6 stable : bugfix on PISCES, see ticket #2003

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r8610 r9241  
    6161      INTEGER  ::   ji, jj, jk, ikt 
    6262#if ! defined key_sed 
    63       REAL(wp) ::   zsumsedsi, zsumsedpo4, zsumsedcal 
    6463      REAL(wp) ::   zrivalk, zrivsil, zrivno3 
    6564#endif 
     
    7170      ! 
    7271      CHARACTER (len=25) :: charout 
    73       REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork1, zwork2, zwork3 
     72      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork 
    7473      REAL(wp), POINTER, DIMENSION(:,:)   :: zsedcal, zsedsi, zsedc 
    7574      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice, zbureff 
     
    8382      ! 
    8483      ! Allocate temporary workspace 
    85       CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff ) 
     84      CALL wrk_alloc( jpi, jpj, zdenit2d, zbureff ) 
    8685      CALL wrk_alloc( jpi, jpj, zsedcal,  zsedsi, zsedc ) 
    8786      CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 
     
    9089      zdenit2d(:,:) = 0.e0 
    9190      zbureff (:,:) = 0.e0 
    92       zwork1  (:,:) = 0.e0 
    93       zwork2  (:,:) = 0.e0 
    94       zwork3  (:,:) = 0.e0 
    9591      zsedsi   (:,:) = 0.e0 
    9692      zsedcal  (:,:) = 0.e0 
     
    247243      END DO  
    248244 
    249       ! Loss of biogenic silicon, Caco3 organic carbon in the sediments.  
    250       ! First, the total loss is computed. 
    251       ! The factor for calcite comes from the alkalinity effect 
    252       ! ------------------------------------------------------------- 
    253       DO jj = 1, jpj 
    254          DO ji = 1, jpi 
    255             IF( tmask(ji,jj,1) == 1 ) THEN 
    256                ikt = mbkt(ji,jj)  
    257 # if defined key_kriest 
    258                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
    259                zwork2(ji,jj) = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    260 # else 
    261                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    262                zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    263 # endif 
    264                ! For calcite, burial efficiency is made a function of saturation 
    265                zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
    266                zfactcal      = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    267                zwork3(ji,jj) = trb(ji,jj,ikt,jpcal) * zwscal(ji,jj) * 2.e0 * zfactcal 
    268             ENDIF 
    269          END DO 
    270       END DO 
    271       zsumsedsi  = glob_sum( zwork1(:,:) * e1e2t(:,:) ) * r1_rday 
    272       zsumsedpo4 = glob_sum( zwork2(:,:) * e1e2t(:,:) ) * r1_rday 
    273       zsumsedcal = glob_sum( zwork3(:,:) * e1e2t(:,:) ) * r1_rday 
    274245#endif 
    275246 
     
    278249      ! ------------------------------------------------------ 
    279250#if ! defined key_sed 
    280       zrivsil =  1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / ( zsumsedsi + rtrn ) 
     251      zrivsil =  1._wp - sedsilfrac 
    281252#endif 
    282253 
     
    298269#if ! defined key_sed 
    299270            tra(ji,jj,ikt,jpsil) = tra(ji,jj,ikt,jpsil) + zsiloss * zrivsil  
     271            ! Loss of biogenic silicon, Caco3 organic carbon in the sediments.  
     272            ! The factor for calcite comes from the alkalinity effect 
     273            ! ------------------------------------------------------------- 
    300274            zfactcal = MIN( excess(ji,jj,ikt), 0.2 ) 
    301275            zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    302             zrivalk  =  1._wp - ( rivalkinput * r1_ryyss ) * zfactcal / ( zsumsedcal + rtrn ) 
     276            zrivalk  =  sedcalfrac * zfactcal 
    303277            tra(ji,jj,ikt,jptal) =  tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 
    304278            tra(ji,jj,ikt,jpdic) =  tra(ji,jj,ikt,jpdic) + zcaloss * zrivalk 
     
    394368            IF( iom_use("Nfix"   ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) )  ! nitrogen fixation  
    395369            IF( iom_use("INTNFIX") ) THEN   ! nitrogen fixation rate in ocean ( vertically integrated ) 
    396                zwork1(:,:) = 0. 
     370               CALL wrk_alloc( jpi, jpj, zwork ) 
     371               zwork(:,:) = 0. 
    397372               DO jk = 1, jpkm1 
    398                  zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * fse3t(:,:,jk) * tmask(:,:,jk) 
     373                 zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * fse3t(:,:,jk) * tmask(:,:,jk) 
    399374               ENDDO 
    400                CALL iom_put( "INTNFIX" , zwork1 )  
     375               CALL iom_put( "INTNFIX", zwork )  
     376               CALL wrk_dealloc( jpi, jpj, zwork ) 
    401377            ENDIF 
    402378            IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 
     
    418394      ENDIF 
    419395      ! 
    420       CALL wrk_dealloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff ) 
     396      CALL wrk_dealloc( jpi, jpj, zdenit2d, zbureff ) 
    421397      CALL wrk_dealloc( jpi, jpj, zsedcal , zsedsi, zsedc ) 
    422398      CALL wrk_dealloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 
Note: See TracChangeset for help on using the changeset viewer.