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/traldf_lap.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/traldf_lap.F90

    r3294 r3865  
    3131 
    3232   PUBLIC   tra_ldf_lap   ! routine called by step.F90 
    33  
    34    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   e1ur, e2vr   ! scale factor coefficients 
    3533 
    3634   !! * Substitutions 
     
    8583         IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype 
    8684         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 
    87          ! 
    88          IF( .NOT. ALLOCATED( e1ur ) ) THEN 
    89             ! This routine may be called for both active and passive tracers.  
    90             ! Allocate and set saved arrays on first call only. 
    91             ALLOCATE( e1ur(jpi,jpj), e2vr(jpi,jpj), STAT=ierr ) 
    92             IF( lk_mpp    )   CALL mpp_sum( ierr ) 
    93             IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'tra_ldf_lap : unable to allocate arrays' ) 
    94             ! 
    95             e1ur(:,:) = e2u(:,:) / e1u(:,:) 
    96             e2vr(:,:) = e1v(:,:) / e2v(:,:) 
    97          ENDIF 
    9885      ENDIF 
    9986 
     
    10794            DO jj = 1, jpjm1 
    10895               DO ji = 1, fs_jpim1   ! vector opt. 
    109                   zabe1 = fsahtu(ji,jj,jk) * umask(ji,jj,jk) * e1ur(ji,jj) * fse3u(ji,jj,jk) 
    110                   zabe2 = fsahtv(ji,jj,jk) * vmask(ji,jj,jk) * e2vr(ji,jj) * fse3v(ji,jj,jk) 
     96                  zabe1 = fsahtu(ji,jj,jk) * umask(ji,jj,jk) * re2u_e1u(ji,jj) * fse3u_n(ji,jj,jk) 
     97                  zabe2 = fsahtv(ji,jj,jk) * vmask(ji,jj,jk) * re1v_e2v(ji,jj) * fse3v_n(ji,jj,jk) 
    11198                  ztu(ji,jj,jk) = zabe1 * ( ptb(ji+1,jj  ,jk,jn) - ptb(ji,jj,jk,jn) ) 
    11299                  ztv(ji,jj,jk) = zabe2 * ( ptb(ji  ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) 
     
    120107                     ikv = mbkv(ji,jj) 
    121108                     IF( iku == jk ) THEN 
    122                         zabe1 = fsahtu(ji,jj,iku) * umask(ji,jj,iku) * e1ur(ji,jj) * fse3u(ji,jj,iku) 
     109                        zabe1 = fsahtu(ji,jj,iku) * umask(ji,jj,iku) * re2u_e1u(ji,jj) * fse3u_n(ji,jj,iku) 
    123110                        ztu(ji,jj,jk) = zabe1 * pgu(ji,jj,jn) 
    124111                     ENDIF 
    125112                     IF( ikv == jk ) THEN 
    126                         zabe2 = fsahtv(ji,jj,ikv) * vmask(ji,jj,ikv) * e2vr(ji,jj) * fse3v(ji,jj,ikv) 
     113                        zabe2 = fsahtv(ji,jj,ikv) * vmask(ji,jj,ikv) * re1v_e2v(ji,jj) * fse3v_n(ji,jj,ikv) 
    127114                        ztv(ji,jj,jk) = zabe2 * pgv(ji,jj,jn) 
    128115                     ENDIF 
     
    136123            DO jj = 2, jpjm1 
    137124               DO ji = fs_2, fs_jpim1   ! vector opt. 
    138                   zbtr = 1._wp / ( e1t(ji,jj) *e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     125                  zbtr = 1._wp / ( e12t(ji,jj) * fse3t_n(ji,jj,jk) ) 
    139126                  ! horizontal diffusive trends added to the general tracer trends 
    140127                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk)   & 
Note: See TracChangeset for help on using the changeset viewer.