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 3865 for branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90 – NEMO

Ignore:
Timestamp:
2013-04-09T18:34:38+02:00 (11 years ago)
Author:
acc
Message:

Branch 2013/dev_r3858_NOC_ZTC, #863. Nearly complete port of 2011/dev_r2739_LOCEAN8_ZTC development branch into v3.5aplha base. Compiles and runs but currently unstable after 8 timesteps with ORCA2_LIM reference configuration.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r3764 r3865  
    6666   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)         ::   ahu_bbl_0, ahv_bbl_0   ! diffusive bbl flux coefficients at u and v-points 
    6767   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC ::   e3u_bbl_0, e3v_bbl_0   ! thichness of the bbl (e3) at u and v-points (PUBLIC for TAM) 
    68    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC ::   r1_e1e2t               ! inverse of the cell surface at t-point      [1/m2] (PUBLIC for TAM) 
    6968 
    7069   !! * Substitutions 
     
    8584         &      vtr_bbl  (jpi,jpj) , ahv_bbl  (jpi,jpj) , mbkv_d  (jpi,jpj) , mgrhv(jpi,jpj) ,     & 
    8685         &      ahu_bbl_0(jpi,jpj) , ahv_bbl_0(jpi,jpj) ,                                          & 
    87          &      e3u_bbl_0(jpi,jpj) , e3v_bbl_0(jpi,jpj) , r1_e1e2t(jpi,jpj)                  , STAT= tra_bbl_alloc ) 
     86         &      e3u_bbl_0(jpi,jpj) , e3v_bbl_0(jpi,jpj) , STAT= tra_bbl_alloc                ) 
    8887         ! 
    8988      IF( lk_mpp            )   CALL mpp_sum ( tra_bbl_alloc ) 
     
    217216#  endif 
    218217               ik = mbkt(ji,jj)                            ! bottom T-level index 
    219                zbtr = r1_e1e2t(ji,jj)  / fse3t(ji,jj,ik) 
     218               zbtr = r1_e12t(ji,jj)  / fse3t(ji,jj,ik) 
    220219               pta(ji,jj,ik,jn) = pta(ji,jj,ik,jn)                                                         & 
    221220                  &               + (   ahu_bbl(ji  ,jj  ) * ( zptb(ji+1,jj  ) - zptb(ji  ,jj  ) )   & 
     
    279278                  ! 
    280279                  !                                               ! up  -slope T-point (shelf bottom point) 
    281                   zbtr = r1_e1e2t(iis,jj) / fse3t(iis,jj,ikus) 
     280                  zbtr = r1_e12t(iis,jj) / fse3t(iis,jj,ikus) 
    282281                  ztra = zu_bbl * ( ptb(iid,jj,ikus,jn) - ptb(iis,jj,ikus,jn) ) * zbtr 
    283282                  pta(iis,jj,ikus,jn) = pta(iis,jj,ikus,jn) + ztra 
    284283                  ! 
    285284                  DO jk = ikus, ikud-1                            ! down-slope upper to down T-point (deep column) 
    286                      zbtr = r1_e1e2t(iid,jj) / fse3t(iid,jj,jk) 
     285                     zbtr = r1_e12t(iid,jj) / fse3t(iid,jj,jk) 
    287286                     ztra = zu_bbl * ( ptb(iid,jj,jk+1,jn) - ptb(iid,jj,jk,jn) ) * zbtr 
    288287                     pta(iid,jj,jk,jn) = pta(iid,jj,jk,jn) + ztra 
    289288                  END DO 
    290289                  ! 
    291                   zbtr = r1_e1e2t(iid,jj) / fse3t(iid,jj,ikud) 
     290                  zbtr = r1_e12t(iid,jj) / fse3t(iid,jj,ikud) 
    292291                  ztra = zu_bbl * ( ptb(iis,jj,ikus,jn) - ptb(iid,jj,ikud,jn) ) * zbtr 
    293292                  pta(iid,jj,ikud,jn) = pta(iid,jj,ikud,jn) + ztra 
     
    301300                  ! 
    302301                  ! up  -slope T-point (shelf bottom point) 
    303                   zbtr = r1_e1e2t(ji,ijs) / fse3t(ji,ijs,ikvs) 
     302                  zbtr = r1_e12t(ji,ijs) / fse3t(ji,ijs,ikvs) 
    304303                  ztra = zv_bbl * ( ptb(ji,ijd,ikvs,jn) - ptb(ji,ijs,ikvs,jn) ) * zbtr 
    305304                  pta(ji,ijs,ikvs,jn) = pta(ji,ijs,ikvs,jn) + ztra 
    306305                  ! 
    307306                  DO jk = ikvs, ikvd-1                            ! down-slope upper to down T-point (deep column) 
    308                      zbtr = r1_e1e2t(ji,ijd) / fse3t(ji,ijd,jk) 
     307                     zbtr = r1_e12t(ji,ijd) / fse3t(ji,ijd,jk) 
    309308                     ztra = zv_bbl * ( ptb(ji,ijd,jk+1,jn) - ptb(ji,ijd,jk,jn) ) * zbtr 
    310309                     pta(ji,ijd,jk,jn) = pta(ji,ijd,jk,jn)  + ztra 
    311310                  END DO 
    312311                  !                                               ! down-slope T-point (deep bottom point) 
    313                   zbtr = r1_e1e2t(ji,ijd) / fse3t(ji,ijd,ikvd) 
     312                  zbtr = r1_e12t(ji,ijd) / fse3t(ji,ijd,ikvd) 
    314313                  ztra = zv_bbl * ( ptb(ji,ijs,ikvs,jn) - ptb(ji,ijd,ikvd,jn) ) * zbtr 
    315314                  pta(ji,ijd,ikvd,jn) = pta(ji,ijd,ikvd,jn) + ztra 
     
    423422            ztb (ji,jj) = tsb(ji,jj,ik,jp_tem) * tmask(ji,jj,1)      ! bottom before T and S 
    424423            zsb (ji,jj) = tsb(ji,jj,ik,jp_sal) * tmask(ji,jj,1) 
    425             zdep(ji,jj) = fsdept_0(ji,jj,ik)        ! bottom T-level reference depth 
     424            zdep(ji,jj) = gdept_0(ji,jj,ik)         ! bottom T-level reference depth 
    426425            ! 
    427426            zub(ji,jj) = un(ji,jj,mbku(ji,jj))      ! bottom velocity 
     
    594593      IF( nn_eos /= 0 )   CALL ctl_stop ( ' bbl parameterisation requires eos = 0. We stop.' ) 
    595594 
    596  
    597       !                             !* inverse of surface of T-cells 
    598       r1_e1e2t(:,:) = 1._wp / ( e1t(:,:) * e2t(:,:) ) 
    599  
    600595      !                             !* vertical index of  "deep" bottom u- and v-points 
    601596      DO jj = 1, jpjm1                    ! (the "shelf" bottom k-indices are mbku and mbkv) 
     
    605600         END DO 
    606601      END DO 
    607       ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 
     602      ! convert into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 
    608603      zmbk(:,:) = REAL( mbku_d(:,:), wp )   ;   CALL lbc_lnk(zmbk,'U',1.)   ;   mbku_d(:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
    609604      zmbk(:,:) = REAL( mbkv_d(:,:), wp )   ;   CALL lbc_lnk(zmbk,'V',1.)   ;   mbkv_d(:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
    610605 
    611                                         !* sign of grad(H) at u- and v-points 
     606                                     !* sign of grad(H) at u- and v-points 
    612607      mgrhu(jpi,:) = 0.    ;    mgrhu(:,jpj) = 0.   ;    mgrhv(jpi,:) = 0.    ;    mgrhv(:,jpj) = 0. 
    613608      DO jj = 1, jpjm1 
    614609         DO ji = 1, jpim1 
    615             mgrhu(ji,jj) = INT(  SIGN( 1.e0, fsdept_0(ji+1,jj,mbkt(ji+1,jj)) - fsdept_0(ji,jj,mbkt(ji,jj)) )  ) 
    616             mgrhv(ji,jj) = INT(  SIGN( 1.e0, fsdept_0(ji,jj+1,mbkt(ji,jj+1)) - fsdept_0(ji,jj,mbkt(ji,jj)) )  ) 
     610            mgrhu(ji,jj) = INT(  SIGN( 1.e0, gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) )  ) 
     611            mgrhv(ji,jj) = INT(  SIGN( 1.e0, gdept_0(ji,jj+1,mbkt(ji,jj+1)) - gdept_0(ji,jj,mbkt(ji,jj)) )  ) 
    617612         END DO 
    618613      END DO 
    619614 
    620615      DO jj = 1, jpjm1              !* bbl thickness at u- (v-) point 
    621          DO ji = 1, jpim1                 ! minimum of top & bottom e3u_0 (e3v_0) 
    622             e3u_bbl_0(ji,jj) = MIN( fse3u_0(ji,jj,mbkt(ji+1,jj  )), fse3u_0(ji,jj,mbkt(ji,jj)) ) 
    623             e3v_bbl_0(ji,jj) = MIN( fse3v_0(ji,jj,mbkt(ji  ,jj+1)), fse3v_0(ji,jj,mbkt(ji,jj)) ) 
     616         DO ji = 1, jpim1           ! minimum of top & bottom e3u_0 (e3v_0) 
     617            e3u_bbl_0(ji,jj) = MIN( e3u_0(ji,jj,mbkt(ji+1,jj  )), e3u_0(ji,jj,mbkt(ji,jj)) ) 
     618            e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji  ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 
    624619         END DO 
    625620      END DO 
Note: See TracChangeset for help on using the changeset viewer.