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

Changeset 789 for trunk/NEMO/OPA_SRC/DYN


Ignore:
Timestamp:
2008-01-11T19:04:56+01:00 (17 years ago)
Author:
rblod
Message:

Suppress jki routines and associated key_mpp_omp

Location:
trunk/NEMO/OPA_SRC/DYN
Files:
5 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynhpg.F90

    r719 r789  
    1818   !!   dyn_hpg      : update the momentum trend with the now horizontal 
    1919   !!                  gradient of the hydrostatic pressure 
    20    !!                  default case : k-j-i loops (vector opt. available) 
    2120   !!       hpg_ctl  : initialisation and control of options 
    2221   !!       hpg_zco  : z-coordinate scheme 
     
    3029   USE oce             ! ocean dynamics and tracers 
    3130   USE dom_oce         ! ocean space and time domain 
    32    USE dynhpg_jki      ! 
    3331   USE phycst          ! physical constants 
    3432   USE in_out_manager  ! I/O manager 
     
    4240 
    4341   PUBLIC   dyn_hpg    ! routine called by step module 
    44  
    45 #if defined key_mpp_omp 
    46    !!---------------------------------------------------------------------- 
    47    !!   'key_mpp_omp' :                                 j-k-i loop (j-slab) 
    48    !!---------------------------------------------------------------------- 
    49    LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg_jki = .TRUE.    !: OpenMP hpg flag 
    50    LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg     = .FALSE.   !: vector hpg flag 
    51 #else 
    52    !!---------------------------------------------------------------------- 
    53    !!   default case :                             k-j-i loop (vector opt.) 
    54    !!----------------------------------------------------------------------    
    55    LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg_jki = .FALSE.   !: OpenMP hpg flag 
    56    LOGICAL, PUBLIC, PARAMETER ::   lk_dynhpg     = .TRUE.    !: vector hpg flag 
    57 #endif 
    5842 
    5943   !!* Namelist nam_dynhpg : Choice of horizontal pressure gradient computation 
     
    11195      CASE (  5 )   ;   CALL hpg_djc    ( kt )      ! s-coordinate (Density Jacobian with Cubic polynomial) 
    11296      CASE (  6 )   ;   CALL hpg_rot    ( kt )      ! s-coordinate (ROTated axes scheme) 
    113       CASE ( 10 )   ;   CALL hpg_zco_jki( kt )      ! z-coordinate (k-j-i) 
    114       CASE ( 11 )   ;   CALL hpg_zps_jki( kt )      ! z-coordinate plus partial steps (interpolation) (k-j-i) 
    115       CASE ( 12 )   ;   CALL hpg_sco_jki( kt )      ! s-coordinate (standard jacobian formulation) (k-j-i) 
    11697      END SELECT 
    11798 
     
    186167      IF ( ioptio /= 1 )   CALL ctl_stop( ' NO or several hydrostatic pressure gradient options used' ) 
    187168 
    188       IF( lk_dynhpg_jki ) THEN 
    189          nhpg = nhpg + 10 
    190          IF(lwp) WRITE(numout,*) 
    191          IF(lwp) WRITE(numout,*) '          Autotasking or OPENMP: use j-k-i loops (i.e. _jki routines)' 
    192       ENDIF 
    193169      ! 
    194170   END SUBROUTINE hpg_ctl 
  • trunk/NEMO/OPA_SRC/DYN/dynspg.F90

    r719 r789  
    2020   USE dynspg_flt     ! surface pressure gradient     (dyn_spg_flt routine) 
    2121   USE dynspg_rl      ! surface pressure gradient     (dyn_spg_rl  routine) 
    22    USE dynspg_exp_jki ! surface pressure gradient (dyn_spg_exp_jki routine) 
    23    USE dynspg_ts_jki  ! surface pressure gradient (dyn_spg_ts_jki  routine) 
    24    USE dynspg_flt_jki ! surface pressure gradient (dyn_spg_flt_jki routine) 
    2522   USE trdmod         ! ocean dynamics trends 
    2623   USE trdmod_oce     ! ocean variables trends 
     
    6865 
    6966      SELECT CASE ( nspg )                       ! compute surf. pressure gradient trend and add it to the general trend 
    70       !                                                      ! k-j-i loops 
     67      !                                                      
    7168      CASE (  0 )   ;   CALL dyn_spg_exp    ( kt )              ! explicit 
    7269      CASE (  1 )   ;   CALL dyn_spg_ts     ( kt )              ! time-splitting 
    7370      CASE (  2 )   ;   CALL dyn_spg_flt    ( kt, kindic )      ! filtered 
    7471      CASE (  3 )   ;   CALL dyn_spg_rl     ( kt, kindic )      ! rigid lid 
    75       !                                                      ! j-k-i loops 
    76       CASE ( 10 )   ;   CALL dyn_spg_exp_jki( kt )              ! explicit with j-k-i loop 
    77       CASE ( 11 )   ;   CALL dyn_spg_ts_jki ( kt )              ! time-splitting with j-k-i loop 
    78       CASE ( 12 )   ;   CALL dyn_spg_flt_jki( kt, kindic )      ! filtered with j-k-i loop 
    79       ! 
     72      !                                                     
    8073      CASE ( -1 )                                       ! esopa: test all possibility with control print 
    8174         ;              CALL dyn_spg_exp    ( kt ) 
     
    8780         ;              CALL dyn_spg_flt  ( kt, kindic ) 
    8881         ;              CALL prt_ctl( tab3d_1=ua, clinfo1=' spg2 - Ua: ', mask1=umask, & 
    89             &                         tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    90          ;              CALL dyn_spg_exp_jki( kt ) 
    91          ;              CALL prt_ctl( tab3d_1=ua, clinfo1=' spg10- Ua: ', mask1=umask, & 
    92             &                         tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    93          ;              CALL dyn_spg_ts_jki ( kt ) 
    94          ;              CALL prt_ctl( tab3d_1=ua, clinfo1=' spg12- Ua: ', mask1=umask, & 
    95             &                         tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    96          ;              CALL dyn_spg_flt_jki( kt, kindic ) 
    97          ;              CALL prt_ctl( tab3d_1=ua, clinfo1=' spg13- Ua: ', mask1=umask, & 
    9882            &                         tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    9983      END SELECT 
     
    159143      IF( lk_dynspg_flt)   nspg =  2 
    160144      IF( lk_dynspg_rl )   nspg =  3 
    161       IF( lk_jki       )   nspg =  nspg + 10 
    162145      IF( nspg == 13   )   nspg =  3 
    163146 
     
    171154         IF( nspg ==  2 )   WRITE(numout,*) '     filtered free surface' 
    172155         IF( nspg ==  3 )   WRITE(numout,*) '     rigid-lid' 
    173          IF( nspg == 10 )   WRITE(numout,*) '     explicit free surface with j-k-i loop' 
    174          IF( nspg == 11 )   WRITE(numout,*) '     time splitting free surface with j-k-i loop' 
    175          IF( nspg == 12 )   WRITE(numout,*) '     filtered free surface with j-k-i loop' 
    176156      ENDIF 
    177157 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_exp.F90

    r746 r789  
    3333   !! * Accessibility 
    3434   PUBLIC dyn_spg_exp  ! routine called by step.F90 
    35    PUBLIC exp_rst      ! routine called j-k-i subroutine 
    3635 
    3736   !! * Substitutions 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_flt.F90

    r784 r789  
    5151 
    5252   PUBLIC dyn_spg_flt  ! routine called by step.F90 
    53    PUBLIC flt_rst      ! routine called by j-k-i subroutine 
    5453 
    5554   !! * Substitutions 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r788 r789  
    4141 
    4242   PUBLIC dyn_spg_ts  ! routine called by step.F90 
    43    PUBLIC ts_rst      ! routine called by j-k-i subroutine 
    4443 
    4544   REAL(wp), DIMENSION(jpi,jpj) ::  ftnw, ftne,   &  ! triad of coriolis parameter 
  • trunk/NEMO/OPA_SRC/DYN/dynvor.F90

    r719 r789  
    226226 
    227227!CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz ) 
    228 !$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz ) 
    229228      !                                                ! =============== 
    230229      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    333332 
    334333!CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz, zww ) 
    335 !$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz, zww ) 
    336334      !                                                ! =============== 
    337335      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    444442 
    445443!CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz ) 
    446 !$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz ) 
    447444      !                                                ! =============== 
    448445      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    567564       
    568565!CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz, ztnw, ztne, ztsw, ztse ) 
    569 !$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz, ztnw, ztne, ztsw, ztse ) 
    570566      !                                                ! =============== 
    571567      DO jk = 1, jpkm1                                 ! Horizontal slab 
  • trunk/NEMO/OPA_SRC/DYN/dynzad.F90

    r719 r789  
    3838CONTAINS 
    3939 
    40 #if defined key_mpp_omp 
    41    !!---------------------------------------------------------------------- 
    42    !!   'key_mpp_omp'        OpenMP / NEC autotasking: j-k-i loops (j-slab) 
    43    !!---------------------------------------------------------------------- 
    44  
    45    SUBROUTINE dyn_zad( kt ) 
    46       !!---------------------------------------------------------------------- 
    47       !!                  ***  ROUTINE dynzad  *** 
    48       !! 
    49       !! ** Purpose :   Compute the now vertical momentum advection trend and  
    50       !!      add it to the general trend of momentum equation. 
    51       !! 
    52       !! ** Method  :   Use j-slab (j-k-i loops) for OpenMP / NEC autotasking 
    53       !!      The now vertical advection of momentum is given by: 
    54       !!         w dz(u) = ua + 1/(e1u*e2u*e3u) mk+1[ mi(e1t*e2t*wn) dk(un) ] 
    55       !!         w dz(v) = va + 1/(e1v*e2v*e3v) mk+1[ mj(e1t*e2t*wn) dk(vn) ] 
    56       !!      Add this trend to the general trend (ua,va): 
    57       !!         (ua,va) = (ua,va) + w dz(u,v) 
    58       !! 
    59       !! ** Action  : - Update (ua,va) with the vert. momentum advection trends 
    60       !!              - Save the trends in (ztrdu,ztrdv) ('key_trddyn') 
    61       !!---------------------------------------------------------------------- 
    62       USE oce, ONLY:   zwuw => ta   ! use ta as 3D workspace 
    63       USE oce, ONLY:   zwvw => sa   ! use sa as 3D workspace 
    64       !! 
    65       INTEGER, INTENT(in) ::   kt   ! ocean time-step inedx 
    66       !! 
    67       INTEGER  ::   ji, jj, jk      ! dummy loop indices 
    68       REAL(wp) ::   zvn, zua, zva   ! temporary scalars 
    69       REAL(wp), DIMENSION(jpi)         ::   zww            ! 1D workspace 
    70       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrdu, ztrdv   ! 3D workspace 
    71       !!---------------------------------------------------------------------- 
    72        
    73       IF( kt == nit000 ) THEN 
    74          IF(lwp) WRITE(numout,*) 
    75          IF(lwp) WRITE(numout,*) 'dyn_zad : arakawa advection scheme' 
    76          IF(lwp) WRITE(numout,*) '~~~~~~~   Auto-tasking case, j-slab, no vector opt.' 
    77       ENDIF 
    78  
    79       IF( l_trddyn )   THEN         ! Save ua and va trends 
    80          ztrdu(:,:,:) = ua(:,:,:)  
    81          ztrdv(:,:,:) = va(:,:,:)  
    82       ENDIF 
    83  
    84       !                                                ! =============== 
    85       DO jj = 2, jpjm1                                 !  Vertical slab 
    86          !                                             ! =============== 
    87          DO jk = 2, jpkm1         ! Vertical momentum advection at uw and vw-pts 
    88             DO ji = 2, jpi              ! vertical fluxes  
    89                zww(ji) = 0.25 * e1t(ji,jj) * e2t(ji,jj) * wn(ji,jj,jk) 
    90             END DO 
    91             DO ji = 2, jpim1            ! vertical momentum advection at w-point 
    92                zvn = 0.25 * e1t(ji,jj+1) * e2t(ji,jj+1) * wn(ji,jj+1,jk) 
    93                zwuw(ji,jj,jk) = ( zww(ji+1) + zww(ji) ) * ( un(ji,jj,jk-1)-un(ji,jj,jk) ) 
    94                zwvw(ji,jj,jk) = ( zvn       + zww(ji) ) * ( vn(ji,jj,jk-1)-vn(ji,jj,jk) ) 
    95             END DO   
    96          END DO    
    97          DO ji = 2, jpim1               ! Surface and bottom values set to zero 
    98             zwuw(ji,jj, 1 ) = 0.e0 
    99             zwvw(ji,jj, 1 ) = 0.e0 
    100             zwuw(ji,jj,jpk) = 0.e0 
    101             zwvw(ji,jj,jpk) = 0.e0 
    102          END DO   
    103          ! 
    104          DO jk = 1, jpkm1         ! Vertical momentum advection at u- and v-points 
    105             DO ji = 2, jpim1 
    106                !                        ! vertical momentum advective trends 
    107                zua = - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    108                zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    109                !                        ! add the trends to the general momentum trends 
    110                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    111                va(ji,jj,jk) = va(ji,jj,jk) + zva 
    112             END DO   
    113          END DO   
    114          !                                             ! =============== 
    115       END DO                                           !   End of slab 
    116       !                                                ! =============== 
    117       ! 
    118       IF( l_trddyn ) THEN         ! save the vertical advection trends for diagnostic 
    119          ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    120          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    121          CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_zad, 'DYN', kt ) 
    122       ENDIF 
    123       !                           ! Control print 
    124       IF(ln_ctl)   CALL prt_ctl( tab3d_1=ua, clinfo1=' zad  - Ua: ', mask1=umask,   & 
    125          &                       tab3d_2=va, clinfo2=' Va: ', mask2=vmask, clinfo3='dyn' ) 
    126       ! 
    127    END SUBROUTINE dyn_zad 
    128  
    129 #else 
    130    !!---------------------------------------------------------------------- 
    131    !!   Default option                             k-j-i loop (vector opt.) 
    132    !!---------------------------------------------------------------------- 
    133  
    13440   SUBROUTINE dyn_zad ( kt ) 
    13541      !!---------------------------------------------------------------------- 
     
    16268         IF(lwp)WRITE(numout,*) 
    16369         IF(lwp)WRITE(numout,*) 'dyn_zad : arakawa advection scheme' 
    164          IF(lwp)WRITE(numout,*) '~~~~~~~   vector optimization k-j-i loop' 
    16570      ENDIF 
    16671 
     
    215120      ! 
    216121   END SUBROUTINE dyn_zad 
    217 #endif 
    218122 
    219123   !!====================================================================== 
  • trunk/NEMO/OPA_SRC/DYN/dynzdf.F90

    r719 r789  
    1717   USE dynzdf_exp      ! vertical diffusion: explicit (dyn_zdf_exp     routine) 
    1818   USE dynzdf_imp      ! vertical diffusion: implicit (dyn_zdf_imp     routine) 
    19    USE dynzdf_imp_jki  ! vertical diffusion  implicit (dyn_zdf_imp_jki routine) 
    2019 
    2120   USE ldfdyn_oce      ! ocean dynamics: lateral physics 
     
    7473      ! 
    7574      CASE ( 0 )   ;   CALL dyn_zdf_exp    ( kt, r2dt )      ! explicit scheme 
    76       CASE ( 1 )   ;   CALL dyn_zdf_imp    ( kt, r2dt )      ! implicit scheme (k-j-i loop) 
    77       CASE ( 2 )   ;   CALL dyn_zdf_imp_jki( kt, r2dt )      ! implicit scheme (j-k-i loop) 
     75      CASE ( 1 )   ;   CALL dyn_zdf_imp    ( kt, r2dt )      ! implicit scheme 
    7876      ! 
    7977      CASE ( -1 )                                      ! esopa: test all possibility with control print 
     
    8381                       CALL dyn_zdf_imp    ( kt, r2dt ) 
    8482                       CALL prt_ctl( tab3d_1=ua, clinfo1=' zdf1 - Ua: ', mask1=umask,               & 
    85             &                        tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    86                        CALL dyn_zdf_imp_jki( kt, r2dt ) 
    87                        CALL prt_ctl( tab3d_1=ua, clinfo1=' zdf2 - Ua: ', mask1=umask,               & 
    8883            &                        tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    8984      END SELECT 
     
    109104      !! ** Method  :   implicit (euler backward) scheme (default) 
    110105      !!                explicit (time-splitting) scheme if ln_zdfexp=T 
    111       !!                OpenMP / NEC autotasking: use j-k-i loops 
    112106      !!---------------------------------------------------------------------- 
    113107      USE zdftke 
     
    125119      IF( ln_dynldf_hor .AND. ln_sco )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
    126120 
    127       ! OpenMP / NEC autotasking 
    128 #if defined key_mpp_omp 
    129       IF( nzdf == 1 )   nzdf = 2                    ! j-k-i loop 
    130 #endif 
    131  
    132121      IF( lk_esopa )    nzdf = -1                   ! Esopa key: All schemes used 
    133122 
     
    139128         IF( nzdf ==  0 )   WRITE(numout,*) '              Explicit time-splitting scheme' 
    140129         IF( nzdf ==  1 )   WRITE(numout,*) '              Implicit (euler backward) scheme' 
    141          IF( nzdf ==  2 )   WRITE(numout,*) '              Implicit (euler backward) scheme with j-k-i loops' 
    142130      ENDIF 
    143131      ! 
  • trunk/NEMO/OPA_SRC/DYN/wzvmod.F90

    r719 r789  
    3636 
    3737CONTAINS 
    38  
    39 #if defined key_mpp_omp 
    40    !!---------------------------------------------------------------------- 
    41    !!   'key_mpp_omp'                                   j-k-i loop (j-slab) 
    42    !!---------------------------------------------------------------------- 
    43  
    44    SUBROUTINE wzv( kt ) 
    45       !!---------------------------------------------------------------------- 
    46       !!                    ***  ROUTINE wzv  *** 
    47       !!                      
    48       !! ** Purpose :   Compute the now vertical velocity after the array swap 
    49       !! 
    50       !! ** Method  :   Using the incompressibility hypothesis, the vertical 
    51       !!     velocity is computed by integrating the horizontal divergence  
    52       !!     from the bottom to the surface. 
    53       !!     The boundary conditions are w=0 at the bottom (no flux) and, 
    54       !!     in rigid-lid case, w=0 at the sea surface. 
    55       !! 
    56       !! ** action  :    wn array : the now vertical velocity 
    57       !!---------------------------------------------------------------------- 
    58       !! * Arguments 
    59       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    60  
    61       !! * Local declarations 
    62       INTEGER ::   jj, jk      ! dummy loop indices 
    63       !!---------------------------------------------------------------------- 
    64  
    65       IF( kt == nit000 ) THEN 
    66          IF(lwp) WRITE(numout,*) 
    67          IF(lwp) WRITE(numout,*) 'wzv     : vertical velocity from continuity eq.' 
    68          IF(lwp) WRITE(numout,*) '~~~~~~~                     j-k-i loops' 
    69  
    70          ! bottom boundary condition: w=0 (set once for all) 
    71          wn(:,:,jpk) = 0.e0 
    72       ENDIF 
    73  
    74       !                                                ! =============== 
    75       DO jj = 1, jpj                                   !  Vertical slab 
    76          !                                             ! =============== 
    77          ! Computation from the bottom 
    78          DO jk = jpkm1, 1, -1 
    79             wn(:,jj,jk) = wn(:,jj,jk+1) - fse3t(:,jj,jk) * hdivn(:,jj,jk) 
    80          END DO 
    81          !                                             ! =============== 
    82       END DO                                           !   End of slab 
    83       !                                                ! =============== 
    84  
    85       IF(ln_ctl)   CALL prt_ctl(tab3d_1=wn, clinfo1=' w**2 -   : ', mask1=wn) 
    86  
    87    END SUBROUTINE wzv 
    88  
    89 #else 
    90    !!---------------------------------------------------------------------- 
    91    !!   Default option                                           k-j-i loop 
    92    !!---------------------------------------------------------------------- 
    9338 
    9439   SUBROUTINE wzv( kt ) 
     
    189134 
    190135   END SUBROUTINE wzv 
    191 #endif 
    192136 
    193137   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.