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 13630 for NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE – NEMO

Ignore:
Timestamp:
2020-10-19T10:48:19+02:00 (4 years ago)
Author:
mocavero
Message:

Add neighborhood collectives calls in the NEMO src - ticket #2496

Location:
NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icecor.F90

    r13571 r13630  
    113113            ENDIF 
    114114         END_2D 
     115#if defined key_mpi3 
     116         CALL lbc_lnk_nc_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 
     117#else 
    115118         CALL lbc_lnk_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 
     119#endif 
    116120      ENDIF 
    117121 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn.F90

    r13571 r13630  
    161161                  &             + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) ) * r1_e1e2t(ji,jj) 
    162162            END_2D 
     163#if defined key_mpi3 
     164            CALL lbc_lnk_nc_multi( 'icedyn', zdivu_i, 'T', 1.0_wp ) 
     165#else 
    163166            CALL lbc_lnk( 'icedyn', zdivu_i, 'T', 1.0_wp ) 
     167#endif 
    164168            ! output 
    165169            CALL iom_put( 'icediv' , zdivu_i ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_adv_pra.F90

    r13571 r13630  
    158158         END_3D 
    159159      END DO 
     160#if defined key_mpi3 
     161      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
     162      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     163#else 
    160164      CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
    161165      CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     166#endif 
    162167      ! 
    163168      ! 
     
    311316               &                          - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 
    312317         END_2D 
     318#if defined key_mpi3 
     319         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', pato_i, 'T',  1.0_wp ) 
     320#else 
    313321         CALL lbc_lnk( 'icedyn_adv_pra', pato_i, 'T',  1.0_wp ) 
     322#endif 
    314323         ! 
    315324         ! --- Ensure non-negative fields --- ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_adv_umx.F90

    r13571 r13630  
    162162         END_3D 
    163163      END DO 
     164#if defined key_mpi3 
     165      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
     166      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     167#else 
    164168      CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
    165169      CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     170#endif 
    166171      ! 
    167172      ! 
     
    384389               &                          - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 
    385390         END_2D 
     391#if defined key_mpi3 
     392         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pato_i, 'T',  1.0_wp ) 
     393#else 
    386394         CALL lbc_lnk( 'icedyn_adv_umx', pato_i, 'T',  1.0_wp ) 
     395#endif 
    387396         ! 
    388397         ! 
     
    518527            END_2D 
    519528         END DO 
     529#if defined key_mpi3 
     530         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zt_ups, 'T',  1.0_wp ) 
     531#else 
    520532         CALL lbc_lnk( 'icedyn_adv_umx', zt_ups, 'T',  1.0_wp ) 
     533#endif 
    521534         ! 
    522535         IF    ( np_limiter == 1 ) THEN 
     
    601614               END_2D 
    602615            END DO 
     616#if defined key_mpi3 
     617            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     618#else 
    603619            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     620#endif 
    604621            ! 
    605622            DO jl = 1, jpl              !-- flux in y-direction 
     
    625642               END_2D 
    626643            END DO 
     644#if defined key_mpi3 
     645            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     646#else 
    627647            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     648#endif 
    628649            ! 
    629650            DO jl = 1, jpl              !-- flux in x-direction 
     
    647668         END_2D 
    648669      END DO 
     670#if defined key_mpi3 
     671      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 
     672#else 
    649673      CALL lbc_lnk( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 
     674#endif 
    650675 
    651676   END SUBROUTINE upstream 
     
    709734               END_2D 
    710735            END DO 
     736#if defined key_mpi3 
     737            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     738#else 
    711739            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     740#endif 
    712741 
    713742            DO jl = 1, jpl              !-- flux in y-direction 
     
    735764               END_2D 
    736765            END DO 
     766#if defined key_mpi3 
     767            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     768#else 
    737769            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     770#endif 
    738771            ! 
    739772            DO jl = 1, jpl              !-- flux in x-direction 
     
    793826            END_2D 
    794827         END DO 
     828#if defined key_mpi3 
     829         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     830#else 
    795831         CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     832#endif 
    796833         ! 
    797834         !                                                        !--  ultimate interpolation of pt at v-point  --! 
     
    820857            END_2D 
    821858         END DO 
     859#if defined key_mpi3 
     860         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     861#else 
    822862         CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     863#endif 
    823864         ! 
    824865         !                                                        !--  ultimate interpolation of pt at u-point  --! 
     
    873914         END DO 
    874915      END DO 
     916#if defined key_mpi3 
     917      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 
     918#else 
    875919      CALL lbc_lnk( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 
     920#endif 
    876921      ! 
    877922      !                                                     !--  BiLaplacian in i-direction  --! 
     
    887932         END DO 
    888933      END DO 
     934#if defined key_mpi3 
     935      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 
     936#else 
    889937      CALL lbc_lnk( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 
     938#endif 
    890939      ! 
    891940      ! 
     
    10131062         END_2D 
    10141063      END DO 
     1064#if defined key_mpi3 
     1065      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 
     1066#else 
    10151067      CALL lbc_lnk( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 
     1068#endif 
    10161069      ! 
    10171070      !                                                     !--  BiLaplacian in j-direction  --! 
     
    10241077         END_2D 
    10251078      END DO 
     1079#if defined key_mpi3 
     1080      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 
     1081#else 
    10261082      CALL lbc_lnk( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 
     1083#endif 
    10271084      ! 
    10281085      ! 
     
    11631220            END_2D 
    11641221         END DO 
     1222#if defined key_mpi3 
     1223         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 
     1224#else 
    11651225         CALL lbc_lnk_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 
     1226#endif 
    11661227 
    11671228         DO jl = 1, jpl 
     
    11851246            END_2D 
    11861247         END DO 
     1248#if defined key_mpi3 
     1249         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp )   ! lateral boundary cond. 
     1250#else 
    11871251         CALL lbc_lnk_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp )   ! lateral boundary cond. 
     1252#endif 
    11881253 
    11891254      ENDIF 
     
    12421307         END_2D 
    12431308      END DO 
     1309#if defined key_mpi3 
     1310      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp )   ! lateral boundary cond. (unchanged sign) 
     1311#else 
    12441312      CALL lbc_lnk_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp )   ! lateral boundary cond. (unchanged sign) 
     1313#endif 
    12451314 
    12461315       
     
    12971366         END_2D 
    12981367      END DO 
     1368#if defined key_mpi3 
     1369      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp)   ! lateral boundary cond. 
     1370#else 
    12991371      CALL lbc_lnk( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp)   ! lateral boundary cond. 
     1372#endif 
    13001373       
    13011374      DO jl = 1, jpl 
     
    13611434         END_2D 
    13621435      END DO 
     1436#if defined key_mpi3 
     1437      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp)   ! lateral boundary cond. 
     1438#else 
    13631439      CALL lbc_lnk( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp)   ! lateral boundary cond. 
     1440#endif 
    13641441      ! 
    13651442   END SUBROUTINE limiter_x 
     
    13881465         END_2D 
    13891466      END DO 
     1467#if defined key_mpi3 
     1468      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp)   ! lateral boundary cond. 
     1469#else 
    13901470      CALL lbc_lnk( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp)   ! lateral boundary cond. 
     1471#endif 
    13911472 
    13921473      DO jl = 1, jpl 
     
    14531534         END_2D 
    14541535      END DO 
     1536#if defined key_mpi3 
     1537      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp)   ! lateral boundary cond. 
     1538#else 
    14551539      CALL lbc_lnk( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp)   ! lateral boundary cond. 
     1540#endif 
    14561541      ! 
    14571542   END SUBROUTINE limiter_y 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_rdgrft.F90

    r13571 r13630  
    801801            strength(ji,jj) = zworka(ji,jj) 
    802802         END_2D 
     803#if defined key_mpi3 
     804         CALL lbc_lnk_nc_multi( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     805#else 
    803806         CALL lbc_lnk( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     807#endif 
    804808         ! 
    805809      CASE( 2 )               !--- Temporal smoothing 
     
    820824            ENDIF 
    821825         END_2D 
     826#if defined key_mpi3 
     827         CALL lbc_lnk_nc_multi( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     828#else 
    822829         CALL lbc_lnk( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     830#endif 
    823831         ! 
    824832      END SELECT 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_rhg_evp.F90

    r13571 r13630  
    322322 
    323323      END_2D 
    324 #if defined key_mpi3 
    325       CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 
    326 #else 
    327324      CALL lbc_lnk_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 
    328 #endif 
    329325      ! 
    330326      !                                  !== Landfast ice parameterization ==! 
     
    408404 
    409405         END_2D 
     406#if defined key_mpi3 
     407         CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 
     408#else 
    410409         CALL lbc_lnk( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 
    411  
     410#endif 
    412411         ! P/delta at T points 
    413412         DO_2D( 1, 1, 1, 1 ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icesbc.F90

    r13571 r13630  
    8686            vtau_ice(ji,jj) = vtau_ice(ji,jj) * xcplmask(ji,jj,0) + zvtau_ice(ji,jj) * ( 1. - xcplmask(ji,jj,0) ) 
    8787         END_2D 
     88#if defined key_mpi3 
     89         CALL lbc_lnk_nc_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 
     90#else 
    8891         CALL lbc_lnk_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 
     92#endif 
    8993      ENDIF 
    9094      ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icethd.F90

    r13571 r13630  
    132132         END_2D 
    133133      ENDIF 
     134#if defined key_mpi3 
     135      CALL lbc_lnk_nc_multi( 'icethd', zfric, 'T',  1.0_wp ) 
     136#else 
    134137      CALL lbc_lnk( 'icethd', zfric, 'T',  1.0_wp ) 
     138#endif 
    135139      ! 
    136140      !--------------------------------------------------------------------! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icethd_do.F90

    r13571 r13630  
    191191         END_2D 
    192192         !  
     193#if defined key_mpi3 
     194         CALL lbc_lnk_nc_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp  ) 
     195#else 
    193196         CALL lbc_lnk_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp  ) 
     197#endif 
    194198 
    195199      ENDIF 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/iceupdate.F90

    r13571 r13630  
    342342            tmod_io(ji,jj) = zrhoco * SQRT( zmodt )          ! rhoco * |U_ice-U_oce| at T-point 
    343343         END_2D 
     344#if defined key_mpi3 
     345         CALL lbc_lnk_nc_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 
     346#else 
    344347         CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 
     348#endif 
    345349         ! 
    346350         utau_oce(:,:) = utau(:,:)                    !* save the air-ocean stresses at ice time-step 
     
    371375         vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 
    372376      END_2D 
     377#if defined key_mpi3 
     378      CALL lbc_lnk_nc_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp )   ! lateral boundary condition 
     379#else 
    373380      CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp )   ! lateral boundary condition 
     381#endif 
    374382      ! 
    375383      IF( ln_timing )   CALL timing_stop('ice_update_tau') 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icewri.F90

    r13571 r13630  
    137137            z2d(ji,jj) = 0.5_wp * SQRT( z2da * z2da + z2db * z2db ) 
    138138         END_2D 
     139#if defined key_mpi3 
     140         CALL lbc_lnk_nc_multi( 'icewri', z2d, 'T', 1.0_wp ) 
     141#else 
    139142         CALL lbc_lnk( 'icewri', z2d, 'T', 1.0_wp ) 
     143#endif 
    140144         CALL iom_put( 'icevel', z2d ) 
    141145 
Note: See TracChangeset for help on using the changeset viewer.