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 15073 – NEMO

Changeset 15073


Ignore:
Timestamp:
2021-07-02T16:20:14+02:00 (3 years ago)
Author:
clem
Message:

nn_hls=2 and debug mode: make agrif work and be repro

Location:
NEMO/trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/DOM/domqco.F90

    r15067 r15073  
    125125      ! dom_qco_r3c defines over [nn_hls, nn_hls-1, nn_hls, nn_hls-1] 
    126126      IF( nn_hls == 2 ) CALL lbc_lnk( 'dom_qco_zgr', r3u(:,:,Kbb), 'U', 1._wp, r3v(:,:,Kbb), 'V', 1._wp, & 
    127          &                                           r3u(:,:,Kmm), 'U', 1._wp, r3v(:,:,Kmm), 'V', 1._wp ) 
    128       ! 
     127         &                                           r3u(:,:,Kmm), 'U', 1._wp, r3v(:,:,Kmm), 'V', 1._wp, r3f(:,:), 'F', 1._wp ) 
     128      !                                                                                                ! r3f is needed for agrif 
    129129   END SUBROUTINE dom_qco_zgr 
    130130 
  • NEMO/trunk/src/OCE/TRA/traadv.F90

    r15060 r15073  
    175175         ! 
    176176         CASE ( np_CEN )                                 ! Centered scheme : 2nd / 4th order 
    177             CALL tra_adv_cen    ( kt, nit000, 'TRA',         zuu, zvv, zww, Kmm, pts, jpts, Krhs, nn_cen_h, nn_cen_v ) 
     177            CALL tra_adv_cen    ( kt, nit000, 'TRA',      zuu, zvv, zww, Kmm, pts, jpts, Krhs, nn_cen_h, nn_cen_v      ) 
    178178         CASE ( np_FCT )                                 ! FCT scheme      : 2nd / 4th order 
    179                CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
     179               CALL tra_adv_fct ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
    180180         CASE ( np_MUS )                                 ! MUSCL 
    181                 CALL tra_adv_mus    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups ) 
     181                CALL tra_adv_mus( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups        ) 
    182182         CASE ( np_UBS )                                 ! UBS 
    183             CALL tra_adv_ubs    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_ubs_v   ) 
     183            CALL tra_adv_ubs    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_ubs_v           ) 
    184184         CASE ( np_QCK )                                 ! QUICKEST 
    185             CALL tra_adv_qck    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs ) 
     185            CALL tra_adv_qck    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs                     ) 
    186186         ! 
    187187         END SELECT 
  • NEMO/trunk/src/TOP/TRP/trcadv.F90

    r14834 r15073  
    6060   INTEGER, PARAMETER ::   np_QCK     = 5   ! QUICK scheme 
    6161    
     62   !! * Substitutions 
     63#  include "do_loop_substitute.h90" 
    6264#  include "domzgr_substitute.h90" 
    6365   !!---------------------------------------------------------------------- 
     
    8082      REAL(wp), DIMENSION(jpi,jpj,jpk,jptra,jpt), INTENT(inout) :: ptr            ! passive tracers and RHS of tracer equation 
    8183      ! 
    82       INTEGER ::   jk   ! dummy loop index 
     84      INTEGER ::   ji, jj, jk   ! dummy loop index 
    8385      CHARACTER (len=22) ::   charout 
    8486      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zuu, zvv, zww  ! effective velocity 
     
    8991      !                                         !==  effective transport  ==! 
    9092      IF( l_offline ) THEN 
    91          zuu(:,:,:) = uu(:,:,:,Kmm)                ! already in (uu(Kmm),vv(Kmm),ww) 
    92          zvv(:,:,:) = vv(:,:,:,Kmm) 
    93          zww(:,:,:) = ww(:,:,:) 
     93         DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpk ) 
     94            zuu(ji,jj,jk) = uu(ji,jj,jk,Kmm)             ! already in (uu(Kmm),vv(Kmm),ww) 
     95            zvv(ji,jj,jk) = vv(ji,jj,jk,Kmm) 
     96         END_3D 
     97         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
     98            zww(ji,jj,jk) = ww(ji,jj,jk) 
     99         END_3D 
    94100      ELSE                                         ! build the effective transport 
    95          zuu(:,:,jpk) = 0._wp 
    96          zvv(:,:,jpk) = 0._wp 
    97          zww(:,:,jpk) = 0._wp 
     101         DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     102            zuu(ji,jj,jpk) = 0._wp 
     103            zvv(ji,jj,jpk) = 0._wp 
     104         END_2D 
     105         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     106            zww(ji,jj,jpk) = 0._wp 
     107         END_2D 
    98108         IF( ln_wave .AND. ln_sdw )  THEN 
    99             DO jk = 1, jpkm1                                                       ! eulerian transport + Stokes Drift 
    100                zuu(:,:,jk) = e2u  (:,:) * e3u(:,:,jk,Kmm) * ( uu(:,:,jk,Kmm) + usd(:,:,jk) ) 
    101                zvv(:,:,jk) = e1v  (:,:) * e3v(:,:,jk,Kmm) * ( vv(:,:,jk,Kmm) + vsd(:,:,jk) ) 
    102                zww(:,:,jk) = e1e2t(:,:)                   * ( ww(:,:,jk) + wsd(:,:,jk) ) 
    103             END DO 
     109            DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 )                            ! eulerian transport + Stokes Drift 
     110               zuu(ji,jj,jk) = e2u  (ji,jj) * e3u(ji,jj,jk,Kmm) * ( uu(ji,jj,jk,Kmm) + usd(ji,jj,jk) ) 
     111               zvv(ji,jj,jk) = e1v  (ji,jj) * e3v(ji,jj,jk,Kmm) * ( vv(ji,jj,jk,Kmm) + vsd(ji,jj,jk) ) 
     112            END_3D 
     113            DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
     114               zww(ji,jj,jk) = e1e2t(ji,jj)                     * ( ww(ji,jj,jk)     + wsd(ji,jj,jk) ) 
     115            END_3D 
    104116         ELSE 
    105             DO jk = 1, jpkm1 
    106                zuu(:,:,jk) = e2u  (:,:) * e3u(:,:,jk,Kmm) * uu(:,:,jk,Kmm)                   ! eulerian transport 
    107                zvv(:,:,jk) = e1v  (:,:) * e3v(:,:,jk,Kmm) * vv(:,:,jk,Kmm) 
    108                zww(:,:,jk) = e1e2t(:,:)                   * ww(:,:,jk) 
    109             END DO 
     117            DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 ) 
     118               zuu(ji,jj,jk) = e2u  (ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm)           ! eulerian transport 
     119               zvv(ji,jj,jk) = e1v  (ji,jj) * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) 
     120            END_3D 
     121            DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
     122               zww(ji,jj,jk) = e1e2t(ji,jj)                     * ww(ji,jj,jk) 
     123            END_3D 
    110124         ENDIF 
    111125         ! 
    112          IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN                                 ! add z-tilde and/or vvl corrections 
    113             zuu(:,:,:) = zuu(:,:,:) + un_td(:,:,:) 
    114             zvv(:,:,:) = zvv(:,:,:) + vn_td(:,:,:) 
     126         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN                                          ! add z-tilde and/or vvl corrections 
     127            DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 ) 
     128               zuu(ji,jj,jk) = zuu(ji,jj,jk) + un_td(ji,jj,jk) 
     129               zvv(ji,jj,jk) = zvv(ji,jj,jk) + vn_td(ji,jj,jk) 
     130            END_3D 
    115131         ENDIF 
    116132         ! 
     
    125141      ! 
    126142      CASE ( np_CEN )                                 ! Centered : 2nd / 4th order 
    127          CALL tra_adv_cen( kt, nittrc000,'TRC',          zuu, zvv, zww,      Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 
     143         CALL tra_adv_cen   ( kt, nittrc000,'TRC',          zuu, zvv, zww,      Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 
    128144      CASE ( np_FCT )                                 ! FCT      : 2nd / 4th order 
    129145            CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    130146      CASE ( np_MUS )                                 ! MUSCL 
    131             CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups ) 
     147            CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups         ) 
    132148      CASE ( np_UBS )                                 ! UBS 
    133          CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v           ) 
     149         CALL tra_adv_ubs   ( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v           ) 
    134150      CASE ( np_QCK )                                 ! QUICKEST 
    135          CALL tra_adv_qck( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs                     ) 
     151         CALL tra_adv_qck   ( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs                     ) 
    136152      ! 
    137153      END SELECT 
Note: See TracChangeset for help on using the changeset viewer.