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

Ignore:
Timestamp:
2019-04-15T15:57:37+02:00 (5 years ago)
Author:
davestorkey
Message:

branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Revert all changes so far in preparation for implementation of new design.

File:
1 edited

Legend:

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

    r10806 r10874  
    8989 
    9090 
    91    SUBROUTINE tra_bbl( kt, ktlev1, ktlev2, kt2lev, pts_rhs ) 
     91   SUBROUTINE tra_bbl( kt ) 
    9292      !!---------------------------------------------------------------------- 
    9393      !!                  ***  ROUTINE bbl  *** 
     
    101101      !!              is added to the general tracer trend 
    102102      !!---------------------------------------------------------------------- 
    103       INTEGER, INTENT( in ) ::   kt              ! ocean time-step 
    104       INTEGER, INTENT( in ) ::   ktlev1, ktlev2  ! time level indices for 3-time-level source terms 
    105       INTEGER, INTENT( in ) ::   kt2lev          ! time level index for 2-time-level source terms 
    106       REAL(wp), INTENT( inout), DIMENSION(jpi,jpj,jpk,jpts) :: pts_rhs ! temperature and salinity trends 
     103      INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
    107104      ! 
    108105      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     
    113110      IF( l_trdtra )   THEN                         !* Save the T-S input trends 
    114111         ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    115          ztrdt(:,:,:) = pts_rhs(:,:,:,jp_tem) 
    116          ztrds(:,:,:) = pts_rhs(:,:,:,jp_sal) 
    117       ENDIF 
    118  
    119       IF( l_bbl )   CALL bbl( kt, nit000, ktlev1, ktlev2, kt2lev, 'TRA' )   !* bbl coef. and transport (only if not already done in trcbbl) 
     112         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     113         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     114      ENDIF 
     115 
     116      IF( l_bbl )   CALL bbl( kt, nit000, 'TRA' )   !* bbl coef. and transport (only if not already done in trcbbl) 
    120117 
    121118      IF( nn_bbl_ldf == 1 ) THEN                    !* Diffusive bbl 
    122119         ! 
    123          CALL tra_bbl_dif( ts(:,:,:,:,ktlev1), e3t(:,:,:,ktlev2), pts_rhs, jpts ) 
     120         CALL tra_bbl_dif( tsb, tsa, jpts ) 
    124121         IF( ln_ctl )  & 
    125122         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbl_ldf  - Ta: ', mask1=tmask, & 
     
    134131      IF( nn_bbl_adv /= 0 ) THEN                    !* Advective bbl 
    135132         ! 
    136          CALL tra_bbl_adv( ts(:,:,:,:,ktlev1), e3t(:,:,:,ktlev2), pts_rhs, jpts ) 
     133         CALL tra_bbl_adv( tsb, tsa, jpts ) 
    137134         IF(ln_ctl)   & 
    138135         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbl_adv  - Ta: ', mask1=tmask,   & 
     
    146143 
    147144      IF( l_trdtra )   THEN                      ! send the trends for further diagnostics 
    148          ztrdt(:,:,:) = pts_rhs(:,:,:,jp_tem) - ztrdt(:,:,:) 
    149          ztrds(:,:,:) = pts_rhs(:,:,:,jp_sal) - ztrds(:,:,:) 
     145         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
     146         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    150147         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
    151148         CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrds ) 
     
    158155 
    159156 
    160    SUBROUTINE tra_bbl_dif( pt, pe3t, pt_rhs, kjpt ) 
     157   SUBROUTINE tra_bbl_dif( ptb, pta, kjpt ) 
    161158      !!---------------------------------------------------------------------- 
    162159      !!                  ***  ROUTINE tra_bbl_dif  *** 
     
    174171      !!      convection is satified) 
    175172      !! 
    176       !! ** Action  :   pt_rhs   increased by the bbl diffusive trend 
     173      !! ** Action  :   pta   increased by the bbl diffusive trend 
    177174      !! 
    178175      !! References : Beckmann, A., and R. Doscher, 1997, J. Phys.Oceanogr., 581-591. 
     
    180177      !!---------------------------------------------------------------------- 
    181178      INTEGER                              , INTENT(in   ) ::   kjpt   ! number of tracers 
    182       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   pt     ! tracer fields 
    183       REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(in   ) ::   pe3t   ! thickness fields 
    184       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pt_rhs ! tracer trend 
     179      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb    ! before and now tracer fields 
     180      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta    ! tracer trend 
    185181      ! 
    186182      INTEGER  ::   ji, jj, jn   ! dummy loop indices 
     
    195191            DO ji = 1, jpi 
    196192               ik = mbkt(ji,jj)                             ! bottom T-level index 
    197                zptb(ji,jj) = pt(ji,jj,ik,jn)               ! bottom before T and S 
     193               zptb(ji,jj) = ptb(ji,jj,ik,jn)               ! bottom before T and S 
    198194            END DO 
    199195         END DO 
     
    202198            DO ji = 2, jpim1 
    203199               ik = mbkt(ji,jj)                            ! bottom T-level index 
    204                pt_rhs(ji,jj,ik,jn) = pt_rhs(ji,jj,ik,jn)                                                  & 
     200               pta(ji,jj,ik,jn) = pta(ji,jj,ik,jn)                                                  & 
    205201                  &             + (  ahu_bbl(ji  ,jj  ) * ( zptb(ji+1,jj  ) - zptb(ji  ,jj  ) )     & 
    206202                  &                - ahu_bbl(ji-1,jj  ) * ( zptb(ji  ,jj  ) - zptb(ji-1,jj  ) )     & 
    207203                  &                + ahv_bbl(ji  ,jj  ) * ( zptb(ji  ,jj+1) - zptb(ji  ,jj  ) )     & 
    208204                  &                - ahv_bbl(ji  ,jj-1) * ( zptb(ji  ,jj  ) - zptb(ji  ,jj-1) )  )  & 
    209                   &             * r1_e1e2t(ji,jj) / pe3t(ji,jj,ik) 
     205                  &             * r1_e1e2t(ji,jj) / e3t_n(ji,jj,ik) 
    210206            END DO 
    211207         END DO 
     
    216212 
    217213 
    218    SUBROUTINE tra_bbl_adv( pt, pe3t, pt_rhs, kjpt ) 
     214   SUBROUTINE tra_bbl_adv( ptb, pta, kjpt ) 
    219215      !!---------------------------------------------------------------------- 
    220216      !!                  ***  ROUTINE trc_bbl  *** 
     
    232228      !!---------------------------------------------------------------------- 
    233229      INTEGER                              , INTENT(in   ) ::   kjpt   ! number of tracers 
    234       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   pt    ! before and now tracer fields 
    235       REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(in   ) ::   pe3t   ! thickness fields 
    236       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pt_rhs    ! tracer trend 
     230      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb    ! before and now tracer fields 
     231      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta    ! tracer trend 
    237232      ! 
    238233      INTEGER  ::   ji, jj, jk, jn           ! dummy loop indices 
     
    255250                  ! 
    256251                  !                                               ! up  -slope T-point (shelf bottom point) 
    257                   zbtr = r1_e1e2t(iis,jj) / pe3t(iis,jj,ikus) 
    258                   ztra = zu_bbl * ( pt(iid,jj,ikus,jn) - pt(iis,jj,ikus,jn) ) * zbtr 
    259                   pt_rhs(iis,jj,ikus,jn) = pt_rhs(iis,jj,ikus,jn) + ztra 
     252                  zbtr = r1_e1e2t(iis,jj) / e3t_n(iis,jj,ikus) 
     253                  ztra = zu_bbl * ( ptb(iid,jj,ikus,jn) - ptb(iis,jj,ikus,jn) ) * zbtr 
     254                  pta(iis,jj,ikus,jn) = pta(iis,jj,ikus,jn) + ztra 
    260255                  ! 
    261256                  DO jk = ikus, ikud-1                            ! down-slope upper to down T-point (deep column) 
    262                      zbtr = r1_e1e2t(iid,jj) / pe3t(iid,jj,jk) 
    263                      ztra = zu_bbl * ( pt(iid,jj,jk+1,jn) - pt(iid,jj,jk,jn) ) * zbtr 
    264                      pt_rhs(iid,jj,jk,jn) = pt_rhs(iid,jj,jk,jn) + ztra 
     257                     zbtr = r1_e1e2t(iid,jj) / e3t_n(iid,jj,jk) 
     258                     ztra = zu_bbl * ( ptb(iid,jj,jk+1,jn) - ptb(iid,jj,jk,jn) ) * zbtr 
     259                     pta(iid,jj,jk,jn) = pta(iid,jj,jk,jn) + ztra 
    265260                  END DO 
    266261                  ! 
    267                   zbtr = r1_e1e2t(iid,jj) / pe3t(iid,jj,ikud) 
    268                   ztra = zu_bbl * ( pt(iis,jj,ikus,jn) - pt(iid,jj,ikud,jn) ) * zbtr 
    269                   pt_rhs(iid,jj,ikud,jn) = pt_rhs(iid,jj,ikud,jn) + ztra 
     262                  zbtr = r1_e1e2t(iid,jj) / e3t_n(iid,jj,ikud) 
     263                  ztra = zu_bbl * ( ptb(iis,jj,ikus,jn) - ptb(iid,jj,ikud,jn) ) * zbtr 
     264                  pta(iid,jj,ikud,jn) = pta(iid,jj,ikud,jn) + ztra 
    270265               ENDIF 
    271266               ! 
     
    277272                  ! 
    278273                  ! up  -slope T-point (shelf bottom point) 
    279                   zbtr = r1_e1e2t(ji,ijs) / pe3t(ji,ijs,ikvs) 
    280                   ztra = zv_bbl * ( pt(ji,ijd,ikvs,jn) - pt(ji,ijs,ikvs,jn) ) * zbtr 
    281                   pt_rhs(ji,ijs,ikvs,jn) = pt_rhs(ji,ijs,ikvs,jn) + ztra 
     274                  zbtr = r1_e1e2t(ji,ijs) / e3t_n(ji,ijs,ikvs) 
     275                  ztra = zv_bbl * ( ptb(ji,ijd,ikvs,jn) - ptb(ji,ijs,ikvs,jn) ) * zbtr 
     276                  pta(ji,ijs,ikvs,jn) = pta(ji,ijs,ikvs,jn) + ztra 
    282277                  ! 
    283278                  DO jk = ikvs, ikvd-1                            ! down-slope upper to down T-point (deep column) 
    284                      zbtr = r1_e1e2t(ji,ijd) / pe3t(ji,ijd,jk) 
    285                      ztra = zv_bbl * ( pt(ji,ijd,jk+1,jn) - pt(ji,ijd,jk,jn) ) * zbtr 
    286                      pt_rhs(ji,ijd,jk,jn) = pt_rhs(ji,ijd,jk,jn)  + ztra 
     279                     zbtr = r1_e1e2t(ji,ijd) / e3t_n(ji,ijd,jk) 
     280                     ztra = zv_bbl * ( ptb(ji,ijd,jk+1,jn) - ptb(ji,ijd,jk,jn) ) * zbtr 
     281                     pta(ji,ijd,jk,jn) = pta(ji,ijd,jk,jn)  + ztra 
    287282                  END DO 
    288283                  !                                               ! down-slope T-point (deep bottom point) 
    289                   zbtr = r1_e1e2t(ji,ijd) / pe3t(ji,ijd,ikvd) 
    290                   ztra = zv_bbl * ( pt(ji,ijs,ikvs,jn) - pt(ji,ijd,ikvd,jn) ) * zbtr 
    291                   pt_rhs(ji,ijd,ikvd,jn) = pt_rhs(ji,ijd,ikvd,jn) + ztra 
     284                  zbtr = r1_e1e2t(ji,ijd) / e3t_n(ji,ijd,ikvd) 
     285                  ztra = zv_bbl * ( ptb(ji,ijs,ikvs,jn) - ptb(ji,ijd,ikvd,jn) ) * zbtr 
     286                  pta(ji,ijd,ikvd,jn) = pta(ji,ijd,ikvd,jn) + ztra 
    292287               ENDIF 
    293288            END DO 
     
    300295 
    301296 
    302    SUBROUTINE bbl( kt, kit000, ktlev1, ktlev2, kt2lev, cdtype ) 
     297   SUBROUTINE bbl( kt, kit000, cdtype ) 
    303298      !!---------------------------------------------------------------------- 
    304299      !!                  ***  ROUTINE bbl  *** 
     
    328323      INTEGER         , INTENT(in   ) ::   kt       ! ocean time-step index 
    329324      INTEGER         , INTENT(in   ) ::   kit000   ! first time step index 
    330       INTEGER         , INTENT(in   ) ::   ktlev1, ktlev2  ! time level indices for 3-time-levelsource terms 
    331       INTEGER         , INTENT(in   ) ::   kt2lev          ! time level index for 2-time-level source terms 
    332325      CHARACTER(len=3), INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    333326      ! 
     
    351344         DO ji = 1, jpi 
    352345            ik = mbkt(ji,jj)                             ! bottom T-level index 
    353             zts (ji,jj,jp_tem) = ts(ji,jj,ik,jp_tem,ktlev1)    ! bottom before T and S 
    354             zts (ji,jj,jp_sal) = ts(ji,jj,ik,jp_sal,ktlev1) 
     346            zts (ji,jj,jp_tem) = tsb(ji,jj,ik,jp_tem)    ! bottom before T and S 
     347            zts (ji,jj,jp_sal) = tsb(ji,jj,ik,jp_sal) 
    355348            ! 
    356             zdep(ji,jj) = gdept(ji,jj,ik,kt2lev)              ! bottom T-level reference depth 
    357             zub (ji,jj) = uu(ji,jj,mbku(ji,jj),ktlev2)          ! bottom velocity 
    358             zvb (ji,jj) = vv(ji,jj,mbkv(ji,jj),ktlev2) 
     349            zdep(ji,jj) = gdept_n(ji,jj,ik)              ! bottom T-level reference depth 
     350            zub (ji,jj) = un(ji,jj,mbku(ji,jj))          ! bottom velocity 
     351            zvb (ji,jj) = vn(ji,jj,mbkv(ji,jj)) 
    359352         END DO 
    360353      END DO 
Note: See TracChangeset for help on using the changeset viewer.