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 6051 for branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA – NEMO

Ignore:
Timestamp:
2015-12-15T10:46:14+01:00 (9 years ago)
Author:
lovato
Message:

Merge branches/2015/dev_r5056_CMCC4_simplification (see ticket #1456)

Location:
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r5930 r6051  
    9696      !                                          ! set time step 
    9797      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
    98          r2dtra(:) =  rdttra(:)                          ! = rdtra (restarting with Euler time stepping) 
     98         r2dt = rdt                                 ! = rdt (restarting with Euler time stepping) 
    9999      ELSEIF( kt <= nit000 + 1) THEN                ! at nit000 or nit000+1 
    100          r2dtra(:) = 2._wp * rdttra(:)                   ! = 2 rdttra (leapfrog) 
     100         r2dt = 2._wp * rdt                         ! = 2 rdt (leapfrog) 
    101101      ENDIF 
    102102      ! 
     
    135135         CALL tra_adv_cen    ( kt, nit000, 'TRA',         zun, zvn, zwn     , tsn, tsa, jpts, nn_cen_h, nn_cen_v ) 
    136136      CASE ( np_FCT )                                    ! FCT scheme      : 2nd / 4th order 
    137          CALL tra_adv_fct    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 
     137         CALL tra_adv_fct    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 
    138138      CASE ( np_FCT_zts )                                ! 2nd order FCT with vertical time-splitting 
    139          CALL tra_adv_fct_zts( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_fct_zts ) 
     139         CALL tra_adv_fct_zts( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_fct_zts ) 
    140140      CASE ( np_MUS )                                    ! MUSCL 
    141          CALL tra_adv_mus    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts        , ln_mus_ups )  
     141         CALL tra_adv_mus    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb,      tsa, jpts        , ln_mus_ups )  
    142142      CASE ( np_UBS )                                    ! UBS 
    143          CALL tra_adv_ubs    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_ubs_v   ) 
     143         CALL tra_adv_ubs    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_ubs_v   ) 
    144144      CASE ( np_QCK )                                    ! QUICKEST 
    145          CALL tra_adv_qck    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts                     ) 
     145         CALL tra_adv_qck    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts                     ) 
    146146      ! 
    147147      END SELECT 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90

    r5930 r6051  
    7070      INTEGER                              , INTENT(in   ) ::   kn_fct_h        ! order of the FCT scheme (=2 or 4) 
    7171      INTEGER                              , INTENT(in   ) ::   kn_fct_v        ! order of the FCT scheme (=2 or 4) 
    72       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     72      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    7373      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    7474      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    7676      ! 
    7777      INTEGER  ::   ji, jj, jk, jn                           ! dummy loop indices   
    78       REAL(wp) ::   z2dtt, ztra                              ! local scalar 
     78      REAL(wp) ::   ztra                              ! local scalar 
    7979      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk, zC2t_u, zC4t_u   !   -      - 
    8080      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v   !   -      - 
     
    149149         !                
    150150         DO jk = 1, jpkm1     !* trend and after field with monotonic scheme 
    151             z2dtt = p2dt(jk) 
    152151            DO jj = 2, jpjm1 
    153152               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    159158!!gm why tmask added in the two following lines ???    the mask is done in tranxt ! 
    160159                  pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn)         + ztra   * tmask(ji,jj,jk) 
    161                   zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk) 
     160                  zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 
    162161               END DO 
    163162            END DO 
     
    348347      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    349348      INTEGER                              , INTENT(in   ) ::   kn_fct_zts      ! number of number of vertical sub-timesteps 
    350       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     349      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    351350      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    352351      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    354353      ! 
    355354      REAL(wp), DIMENSION( jpk )                           ::   zts             ! length of sub-timestep for vertical advection 
    356       REAL(wp), DIMENSION( jpk )                           ::   zr_p2dt         ! reciprocal of tracer timestep 
     355      REAL(wp)                                             ::   zr_p2dt         ! reciprocal of tracer timestep 
    357356      INTEGER  ::   ji, jj, jk, jl, jn       ! dummy loop indices   
    358357      INTEGER  ::   jtb, jtn, jta   ! sub timestep pointers for leap-frog/euler forward steps 
    359358      INTEGER  ::   jtaken          ! toggle for collecting appropriate fluxes from sub timesteps 
    360359      REAL(wp) ::   z_rzts          ! Fractional length of Euler forward sub-timestep for vertical advection 
    361       REAL(wp) ::   z2dtt, ztra              ! local scalar 
     360      REAL(wp) ::   ztra              ! local scalar 
    362361      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      - 
    363362      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
     
    390389      zwi(:,:,:) = 0._wp 
    391390      z_rzts = 1._wp / REAL( kn_fct_zts, wp ) 
    392       zr_p2dt(:) = 1._wp / p2dt(:) 
     391      zr_p2dt = 1._wp / p2dt 
    393392      ! 
    394393      !                                                          ! =========== 
     
    443442         ! 
    444443         DO jk = 1, jpkm1         ! total advective trend 
    445             z2dtt = p2dt(jk) 
    446444            DO jj = 2, jpjm1 
    447445               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    452450                  ! update and guess with monotonic sheme 
    453451                  pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn)         + ztra 
    454                   zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk) 
     452                  zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 
    455453               END DO 
    456454            END DO 
     
    508506            IF( jl == 1 ) THEN                        ! Euler forward to kick things off 
    509507               jtb = 1   ;   jtn = 1   ;   jta = 2 
    510                zts(:) = p2dt(:) * z_rzts 
     508               zts(:) = p2dt * z_rzts 
    511509               jtaken = MOD( kn_fct_zts + 1 , 2)            ! Toggle to collect every second flux 
    512510               !                                            ! starting at jl =1 if kn_fct_zts is odd;  
     
    514512            ELSEIF( jl == 2 ) THEN                    ! First leapfrog step 
    515513               jtb = 1   ;   jtn = 2   ;   jta = 3 
    516                zts(:) = 2._wp * p2dt(:) * z_rzts 
     514               zts(:) = 2._wp * p2dt * z_rzts 
    517515            ELSE                                      ! Shuffle pointers for subsequent leapfrog steps 
    518516               jtb = MOD(jtb,3) + 1 
     
    557555            DO jj = 2, jpjm1 
    558556               DO ji = fs_2, fs_jpim1 
    559                   zwz(ji,jj,jk) = ( zwzts(ji,jj,jk) * zr_p2dt(jk) - zwz_sav(ji,jj,jk) ) * wmask(ji,jj,jk) 
     557                  zwz(ji,jj,jk) = ( zwzts(ji,jj,jk) * zr_p2dt - zwz_sav(ji,jj,jk) ) * wmask(ji,jj,jk) 
    560558               END DO 
    561559            END DO 
     
    623621      !!       in-space based differencing for fluid 
    624622      !!---------------------------------------------------------------------- 
    625       REAL(wp), DIMENSION(jpk)         , INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     623      REAL(wp)                         , INTENT(in   ) ::   p2dt            ! tracer time-step 
    626624      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in   ) ::   pbef, paft      ! before & after field 
    627625      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(inout) ::   paa, pbb, pcc   ! monotonic fluxes in the 3 directions 
     
    629627      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    630628      INTEGER  ::   ikm1         ! local integer 
    631       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
     629      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn    ! local scalars 
    632630      REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      - 
    633631      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo, zbup, zbdo 
     
    652650      DO jk = 1, jpkm1 
    653651         ikm1 = MAX(jk-1,1) 
    654          z2dtt = p2dt(jk) 
    655652         DO jj = 2, jpjm1 
    656653            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    679676 
    680677               ! up & down beta terms 
    681                zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) / z2dtt 
     678               zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) / p2dt 
    682679               zbetup(ji,jj,jk) = ( zup            - paft(ji,jj,jk) ) / ( zpos + zrtrn ) * zbt 
    683680               zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zdo            ) / ( zneg + zrtrn ) * zbt 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90

    r5930 r6051  
    7373      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    7474      LOGICAL                              , INTENT(in   ) ::   ld_msc_ups      ! use upstream scheme within muscl 
    75       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     75      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    7676      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    7777      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb             ! before tracer field 
     
    8282      REAL(wp) ::   zu, z0u, zzwx, zw    ! local scalars 
    8383      REAL(wp) ::   zv, z0v, zzwy, z0w   !   -      - 
    84       REAL(wp) ::   zdt, zalpha          !   -      - 
     84      REAL(wp) ::   zalpha          !   -      - 
    8585      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zslpx, zslpy   ! 3D workspace 
    8686      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx  , zwy     ! -      -  
     
    163163         !                                             !-- MUSCL horizontal advective fluxes 
    164164         DO jk = 1, jpkm1                                     ! interior values 
    165             zdt  = p2dt(jk) 
    166165            DO jj = 2, jpjm1 
    167166               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    169168                  z0u = SIGN( 0.5, pun(ji,jj,jk) ) 
    170169                  zalpha = 0.5 - z0u 
    171                   zu  = z0u - 0.5 * pun(ji,jj,jk) * zdt / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
     170                  zu  = z0u - 0.5 * pun(ji,jj,jk) * p2dt / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    172171                  zzwx = ptb(ji+1,jj,jk,jn) + xind(ji,jj,jk) * zu * zslpx(ji+1,jj,jk) 
    173172                  zzwy = ptb(ji  ,jj,jk,jn) + xind(ji,jj,jk) * zu * zslpx(ji  ,jj,jk) 
     
    176175                  z0v = SIGN( 0.5, pvn(ji,jj,jk) ) 
    177176                  zalpha = 0.5 - z0v 
    178                   zv  = z0v - 0.5 * pvn(ji,jj,jk) * zdt / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
     177                  zv  = z0v - 0.5 * pvn(ji,jj,jk) * p2dt / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    179178                  zzwx = ptb(ji,jj+1,jk,jn) + xind(ji,jj,jk) * zv * zslpy(ji,jj+1,jk) 
    180179                  zzwy = ptb(ji,jj  ,jk,jn) + xind(ji,jj,jk) * zv * zslpy(ji,jj  ,jk) 
     
    237236         !                                !-- vertical advective flux 
    238237         DO jk = 1, jpkm1                       ! interior values 
    239             zdt  = p2dt(jk) 
    240238            DO jj = 2, jpjm1       
    241239               DO ji = fs_2, fs_jpim1   ! vector opt. 
    242240                  z0w = SIGN( 0.5, pwn(ji,jj,jk+1) ) 
    243241                  zalpha = 0.5 + z0w 
    244                   zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * zdt  / ( e1e2t(ji,jj) * fse3w(ji,jj,jk+1) ) 
     242                  zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * p2dt  / ( e1e2t(ji,jj) * fse3w(ji,jj,jk+1) ) 
    245243                  zzwx = ptb(ji,jj,jk+1,jn) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk+1) 
    246244                  zzwy = ptb(ji,jj,jk  ,jn) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk  ) 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r5930 r6051  
    8787      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    8888      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    89       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     89      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    9090      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    9191      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    125125      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    126126      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
    127       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt       ! vertical profile of tracer time-step 
     127      REAL(wp)                             , INTENT(in   ) ::   p2dt       ! tracer time-step 
    128128      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun        ! i-velocity components 
    129129      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn   ! before and now tracer fields 
     
    131131      !! 
    132132      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    133       REAL(wp) ::   ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     133      REAL(wp) ::   ztra, zbtr, zdir, zdx, zmsk   ! local scalars 
    134134      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx, zfu, zfc, zfd 
    135135      !---------------------------------------------------------------------- 
     
    166166         ! 
    167167         DO jk = 1, jpkm1   
    168             zdt =  p2dt(jk) 
    169168            DO jj = 2, jpjm1 
    170169               DO ji = fs_2, fs_jpim1   ! vector opt.    
    171170                  zdir = 0.5 + SIGN( 0.5, pun(ji,jj,jk) )   ! if pun > 0 : zdir = 1 otherwise zdir = 0  
    172171                  zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    173                   zwx(ji,jj,jk)  = ABS( pun(ji,jj,jk) ) * zdt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
     172                  zwx(ji,jj,jk)  = ABS( pun(ji,jj,jk) ) * p2dt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
    174173                  zfc(ji,jj,jk)  = zdir * ptb(ji  ,jj,jk,jn) + ( 1. - zdir ) * ptb(ji+1,jj,jk,jn)  ! FC in the x-direction for T 
    175174                  zfd(ji,jj,jk)  = zdir * ptb(ji+1,jj,jk,jn) + ( 1. - zdir ) * ptb(ji  ,jj,jk,jn)  ! FD in the x-direction for T 
     
    242241      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    243242      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
    244       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt       ! vertical profile of tracer time-step 
     243      REAL(wp)                             , INTENT(in   ) ::   p2dt       ! tracer time-step 
    245244      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pvn        ! j-velocity components 
    246245      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn   ! before and now tracer fields 
     
    248247      !! 
    249248      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
    250       REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     249      REAL(wp) :: ztra, zbtr, zdir, zdx, zmsk   ! local scalars 
    251250      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwy, zfu, zfc, zfd 
    252251      !---------------------------------------------------------------------- 
     
    289288         ! 
    290289         DO jk = 1, jpkm1   
    291             zdt =  p2dt(jk) 
    292290            DO jj = 2, jpjm1 
    293291               DO ji = fs_2, fs_jpim1   ! vector opt.    
    294292                  zdir = 0.5 + SIGN( 0.5, pvn(ji,jj,jk) )   ! if pun > 0 : zdir = 1 otherwise zdir = 0  
    295293                  zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * fse3v(ji,jj,jk) 
    296                   zwy(ji,jj,jk)  = ABS( pvn(ji,jj,jk) ) * zdt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
     294                  zwy(ji,jj,jk)  = ABS( pvn(ji,jj,jk) ) * p2dt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
    297295                  zfc(ji,jj,jk)  = zdir * ptb(ji,jj  ,jk,jn) + ( 1. - zdir ) * ptb(ji,jj+1,jk,jn)  ! FC in the x-direction for T 
    298296                  zfd(ji,jj,jk)  = zdir * ptb(ji,jj+1,jk,jn) + ( 1. - zdir ) * ptb(ji,jj  ,jk,jn)  ! FD in the x-direction for T 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r5930 r6051  
    8585      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    8686      INTEGER                              , INTENT(in   ) ::   kn_ubs_v        ! number of tracers 
    87       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     87      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    8888      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean transport components 
    8989      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    9191      ! 
    9292      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    93       REAL(wp) ::   ztra, zbtr, zcoef, z2dtt                       ! local scalars 
     93      REAL(wp) ::   ztra, zbtr, zcoef                       ! local scalars 
    9494      REAL(wp) ::   zfp_ui, zfm_ui, zcenut, ztak, zfp_wk, zfm_wk   !   -      - 
    9595      REAL(wp) ::   zfp_vj, zfm_vj, zcenvt, zeeu, zeev, z_hdivn    !   -      - 
     
    212212            ! 
    213213            DO jk = 1, jpkm1           !* trend and after field with monotonic scheme 
    214                z2dtt = p2dt(jk) 
    215214               DO jj = 2, jpjm1 
    216215                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    217216                     ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) / ( e1e2t(ji,jj) * fse3t_n(ji,jj,jk) ) 
    218217                     pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn) +  ztak  
    219                      zti(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
     218                     zti(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + p2dt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
    220219                  END DO 
    221220               END DO 
     
    293292      !!       in-space based differencing for fluid 
    294293      !!---------------------------------------------------------------------- 
    295       REAL(wp), INTENT(in   ), DIMENSION(jpk)          ::   p2dt   ! vertical profile of tracer time-step 
     294      REAL(wp), INTENT(in   )                          ::   p2dt   ! tracer time-step 
    296295      REAL(wp),                DIMENSION (jpi,jpj,jpk) ::   pbef   ! before field 
    297296      REAL(wp), INTENT(inout), DIMENSION (jpi,jpj,jpk) ::   paft   ! after field 
     
    300299      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    301300      INTEGER  ::   ikm1         ! local integer 
    302       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
     301      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn   ! local scalars 
    303302      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo 
    304303      !!---------------------------------------------------------------------- 
     
    349348      ! --------------------------------------------------- 
    350349      DO jk = 1, jpkm1 
    351          z2dtt = p2dt(jk) 
    352350         DO jj = 2, jpjm1 
    353351            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    356354               zneg = MAX( 0., pcc(ji  ,jj  ,jk  ) ) - MIN( 0., pcc(ji  ,jj  ,jk+1) ) 
    357355               ! up & down beta terms 
    358                zbt = e1e2t(ji,jj) * fse3t(ji,jj,jk) / z2dtt 
     356               zbt = e1e2t(ji,jj) * fse3t(ji,jj,jk) / p2dt 
    359357               zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+zrtrn) * zbt 
    360358               zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+zrtrn) * zbt 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r5836 r6051  
    129129      ! 
    130130      !                                               ! set time step size (Euler/Leapfrog) 
    131       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   z2dt =     rdttra(1)      ! at nit000   (Euler) 
    132       ELSE                                        ;   z2dt = 2.* rdttra(1)      !             (Leapfrog) 
     131      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
     132      ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
    133133      ENDIF 
    134134      z1_2dt = 1._wp / z2dt 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_triad.F90

    r5836 r6051  
    115115      ! 
    116116      !                                               ! set time step size (Euler/Leapfrog) 
    117       IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdttra(1)      ! at nit000   (Euler) 
    118       ELSE                                        ;   z2dt = 2.* rdttra(1)      !             (Leapfrog) 
     117      IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
     118      ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
    119119      ENDIF 
    120120      z1_2dt = 1._wp / z2dt 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r5930 r6051  
    119119  
    120120      ! set time step size (Euler/Leapfrog) 
    121       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dtra(:) =     rdttra(:)      ! at nit000             (Euler) 
    122       ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dtra(:) = 2._wp* rdttra(:)      ! at nit000 or nit000+1 (Leapfrog) 
     121      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =     rdt      ! at nit000             (Euler) 
     122      ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp* rdt   ! at nit000 or nit000+1 (Leapfrog) 
    123123      ENDIF 
    124124 
     
    142142      ELSE                                            ! Leap-Frog + Asselin filter time stepping 
    143143         ! 
    144          IF( lk_vvl )  THEN   ;   CALL tra_nxt_vvl( kt, nit000, rdttra, 'TRA', tsb, tsn, tsa,   & 
     144         IF( lk_vvl )  THEN   ;   CALL tra_nxt_vvl( kt, nit000, rdt, 'TRA', tsb, tsn, tsa,   & 
    145145           &                                                              sbc_tsc, sbc_tsc_b, jpts )  ! variable volume level (vvl)  
    146          ELSE                 ;   CALL tra_nxt_fix( kt, nit000,         'TRA', tsb, tsn, tsa, jpts )  ! fixed    volume level  
     146         ELSE                 ;   CALL tra_nxt_fix( kt, nit000,      'TRA', tsb, tsn, tsa, jpts )  ! fixed    volume level  
    147147         ENDIF 
    148148      ENDIF      
     
    151151      IF( l_trdtra ) THEN      ! trend of the Asselin filter (tb filtered - tb)/dt      
    152152         DO jk = 1, jpkm1 
    153             zfact = 1._wp / r2dtra(jk)              
     153            zfact = 1._wp / r2dt              
    154154            ztrdt(:,:,jk) = ( tsb(:,:,jk,jp_tem) - ztrdt(:,:,jk) ) * zfact 
    155155            ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 
     
    237237      INTEGER         , INTENT(in   )                               ::  kt       ! ocean time-step index 
    238238      INTEGER         , INTENT(in   )                               ::  kit000   ! first time step index 
    239       REAL(wp)        , INTENT(in   ), DIMENSION(jpk)               ::  p2dt     ! time-step 
     239      REAL(wp)        , INTENT(in   )                               ::  p2dt     ! time-step 
    240240      CHARACTER(len=3), INTENT(in   )                               ::  cdtype   ! =TRA or TRC (tracer indicator) 
    241241      INTEGER         , INTENT(in   )                               ::  kjpt     ! number of tracers 
     
    275275      DO jn = 1, kjpt       
    276276         DO jk = 1, jpkm1 
    277             zfact1 = atfp * p2dt(jk) 
     277            zfact1 = atfp * p2dt 
    278278            zfact2 = zfact1 / rau0 
    279279            DO jj = 1, jpj 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r5930 r6051  
    6868      ! 
    6969      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
    70          r2dtra(:) =  rdttra(:)                          ! = rdtra (restarting with Euler time stepping) 
     70         r2dt =  rdt                          ! = rdt (restarting with Euler time stepping) 
    7171      ELSEIF( kt <= nit000 + 1) THEN                ! at nit000 or nit000+1 
    72          r2dtra(:) = 2. * rdttra(:)                      ! = 2 rdttra (leapfrog) 
     72         r2dt = 2. * rdt                      ! = 2 rdt (leapfrog) 
    7373      ENDIF 
    7474 
     
    8080 
    8181      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    82       CASE ( 0 )    ;    CALL tra_zdf_exp( kt, nit000, 'TRA', r2dtra, nn_zdfexp, tsb, tsa, jpts )  !   explicit scheme  
    83       CASE ( 1 )    ;    CALL tra_zdf_imp( kt, nit000, 'TRA', r2dtra,            tsb, tsa, jpts )  !   implicit scheme  
     82      CASE ( 0 )    ;    CALL tra_zdf_exp( kt, nit000, 'TRA', r2dt, nn_zdfexp, tsb, tsa, jpts )  !   explicit scheme  
     83      CASE ( 1 )    ;    CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt,            tsb, tsa, jpts )  !   implicit scheme  
    8484      END SELECT 
    8585!!gm WHY here !   and I don't like that ! 
     
    9292      IF( l_trdtra )   THEN                      ! save the vertical diffusive trends for further diagnostics 
    9393         DO jk = 1, jpkm1 
    94             ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dtra(jk) ) - ztrdt(:,:,jk) 
    95             ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dtra(jk) ) - ztrds(:,:,jk) 
     94            ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dt ) - ztrdt(:,:,jk) 
     95            ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dt ) - ztrds(:,:,jk) 
    9696         END DO 
    9797!!gm this should be moved in trdtra.F90 and done on all trends 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r3294 r6051  
    8181      INTEGER                              , INTENT(in   ) ::   kjpt        ! number of tracers 
    8282      INTEGER                              , INTENT(in   ) ::   kn_zdfexp   ! number of sub-time step 
    83       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt        ! vertical profile of tracer time-step 
     83      REAL(wp)                             , INTENT(in   ) ::   p2dt        ! tracer time-step 
    8484      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb         ! before and now tracer fields 
    8585      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta         ! tracer trend  
     
    136136                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    137137                     ze3tr = zlavmr / fse3t_n(ji,jj,jk) 
    138                      zwx(ji,jj,jk) = zwx(ji,jj,jk) + p2dt(jk) * ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) * ze3tr 
     138                     zwx(ji,jj,jk) = zwx(ji,jj,jk) + p2dt * ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) * ze3tr 
    139139                  END DO 
    140140               END DO 
     
    150150                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    151151                     ze3tb = fse3t_b(ji,jj,jk) / fse3t(ji,jj,jk)                          ! before e3t 
    152                      ztra  = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt(jk) * pta(ji,jj,jk,jn)       ! total trends * 2*rdt  
     152                     ztra  = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt * pta(ji,jj,jk,jn)       ! total trends * 2*rdt 
    153153                     pta(ji,jj,jk,jn) = ( ze3tb * ptb(ji,jj,jk,jn) + ztra ) * tmask(ji,jj,jk) 
    154154                  END DO 
     
    159159               DO jj = 2, jpjm1  
    160160                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    161                      pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt(jk) * pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
     161                     pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt * pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    162162                  END DO 
    163163               END DO 
  • branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r5836 r6051  
    7878      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    7979      INTEGER                              , INTENT(in   ) ::   kjpt     ! number of tracers 
    80       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt     ! vertical profile of tracer time-step 
     80      REAL(wp)                             , INTENT(in   ) ::   p2dt     ! tracer time-step 
    8181      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb      ! before and now tracer fields 
    8282      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta      ! tracer trend  
     
    144144                     ze3ta =  ( 1. - r_vvl ) +        r_vvl   * fse3t_a(ji,jj,jk)   ! after scale factor at T-point 
    145145                     ze3tn =         r_vvl   + ( 1. - r_vvl ) * fse3t_n(ji,jj,jk)   ! now   scale factor at T-point 
    146                      zwi(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk  ) / ( ze3tn * fse3w(ji,jj,jk  ) ) 
    147                      zws(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk+1) / ( ze3tn * fse3w(ji,jj,jk+1) ) 
     146                     zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk  ) / ( ze3tn * fse3w(ji,jj,jk  ) ) 
     147                     zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / ( ze3tn * fse3w(ji,jj,jk+1) ) 
    148148                     zwd(ji,jj,jk) = ze3ta - zwi(ji,jj,jk) - zws(ji,jj,jk) 
    149149                 END DO 
     
    192192               ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b(ji,jj,1) 
    193193               ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t(ji,jj,1) 
    194                pta(ji,jj,1,jn) = ze3tb * ptb(ji,jj,1,jn) + p2dt(1) * ze3tn * pta(ji,jj,1,jn) 
     194               pta(ji,jj,1,jn) = ze3tb * ptb(ji,jj,1,jn) + p2dt * ze3tn * pta(ji,jj,1,jn) 
    195195            END DO 
    196196         END DO 
     
    200200                  ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b(ji,jj,jk) 
    201201                  ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t  (ji,jj,jk) 
    202                   zrhs = ze3tb * ptb(ji,jj,jk,jn) + p2dt(jk) * ze3tn * pta(ji,jj,jk,jn)   ! zrhs=right hand side  
     202                  zrhs = ze3tb * ptb(ji,jj,jk,jn) + p2dt * ze3tn * pta(ji,jj,jk,jn)   ! zrhs=right hand side  
    203203                  pta(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pta(ji,jj,jk-1,jn) 
    204204               END DO 
Note: See TracChangeset for help on using the changeset viewer.