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 11949 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/TRP/trcsink.F90 – NEMO

Ignore:
Timestamp:
2019-11-22T15:29:17+01:00 (5 years ago)
Author:
acc
Message:

Merge in changes from 2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps. This just creates a fresh copy of this branch to use as the merge base. See ticket #2341

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src

    • Property svn:mergeinfo deleted
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/TRP/trcsink.F90

    r11536 r11949  
    3535   !!---------------------------------------------------------------------- 
    3636 
    37    SUBROUTINE trc_sink ( kt, pwsink, psinkflx, jp_tra, rsfact ) 
     37   SUBROUTINE trc_sink ( kt, Kbb, Kmm, pwsink, psinkflx, jp_tra, rsfact ) 
    3838      !!--------------------------------------------------------------------- 
    3939      !!                     ***  ROUTINE trc_sink  *** 
     
    4545      !!--------------------------------------------------------------------- 
    4646      INTEGER , INTENT(in)  :: kt 
     47      INTEGER , INTENT(in)  :: Kbb, Kmm 
    4748      INTEGER , INTENT(in)  :: jp_tra    ! tracer index index       
    4849      REAL(wp), INTENT(in)  :: rsfact    ! time step duration 
     
    7576               DO jk = 1, jpkm1 
    7677                  IF( tmask(ji,jj,jk) == 1.0 ) THEN 
    77                       zwsmax =  0.5 * e3t_n(ji,jj,jk) * rday / rsfact 
     78                      zwsmax =  0.5 * e3t(ji,jj,jk,Kmm) * rday / rsfact 
    7879                      iiter(ji,jj) =  MAX( iiter(ji,jj), INT( pwsink(ji,jj,jk) / zwsmax ) ) 
    7980                  ENDIF 
     
    8889            DO ji = 1, jpi 
    8990               IF( tmask(ji,jj,jk) == 1.0 ) THEN 
    90                  zwsmax = 0.5 * e3t_n(ji,jj,jk) * rday / rsfact 
     91                 zwsmax = 0.5 * e3t(ji,jj,jk,Kmm) * rday / rsfact 
    9192                 zwsink(ji,jj,jk) = MIN( pwsink(ji,jj,jk), zwsmax * REAL( iiter(ji,jj), wp ) ) 
    9293               ELSE 
     
    104105      !   Compute the sedimentation term using trc_sink2 for the considered sinking particle 
    105106      !   ----------------------------------------------------- 
    106       CALL trc_sink2( zwsink, psinkflx, jp_tra, iiter, rsfact ) 
     107      CALL trc_sink2( Kbb, Kmm, zwsink, psinkflx, jp_tra, iiter, rsfact ) 
    107108      ! 
    108109      IF( ln_timing )   CALL timing_stop('trc_sink') 
     
    110111   END SUBROUTINE trc_sink 
    111112 
    112    SUBROUTINE trc_sink2( pwsink, psinkflx, jp_tra, kiter, rsfact ) 
     113   SUBROUTINE trc_sink2( Kbb, Kmm, pwsink, psinkflx, jp_tra, kiter, rsfact ) 
    113114      !!--------------------------------------------------------------------- 
    114115      !!                     ***  ROUTINE trc_sink2  *** 
     
    121122      !!      transport term, i.e.  div(u*tra). 
    122123      !!--------------------------------------------------------------------- 
     124      INTEGER,  INTENT(in   )                         ::   Kbb, Kmm  ! time level indices 
    123125      INTEGER,  INTENT(in   )                         ::   jp_tra    ! tracer index index       
    124126      REAL(wp), INTENT(in   )                         ::   rsfact    ! duration of time step 
     
    136138      ztraz(:,:,:) = 0.e0 
    137139      zakz (:,:,:) = 0.e0 
    138       ztrb (:,:,:) = trb(:,:,:,jp_tra) 
     140      ztrb (:,:,:) = tr(:,:,:,jp_tra,Kbb) 
    139141 
    140142      DO jk = 1, jpkm1 
     
    153155               !               
    154156               DO jk = 2, jpkm1 
    155                   ztraz(ji,jj,jk) = ( trb(ji,jj,jk-1,jp_tra) - trb(ji,jj,jk,jp_tra) ) * tmask(ji,jj,jk) 
     157                  ztraz(ji,jj,jk) = ( tr(ji,jj,jk-1,jp_tra,Kbb) - tr(ji,jj,jk,jp_tra,Kbb) ) * tmask(ji,jj,jk) 
    156158               END DO 
    157159               ztraz(ji,jj,1  ) = 0.0 
     
    172174               ! vertical advective flux 
    173175               DO jk = 1, jpkm1 
    174                   zigma = zwsink2(ji,jj,jk+1) * zstep / e3w_n(ji,jj,jk+1) 
     176                  zigma = zwsink2(ji,jj,jk+1) * zstep / e3w(ji,jj,jk+1,Kmm) 
    175177                  zew   = zwsink2(ji,jj,jk+1) 
    176                   psinkflx(ji,jj,jk+1) = -zew * ( trb(ji,jj,jk,jp_tra) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep 
     178                  psinkflx(ji,jj,jk+1) = -zew * ( tr(ji,jj,jk,jp_tra,Kbb) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep 
    177179               END DO 
    178180               ! 
     
    182184          
    183185               DO jk=1,jpkm1 
    184                   zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t_n(ji,jj,jk) 
    185                   trb(ji,jj,jk,jp_tra) = trb(ji,jj,jk,jp_tra) + zflx 
     186                  zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t(ji,jj,jk,Kmm) 
     187                  tr(ji,jj,jk,jp_tra,Kbb) = tr(ji,jj,jk,jp_tra,Kbb) + zflx 
    186188               END DO 
    187189            END DO 
     
    192194         DO jj = 1,jpj 
    193195            DO ji = 1, jpi 
    194                zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t_n(ji,jj,jk) 
     196               zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t(ji,jj,jk,Kmm) 
    195197               ztrb(ji,jj,jk) = ztrb(ji,jj,jk) + 2. * zflx 
    196198            END DO 
     
    198200      END DO 
    199201 
    200       trb(:,:,:,jp_tra) = ztrb(:,:,:) 
     202      tr(:,:,:,jp_tra,Kbb) = ztrb(:,:,:) 
    201203      psinkflx(:,:,:)   = 2. * psinkflx(:,:,:) 
    202204      ! 
Note: See TracChangeset for help on using the changeset viewer.