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 14994 for NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA – NEMO

Ignore:
Timestamp:
2021-06-15T16:39:31+02:00 (3 years ago)
Author:
mathiot
Message:

ticket #2669: update to the head of trunk

Location:
NEMO/branches/2021/ticket2669_isf_fluxes/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/ticket2669_isf_fluxes/src

    • Property svn:mergeinfo deleted
  • NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/traadv_qck.F90

    r14834 r14994  
    246246         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, ld4only= .TRUE. )   ! Lateral boundary conditions 
    247247 
     248         ! Correct zfd on northfold after lbc_lnk; see #2640 
     249         IF( nn_hls == 1 .AND. l_IdoNFold .AND. ntej == Nje0 ) THEN 
     250            DO jk = 1, jpkm1 
     251               WHERE( tmask_i(ntsi:ntei,ntej:jpj) == 0._wp ) zfd(ntsi:ntei,ntej:jpj,jk) = zfc(ntsi:ntei,ntej:jpj,jk) 
     252            END DO 
     253         ENDIF 
    248254         ! 
    249255         ! Horizontal advective fluxes 
  • NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/traadv_qck_lf.F90

    r14834 r14994  
    111111      ! 
    112112      !        ! horizontal fluxes are computed with the QUICKEST + ULTIMATE scheme 
    113       CALL tra_adv_qck_i( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 
    114       CALL tra_adv_qck_j( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 
     113      CALL tra_adv_qck_i_lf( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 
     114      CALL tra_adv_qck_j_lf( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 
    115115 
    116116      !        ! vertical fluxes are computed with the 2nd order centered scheme 
    117       CALL tra_adv_cen2_k( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 
     117      CALL tra_adv_cen2_k_lf( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 
    118118      ! 
    119119   END SUBROUTINE tra_adv_qck_lf 
    120120 
    121121 
    122    SUBROUTINE tra_adv_qck_i( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 
     122   SUBROUTINE tra_adv_qck_i_lf( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 
    123123      !!---------------------------------------------------------------------- 
    124124      !! 
     
    193193      END DO 
    194194      ! 
    195    END SUBROUTINE tra_adv_qck_i 
    196  
    197  
    198    SUBROUTINE tra_adv_qck_j( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 
     195   END SUBROUTINE tra_adv_qck_i_lf 
     196 
     197 
     198   SUBROUTINE tra_adv_qck_j_lf( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 
    199199      !!---------------------------------------------------------------------- 
    200200      !! 
     
    273273      END DO 
    274274      ! 
    275    END SUBROUTINE tra_adv_qck_j 
    276  
    277  
    278    SUBROUTINE tra_adv_cen2_k( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 
     275   END SUBROUTINE tra_adv_qck_j_lf 
     276 
     277 
     278   SUBROUTINE tra_adv_cen2_k_lf( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 
    279279      !!---------------------------------------------------------------------- 
    280280      !! 
     
    323323      END DO 
    324324      ! 
    325    END SUBROUTINE tra_adv_cen2_k 
     325   END SUBROUTINE tra_adv_cen2_k_lf 
    326326 
    327327 
  • NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/traadv_ubs.F90

    r14834 r14994  
    161161         END_3D 
    162162         ! 
    163          DO_3D( 1, 1, 1, 1, 1, jpk ) 
     163         DO_3D( 0, 0, 0, 0, 1, jpk ) 
    164164            zltu(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs)      ! store the initial trends before its update 
    165165         END_3D 
     
    175175         END DO 
    176176         ! 
    177          DO_3D( 1, 1, 1, 1, 1, jpk ) 
     177         DO_3D( 0, 0, 0, 0, 1, jpk ) 
    178178            zltu(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs) - zltu(ji,jj,jk)  ! Horizontal advective trend used in vertical 2nd order FCT case 
    179179         END_3D                                                     ! and/or in trend diagnostic (l_trd=T) 
     
    203203            ! 
    204204            !                               !*  upstream advection with initial mass fluxes & intermediate update  ==! 
    205             DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
     205            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    206206               zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 
    207207               zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 
     
    210210            IF( ln_linssh ) THEN                ! top ocean value (only in linear free surface as ztw has been w-masked) 
    211211               IF( ln_isfcav ) THEN                   ! top of the ice-shelf cavities and at the ocean surface 
    212                   DO_2D( 1, 1, 1, 1 ) 
     212                  DO_2D( 0, 0, 0, 0 ) 
    213213                     ztw(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface 
    214214                  END_2D 
    215215               ELSE                                   ! no cavities: only at the ocean surface 
    216                   DO_2D( 1, 1, 1, 1 ) 
     216                  DO_2D( 0, 0, 0, 0 ) 
    217217                     ztw(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kbb) 
    218218                  END_2D 
     
    228228            ! 
    229229            !                          !*  anti-diffusive flux : high order minus low order 
    230             DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
     230            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    231231               ztw(ji,jj,jk) = (   0.5_wp * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
    232232                  &              - ztw(ji,jj,jk)   ) * wmask(ji,jj,jk) 
     
    243243            END_3D 
    244244            IF( ln_linssh ) THEN 
    245                DO_2D( 1, 1, 1, 1 ) 
     245               DO_2D( 0, 0, 0, 0 ) 
    246246                  ztw(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kmm)     !!gm ISF & 4th COMPACT doesn't work 
    247247               END_2D 
  • NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/tradmp.F90

    r14718 r14994  
    5353   !! * Substitutions 
    5454#  include "do_loop_substitute.h90" 
     55#  include "domzgr_substitute.h90" 
    5556   !!---------------------------------------------------------------------- 
    5657   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    9697      INTEGER ::   ji, jj, jk, jn   ! dummy loop indices 
    9798      REAL(wp), DIMENSION(A2D(nn_hls),jpk,jpts)     ::  zts_dta 
     99      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE ::  zwrk 
    98100      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  ztrdts 
    99101      !!---------------------------------------------------------------------- 
     
    102104      ! 
    103105      IF( l_trdtra .OR. iom_use('hflx_dmp_cea') .OR. iom_use('sflx_dmp_cea') ) THEN   !* Save ta and sa trends 
    104          ALLOCATE( ztrdts(jpi,jpj,jpk,jpts) ) 
    105          ztrdts(:,:,:,:) = pts(:,:,:,:,Krhs) 
     106         ALLOCATE( ztrdts(A2D(nn_hls),jpk,jpts) ) 
     107         DO jn = 1, jpts 
     108            DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 
     109               ztrdts(ji,jj,jk,jn) = pts(ji,jj,jk,jn,Krhs) 
     110            END_3D 
     111         END DO 
    106112      ENDIF 
    107113      !                           !==  input T-S data at kt  ==! 
     
    141147      ! 
    142148      ! outputs (clem trunk) 
    143       IF( iom_use('hflx_dmp_cea') )       & 
    144          &   CALL iom_put('hflx_dmp_cea', & 
    145          &   SUM( ( pts(:,:,:,jp_tem,Krhs) - ztrdts(:,:,:,jp_tem) ) * e3t(:,:,:,Kmm), dim=3 ) * rcp * rho0 ) ! W/m2 
    146       IF( iom_use('sflx_dmp_cea') )       & 
    147          &   CALL iom_put('sflx_dmp_cea', & 
    148          &   SUM( ( pts(:,:,:,jp_sal,Krhs) - ztrdts(:,:,:,jp_sal) ) * e3t(:,:,:,Kmm), dim=3 ) * rho0 )       ! g/m2/s 
     149      IF( iom_use('hflx_dmp_cea') .OR. iom_use('sflx_dmp_cea') ) THEN 
     150         ALLOCATE( zwrk(A2D(nn_hls),jpk) )          ! Needed to handle expressions containing e3t when using key_qco or key_linssh 
     151         zwrk(:,:,:) = 0._wp 
     152 
     153         IF( iom_use('hflx_dmp_cea') ) THEN 
     154            DO_3D( 0, 0, 0, 0, 1, jpk ) 
     155               zwrk(ji,jj,jk) = ( pts(ji,jj,jk,jp_tem,Krhs) - ztrdts(ji,jj,jk,jp_tem) ) * e3t(ji,jj,jk,Kmm) 
     156            END_3D 
     157            CALL iom_put('hflx_dmp_cea', SUM( zwrk(:,:,:), dim=3 ) * rcp * rho0 ) ! W/m2 
     158         ENDIF 
     159         IF( iom_use('sflx_dmp_cea') ) THEN 
     160            DO_3D( 0, 0, 0, 0, 1, jpk ) 
     161               zwrk(ji,jj,jk) = ( pts(ji,jj,jk,jp_sal,Krhs) - ztrdts(ji,jj,jk,jp_sal) ) * e3t(ji,jj,jk,Kmm) 
     162            END_3D 
     163            CALL iom_put('sflx_dmp_cea', SUM( zwrk(:,:,:), dim=3 ) * rho0 )       ! g/m2/s 
     164         ENDIF 
     165 
     166         DEALLOCATE( zwrk ) 
     167      ENDIF 
    149168      ! 
    150169      IF( l_trdtra )   THEN       ! trend diagnostic 
  • NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/tramle.F90

    r14834 r14994  
    366366         r1_ft(:,:) = 1._wp / SQRT(  ff_t(:,:) * ff_t(:,:) + z1_t2  ) 
    367367         ! 
    368          ! Specifically, dbdx_mle, dbdy_mle and mld_prof need to be defined for nn_hls = 2 
    369          IF( nn_hls == 2 .AND. ln_osm_mle .AND. ln_zdfosm ) THEN 
    370             CALL ctl_stop('nn_hls = 2 cannot be used with ln_mle = ln_osm_mle = ln_zdfosm = T (zdfosm not updated for nn_hls = 2)') 
    371          ENDIF 
    372368      ENDIF 
    373369      ! 
Note: See TracChangeset for help on using the changeset viewer.