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 7990 for branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90 – NEMO

Ignore:
Timestamp:
2017-04-29T17:24:54+02:00 (7 years ago)
Author:
gm
Message:

#1880 (HPC-09): OPA remove avmu, avmv from zdf modules + move CALL tke(gls)_rst & gls_rst in zdftke(gls) + rename zdftmx and zdfqiao

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r7931 r7990  
    88   !!            3.3  ! 2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
    99   !!            3.6  ! 2013-04  (G. Madec, F. Roquet) zrau compute locally using interpolation of alpha & beta 
     10   !!            4.0  !  2017-04  (G. Madec)  remove CPP ddm key & avm at t-point only  
    1011   !!---------------------------------------------------------------------- 
    1112 
     
    2223   USE prtctl         ! Print control 
    2324   USE lib_mpp        ! MPP library 
    24    USE wrk_nemo       ! work arrays 
    2525   USE timing         ! Timing 
    2626 
     
    6363      !!      avt = avt + zavft + zavdt 
    6464      !!      avs = avs + zavfs + zavds 
    65       !!      avmu, avmv are required to remain at least above avt and avs. 
     65      !!      avm is required to remain at least above avt and avs. 
    6666      !!       
    6767      !! ** Action  :   avt, avs : updated vertical eddy diffusivity coef. for T & S 
     
    7777      REAL(wp) ::   zavft, zavfs    !   -      - 
    7878      REAL(wp) ::   zavdt, zavds    !   -      - 
    79       REAL(wp), POINTER, DIMENSION(:,:) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 
     79      REAL(wp), DIMENSION(jpi,jpj) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 
    8080      !!---------------------------------------------------------------------- 
    8181      ! 
    82       IF( nn_timing == 1 )  CALL timing_start('zdf_ddm') 
    83       ! 
    84       CALL wrk_alloc( jpi,jpj, zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 ) 
     82      IF( nn_timing == 1 )   CALL timing_start('zdf_ddm') 
    8583      ! 
    8684      !                                                ! =============== 
     
    8987         ! Define the mask  
    9088         ! --------------- 
     89!!gm  WORK to be done:   change the code from vector optimisation to scalar one. 
     90!!gm                     ==>>>  test in the loop instead of use of mask arrays 
     91!!gm                            and many acces in memory 
     92          
    9193         DO jj = 1, jpj                                ! R=zrau = (alpha / beta) (dk[t] / dk[s]) 
    9294            DO ji = 1, jpi 
    9395               zrw =   ( gdepw_n(ji,jj,jk  ) - gdept_n(ji,jj,jk) )   & 
     96!!gm please, use e3w_n below  
    9497                  &  / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) )  
    9598               ! 
     
    156159            END DO 
    157160         END DO 
    158  
    159  
    160          ! Increase avmu, avmv if necessary 
    161          ! -------------------------------- 
    162 !!gm to be changed following the definition of avm. 
    163          DO jj = 1, jpjm1 
    164             DO ji = 1, fs_jpim1   ! vector opt. 
    165                avmu(ji,jj,jk) = MAX( avmu(ji,jj,jk),    & 
    166                   &                  avt(ji,jj,jk), avt(ji+1,jj,jk),   & 
    167                   &                  avs(ji,jj,jk), avs(ji+1,jj,jk) )  * wumask(ji,jj,jk) 
    168                avmv(ji,jj,jk) = MAX( avmv(ji,jj,jk),    & 
    169                   &                  avt(ji,jj,jk), avt(ji,jj+1,jk),   & 
    170                   &                  avs(ji,jj,jk), avs(ji,jj+1,jk) )  * wvmask(ji,jj,jk) 
    171             END DO 
    172          END DO 
    173161         !                                                ! =============== 
    174162      END DO                                              !   End of slab 
    175163      !                                                   ! =============== 
    176164      ! 
    177       CALL lbc_lnk( avt , 'W', 1._wp )     ! Lateral boundary conditions   (unchanged sign) 
    178       CALL lbc_lnk( avs , 'W', 1._wp ) 
    179       CALL lbc_lnk( avm , 'W', 1._wp ) 
    180       CALL lbc_lnk( avmu, 'U', 1._wp )  
    181       CALL lbc_lnk( avmv, 'V', 1._wp ) 
    182  
    183165      IF(ln_ctl) THEN 
    184166         CALL prt_ctl(tab3d_1=avt , clinfo1=' ddm  - t: ', tab3d_2=avs , clinfo2=' s: ', ovlap=1, kdim=jpk) 
    185          CALL prt_ctl(tab3d_1=avmu, clinfo1=' ddm  - u: ', mask1=umask, & 
    186             &         tab3d_2=avmv, clinfo2=       ' v: ', mask2=vmask, ovlap=1, kdim=jpk) 
    187167      ENDIF 
    188       ! 
    189       CALL wrk_dealloc( jpi,jpj, zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 ) 
    190168      ! 
    191169      IF( nn_timing == 1 )  CALL timing_stop('zdf_ddm') 
Note: See TracChangeset for help on using the changeset viewer.