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

Changeset 15078


Ignore:
Timestamp:
2021-07-05T12:10:35+02:00 (3 years ago)
Author:
ayoung
Message:

Picking up bug fixes r15065-15077. Ticket #2648.

Location:
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/ICE/icevar.F90

    r14997 r15078  
    341341      !!------------------------------------------------------------------- 
    342342      INTEGER  ::   ji, jj, jk, jl   ! dummy loop index 
    343       REAL(wp) ::   zsal, z1_dS 
    344       REAL(wp) ::   zargtemp , zs0, zs 
     343      REAL(wp) ::   z1_dS 
     344      REAL(wp) ::   ztmp1, ztmp2, zs0, zs 
    345345      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   z_slope_s, zalpha    ! case 2 only 
    346346      REAL(wp), PARAMETER :: zsi0 = 3.5_wp 
     
    409409         DO jl = 1, jpl 
    410410            DO jk = 1, nlay_i 
    411                zargtemp  = ( REAL(jk,wp) - 0.5_wp ) * r1_nlay_i 
    412                sz_i(:,:,jk,jl) =  1.6_wp * (  1._wp - COS( rpi * zargtemp**(0.407_wp/(0.573_wp+zargtemp)) )  ) 
     411               ztmp1 = ( REAL(jk,wp) - 0.5_wp ) * r1_nlay_i 
     412               ztmp2 = 1.6_wp * (  1._wp - COS( rpi * ztmp1**(0.407_wp/(0.573_wp+ztmp1)) ) ) 
     413               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     414                  sz_i(ji,jj,jk,jl) =  ztmp2 
     415               END_2D 
    413416            END DO 
    414417         END DO 
     
    427430      !!------------------------------------------------------------------- 
    428431      INTEGER  ::   ji, jk    ! dummy loop indices 
    429       REAL(wp) ::   zargtemp, zsal, z1_dS   ! local scalars 
     432      REAL(wp) ::   ztmp1, ztmp2, z1_dS   ! local scalars 
    430433      REAL(wp) ::   zs, zs0              !   -      - 
    431434      ! 
     
    480483!!gm cf remark in ice_var_salprof routine, CASE( 3 ) 
    481484         DO jk = 1, nlay_i 
    482             zargtemp  = ( REAL(jk,wp) - 0.5_wp ) * r1_nlay_i 
    483             zsal =  1.6_wp * ( 1._wp - COS( rpi * zargtemp**( 0.407_wp / ( 0.573_wp + zargtemp ) ) ) ) 
     485            ztmp1  = ( REAL(jk,wp) - 0.5_wp ) * r1_nlay_i 
     486            ztmp2 =  1.6_wp * ( 1._wp - COS( rpi * ztmp1**( 0.407_wp / ( 0.573_wp + ztmp1 ) ) ) ) 
    484487            DO ji = 1, npti 
    485                sz_i_1d(ji,jk) = zsal 
     488               sz_i_1d(ji,jk) = ztmp2 
    486489            END DO 
    487490         END DO 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/OCE/DOM/domqco.F90

    r15014 r15078  
    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 
     
    184184         !                                ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 
    185185 
    186       DO_2D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     186      DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
    187187         ! round brackets added to fix the order of floating point operations 
    188188         ! needed to ensure halo 1 - halo 2 compatibility 
     
    197197!!st         ELSE                                      !- Flux Form   (simple averaging) 
    198198#else 
    199       DO_2D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     199      DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
    200200         ! round brackets added to fix the order of floating point operations 
    201201         ! needed to ensure halo 1 - halo 2 compatibility 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/OCE/OBS/diaobs.F90

    r15062 r15078  
    9797   TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) ::   profdataqc   !: Profile data after quality control 
    9898 
    99    CHARACTER(len=8), PUBLIC, DIMENSION(:), ALLOCATABLE ::   cobstypesprof, cobstypessurf   !: Profile & surface obs types 
     99   CHARACTER(len=lca), PUBLIC, DIMENSION(:), ALLOCATABLE ::   cobstypesprof, cobstypessurf   !: Profile & surface obs types 
    100100 
    101101#  include "domzgr_substitute.h90" 
     
    10261026      INTEGER, DIMENSION(ntypes), INTENT(OUT) :: & 
    10271027         &                   ifiles      ! Out number of files for each type 
    1028       CHARACTER(len=8), DIMENSION(ntypes), INTENT(IN) :: & 
     1028      CHARACTER(len=lca), DIMENSION(ntypes), INTENT(IN) :: & 
    10291029         &                   cobstypes   ! List of obs types 
    10301030      CHARACTER(len=128), DIMENSION(ntypes, jpmaxnfiles), INTENT(IN) :: & 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/OCE/TRA/traadv.F90

    r15060 r15078  
    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/branches/UKMO/NEMO_r4.2RC_GO8_package/src/OCE/TRA/traadv_ubs_lf.F90

    r14834 r15078  
    130130         !                                                       ! =========== 
    131131         !                        !==  horizontal laplacian of before tracer ==! 
    132          DO_3D( 1, 1, 1, 1, 1, jpkm1 )                   ! Second derivative (divergence) 
     132         DO_3D( 1, 0, 1, 0, 1, jpkm1 )                   ! Second derivative (divergence) 
    133133            ! First derivative (masked gradient) 
    134             zeeu_im1 = e2_e1u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * umask(ji-1,jj,jk) 
    135             zeeu = e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) * umask(ji,jj,jk) 
    136             zeeu_ip1 = e2_e1u(ji+1,jj) * e3u(ji+1,jj,jk,Kmm) * umask(ji+1,jj,jk) 
    137             zeev_jm1 = e1_e2v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * vmask(ji,jj-1,jk) 
    138             zeev = e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm) * vmask(ji,jj,jk) 
    139             zeev_jp1 = e1_e2v(ji,jj+1) * e3v(ji,jj+1,jk,Kmm) * vmask(ji,jj+1,jk) 
    140             ! 
    141             zztu_im1 = zeeu_im1 * ( pt(ji,jj,jk,jn,Kbb) - pt(ji-1,jj,jk,jn,Kbb) ) 
    142             zztu = zeeu * ( pt(ji+1,jj,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
     134            zeeu_im1 = e2_e1u(ji-1,jj  ) * e3u(ji-1,jj  ,jk,Kmm) * umask(ji-1,jj  ,jk) 
     135            zeeu     = e2_e1u(ji  ,jj  ) * e3u(ji  ,jj  ,jk,Kmm) * umask(ji  ,jj  ,jk) 
     136            zeeu_ip1 = e2_e1u(ji+1,jj  ) * e3u(ji+1,jj  ,jk,Kmm) * umask(ji+1,jj  ,jk) 
     137            zeev_jm1 = e1_e2v(ji  ,jj-1) * e3v(ji  ,jj-1,jk,Kmm) * vmask(ji  ,jj-1,jk) 
     138            zeev     = e1_e2v(ji  ,jj  ) * e3v(ji  ,jj  ,jk,Kmm) * vmask(ji  ,jj  ,jk) 
     139            zeev_jp1 = e1_e2v(ji  ,jj+1) * e3v(ji  ,jj+1,jk,Kmm) * vmask(ji  ,jj+1,jk) 
     140            ! 
     141            zztu_im1 = zeeu_im1 * ( pt(ji  ,jj,jk,jn,Kbb) - pt(ji-1,jj,jk,jn,Kbb) ) 
     142            zztu     = zeeu     * ( pt(ji+1,jj,jk,jn,Kbb) - pt(ji  ,jj,jk,jn,Kbb) ) 
    143143            zztu_ip1 = zeeu_ip1 * ( pt(ji+2,jj,jk,jn,Kbb) - pt(ji+1,jj,jk,jn,Kbb) ) 
    144144            ! 
    145             zztv_jm1 = zeev_jm1 * ( pt(ji,jj,jk,jn,Kbb) - pt(ji,jj-1,jk,jn,Kbb) ) 
    146             zztv = zeev * ( pt(ji  ,jj+1,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
     145            zztv_jm1 = zeev_jm1 * ( pt(ji,jj  ,jk,jn,Kbb) - pt(ji,jj-1,jk,jn,Kbb) ) 
     146            zztv     = zeev     * ( pt(ji,jj+1,jk,jn,Kbb) - pt(ji,jj  ,jk,jn,Kbb) ) 
    147147            zztv_jp1 = zeev_jp1 * ( pt(ji,jj+2,jk,jn,Kbb) - pt(ji,jj+1,jk,jn,Kbb) ) 
    148148            ! Second derivative (divergence) 
    149             zcoef = 1._wp / ( 6._wp * e3t(ji,jj,jk,Kmm) ) 
    150             zcoef_ip1 = 1._wp / ( 6._wp * e3t(ji+1,jj,jk,Kmm) ) 
    151             zcoef_jp1 = 1._wp / ( 6._wp * e3t(ji,jj+1,jk,Kmm) ) 
    152             ! 
    153             zzltu = (  zztu - zztu_im1  ) * zcoef 
    154             zzltu_ip1 = (  zztu_ip1 - zztu  ) * zcoef_ip1 
    155             zzltv = (  zztv - zztv_jm1  ) * zcoef 
    156             zzltv_jp1 = (  zztv_jp1 - zztv  ) * zcoef_jp1 
     149            zcoef     = 1._wp / ( 6._wp * e3t(ji  ,jj  ,jk,Kmm) ) 
     150            zcoef_ip1 = 1._wp / ( 6._wp * e3t(ji+1,jj  ,jk,Kmm) ) 
     151            zcoef_jp1 = 1._wp / ( 6._wp * e3t(ji  ,jj+1,jk,Kmm) ) 
     152            ! 
     153            zzltu     = (  zztu    - zztu_im1  ) * zcoef 
     154            zzltu_ip1 = (  zztu_ip1 - zztu      ) * zcoef_ip1 
     155            zzltv     = (  zztv    - zztv_jm1  ) * zcoef 
     156            zzltv_jp1 = (  zztv_jp1 - zztv      ) * zcoef_jp1 
    157157            ! 
    158158            !                     !==  Horizontal advective fluxes  ==!     (UBS) 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/OCE/ZDF/zdfgls.F90

    r14967 r15078  
    327327      END_3D 
    328328      ! 
    329       zdiag(:,:,jpk) = 1._wp 
    330       ! 
    331       ! Set surface condition on zwall_psi (1 at the bottom) 
    332       zwall_psi(:,:, 1 ) = zwall_psi(:,:,2) 
    333       zwall_psi(:,:,jpk) = 1._wp 
     329      DO_2D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     330         zdiag(ji,jj,jpk) = 1._wp 
     331         ! 
     332         ! Set surface condition on zwall_psi (1 at the bottom) 
     333         zwall_psi(ji,jj, 1 ) = zwall_psi(ji,jj,2) 
     334         zwall_psi(ji,jj,jpk) = 1._wp 
     335      END_2D 
    334336      ! 
    335337      ! Surface boundary condition on tke 
     
    501503      ! ---------------------------------------------------------- 
    502504      ! 
    503       DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     505      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    504506         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    505507      END_3D 
    506       DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     508      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    507509         zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 
    508510      END_3D 
     
    590592      END_3D 
    591593      ! 
    592       zdiag(:,:,jpk) = 1._wp 
    593  
     594      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     595         zdiag(ji,jj,jpk) = 1._wp 
     596      END_2D 
     597       
    594598      ! Surface boundary condition on psi 
    595599      ! --------------------------------- 
     
    858862      ! Lines below are useless if GOTM style Dirichlet conditions are used 
    859863 
    860       zstm(:,:,1) = zstm(:,:,2) 
    861  
    862       ! default value, in case jpk > mbkt(ji,jj)+1. Not needed but avoid a bug when looking for undefined values (-fpe0) 
    863       zstm(:,:,jpk) = 0. 
     864      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     865         zstm(ji,jj,1) = zstm(ji,jj,2) 
     866         zstm(ji,jj,jpk) = 0.  ! default value, in case jpk > mbkt(ji,jj)+1 
     867         !                   ! Not needed but avoid a bug when looking for undefined values (-fpe0) 
     868      END_2D 
    864869      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )             ! update bottom with good values 
    865870         zstm(ji,jj,mbkt(ji,jj)+1) = zstm(ji,jj,mbkt(ji,jj)) 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/OCE/ZDF/zdftke.F90

    r14985 r15078  
    428428      ! 
    429429      !                          !* Matrix inversion from level 2 (tke prescribed at level 1) 
    430       DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     430      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    431431         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    432432      END_3D 
     
    435435!         zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
    436436!      END_2D 
    437       DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
     437      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    438438         zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 
    439439      END_3D 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/TRP/trcadv.F90

    r14834 r15078  
    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 
  • NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/trc.F90

    r14558 r15078  
    8080   REAL(wp)        , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   trc_ice_ratio    !: ice-ocean tracer ratio 
    8181   REAL(wp)        , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   trc_ice_prescr   !: prescribed ice trc cc 
    82    CHARACTER(len=2), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   cn_trc_o         !: choice of ocean tracer cc 
     82 
     83   CHARACTER(len=lca), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   cn_trc_o         !: choice of ocean tracer cc 
    8384 
    8485   !! Information for the optics module 
     
    104105   END TYPE PTRACER 
    105106   ! 
    106    CHARACTER(len=20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ctrcnm   !: tracer name  
    107    CHARACTER(len=80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ctrcln   !: trccer field long name 
    108    CHARACTER(len=20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ctrcun   !: tracer unit 
     107   CHARACTER(len=lca), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ctrcnm   !: tracer name  
     108   CHARACTER(len=lca), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ctrcln   !: trccer field long name 
     109   CHARACTER(len=lca), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ctrcun   !: tracer unit 
    109110   ! 
    110111   TYPE, PUBLIC ::   DIAG         !: Passive trcacer ddditional diagnostic type 
Note: See TracChangeset for help on using the changeset viewer.