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 461 for trunk/NEMO/OPA_SRC – NEMO

Changeset 461 for trunk/NEMO/OPA_SRC


Ignore:
Timestamp:
2006-05-10T19:15:54+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_052:RB: update lateral diffusion computation following the reorganization of both dynamics and tracers

Location:
trunk/NEMO/OPA_SRC/LDF
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r247 r461  
    104104         WRITE(numout,*) '             horizontal eddy viscosity            ahm0   = ', ahm0 
    105105         WRITE(numout,*) '             background viscosity                 ahmb0  = ', ahmb0 
    106          WRITE(numout,*) 
    107       ENDIF 
    108  
    109       ! Parameter control 
    110  
    111       ! control the input 
    112       ioptio = 0 
    113       IF( ln_dynldf_lap   )   ioptio = ioptio + 1 
    114       IF( ln_dynldf_bilap )   ioptio = ioptio + 1 
    115       IF( ioptio /= 1 )   THEN 
    116           IF(lwp) WRITE(numout,cform_err) 
    117           IF(lwp) WRITE(numout,*) '          use ONE of the 2 lap/bilap operator type on momentum' 
    118           nstop = nstop + 1 
    119       ENDIF 
    120       ioptio = 0 
    121       IF( ln_dynldf_level )   ioptio = ioptio + 1 
    122       IF( ln_dynldf_hor   )   ioptio = ioptio + 1 
    123       IF( ln_dynldf_iso   )   ioptio = ioptio + 1 
    124       IF( ioptio /= 1 ) THEN 
    125          IF(lwp) WRITE(numout,cform_err) 
    126          IF(lwp) WRITE(numout,*) '          use only ONE direction (level/hor/iso)' 
    127          nstop = nstop + 1 
    128       ENDIF 
    129  
    130       IF( lk_sco ) THEN          ! s-coordinates: rotation required for horizontal or isopycnal direction 
    131          IF( ( ln_dynldf_iso .OR. ln_dynldf_hor ) .AND. .NOT.lk_ldfslp ) THEN 
    132             IF(lwp) WRITE(numout,cform_err) 
    133             IF(lwp) WRITE(numout,*) '          the rotation of the viscous tensor require key_ldfslp' 
    134             IF( .NOT.lk_esopa )   nstop = nstop + 1 
    135          ENDIF 
    136       ELSE                       ! z-coordinates with/without partial step: 
    137          ln_dynldf_level = ln_dynldf_level .OR. ln_dynldf_hor      ! level mixing = horizontal mixing 
    138          ln_dynldf_hor   = .FALSE. 
    139          IF(lwp) WRITE(numout,*) '          horizontal mixing in z-coord or partial steps: force ln_dynldf_level = T' 
    140          IF(lwp) WRITE(numout,*) '                                                  and    force ln_dynldf_hor   = F' 
    141          IF( ln_dynldf_iso .AND. .NOT.lk_ldfslp ) THEN             ! rotation required for isopycnal mixing 
    142             IF(lwp) WRITE(numout,cform_err) 
    143             IF(lwp) WRITE(numout,*) '          the rotation of the viscous tensor require key_ldfslp' 
    144             IF( .NOT.lk_esopa )   nstop = nstop + 1 
    145          ENDIF 
    146       ENDIF 
    147  
    148       l_dynldf_lap     =       ln_dynldf_lap   .AND. ln_dynldf_level     ! iso-level   laplacian operator 
    149       l_dynldf_bilap   =       ln_dynldf_bilap .AND. ln_dynldf_level     ! iso-level bilaplacian operator 
    150       l_dynldf_bilapg  =       ln_dynldf_bilap .AND. ln_dynldf_hor       ! geopotential bilap. (s-coord) 
    151       l_dynldf_iso     =       ln_dynldf_lap   .AND.                  &  ! laplacian operator 
    152          &                   ( ln_dynldf_iso   .OR.  ln_dynldf_hor )     ! iso-neutral (z-coord) or horizontal (s-coord) 
    153  
    154       l_dynzdf_iso    = .FALSE. 
    155       IF( l_dynldf_iso )   l_dynzdf_iso = .TRUE. 
    156  
    157       ioptio = 0 
    158       IF( l_dynldf_lap     )   ioptio = ioptio + 1 
    159       IF( l_dynldf_bilap   )   ioptio = ioptio + 1 
    160       IF( l_dynldf_bilapg  )   ioptio = ioptio + 1 
    161       IF( l_dynldf_iso     )   ioptio = ioptio + 1 
    162       IF( ioptio /= 1 ) THEN 
    163          IF(lwp) WRITE(numout,cform_err) 
    164          IF(lwp) WRITE(numout,*) '          this combination of operator and direction has not been implemented' 
    165          nstop = nstop + 1 
    166       ENDIF 
    167       IF( lk_esopa ) THEN 
    168          l_dynldf_lap = .TRUE.   ;   l_dynldf_bilap   = .TRUE.   ;   l_dynldf_bilapg  = .TRUE. 
    169          l_dynldf_iso = .TRUE.   ;   l_dynzdf_iso     = .TRUE. 
    170          IF(lwp ) WRITE(numout,*) '          esopa test: use all lateral physics options' 
    171       ENDIF 
    172  
    173       ! control print 
    174       IF( l_dynldf_lap    .AND. lwp ) WRITE(numout,*) '          iso-level laplacian momentum operator' 
    175       IF( l_dynldf_bilap  .AND. lwp ) WRITE(numout,*) '          iso-level bilaplacian momentum operator' 
    176       IF( l_dynldf_bilapg .AND. lwp ) WRITE(numout,*) '          geopotential bilaplacian momentum operator' 
    177       IF( l_dynldf_iso    .AND. lwp ) WRITE(numout,*) '          iso-neutral laplacian momentum operator' 
     106      ENDIF 
     107 
     108      ! ... check of lateral diffusive operator on tracers 
     109      !           ==> will be done in trazdf module 
    178110 
    179111      ! ... Space variation of eddy coefficients 
     
    190122      IF(lwp) WRITE(numout,*) '          momentum mixing coef. = F( depth )' 
    191123      ioptio = ioptio+1 
    192       IF( lk_sco ) THEN 
     124      IF( ln_sco ) THEN 
    193125         IF(lwp) WRITE(numout,cform_err) 
    194          IF(lwp) WRITE(numout,*) '          key_dynldf_c1d cannot be used in s-coordinate (key_s_coord)' 
     126         IF(lwp) WRITE(numout,*) '          key_dynldf_c1d cannot be used in s-coordinate (ln_sco)' 
    195127         nstop = nstop + 1 
    196128      ENDIF 
     
    206138 
    207139 
    208       IF( l_dynldf_bilap .OR. l_dynldf_bilapg ) THEN 
     140      IF( ln_dynldf_bilap ) THEN 
    209141         IF(lwp) WRITE(numout,*) '          biharmonic momentum diffusion' 
    210142         IF( ahm0 > 0 .AND. .NOT. lk_esopa ) THEN 
     
    276208      !!---------------------------------------------------------------------- 
    277209 
    278       zm00 = TANH( ( pdam - gdept(1    ) ) / pwam ) 
    279       zm01 = TANH( ( pdam - gdept(jpkm1) ) / pwam ) 
     210      zm00 = TANH( ( pdam - gdept_0(1    ) ) / pwam ) 
     211      zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 
    280212      zmhs = zm00 / zm01 
    281213      zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 
     
    324256      !!---------------------------------------------------------------------- 
    325257 
    326       zm00 = TANH( ( pdam - gdept(1    ) ) / pwam ) 
    327       zm01 = TANH( ( pdam - gdept(jpkm1) ) / pwam ) 
     258      zm00 = TANH( ( pdam - gdept_0(1    ) ) / pwam ) 
     259      zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 
    328260      zmhs = zm00 / zm01 
    329261      zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 
     
    373305      !!---------------------------------------------------------------------- 
    374306 
    375       zm00 = TANH( ( pdam - gdept(1    ) ) / pwam )    
    376       zm01 = TANH( ( pdam - gdept(jpkm1) ) / pwam ) 
     307      zm00 = TANH( ( pdam - gdept_0(1    ) ) / pwam )    
     308      zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 
    377309      zmhs = zm00 / zm01 
    378310      zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90

    r247 r461  
    121121 
    122122         zh = MAX( zh, fsdept(1,1,1) )   ! at least the first reach ahm0 
    123          IF( lk_zco ) THEN               ! z-coordinate, same profile everywhere 
     123         IF( ln_zco ) THEN               ! z-coordinate, same profile everywhere 
    124124            IF(lwp) WRITE(numout,'(36x," ahm ", 7x)') 
    125125            DO jk = 1, jpk 
     
    136136            END DO 
    137137         ELSE                            ! partial steps or s-ccordinate 
    138 # if defined key_partial_steps || defined key_s_coord 
     138# if defined key_zco 
     139            zc = gdept_0(jpkm1) 
     140# else 
    139141            zc = MAXVAL( fsdept(:,:,jpkm1) ) 
    140 # else 
    141             zc = fsdept(:,:,jpkm1) 
    142142# endif 
    143143            IF( lk_mpp )   CALL mpp_max( zc )   ! max over the global domain 
  • trunk/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90

    r247 r461  
    3636      ahmb0 =     0._wp        ! lateral background eddy viscosity (m2/s) 
    3737 
    38    LOGICAL  ::                      &  ! flag of the lateral diff. scheme used 
    39       l_dynldf_lap         ,        &  ! iso-level laplacian operator 
    40       l_dynldf_bilap       ,        &  ! iso-level bilaplacian operator 
    41       l_dynldf_bilapg      ,        &  ! geopotential bilap. (s-coord) 
    42       l_dynldf_iso         ,        &  ! iso-neutral laplacian or horizontal lapacian (s-coord) 
    43       l_dynzdf_iso                     ! iso-neutral laplacian or horizontal lapacian (s-coord) 
    44     
    45  
    4638#if defined key_dynldf_c3d 
    4739   REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &  ! ** 3D coefficients ** 
  • trunk/NEMO/OPA_SRC/LDF/ldfeiv.F90

    r450 r461  
    1010   !!---------------------------------------------------------------------- 
    1111   !!   ldf_eiv      : compute the eddy induced velocity coefficients 
    12    !!                  Same results but not same routine if 'key_autotasking' 
     12   !!                  Same results but not same routine if 'key_mpp_omp' 
    1313   !!                  is defined or not 
    1414   !!---------------------------------------------------------------------- 
     
    4141CONTAINS 
    4242 
    43 # if defined key_autotasking 
    44    !!---------------------------------------------------------------------- 
    45    !!   'key_autotasking' :                            autotasking (j-slab) 
     43# if defined key_mpp_omp 
     44   !!---------------------------------------------------------------------- 
     45   !!   'key_mpp_omp' :                  OpenMP /  NEC autotasking (j-slab) 
    4646   !!---------------------------------------------------------------------- 
    4747 
     
    7979         IF(lwp) WRITE(numout,*) 
    8080         IF(lwp) WRITE(numout,*) 'ldf_eiv : eddy induced velocity coefficients' 
    81          IF(lwp) WRITE(numout,*) '~~~~~~~   key_autotasking' 
     81         IF(lwp) WRITE(numout,*) '~~~~~~~   NEC autotasking / OpenMP : j-slab' 
    8282      ENDIF 
    8383       
     
    176176               zaht      = ( 1. -  MIN( 1., ABS( ff(ji,jj) / zf20 ) ) ) * ( aht0 - zaht_min )  & 
    177177                  &      + aht0 * upsrnfh(ji,jj)                          ! enhanced near river mouths 
    178                ahtu(ji,jj) = MAX( MAX( zaht_min, aeiu(ji,jj) ) + zaht, aht0 ) 
    179                ahtv(ji,jj) = MAX( MAX( zaht_min, aeiv(ji,jj) ) + zaht, aht0 ) 
    180                ahtw(ji,jj) = MAX( MAX( zaht_min, aeiw(ji,jj) ) + zaht, aht0 ) 
     178               ahtu(ji,jj) = MAX( zaht_min, aeiu(ji,jj) ) + zaht 
     179               ahtv(ji,jj) = MAX( zaht_min, aeiv(ji,jj) ) + zaht 
     180               ahtw(ji,jj) = MAX( zaht_min, aeiw(ji,jj) ) + zaht 
    181181            END DO 
    182182         END DO 
     
    249249 
    250250      DO jk = 1, jpk 
    251 #  if defined key_vectopt_loop  &&  ! defined key_autotasking 
     251#  if defined key_vectopt_loop  &&  ! defined key_mpp_omp 
    252252!CDIR NOVERRCHK  
    253253         DO ji = 1, jpij   ! vector opt. 
     
    360360         ENDIF 
    361361      ENDIF 
    362        
     362 
    363363      IF( aeiv0 == 0.e0 ) THEN 
    364364         aeiu(:,:) = 0.e0 
  • trunk/NEMO/OPA_SRC/LDF/ldfslp.F90

    r258 r461  
    4949   !!---------------------------------------------------------------------- 
    5050   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    51    !! $Header$  
    52    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    5351   !!---------------------------------------------------------------------- 
    5452 
     
    7169      !!      of 10cm/s) 
    7270      !!        A horizontal shapiro filter is applied to the slopes 
    73       !!        'key_s_coord' defined: add to the previously computed slopes 
     71      !!        ln_sco=T, s-coordinate, add to the previously computed slopes 
    7472      !!      the slope of the model level surface. 
    7573      !!        macro-tasked on horizontal slab (jk-loop)  (2, jpk-1) 
    7674      !!      [slopes already set to zero at level 1, and to zero or the ocean 
    77       !!      bottom slope ('key_s_coord' defined) at level jpk in inildf] 
     75      !!      bottom slope (ln_sco=T) at level jpk in inildf] 
    7876      !! 
    7977      !! ** Action : - uslp, wslpi, and vslp, wslpj, the i- and  j-slopes  
     
    8583      !!   8.1  !  99-10  (A. Jouzeau)  NEW profile 
    8684      !!   8.5  !  99-10  (G. Madec)  Free form, F90 
     85      !!   9.0  !  05-10  (A. Beckmann)  correction for s-coordinates 
    8786      !!---------------------------------------------------------------------- 
    8887      !! * Modules used 
     
    9998      !! * Local declarations 
    10099      INTEGER  ::   ji, jj, jk              ! dummy loop indices 
    101       INTEGER  ::   ii0, ii1, ij0, ij1      ! temporary integer 
    102 #if defined key_partial_steps 
    103       INTEGER  ::   iku, ikv  ! temporary integers 
    104 #endif 
     100      INTEGER  ::   ii0, ii1, ij0, ij1,  &  ! temporary integer 
     101         &          iku, ikv                !    "          " 
    105102      REAL(wp) ::   & 
    106          zeps, zmg, zm05g, zcoef1, zcoef2,   &  ! temporary scalars 
    107          zau, zbu, zav, zbv,                 & 
    108          zai, zbi, zaj, zbj,                & 
    109          zcofu, zcofv, zcofw,                & 
    110          z1u, z1v, z1wu, z1wv,               & 
     103         zeps, zmg, zm05g,               &  ! temporary scalars 
     104         zcoef1, zcoef2, zcoef3,         &  ! 
     105         zau, zbu, zav, zbv,             & 
     106         zai, zbi, zaj, zbj,             & 
     107         zcofu, zcofv, zcofw,            & 
     108         z1u, z1v, z1wu, z1wv,           & 
    111109         zalpha 
    112110      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zww 
     
    140138      END DO 
    141139 
    142 #if defined key_partial_steps 
    143       ! partial steps correction at the bottom ocean level (zps_hde routine) 
    144 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
    145       jj = 1 
    146       DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling) 
     140      IF( ln_zps ) THEN      ! partial steps correction at the bottom ocean level (zps_hde routine) 
     141# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
     142         jj = 1 
     143         DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling) 
    147144# else 
    148       DO jj = 1, jpjm1 
    149          DO ji = 1, jpim1 
    150 # endif 
    151             ! last ocean level 
    152             iku = MIN ( mbathy(ji,jj), mbathy(ji+1,jj) ) - 1 
    153             ikv = MIN ( mbathy(ji,jj), mbathy(ji,jj+1) ) - 1 
    154             zgru(ji,jj,iku) = gru(ji,jj)  
    155             zgrv(ji,jj,ikv) = grv(ji,jj)                
    156 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
    157          END DO 
    158 # endif 
    159       END DO 
    160 #endif 
     145         DO jj = 1, jpjm1 
     146            DO ji = 1, jpim1 
     147# endif 
     148               ! last ocean level 
     149               iku = MIN ( mbathy(ji,jj), mbathy(ji+1,jj) ) - 1 
     150               ikv = MIN ( mbathy(ji,jj), mbathy(ji,jj+1) ) - 1 
     151               zgru(ji,jj,iku) = gru(ji,jj)  
     152               zgrv(ji,jj,ikv) = grv(ji,jj)                
     153# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
     154            END DO 
     155# endif 
     156         END DO 
     157      ENDIF 
    161158 
    162159      ! Slopes of isopycnal surfaces just below the mixed layer 
     
    205202               ! uslp and vslp output in zwz and zww, resp. 
    206203               zalpha = MAX( omlmask(ji,jj,jk), omlmask(ji+1,jj,jk) ) 
    207 #if defined key_s_coord  
    208204               zwz (ji,jj,jk) = ( zau / ( zbu - zeps ) * ( 1. - zalpha)   & 
    209                   &        + zalpha * uslpml(ji,jj)   & 
    210                   &        * ( fsdepu(ji,jj,jk) - .5*fse3u(ji,jj,1) )   & 
    211                   &        / MAX( hmlpt(ji,jj), hmlpt(ji+1,jj), 5. ) )   & 
    212                   &        * umask(ji,jj,jk) 
     205                  &           + zalpha * uslpml(ji,jj)                    & 
     206                  &                    * 0.5 * ( fsdept(ji+1,jj,jk)+fsdept(ji,jj,jk)-fse3u(ji,jj,1) )   & 
     207                  &                          / MAX( hmlpt(ji,jj), hmlpt(ji+1,jj), 5. ) ) * umask(ji,jj,jk) 
    213208               zalpha = MAX( omlmask(ji,jj,jk), omlmask(ji,jj+1,jk) ) 
    214209               zww (ji,jj,jk) = ( zav / ( zbv - zeps ) * ( 1. - zalpha)   & 
    215                   &        + zalpha * vslpml(ji,jj)   & 
    216                   &        * ( fsdepv(ji,jj,jk) - .5*fse3v(ji,jj,1) )   & 
    217                   &         / MAX( hmlpt(ji,jj), hmlpt(ji,jj+1), 5. ) )   & 
    218                   &        * vmask(ji,jj,jk) 
    219 #else 
    220                ! z-coord and partial steps slope computed in the same way 
    221                zwz (ji,jj,jk) = ( zau / ( zbu - zeps ) * ( 1. - zalpha)    & 
    222                   &        + zalpha * uslpml(ji,jj)    & 
    223                   &        * ( fsdept(ji,jj,jk) - .5*fse3u(ji,jj,1))    & 
    224                   &        / MAX (hmlpt(ji,jj),hmlpt(ji+1,jj),5.) )    & 
    225                   &        * umask (ji,jj,jk) 
    226                zalpha = MAX(omlmask(ji,jj,jk),omlmask(ji,jj+1,jk)) 
    227                zww (ji,jj,jk) = ( zav / ( zbv - zeps ) * ( 1. - zalpha)    & 
    228                   &        + zalpha * vslpml(ji,jj)    & 
    229                   &        * ( fsdept(ji,jj,jk) - .5*fse3v(ji,jj,1))    & 
    230                   &        / MAX(hmlpt(ji,jj),hmlpt(ji,jj+1),5.) )    & 
    231                   &        * vmask (ji,jj,jk) 
    232 #endif 
     210                  &           + zalpha * vslpml(ji,jj)                    & 
     211                  &                    * 0.5 * ( fsdept(ji,jj+1,jk)+fsdept(ji,jj,jk)-fse3v(ji,jj,1) )   & 
     212                  &                          / MAX( hmlpt(ji,jj), hmlpt(ji,jj+1), 5. ) ) * vmask(ji,jj,jk) 
    233213            END DO 
    234214         END DO 
     
    294274            END DO 
    295275         END DO 
    296  
    297  
    298          IF( lk_sco ) THEN 
    299             ! Add the slope of level surfaces 
    300             ! ----------------------------------- 
    301             ! 'key_s_coord' defined but not 'key_traldfiso' the computation is done 
    302             ! in inildf, ldfslp never called 
    303             ! 'key_s_coord' and 'key_traldfiso' defined, the slope of level surfaces 
    304             ! is added to the slope of isopycnal surfaces. 
    305             ! c a u t i o n : minus sign as fsdep has positive value  
    306           
    307             DO jj = 2, jpjm1 
    308                DO ji = fs_2, fs_jpim1   ! vector opt. 
    309                   uslp(ji,jj,jk) = uslp(ji,jj,jk) - 1. / e1u(ji,jj)   & 
    310                      &           * ( fsdept(ji+1,jj,jk) - fsdept(ji,jj,jk) ) 
    311                   vslp(ji,jj,jk) = vslp(ji,jj,jk) - 1. / e2v(ji,jj)   & 
    312                      &           * ( fsdept(ji,jj+1,jk) - fsdept(ji,jj,jk) ) 
    313                END DO 
    314             END DO 
    315          ENDIF 
    316276 
    317277 
     
    356316               zbj = MIN( zwy (ji,jj,jk), -100.*ABS(zaj), -7.e+3/fse3w(ji,jj,jk)*ABS(zaj) ) 
    357317               ! wslpi and wslpj output in zwz and zww, resp. 
    358                zalpha = MAX(omlmask(ji,jj,jk),omlmask(ji,jj,jk-1)) 
    359                zwz(ji,jj,jk) = ( zai / ( zbi - zeps) * ( 1. - zalpha )   & 
    360                   &            + zalpha * wslpiml(ji,jj)   & 
    361                   &            * fsdepw(ji,jj,jk) / MAX( hmlp(ji,jj),10. ) )   & 
    362                   &            * tmask (ji,jj,jk) 
    363                zww(ji,jj,jk) = ( zaj / ( zbj - zeps) * ( 1. - zalpha )   & 
    364                   &            + zalpha * wslpjml(ji,jj)   & 
    365                   &            * fsdepw(ji,jj,jk) / MAX( hmlp(ji,jj),10. ) )   & 
    366                   &            * tmask (ji,jj,jk) 
     318               zalpha = MAX( omlmask(ji,jj,jk), omlmask(ji,jj,jk-1) ) 
     319               zcoef3 = fsdepw(ji,jj,jk) / MAX( hmlp(ji,jj), 10. ) 
     320               zwz(ji,jj,jk) = (     zai / ( zbi - zeps)  * ( 1. - zalpha )   & 
     321                  &             + zcoef3 * wslpiml(ji,jj) *        zalpha   ) * tmask (ji,jj,jk) 
     322               zww(ji,jj,jk) = (     zaj / ( zbj - zeps)  * ( 1. - zalpha )   & 
     323                  &             + zcoef3 * wslpjml(ji,jj) *        zalpha   ) * tmask (ji,jj,jk) 
    367324            END DO 
    368325         END DO 
     
    426383         END DO 
    427384          
    428          IF( lk_sco ) THEN 
    429           
    430             ! Slope of level surfaces 
    431             ! ----------------------- 
    432             ! 'key_s_coord' defined but not 'key_traldfiso' the computation is done 
    433             ! in inildf, ldfslp never called 
    434             ! 'key_s_coord' and 'key_traldfiso' defined, the slope of level surfaces 
    435             ! is added to the slope of isopycnal surfaces. 
    436           
    437             DO jj = 2, jpjm1 
    438                DO ji = fs_2, fs_jpim1   ! vector opt. 
    439                   wslpi(ji,jj,jk) = wslpi(ji,jj,jk) - 1. / e1t(ji,jj)   & 
    440                      &                                   * ( fsdepuw(ji+1,jj,jk) - fsdepuw(ji,jj,jk) ) 
    441                   wslpj(ji,jj,jk) = wslpj(ji,jj,jk) - 1. / e2t(ji,jj)   & 
    442                      &                                   * ( fsdepvw(ji,jj+1,jk) - fsdepvw(ji,jj,jk) ) 
    443                END DO 
    444             END DO 
    445          ENDIF 
    446385          
    447386         ! III. Specific grid points 
     
    476415      ! III Lateral boundary conditions on all slopes (uslp , vslp,  
    477416      ! -------------------------------                wslpi, wslpj ) 
    478       CALL lbc_lnk( uslp , 'U', -1. ) 
    479       CALL lbc_lnk( vslp , 'V', -1. ) 
    480       CALL lbc_lnk( wslpi, 'W', -1. ) 
    481       CALL lbc_lnk( wslpj, 'W', -1. ) 
     417      CALL lbc_lnk( uslp , 'U', -1. )      ;      CALL lbc_lnk( vslp , 'V', -1. ) 
     418      CALL lbc_lnk( wslpi, 'W', -1. )      ;      CALL lbc_lnk( wslpj, 'W', -1. ) 
    482419 
    483420      IF(ln_ctl) THEN 
     
    553490      ! mask for mixed layer 
    554491      DO jk = 1, jpk 
    555 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     492# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    556493         jj = 1 
    557494         DO ji = 1, jpij   ! vector opt. (forced unrolling) 
     
    567504                  omlmask(ji,jj,jk) = 0.e0 
    568505               ENDIF 
    569 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     506# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    570507            END DO 
    571508# endif 
     
    585522      zwy(:,jpj) = 0.e0 
    586523      zwy(jpi,:) = 0.e0 
    587 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     524# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    588525      jj = 1 
    589526      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling) 
     
    598535               &             * ( pn2(ji,jj,ik) + pn2(ji,jj,ik+1) )   & 
    599536               &             / MAX( tmask(ji,jj,ik) + tmask (ji,jj,ik+1), 1. ) 
    600 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     537# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    601538         END DO 
    602539# endif 
     
    606543 
    607544      ! Slope at u points 
    608 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     545# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    609546      jj = 1 
    610547      DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling) 
     
    623560            ! uslpml 
    624561            uslpml (ji,jj) = zau / ( zbu - zeps ) * umask (ji,jj,ik) 
    625 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     562# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    626563         END DO 
    627564# endif 
     
    635572      zwy ( :, jpj) = 0.e0 
    636573      zwy ( jpi, :) = 0.e0 
    637 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     574# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    638575      jj = 1 
    639576      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling) 
     
    647584               &             * ( pn2(ji,jj,ik) + pn2(ji,jj,ik+1) )   & 
    648585               &             / MAX( tmask(ji,jj,ik) + tmask (ji,jj,ik+1), 1. ) 
    649 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     586# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    650587         END DO 
    651588# endif 
     
    656593 
    657594      ! Slope at v points 
    658 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     595# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    659596      jj = 1 
    660597      DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling) 
     
    673610            ! vslpml 
    674611            vslpml (ji,jj) = zav / ( zbv - zeps ) * vmask (ji,jj,ik) 
    675 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     612# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    676613         END DO 
    677614# endif 
     
    687624      ! Local vertical density gradient evaluated from N^2 
    688625      ! zwy = d/dz(prd)= - mk ( prd ) / grav * pn2 -- at w point 
    689 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     626# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    690627      jj = 1 
    691628      DO ji = 1, jpij   ! vector opt. (forced unrolling) 
     
    699636            zwy (ji,jj) = zm05g * pn2 (ji,jj,ik) *     & 
    700637               &             ( prd (ji,jj,ik) + prd (ji,jj,ikm1) + 2. ) 
    701 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     638# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    702639         END DO 
    703640# endif 
     
    705642 
    706643      ! Slope at w point 
    707 # if defined key_vectopt_loop   &&   ! defined key_autotasking 
     644# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
    708645      jj = 1 
    709646      DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling) 
     
    735672            wslpiml (ji,jj) = zai / ( zbi - zeps) * tmask (ji,jj,ik) 
    736673            wslpjml (ji,jj) = zaj / ( zbj - zeps) * tmask (ji,jj,ik) 
    737 # if ! defined key_vectopt_loop   ||   defined key_autotasking 
     674# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
    738675         END DO 
    739676# endif 
     
    787724 
    788725      IF( ln_traldf_hor .OR. ln_dynldf_hor ) THEN 
     726         IF(lwp) THEN 
     727            WRITE(numout,*) '          Horizontal mixing in s-coordinate: slope = slope of s-surfaces' 
     728         ENDIF 
    789729 
    790730         ! geopotential diffusion in s-coordinates on tracers and/or momentum 
     
    797737            DO jj = 2, jpjm1 
    798738               DO ji = fs_2, fs_jpim1   ! vector opt. 
    799                   uslp (ji,jj,jk) = -1. / e1u(ji,jj) * umask(ji,jj,jk)   & 
    800                      &                               * ( fsdept(ji+1,jj,jk) - fsdept(ji,jj,jk) ) 
    801                   vslp (ji,jj,jk) = -1. / e2v(ji,jj) * vmask(ji,jj,jk)   & 
    802                      &                               * ( fsdept(ji,jj+1,jk) - fsdept(ji,jj,jk) ) 
    803                   wslpi(ji,jj,jk) = -1. / e1t(ji,jj) * tmask(ji,jj,jk)   & 
    804                      &                               * ( fsdepuw(ji+1,jj,jk) - fsdepuw(ji,jj,jk) ) 
    805                   wslpj(ji,jj,jk) = -1. / e2t(ji,jj) * tmask(ji,jj,jk)   & 
    806                      &                               * ( fsdepvw(ji,jj+1,jk) - fsdepvw(ji,jj,jk) ) 
     739                  uslp (ji,jj,jk) = -1./e1u(ji,jj) * ( fsdept(ji+1,jj,jk) - fsdept(ji ,jj ,jk) ) * umask(ji,jj,jk) 
     740                  vslp (ji,jj,jk) = -1./e2v(ji,jj) * ( fsdept(ji,jj+1,jk) - fsdept(ji ,jj ,jk) ) * vmask(ji,jj,jk) 
     741                  wslpi(ji,jj,jk) = -1./e1t(ji,jj) * ( fsdepw(ji+1,jj,jk) - fsdepw(ji-1,jj,jk) ) * tmask(ji,jj,jk) * 0.5 
     742                  wslpj(ji,jj,jk) = -1./e2t(ji,jj) * ( fsdepw(ji,jj+1,jk) - fsdepw(ji,jj-1,jk) ) * tmask(ji,jj,jk) * 0.5 
    807743               END DO 
    808744            END DO 
     
    810746 
    811747         ! Lateral boundary conditions on the slopes 
    812          CALL lbc_lnk( uslp , 'U', -1. ) 
    813          CALL lbc_lnk( vslp , 'V', -1. ) 
    814          CALL lbc_lnk( wslpi, 'W', -1. ) 
    815          CALL lbc_lnk( wslpj, 'W', -1. ) 
     748         CALL lbc_lnk( uslp , 'U', -1. )      ;      CALL lbc_lnk( vslp , 'V', -1. ) 
     749         CALL lbc_lnk( wslpi, 'W', -1. )      ;      CALL lbc_lnk( wslpj, 'W', -1. ) 
    816750      ENDIF 
    817751 
  • trunk/NEMO/OPA_SRC/LDF/ldftra.F90

    r247 r461  
    44   !! Ocean physics:  lateral diffusivity coefficient  
    55   !!===================================================================== 
    6  
     6   !! History : 
     7   !!        !  07-97  (G. Madec)  from inimix.F split in 2 routines 
     8   !!        !  08-97  (G. Madec)  multi dimensional coefficients 
     9   !!   8.5  !  02-09  (G. Madec)  F90: Free form and module 
     10   !!   9.0  !  05-11  (G. Madec)   
    711   !!---------------------------------------------------------------------- 
    812   !!   ldf_tra_init : initialization, namelist read, and parameters control 
     
    3236   !!--------------------------------------------------------------------------------- 
    3337   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    34    !! $Header$  
    35    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     38   !! $Header$ 
     39   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    3640   !!--------------------------------------------------------------------------------- 
    3741 
     
    4246      !!                  ***  ROUTINE ldf_tra_init  *** 
    4347      !!  
    44       !! ** Purpose :   initializations of the horizontal ocean tracer physics 
     48      !! ** Purpose :   initializations of the tracer lateral mixing coeff. 
    4549      !! 
    46       !! ** Method : 
    47       !!      Direction of lateral diffusion (tracers and/or momentum) 
    48       !!        ln_traldf_iso  = T : initialize the slope arrays to zero 
    49       !!        ln_traldf_geop = T : initialise the slope arrays to the i- and 
    50       !!                            j-slopes of s-surfaces 
    51       !!      Eddy diffusivity and eddy induced velocity cefficients: 
     50      !! ** Method  :   the Eddy diffusivity and eddy induced velocity ceoff. 
     51      !!      are defined as follows: 
    5252      !!         default option   : constant coef. aht0, aeiv0 (namelist) 
    5353      !!        'key_traldf_c1d': depth dependent coef. defined in  
     
    6363      !!      profile. 
    6464      !! 
    65       !! Reference : 
    66       !!      Madec, G. and M. Imbard, 1996, A global ocean mesh to overcome 
    67       !!      the North Pole singularity, Climate Dynamics, 12, 381-388. 
    68       !! 
    69       !! History : 
    70       !!        !  07-97  (G. Madec)  from inimix.F split in 2 routines 
    71       !!        !  08-97  (G. Madec)  multi dimensional coefficients 
    72       !!   8.5  !  02-09  (G. Madec)  F90: Free form and module 
    7365      !!---------------------------------------------------------------------- 
    74       !! * Modules used 
    7566      USE ioipsl 
    7667 
    77       !! * Local declarations 
    7868      INTEGER ::   ioptio               ! ??? 
    7969      LOGICAL ::   ll_print = .FALSE.   ! =T print eddy coef. in numout 
     
    9383      IF(lwp) THEN 
    9484         WRITE(numout,*) 
    95          WRITE(numout,*) 'ldf_tra : lateral tracer physics' 
    96          WRITE(numout,*) '~~~~~~~' 
    97          WRITE(numout,*) '          Namelist nam_traldf : set lateral mixing parameters (type, direction, coefficients)' 
     85         WRITE(numout,*) 'ldf_tra_init : lateral tracer physics' 
     86         WRITE(numout,*) '~~~~~~~~~~~~ ' 
     87         WRITE(numout,*) '          Namelist nam_traldf : lateral mixing coefficients' 
    9888         WRITE(numout,*) '             laplacian operator          ln_traldf_lap   = ', ln_traldf_lap 
    9989         WRITE(numout,*) '             bilaplacian operator        ln_traldf_bilap = ', ln_traldf_bilap 
    100          WRITE(numout,*) '             iso-level                   ln_traldf_level = ', ln_traldf_level 
    101          WRITE(numout,*) '             horizontal (geopotential)   ln_traldf_hor   = ', ln_traldf_hor 
    102          WRITE(numout,*) '             iso-neutral                 ln_traldf_iso   = ', ln_traldf_iso 
    10390         WRITE(numout,*) '             lateral eddy diffusivity             aht0   = ', aht0 
    10491         WRITE(numout,*) '             background hor. diffusivity          ahtb0  = ', ahtb0 
     
    10996      ! Parameter control 
    11097 
    111       ! control the input 
    112       ioptio = 0 
    113       IF( ln_traldf_lap   )   ioptio = ioptio + 1 
    114       IF( ln_traldf_bilap )   ioptio = ioptio + 1 
    115       IF( ioptio /= 1 )   THEN 
    116           IF(lwp) WRITE(numout,cform_err) 
    117           IF(lwp) WRITE(numout,*) '          use ONE of the 2 lap/bilap operator type on tracer' 
    118           nstop = nstop + 1 
    119       ENDIF 
    120       ioptio = 0 
    121       IF( ln_traldf_level )   ioptio = ioptio + 1 
    122       IF( ln_traldf_hor   )   ioptio = ioptio + 1 
    123       IF( ln_traldf_iso   )   ioptio = ioptio + 1 
    124       IF( ioptio /= 1 ) THEN 
    125          IF(lwp) WRITE(numout,cform_err) 
    126          IF(lwp) WRITE(numout,*) '          use only ONE direction (level/hor/iso)' 
    127          nstop = nstop + 1 
    128       ENDIF 
    129  
    130       ! ... Choice of the lateral scheme used 
    131       IF( lk_traldf_eiv ) THEN 
    132          IF(lwp) WRITE(numout,*) '          eddy induced velocity on tracers' 
    133             IF( .NOT.ln_traldf_iso .OR. ln_traldf_bilap ) THEN 
    134             IF(lwp) WRITE(numout,cform_err) 
    135             IF(lwp) WRITE(numout,*) ' the eddy induced velocity on tracers requires isopycnal laplacian diffusion' 
    136             nstop = nstop + 1 
    137          ENDIF 
    138       ENDIF 
    139  
    140       IF( lk_sco ) THEN          ! s-coordinates: rotation required for horizontal or isopycnal mixing 
    141          IF( ( ln_traldf_iso .OR. ln_traldf_hor ) .AND. .NOT.lk_ldfslp ) THEN 
    142             IF(lwp) WRITE(numout,cform_err) 
    143             IF(lwp) WRITE(numout,*) '          the rotation of the diffusive tensor require key_ldfslp' 
    144             IF( .NOT.lk_esopa )   nstop = nstop + 1 
    145          ENDIF 
    146       ELSE                       ! z-coordinates with/without partial step: 
    147          ln_traldf_level = ln_traldf_level .OR. ln_traldf_hor      ! level diffusion = horizontal diffusion 
    148          ln_traldf_hor   = .FALSE. 
    149          IF(lwp) WRITE(numout,*) '          horizontal mixing in z-coord or partial steps: force ln_traldf_level = T' 
    150          IF(lwp) WRITE(numout,*) '                                                  and    force ln_traldf_hor   = F' 
    151          IF( ln_traldf_iso .AND. .NOT.lk_ldfslp ) THEN             ! rotation required for isopycnal mixing 
    152             IF(lwp) WRITE(numout,cform_err) 
    153             IF(lwp) WRITE(numout,*) '          the rotation of the diffusive tensor require key_ldfslp' 
    154             IF( .NOT.lk_esopa )   nstop = nstop + 1 
    155          ENDIF 
    156       ENDIF 
    157  
    158       l_traldf_lap     =       ln_traldf_lap   .AND. ln_traldf_level     ! iso-level   laplacian operator 
    159       l_traldf_bilap   =       ln_traldf_bilap .AND. ln_traldf_level     ! iso-level bilaplacian operator 
    160       l_traldf_bilapg  =       ln_traldf_bilap .AND. ln_traldf_hor       ! geopotential bilap. (s-coord) 
    161       l_traldf_iso     =       ln_traldf_lap   .AND.                  &  ! laplacian operator 
    162          &                   ( ln_traldf_iso   .OR.  ln_traldf_hor )  &  ! iso-neutral (z-coord) or horizontal (s-coord) 
    163          &                                     .AND. .NOT.lk_zps 
    164       l_traldf_iso_zps =       ln_traldf_lap   .AND.                  &  ! laplacian operator 
    165          &                   ( ln_traldf_iso   .OR.  ln_traldf_hor )  &  ! iso-neutral (partial steps) 
    166          &                                     .AND. lk_zps              ! or geopotential in mixed partial steps/s-coord 
    167       l_trazdf_iso    = .FALSE. 
    168       l_trazdf_iso_vo = .FALSE. 
    169       IF( l_traldf_iso     )   l_trazdf_iso = .TRUE. 
    170       IF( l_traldf_iso_zps )   l_trazdf_iso = .TRUE. 
    171 #if defined key_vectopt_memory 
    172       IF( l_trazdf_iso ) THEN 
    173          l_trazdf_iso    = .FALSE. 
    174          l_trazdf_iso_vo = .TRUE. 
    175       ENDIF 
    176 #endif 
    177  
    178       ioptio = 0 
    179       IF( l_traldf_lap     )   ioptio = ioptio + 1 
    180       IF( l_traldf_bilap   )   ioptio = ioptio + 1 
    181       IF( l_traldf_bilapg  )   ioptio = ioptio + 1 
    182       IF( l_traldf_iso     )   ioptio = ioptio + 1 
    183       IF( l_traldf_iso_zps )   ioptio = ioptio + 1 
    184       IF( ioptio /= 1 ) THEN 
    185          IF(lwp) WRITE(numout,cform_err) 
    186          IF(lwp) WRITE(numout,*) '          this combination of operator and direction has not been implemented' 
    187          nstop = nstop + 1 
    188       ENDIF 
    189       IF( lk_esopa ) THEN 
    190          l_traldf_lap = .TRUE.   ;   l_traldf_bilap   = .TRUE.   ;   l_traldf_bilapg  = .TRUE. 
    191          l_traldf_iso = .TRUE.   ;   l_traldf_iso_zps = .TRUE. 
    192          l_trazdf_iso = .TRUE.   ;   l_trazdf_iso_vo  = .TRUE. 
    193          IF(lwp ) WRITE(numout,*) '          esopa test: use all lateral physics options' 
    194       ENDIF 
    195  
     98      ! ... Check consistency for type and direction : 
     99      !           ==> will be done in traldf module 
    196100 
    197101      ! ... Space variation of eddy coefficients 
     
    208112      IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( depth )' 
    209113      ioptio = ioptio + 1 
    210       IF( lk_sco ) THEN 
     114      IF( .NOT. ln_zco ) THEN 
    211115         IF(lwp) WRITE(numout,cform_err) 
    212          IF(lwp) WRITE(numout,*) '          key_traldf_c1d cannot be used in s-coordinate (key_s_coord)' 
     116         IF(lwp) WRITE(numout,*) '          key_traldf_c1d can only be used in z-coordinate - full step' 
    213117         nstop = nstop + 1 
    214118      ENDIF 
     
    223127      ENDIF 
    224128 
    225       IF( l_traldf_bilap .OR. l_traldf_bilapg ) THEN 
     129      IF( ln_traldf_bilap ) THEN 
    226130         IF(lwp) WRITE(numout,*) '          biharmonic tracer diffusion' 
    227131         IF( aht0 > 0 .AND. .NOT. lk_esopa ) THEN 
     
    244148 
    245149#if defined key_traldf_c3d 
    246       CALL ldf_tra_c3d( ll_print )           ! aht = 3D coef. = F( longitude, latitude, depth ) 
     150      CALL ldf_tra_c3d( ll_print )      ! aht = 3D coef. = F( longitude, latitude, depth ) 
    247151#elif defined key_traldf_c2d 
    248       CALL ldf_tra_c2d( ll_print )           ! aht = 2D coef. = F( longitude, latitude ) 
     152      CALL ldf_tra_c2d( ll_print )      ! aht = 2D coef. = F( longitude, latitude ) 
    249153#elif defined key_traldf_c1d 
    250       CALL ldf_tra_c1d( ll_print )           ! aht = 1D coef. = F( depth ) 
     154      CALL ldf_tra_c1d( ll_print )      ! aht = 1D coef. = F( depth ) 
    251155#else 
    252                                      ! Constant coefficients 
     156                                        ! Constant coefficients 
    253157      IF(lwp)WRITE(numout,*) 
    254       IF(lwp)WRITE(numout,*) ' inildf: constant eddy diffusivity coef.' 
    255       IF(lwp)WRITE(numout,*) ' ~~~~~~' 
    256       IF(lwp)WRITE(numout,*) '        ahtu = ahtv = ahtw = aht0 = ', aht0 
     158      IF(lwp)WRITE(numout,*) '          constant eddy diffusivity coef.   ahtu = ahtv = ahtw = aht0 = ', aht0 
    257159      IF( lk_traldf_eiv ) THEN 
    258160         IF(lwp)WRITE(numout,*) 
    259          IF(lwp)WRITE(numout,*) ' inildf: constant eddy induced velocity coef.' 
    260          IF(lwp)WRITE(numout,*) ' ~~~~~~  ' 
    261          IF(lwp)WRITE(numout,*) '         aeiu = aeiv = aeiw = aeiv0 = ', aeiv0 
     161         IF(lwp)WRITE(numout,*) '          constant eddy induced velocity coef.   aeiu = aeiv = aeiw = aeiv0 = ', aeiv0 
    262162      ENDIF 
    263163#endif 
  • trunk/NEMO/OPA_SRC/LDF/ldftra_c1d.h90

    r247 r461  
    4242      IF( lk_traldf_eiv ) THEN  
    4343         IF(lwp) WRITE(numout,*) 
    44          IF(lwp) WRITE(numout,*) ' inildf : 1D eddy diffusivity and eddy induced velocity coefficients' 
    45          IF(lwp) WRITE(numout,*) ' ~~~~~~   -- '  
     44         IF(lwp) WRITE(numout,*) ' ldf_tra_c1d : 1D eddy diffusivity and eddy induced velocity coefficients' 
     45         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   -- '  
    4646         IF(lwp) WRITE(numout,*) 
    4747      ELSE 
  • trunk/NEMO/OPA_SRC/LDF/ldftra_c2d.h90

    r247 r461  
    4343      IF( lk_traldf_eiv ) THEN 
    4444         IF(lwp) WRITE(numout,*) 
    45          IF(lwp) WRITE(numout,*) ' inildf : 2D eddy diffusivity and eddy' 
    46          IF(lwp) WRITE(numout,*) ' ~~~~~~   --  induced velocity coefficients' 
     45         IF(lwp) WRITE(numout,*) ' ldf_tra_c2d : 2D eddy diffusivity and eddy' 
     46         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   --  induced velocity coefficients' 
    4747         IF(lwp) WRITE(numout,*) 
    4848      ELSE 
    4949         IF(lwp) WRITE(numout,*) 
    50          IF(lwp) WRITE(numout,*) ' inildf : 2D eddy diffusivity coefficient' 
    51          IF(lwp) WRITE(numout,*) ' ~~~~~~   --' 
     50         IF(lwp) WRITE(numout,*) ' ldf_tra2d : 2D eddy diffusivity coefficient' 
     51         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   --' 
    5252         IF(lwp) WRITE(numout,*) 
    5353      ENDIF 
     54 
     55      zdx_max = MAXVAL( e1t(:,:) ) 
     56      IF( lk_mpp )   CALL mpp_max( zdx_max )   ! max over the global domain 
    5457 
    5558      ! harmonic operator : (U-, V-, W-points) 
    5659      ! ================== 
    5760      IF( ln_traldf_lap ) THEN 
    58  
     61   
     62         za00 = aht0 / zdx_max 
     63   
     64!RB         ahtu(:,:) = za00 * e1u(:,:)               ! set ahtu = ahtv at u- and v-points, 
     65!RB         ahtv(:,:) = za00 * e1f(:,:)               ! and ahtw at w-point (idem T-point) 
     66!RB         ahtw(:,:) = za00 * e1t(:,:)               !  
    5967         ahtu(:,:) = aht0                ! set ahtu = ahtv at u- and v-points, 
    6068         ahtv(:,:) = aht0                ! and ahtw at w-point (idem T-point) 
    61          ahtw(:,:) = aht0                !  
     69         ahtw(:,:) = aht0                ! 
     70 
     71 
    6272 
    6373         CALL lbc_lnk( ahtu, 'U', 1. )   ! Lateral boundary conditions 
     
    8898         ! Here: ahm is proportional to the cube of the maximum of the gridspacing 
    8999         !       in the to horizontal direction 
    90  
    91          zdx_max = MAXVAL( e1t(:,:) ) 
    92          IF( lk_mpp )   CALL mpp_max( zdx_max )   ! max over the global domain 
    93100 
    94101         za00 = aht0 / ( zdx_max * zdx_max * zdx_max ) 
  • trunk/NEMO/OPA_SRC/LDF/ldftra_c3d.h90

    r247 r461  
    4343      IF( lk_traldf_eiv ) THEN 
    4444         IF(lwp) WRITE(numout,*) 
    45          IF(lwp) WRITE(numout,*) ' inildf : 3D eddy diffusivity and eddy induced velocity coefficients' 
    46          IF(lwp) WRITE(numout,*) ' ~~~~~~   --  ' 
     45         IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity and eddy induced velocity coefficients' 
     46         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   --  ' 
    4747         IF(lwp) WRITE(numout,*) 
    4848      ELSE 
    4949         IF(lwp) WRITE(numout,*) 
    50          IF(lwp) WRITE(numout,*) ' inildf : 3D eddy diffusivity coefficient' 
    51          IF(lwp) WRITE(numout,*) ' ~~~~~~   -- ' 
     50         IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity coefficient' 
     51         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   -- ' 
    5252         IF(lwp) WRITE(numout,*) 
    5353      ENDIF 
  • trunk/NEMO/OPA_SRC/LDF/ldftra_oce.F90

    r247 r461  
    3535      ahtb0 =    0._wp     ,        &  !: lateral background eddy diffusivity (m2/s) 
    3636      aeiv0 = 2000._wp                 !: eddy induced velocity coefficient (m2/s) 
    37  
    38    LOGICAL , PUBLIC ::              &  !: flag of the lateral diff. scheme used  
    39       l_traldf_lap         ,        &  !: iso-level laplacian operator 
    40       l_traldf_bilap       ,        &  !: iso-level bilaplacian operator 
    41       l_traldf_bilapg      ,        &  !: geopotential bilap. (s-coord) 
    42       l_traldf_iso         ,        &  !: iso-neutral laplacian or horizontal lapacian (s-coord) 
    43       l_trazdf_iso         ,        &  !: idem for the vertical component 
    44       l_trazdf_iso_vo      ,        &  !: idem with vectopt_memory 
    45       l_traldf_iso_zps                 !: iso-neutral laplacian (partial steps) 
    4637 
    4738#if defined key_traldf_c3d 
Note: See TracChangeset for help on using the changeset viewer.