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 10954 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trabbl.F90 – NEMO

Ignore:
Timestamp:
2019-05-09T18:12:29+02:00 (5 years ago)
Author:
acc
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Convert TRA modules and all knock on effects of these conversions. SETTE tested

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trabbl.F90

    r10946 r10954  
    8989 
    9090 
    91    SUBROUTINE tra_bbl( kt, Kmm, Krhs ) 
     91   SUBROUTINE tra_bbl( kt, Kbb, Kmm, Krhs ) 
    9292      !!---------------------------------------------------------------------- 
    9393      !!                  ***  ROUTINE bbl  *** 
     
    102102      !!---------------------------------------------------------------------- 
    103103      INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
    104       INTEGER, INTENT( in ) ::   Kmm, Krhs  ! time level indices 
     104      INTEGER, INTENT( in ) ::   Kbb, Kmm, Krhs  ! time level indices 
    105105      ! 
    106106      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     
    111111      IF( l_trdtra )   THEN                         !* Save the T-S input trends 
    112112         ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    113          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    114          ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    115       ENDIF 
    116  
    117       IF( l_bbl )   CALL bbl( kt, nit000, 'TRA' )   !* bbl coef. and transport (only if not already done in trcbbl) 
     113         ztrdt(:,:,:) = ts(:,:,:,jp_tem,Krhs) 
     114         ztrds(:,:,:) = ts(:,:,:,jp_sal,Krhs) 
     115      ENDIF 
     116 
     117      IF( l_bbl )   CALL bbl( kt, nit000, 'TRA', Kbb, Kmm )   !* bbl coef. and transport (only if not already done in trcbbl) 
    118118 
    119119      IF( nn_bbl_ldf == 1 ) THEN                    !* Diffusive bbl 
    120120         ! 
    121          CALL tra_bbl_dif( tsb, tsa, jpts ) 
     121         CALL tra_bbl_dif( ts(:,:,:,:,Kbb), ts(:,:,:,:,Krhs), jpts, Kmm ) 
    122122         IF( ln_ctl )  & 
    123          CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbl_ldf  - Ta: ', mask1=tmask, & 
    124             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     123         CALL prt_ctl( tab3d_1=ts(:,:,:,jp_tem,Krhs), clinfo1=' bbl_ldf  - Ta: ', mask1=tmask, & 
     124            &          tab3d_2=ts(:,:,:,jp_sal,Krhs), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    125125         ! lateral boundary conditions ; just need for outputs 
    126126         CALL lbc_lnk_multi( 'trabbl', ahu_bbl, 'U', 1. , ahv_bbl, 'V', 1. ) 
     
    132132      IF( nn_bbl_adv /= 0 ) THEN                    !* Advective bbl 
    133133         ! 
    134          CALL tra_bbl_adv( tsb, tsa, jpts ) 
     134         CALL tra_bbl_adv( ts(:,:,:,:,Kbb), ts(:,:,:,:,Krhs), jpts, Kmm ) 
    135135         IF(ln_ctl)   & 
    136          CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbl_adv  - Ta: ', mask1=tmask,   & 
    137             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     136         CALL prt_ctl( tab3d_1=ts(:,:,:,jp_tem,Krhs), clinfo1=' bbl_adv  - Ta: ', mask1=tmask,   & 
     137            &          tab3d_2=ts(:,:,:,jp_sal,Krhs), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    138138         ! lateral boundary conditions ; just need for outputs 
    139139         CALL lbc_lnk_multi( 'trabbl', utr_bbl, 'U', 1. , vtr_bbl, 'V', 1. ) 
     
    144144 
    145145      IF( l_trdtra )   THEN                      ! send the trends for further diagnostics 
    146          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    147          ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
     146         ztrdt(:,:,:) = ts(:,:,:,jp_tem,Krhs) - ztrdt(:,:,:) 
     147         ztrds(:,:,:) = ts(:,:,:,jp_sal,Krhs) - ztrds(:,:,:) 
    148148         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
    149149         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_bbl, ztrds ) 
     
    156156 
    157157 
    158    SUBROUTINE tra_bbl_dif( ptb, pta, kjpt ) 
     158   SUBROUTINE tra_bbl_dif( ptb, pta, kjpt, Kmm ) 
    159159      !!---------------------------------------------------------------------- 
    160160      !!                  ***  ROUTINE tra_bbl_dif  *** 
     
    180180      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb    ! before and now tracer fields 
    181181      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta    ! tracer trend 
     182      INTEGER                              , INTENT(in   ) ::   Kmm    ! time level indices 
    182183      ! 
    183184      INTEGER  ::   ji, jj, jn   ! dummy loop indices 
     
    204205                  &                + ahv_bbl(ji  ,jj  ) * ( zptb(ji  ,jj+1) - zptb(ji  ,jj  ) )     & 
    205206                  &                - ahv_bbl(ji  ,jj-1) * ( zptb(ji  ,jj  ) - zptb(ji  ,jj-1) )  )  & 
    206                   &             * r1_e1e2t(ji,jj) / e3t_n(ji,jj,ik) 
     207                  &             * r1_e1e2t(ji,jj) / e3t(ji,jj,ik,Kmm) 
    207208            END DO 
    208209         END DO 
     
    213214 
    214215 
    215    SUBROUTINE tra_bbl_adv( ptb, pta, kjpt ) 
     216   SUBROUTINE tra_bbl_adv( ptb, pta, kjpt, Kmm ) 
    216217      !!---------------------------------------------------------------------- 
    217218      !!                  ***  ROUTINE trc_bbl  *** 
     
    231232      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb    ! before and now tracer fields 
    232233      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta    ! tracer trend 
     234      INTEGER                              , INTENT(in   ) ::   Kmm    ! time level indices 
    233235      ! 
    234236      INTEGER  ::   ji, jj, jk, jn           ! dummy loop indices 
     
    251253                  ! 
    252254                  !                                               ! up  -slope T-point (shelf bottom point) 
    253                   zbtr = r1_e1e2t(iis,jj) / e3t_n(iis,jj,ikus) 
     255                  zbtr = r1_e1e2t(iis,jj) / e3t(iis,jj,ikus,Kmm) 
    254256                  ztra = zu_bbl * ( ptb(iid,jj,ikus,jn) - ptb(iis,jj,ikus,jn) ) * zbtr 
    255257                  pta(iis,jj,ikus,jn) = pta(iis,jj,ikus,jn) + ztra 
    256258                  ! 
    257259                  DO jk = ikus, ikud-1                            ! down-slope upper to down T-point (deep column) 
    258                      zbtr = r1_e1e2t(iid,jj) / e3t_n(iid,jj,jk) 
     260                     zbtr = r1_e1e2t(iid,jj) / e3t(iid,jj,jk,Kmm) 
    259261                     ztra = zu_bbl * ( ptb(iid,jj,jk+1,jn) - ptb(iid,jj,jk,jn) ) * zbtr 
    260262                     pta(iid,jj,jk,jn) = pta(iid,jj,jk,jn) + ztra 
    261263                  END DO 
    262264                  ! 
    263                   zbtr = r1_e1e2t(iid,jj) / e3t_n(iid,jj,ikud) 
     265                  zbtr = r1_e1e2t(iid,jj) / e3t(iid,jj,ikud,Kmm) 
    264266                  ztra = zu_bbl * ( ptb(iis,jj,ikus,jn) - ptb(iid,jj,ikud,jn) ) * zbtr 
    265267                  pta(iid,jj,ikud,jn) = pta(iid,jj,ikud,jn) + ztra 
     
    273275                  ! 
    274276                  ! up  -slope T-point (shelf bottom point) 
    275                   zbtr = r1_e1e2t(ji,ijs) / e3t_n(ji,ijs,ikvs) 
     277                  zbtr = r1_e1e2t(ji,ijs) / e3t(ji,ijs,ikvs,Kmm) 
    276278                  ztra = zv_bbl * ( ptb(ji,ijd,ikvs,jn) - ptb(ji,ijs,ikvs,jn) ) * zbtr 
    277279                  pta(ji,ijs,ikvs,jn) = pta(ji,ijs,ikvs,jn) + ztra 
    278280                  ! 
    279281                  DO jk = ikvs, ikvd-1                            ! down-slope upper to down T-point (deep column) 
    280                      zbtr = r1_e1e2t(ji,ijd) / e3t_n(ji,ijd,jk) 
     282                     zbtr = r1_e1e2t(ji,ijd) / e3t(ji,ijd,jk,Kmm) 
    281283                     ztra = zv_bbl * ( ptb(ji,ijd,jk+1,jn) - ptb(ji,ijd,jk,jn) ) * zbtr 
    282284                     pta(ji,ijd,jk,jn) = pta(ji,ijd,jk,jn)  + ztra 
    283285                  END DO 
    284286                  !                                               ! down-slope T-point (deep bottom point) 
    285                   zbtr = r1_e1e2t(ji,ijd) / e3t_n(ji,ijd,ikvd) 
     287                  zbtr = r1_e1e2t(ji,ijd) / e3t(ji,ijd,ikvd,Kmm) 
    286288                  ztra = zv_bbl * ( ptb(ji,ijs,ikvs,jn) - ptb(ji,ijd,ikvd,jn) ) * zbtr 
    287289                  pta(ji,ijd,ikvd,jn) = pta(ji,ijd,ikvd,jn) + ztra 
     
    296298 
    297299 
    298    SUBROUTINE bbl( kt, kit000, cdtype ) 
     300   SUBROUTINE bbl( kt, kit000, cdtype, Kbb, Kmm ) 
    299301      !!---------------------------------------------------------------------- 
    300302      !!                  ***  ROUTINE bbl  *** 
     
    325327      INTEGER         , INTENT(in   ) ::   kit000   ! first time step index 
    326328      CHARACTER(len=3), INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
     329      INTEGER         , INTENT(in   ) ::   Kbb, Kmm ! ocean time level index 
    327330      ! 
    328331      INTEGER  ::   ji, jj                    ! dummy loop indices 
     
    345348         DO ji = 1, jpi 
    346349            ik = mbkt(ji,jj)                             ! bottom T-level index 
    347             zts (ji,jj,jp_tem) = tsb(ji,jj,ik,jp_tem)    ! bottom before T and S 
    348             zts (ji,jj,jp_sal) = tsb(ji,jj,ik,jp_sal) 
     350            zts (ji,jj,jp_tem) = ts(ji,jj,ik,jp_tem,Kbb)    ! bottom before T and S 
     351            zts (ji,jj,jp_sal) = ts(ji,jj,ik,jp_sal,Kbb) 
    349352            ! 
    350             zdep(ji,jj) = gdept_n(ji,jj,ik)              ! bottom T-level reference depth 
    351             zub (ji,jj) = un(ji,jj,mbku(ji,jj))          ! bottom velocity 
    352             zvb (ji,jj) = vn(ji,jj,mbkv(ji,jj)) 
     353            zdep(ji,jj) = gdept(ji,jj,ik,Kmm)              ! bottom T-level reference depth 
     354            zub (ji,jj) = uu(ji,jj,mbku(ji,jj),Kmm)          ! bottom velocity 
     355            zvb (ji,jj) = vv(ji,jj,mbkv(ji,jj),Kmm) 
    353356         END DO 
    354357      END DO 
    355358      ! 
    356       CALL eos_rab( zts, zdep, zab ) 
     359      CALL eos_rab( zts, zdep, zab, Kmm ) 
    357360      ! 
    358361      !                                   !-------------------! 
Note: See TracChangeset for help on using the changeset viewer.