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 14276 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/TRP/trcrad.F90 – NEMO

Ignore:
Timestamp:
2021-01-07T23:09:56+01:00 (3 years ago)
Author:
aumont
Message:

numerous updates to PISCES, PISCES-QUOTA and the sediment module

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/TRP/trcrad.F90

    r11536 r14276  
    107107      ENDIF 
    108108      ! 
    109       ALLOCATE( gainmass(jptra,2) ) 
     109      ALLOCATE( gainmass(jptra,4) ) 
    110110      gainmass(:,:) = 0. 
    111111      ! 
     
    169169                        IF( ptrb(ji,jj,jk,jn) > 0. ) THEN                         ! use positive values to compensate mass gain 
    170170                           zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn)       ! ztrpos > 0 as ptrb > 0 
     171                           gainmass(jn,1) = gainmass(jn,1) + ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 )  ! we are correcting mass... 
    171172                           ptrb(ji,jj,jk,jn) = ptrb(ji,jj,jk,jn) * zcoef 
    172173                           IF( zcoef < 0. ) THEN                                  ! if the compensation exceed the positive value 
    173                               gainmass(jn,1) = gainmass(jn,1) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
     174                              gainmass(jn,2) = gainmass(jn,2) - ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
    174175                              ptrb(ji,jj,jk,jn) = 0.                              ! limit the compensation to keep positive value 
    175176                           ENDIF 
     
    190191         IF( kt == nitend ) THEN 
    191192            CALL mpp_sum( 'trcrad', gainmass(:,1) ) 
     193            CALL mpp_sum( 'trcrad', gainmass(:,2) ) 
    192194            DO jn = jp_sms0, jp_sms1 
    193                IF( gainmass(jn,1) > 0. ) THEN 
     195               IF( gainmass(jn,1) < 0. ) THEN 
    194196                  ztotmass = glob_sum( 'trcrad', ptrb(:,:,:,jn) * cvol(:,:,:) ) 
    195                   IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn  & 
    196                      &        , ' total mass : ', ztotmass, ', mass gain : ',  gainmass(jn,1) 
     197                  IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrb, traceur ', jn  & 
     198                     &        , ' total mass : ', ztotmass, ', mass correction : ',  gainmass(jn,1)   & 
     199                     &        , ' mass gain : ', gainmass(jn,2) 
    197200               END IF 
    198201            END DO 
     
    219222                        IF( ptrn(ji,jj,jk,jn) > 0. ) THEN                         ! use positive values to compensate mass gain 
    220223                           zcoef = 1. + ztrneg(ji,jj,jn) / ztrpos(ji,jj,jn)       ! ztrpos > 0 as ptrb > 0 
     224                           gainmass(jn,3) = gainmass(jn,3) + ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) * ( zcoef - 1.0 )  ! we are correcting mass... 
    221225                           ptrn(ji,jj,jk,jn) = ptrn(ji,jj,jk,jn) * zcoef 
    222226                           IF( zcoef < 0. ) THEN                                  ! if the compensation exceed the positive value 
    223                               gainmass(jn,2) = gainmass(jn,2) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
     227                              gainmass(jn,4) = gainmass(jn,4) - ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk)   ! we are adding mass... 
    224228                              ptrn(ji,jj,jk,jn) = 0.                              ! limit the compensation to keep positive value 
    225229                           ENDIF 
     
    239243  
    240244         IF( kt == nitend ) THEN 
    241             CALL mpp_sum( 'trcrad', gainmass(:,2) ) 
     245            CALL mpp_sum( 'trcrad', gainmass(:,3) ) 
     246            CALL mpp_sum( 'trcrad', gainmass(:,4) ) 
    242247            DO jn = jp_sms0, jp_sms1 
    243                IF( gainmass(jn,2) > 0. ) THEN 
     248               IF( gainmass(jn,3) < 0. ) THEN 
    244249                  ztotmass = glob_sum( 'trcrad', ptrn(:,:,:,jn) * cvol(:,:,:) ) 
    245                   WRITE(numout, '(a, i2, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn  & 
    246                      &        , ' total mass : ', ztotmass, ', mass gain : ',  gainmass(jn,1) 
     250                  IF(lwp) WRITE(numout, '(a, i2, a, D23.16, a, D23.16, a, D23.16)') 'trcrad ptrn, traceur ', jn  & 
     251                     &        , ' total mass : ', ztotmass, ', mass correction : ',  gainmass(jn,3)   & 
     252                     &        , ' mass gain : ', gainmass(jn,4) 
    247253               END IF 
    248254            END DO 
Note: See TracChangeset for help on using the changeset viewer.