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 13946 – NEMO

Changeset 13946


Ignore:
Timestamp:
2020-12-01T18:03:15+01:00 (4 years ago)
Author:
francesca
Message:

Merge with dev_r13508_HPC-09_loop_fusion

Location:
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src
Files:
9 edited
2 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/ICE/icedyn_adv_pra.F90

    r13906 r13946  
    273273         ! --- Lateral boundary conditions --- ! 
    274274         !     caution: for gradients (sx and sy) the sign changes 
     275#if defined key_mpi3 
     276         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0ice , 'T', 1._wp, sxice , 'T', -1._wp, syice , 'T', -1._wp  & ! ice volume 
     277            &                                , sxxice, 'T', 1._wp, syyice, 'T',  1._wp, sxyice, 'T',  1._wp  & 
     278            &                                , z0snw , 'T', 1._wp, sxsn  , 'T', -1._wp, sysn  , 'T', -1._wp  & ! snw volume 
     279            &                                , sxxsn , 'T', 1._wp, syysn , 'T',  1._wp, sxysn , 'T',  1._wp  ) 
     280         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0smi , 'T', 1._wp, sxsal , 'T', -1._wp, sysal , 'T', -1._wp  & ! ice salinity 
     281            &                                , sxxsal, 'T', 1._wp, syysal, 'T',  1._wp, sxysal, 'T',  1._wp  & 
     282            &                                , z0ai  , 'T', 1._wp, sxa   , 'T', -1._wp, sya   , 'T', -1._wp  & ! ice concentration 
     283            &                                , sxxa  , 'T', 1._wp, syya  , 'T',  1._wp, sxya  , 'T',  1._wp  ) 
     284         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0oi  , 'T', 1._wp, sxage , 'T', -1._wp, syage , 'T', -1._wp  & ! ice age 
     285            &                                , sxxage, 'T', 1._wp, syyage, 'T',  1._wp, sxyage, 'T',  1._wp  ) 
     286         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0es  , 'T', 1._wp, sxc0  , 'T', -1._wp, syc0  , 'T', -1._wp  & ! snw enthalpy 
     287            &                                , sxxc0 , 'T', 1._wp, syyc0 , 'T',  1._wp, sxyc0 , 'T',  1._wp  )  
     288         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0ei  , 'T', 1._wp, sxe   , 'T', -1._wp, sye   , 'T', -1._wp  & ! ice enthalpy 
     289            &                                , sxxe  , 'T', 1._wp, syye  , 'T',  1._wp, sxye  , 'T',  1._wp  ) 
     290#else 
    275291         CALL lbc_lnk_multi( 'icedyn_adv_pra', z0ice , 'T', 1._wp, sxice , 'T', -1._wp, syice , 'T', -1._wp  & ! ice volume 
    276292            &                                , sxxice, 'T', 1._wp, syyice, 'T',  1._wp, sxyice, 'T',  1._wp  & 
     
    287303         CALL lbc_lnk_multi( 'icedyn_adv_pra', z0ei  , 'T', 1._wp, sxe   , 'T', -1._wp, sye   , 'T', -1._wp  & ! ice enthalpy 
    288304            &                                , sxxe  , 'T', 1._wp, syye  , 'T',  1._wp, sxye  , 'T',  1._wp  ) 
     305#endif 
    289306         IF ( ln_pnd_LEV ) THEN 
     307#if defined key_mpi3 
     308            CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0ap , 'T', 1._wp, sxap , 'T', -1._wp, syap , 'T', -1._wp  & ! melt pond fraction 
     309               &                                , sxxap, 'T', 1._wp, syyap, 'T',  1._wp, sxyap, 'T',  1._wp  & 
     310               &                                , z0vp , 'T', 1._wp, sxvp , 'T', -1._wp, syvp , 'T', -1._wp  & ! melt pond volume 
     311               &                                , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  )  
     312#else 
    290313            CALL lbc_lnk_multi( 'icedyn_adv_pra', z0ap , 'T', 1._wp, sxap , 'T', -1._wp, syap , 'T', -1._wp  & ! melt pond fraction 
    291314               &                                , sxxap, 'T', 1._wp, syyap, 'T',  1._wp, sxyap, 'T',  1._wp  & 
    292315               &                                , z0vp , 'T', 1._wp, sxvp , 'T', -1._wp, syvp , 'T', -1._wp  & ! melt pond volume 
    293316               &                                , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  )  
     317#endif 
    294318            IF ( ln_pnd_lids ) THEN 
     319#if defined key_mpi3 
     320               CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', z0vl ,'T', 1._wp, sxvl ,'T', -1._wp, syvl ,'T', -1._wp  & ! melt pond lid volume 
     321                  &                                , sxxvl,'T', 1._wp, syyvl,'T',  1._wp, sxyvl,'T',  1._wp  )  
     322#else 
    295323               CALL lbc_lnk_multi( 'icedyn_adv_pra', z0vl ,'T', 1._wp, sxvl ,'T', -1._wp, syvl ,'T', -1._wp  & ! melt pond lid volume 
    296324                  &                                , sxxvl,'T', 1._wp, syyvl,'T',  1._wp, sxyvl,'T',  1._wp  )  
     325#endif 
    297326            ENDIF 
    298327         ENDIF 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/ICE/icedyn_adv_umx.F90

    r13906 r13946  
    368368         ! --- Lateral boundary conditions --- ! 
    369369         IF    ( ln_pnd_LEV .AND. ln_pnd_lids ) THEN 
     370#if defined key_mpi3 
     371            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pa_i,'T',1._wp, pv_i,'T',1._wp, pv_s,'T',1._wp, psv_i,'T',1._wp, poa_i,'T',1._wp & 
     372               &                                , pa_ip,'T',1._wp, pv_ip,'T',1._wp, pv_il,'T',1._wp ) 
     373#else 
    370374            CALL lbc_lnk_multi( 'icedyn_adv_umx', pa_i,'T',1._wp, pv_i,'T',1._wp, pv_s,'T',1._wp, psv_i,'T',1._wp, poa_i,'T',1._wp & 
    371375               &                                , pa_ip,'T',1._wp, pv_ip,'T',1._wp, pv_il,'T',1._wp ) 
     376#endif 
    372377         ELSEIF( ln_pnd_LEV .AND. .NOT.ln_pnd_lids ) THEN 
     378#if defined key_mpi3 
     379            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pa_i,'T',1._wp, pv_i,'T',1._wp, pv_s,'T',1._wp, psv_i,'T',1._wp, poa_i,'T',1._wp & 
     380               &                                , pa_ip,'T',1._wp, pv_ip,'T',1._wp ) 
     381#else 
    373382            CALL lbc_lnk_multi( 'icedyn_adv_umx', pa_i,'T',1._wp, pv_i,'T',1._wp, pv_s,'T',1._wp, psv_i,'T',1._wp, poa_i,'T',1._wp & 
    374383               &                                , pa_ip,'T',1._wp, pv_ip,'T',1._wp ) 
     384#endif 
    375385         ELSE 
     386#if defined key_mpi3 
     387            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pa_i,'T',1._wp, pv_i,'T',1._wp, pv_s,'T',1._wp, psv_i,'T',1._wp, poa_i,'T',1._wp ) 
     388#else 
    376389            CALL lbc_lnk_multi( 'icedyn_adv_umx', pa_i,'T',1._wp, pv_i,'T',1._wp, pv_s,'T',1._wp, psv_i,'T',1._wp, poa_i,'T',1._wp ) 
     390#endif 
    377391         ENDIF 
     392#if defined key_mpi3 
     393         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pe_i, 'T', 1._wp ) 
     394         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pe_s, 'T', 1._wp ) 
     395#else 
    378396         CALL lbc_lnk( 'icedyn_adv_umx', pe_i, 'T', 1._wp ) 
    379397         CALL lbc_lnk( 'icedyn_adv_umx', pe_s, 'T', 1._wp ) 
     398#endif 
    380399         ! 
    381400         !== Open water area ==! 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LBC/lbc_lnk_nc_generic.h90

    r13906 r13946  
    5858      !! 
    5959      INTEGER                          ::   kfld        ! number of elements that will be attributed 
    60       PTR_TYPE         , DIMENSION(11) ::   ptab_ptr    ! pointer array 
    61       CHARACTER(len=1) , DIMENSION(11) ::   cdna_ptr    ! nature of ptab_ptr grid-points 
    62       REAL(wp)         , DIMENSION(11) ::   psgn_ptr    ! sign used across the north fold boundary 
     60      PTR_TYPE         , DIMENSION(16) ::   ptab_ptr    ! pointer array 
     61      CHARACTER(len=1) , DIMENSION(16) ::   cdna_ptr    ! nature of ptab_ptr grid-points 
     62      REAL(wp)         , DIMENSION(16) ::   psgn_ptr    ! sign used across the north fold boundary 
    6363      !!--------------------------------------------------------------------- 
    6464      ! 
     
    7979      IF( PRESENT(psgn10) )   CALL ROUTINE_NC_LOAD( pt10, cdna10, psgn10, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    8080      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt11, cdna11, psgn11, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    81       IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt12, cdna12, psgn12, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    82       IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt13, cdna13, psgn13, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    83       IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt14, cdna14, psgn14, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    84       IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt15, cdna15, psgn15, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    85       IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt16, cdna16, psgn16, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     81      IF( PRESENT(psgn12) )   CALL ROUTINE_NC_LOAD( pt12, cdna12, psgn12, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     82      IF( PRESENT(psgn13) )   CALL ROUTINE_NC_LOAD( pt13, cdna13, psgn13, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     83      IF( PRESENT(psgn14) )   CALL ROUTINE_NC_LOAD( pt14, cdna14, psgn14, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     84      IF( PRESENT(psgn15) )   CALL ROUTINE_NC_LOAD( pt15, cdna15, psgn15, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     85      IF( PRESENT(psgn16) )   CALL ROUTINE_NC_LOAD( pt16, cdna16, psgn16, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    8686      ! 
    8787      CALL lbc_lnk_nc    ( cdname,               ptab_ptr, cdna_ptr, psgn_ptr, kfld, kfillmode, pfillval, lsend, lrecv, ncsten ) 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv.F90

    r13906 r13946  
    2525   USE traadv_cen     ! centered scheme            (tra_adv_cen  routine) 
    2626   USE traadv_fct     ! FCT      scheme            (tra_adv_fct  routine) 
     27   USE traadv_fct_lf  ! FCT      scheme            (tra_adv_fct  routine - loop fusion version) 
    2728   USE traadv_mus     ! MUSCL    scheme            (tra_adv_mus  routine) 
     29   USE traadv_mus_lf  ! MUSCL    scheme            (tra_adv_mus  routine - loop fusion version) 
    2830   USE traadv_ubs     ! UBS      scheme            (tra_adv_ubs  routine) 
    2931   USE traadv_qck     ! QUICKEST scheme            (tra_adv_qck  routine) 
     
    177179         ! 
    178180         CASE ( np_CEN )                                 ! Centered scheme : 2nd / 4th order 
     181#if defined key_mpi3 
     182            IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kmm), 'T', 1. ) 
     183#else 
     184            IF (nn_hls.EQ.2) CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kmm), 'T', 1. ) 
     185#endif 
    179186            CALL tra_adv_cen    ( kt, nit000, 'TRA',         zuu, zvv, zww, Kmm, pts, jpts, Krhs, nn_cen_h, nn_cen_v ) 
    180187         CASE ( np_FCT )                                 ! FCT scheme      : 2nd / 4th order 
     
    187194               CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 
    188195#endif 
     196#if defined key_loop_fusion 
     197               CALL tra_adv_fct_lf ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
     198#else 
     199               CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
     200#endif 
     201            ELSE 
     202               CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
    189203            END IF 
    190             CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
    191204         CASE ( np_MUS )                                 ! MUSCL 
    192205            ! NOTE: [tiling-comms-merge] I added this lbc_lnk as it did not validate against the trunk when using ln_zco 
     206            IF (nn_hls.EQ.2) THEN  
     207#if defined key_mpi3 
     208                CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
     209#else 
     210                CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
     211#endif 
     212#if defined key_loop_fusion 
     213                CALL tra_adv_mus_lf ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups )  
     214#else 
     215                CALL tra_adv_mus    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups )  
     216#endif 
     217            ELSE 
     218                CALL tra_adv_mus    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups )  
     219            END IF 
     220         CASE ( np_UBS )                                 ! UBS 
    193221#if defined key_mpi3 
    194222            IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
    195223#else 
    196             IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
    197 #endif 
    198             CALL tra_adv_mus    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups ) 
    199          CASE ( np_UBS )                                 ! UBS 
    200 #if defined key_mpi3 
    201             IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
    202 #else 
    203             IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
     224            IF (nn_hls.EQ.2) CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
    204225#endif 
    205226            CALL tra_adv_ubs    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_ubs_v   ) 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_fct.F90

    r13923 r13946  
    3434   PUBLIC   tra_adv_fct        ! called by traadv.F90 
    3535   PUBLIC   interp_4th_cpt     ! called by traadv_cen.F90 
     36   PUBLIC   tridia_solver      ! called by traadv_fct_lf.F90 
     37   PUBLIC   nonosc             ! called by traadv_fct_lf.F90 - key_agrif 
    3638 
    3739   LOGICAL  ::   l_trd   ! flag to compute trends 
     
    244246#endif 
    245247            ! 
    246             DO_3D( 1, 0, 1, 0, 1, jpkm1 )    ! Horizontal advective fluxes 
     248            DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    247249               zC2t_u = pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm)   ! 2 x C2 interpolation of T at u- & v-points 
    248250               zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) 
     
    269271            IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_fct', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
    270272#endif 
     273            ! 
     274            IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_fct', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
    271275            ! 
    272276            DO_3D( 0, 0, 0, 0, 1, jpkm1 )    ! Horizontal advective fluxes 
     
    319323            CALL lbc_lnk( 'traadv_fct', zwi, 'T', 1.0_wp) 
    320324#endif 
     325         END IF 
     326         ! 
     327         IF (nn_hls.EQ.1) THEN 
     328            CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1.0_wp, zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp, zwz, 'T', 1.0_wp ) 
     329         ELSE 
     330            CALL lbc_lnk( 'traadv_fct', zwi, 'T', 1.0_wp) 
    321331         END IF 
    322332         ! 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_fct_lf.F90

    r13922 r13946  
    6767 
    6868#define neg_part_of_flux(ji,jj,jk,out) \ 
    69         out = MAX( 0.,paa_in(ji,jj,jk) ) - MIN( 0., paa_in(ji-1,jj,jk)) \  
     69        out = MAX( 0.,paa_in(ji,jj,jk) ) - MIN( 0., paa_in(ji-1,jj,jk)) \ 
    7070        + MAX( 0.,pbb_in(ji,jj,jk) ) - MIN( 0., pbb_in(ji,jj-1,jk)) \ 
    7171        + MAX( 0.,pcc_in(ji,jj,jk) ) - MIN( 0., pcc_in(ji,jj,jk+1)) 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_mus_lf.F90

    r13922 r13946  
    6464 
    6565#define vertical_adv_flux_i(out, jk, slp, slp1) \ 
    66         z0u = SIGN( 0.5_wp, pU(ji,jj,jk) ) ; \  
     66        z0u = SIGN( 0.5_wp, pU(ji,jj,jk) ) ; \ 
    6767        zalpha = 0.5 - z0u ; \ 
    6868        zu  = z0u - 0.5 * pU(ji,jj,jk) * p2dt * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) ; \ 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traldf.F90

    r13898 r13946  
    9393         CASE ( np_blp , np_blp_i , np_blp_it )             ! bilaplacian: iso-level & iso-neutral operators 
    9494            ! NOTE: [tiling-comms-merge] This lbc_lnk is still needed in the zco case, because zps_hde is not called in step 
     95#if defined key_mpi3 
     96            IF(nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'tra_ldf', pts(:,:,:,:,Kbb), 'T',1.) 
     97#else 
    9598            IF(nn_hls.EQ.2) CALL lbc_lnk( 'tra_ldf', pts(:,:,:,:,Kbb), 'T',1.) 
     99#endif 
    96100            CALL tra_ldf_blp  ( kt, Kmm, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, pts(:,:,:,:,Kbb), pts(:,:,:,:,Krhs),             jpts, nldf_tra ) 
    97101         END SELECT 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/zpshde.F90

    r13906 r13946  
    125125      IF( ln_timing )   CALL timing_start( 'zps_hde') 
    126126      ! NOTE: [tiling-comms-merge] Some lbc_lnks in tra_adv and tra_ldf can be taken out in the zps case, because this lbc_lnk is called when zps_hde is called in the stp routine. In the zco case they are still needed. 
    127       IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 
    128       IF(PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) ; END IF 
     127      IF (nn_hls.EQ.2) THEN 
     128#if defined key_mpi3 
     129         CALL lbc_lnk_nc_multi( 'zpshde', pta, 'T', 1.0_wp) 
     130#else 
     131         CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 
     132#endif 
     133#if defined key_mpi3 
     134         IF(PRESENT(prd)) CALL lbc_lnk_nc_multi( 'zpshde', prd, 'T', 1.0_wp) 
     135#else 
     136         IF(PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) 
     137#endif 
     138      END IF 
    129139      ! 
    130140      pgtu(:,:,:) = 0._wp   ;   zti (:,:,:) = 0._wp   ;   zhi (:,:) = 0._wp 
     
    314324      IF( ln_timing )   CALL timing_start( 'zps_hde_isf') 
    315325      ! 
    316       IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 
    317       IF (PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) ; END IF 
     326      IF (nn_hls.EQ.2) THEN 
     327#if defined key_mpi3 
     328         CALL lbc_lnk_nc_multi( 'zpshde', pta, 'T', 1.0_wp) 
     329#else 
     330         CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 
     331#endif 
     332#if defined key_mpi3 
     333         IF (PRESENT(prd)) CALL lbc_lnk_nc_multi( 'zpshde', prd, 'T', 1.0_wp) 
     334#else 
     335         IF (PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) 
     336#endif 
     337      END IF 
    318338 
    319339      pgtu (:,:,:) = 0._wp   ;   pgtv (:,:,:) =0._wp 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/TOP/TRP/trcadv.F90

    r13906 r13946  
    2222   USE traadv_cen     ! centered scheme           (tra_adv_cen  routine) 
    2323   USE traadv_fct     ! FCT      scheme           (tra_adv_fct  routine) 
     24   USE traadv_fct_lf  ! FCT      scheme           (tra_adv_fct  routine - loop fusion version) 
    2425   USE traadv_mus     ! MUSCL    scheme           (tra_adv_mus  routine) 
     26   USE traadv_mus_lf  ! MUSCL    scheme           (tra_adv_mus  routine - loop fusion version) 
    2527   USE traadv_ubs     ! UBS      scheme           (tra_adv_ubs  routine) 
    2628   USE traadv_qck     ! QUICKEST scheme           (tra_adv_qck  routine) 
     
    127129         IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kmm), 'T', 1.) 
    128130#else 
    129          IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kmm), 'T', 1.) 
     131         IF (nn_hls.EQ.2) CALL lbc_lnk( 'trcadv', ptr(:,:,:,:,Kmm), 'T', 1.) 
    130132#endif 
    131133         CALL tra_adv_cen( kt, nittrc000,'TRC',          zuu, zvv, zww,      Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 
     
    139141            CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 
    140142#endif 
     143#if defined key_loop_fusion 
     144            CALL tra_adv_fct_lf( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
     145#else 
     146            CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
     147#endif 
     148         ELSE 
     149            CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    141150         END IF 
    142          CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    143151      CASE ( np_MUS )                                 ! MUSCL 
     152         IF (nn_hls.EQ.2) THEN 
    144153#if defined key_mpi3 
    145154            IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
    146155#else 
    147             IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
    148 #endif 
    149          CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups         )  
     156            IF (nn_hls.EQ.2) CALL lbc_lnk( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
     157#endif 
     158#if defined key_loop_fusion 
     159            CALL tra_adv_mus_lf( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups )  
     160#else 
     161            CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups )  
     162#endif 
     163         ELSE 
     164            CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups )  
     165         END IF 
    150166      CASE ( np_UBS )                                 ! UBS 
    151167#if defined key_mpi3 
    152168         IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
    153169#else 
    154          IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
     170         IF (nn_hls.EQ.2) CALL lbc_lnk( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
    155171#endif 
    156172         CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v           ) 
  • NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/TOP/TRP/trcldf.F90

    r13898 r13946  
    101101           &                     ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Krhs), jptra, 1 ) 
    102102      CASE ( np_blp , np_blp_i , np_blp_it )                                                               ! bilaplacian: all operator (iso-level, -neutral) 
     103#if defined key_mpi3 
     104         IF(nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trc_ldf', ptr(:,:,:,:,Kbb), 'T',1.) 
     105#else 
    103106         IF(nn_hls.EQ.2) CALL lbc_lnk( 'trc_ldf', ptr(:,:,:,:,Kbb), 'T',1.) 
     107#endif 
    104108         CALL tra_ldf_blp  ( kt, Kmm, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi,            & 
    105109           &                     ptr(:,:,:,:,Kbb) , ptr(:,:,:,:,Krhs),                 jptra, nldf_trc ) 
Note: See TracChangeset for help on using the changeset viewer.