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

Changeset 13807


Ignore:
Timestamp:
2020-11-17T17:16:58+01:00 (4 years ago)
Author:
mocavero
Message:

Added latest mpi3 calls in the NEMO code

Location:
NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3
Files:
20 edited

Legend:

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

    r13630 r13807  
    129129         END_2D 
    130130      END DO 
     131#if defined key_mpi3 
     132      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 
     133#else 
    131134      CALL lbc_lnk_multi( 'icedyn_adv_pra', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 
     135#endif 
    132136      ! 
    133137      ! enthalpies 
     
    492496 
    493497      !-- Lateral boundary conditions 
     498#if defined key_mpi3 
     499      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', psm(:,:,1:jcat) , 'T',  1.0_wp, ps0 , 'T',  1.0_wp   & 
     500         &                                , psx             , 'T', -1.0_wp, psy , 'T', -1.0_wp   &   ! caution gradient ==> the sign changes 
     501         &                                , psxx            , 'T',  1.0_wp, psyy, 'T',  1.0_wp , psxy, 'T',  1.0_wp ) 
     502#else 
    494503      CALL lbc_lnk_multi( 'icedyn_adv_pra', psm(:,:,1:jcat) , 'T',  1.0_wp, ps0 , 'T',  1.0_wp   & 
    495504         &                                , psx             , 'T', -1.0_wp, psy , 'T', -1.0_wp   &   ! caution gradient ==> the sign changes 
    496505         &                                , psxx            , 'T',  1.0_wp, psyy, 'T',  1.0_wp , psxy, 'T',  1.0_wp ) 
     506#endif 
    497507      ! 
    498508   END SUBROUTINE adv_x 
     
    651661 
    652662      !-- Lateral boundary conditions 
     663#if defined key_mpi3 
     664      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', psm(:,:,1:jcat) , 'T',  1.0_wp, ps0 , 'T',  1.0_wp   & 
     665         &                                , psx             , 'T', -1.0_wp, psy , 'T', -1.0_wp   &   ! caution gradient ==> the sign changes 
     666         &                                , psxx            , 'T',  1.0_wp, psyy, 'T',  1.0_wp , psxy, 'T',  1.0_wp ) 
     667#else 
    653668      CALL lbc_lnk_multi( 'icedyn_adv_pra', psm(:,:,1:jcat) , 'T',  1.0_wp, ps0 , 'T',  1.0_wp   & 
    654669         &                                , psx             , 'T', -1.0_wp, psy , 'T', -1.0_wp   &   ! caution gradient ==> the sign changes 
    655670         &                                , psxx            , 'T',  1.0_wp, psyy, 'T',  1.0_wp , psxy, 'T',  1.0_wp ) 
     671#endif 
    656672      ! 
    657673   END SUBROUTINE adv_y 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_adv_umx.F90

    r13630 r13807  
    133133         END_2D 
    134134      END DO 
     135#if defined key_mpi3 
     136      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 
     137#else 
    135138      CALL lbc_lnk_multi( 'icedyn_adv_umx', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 
     139#endif 
    136140      ! 
    137141      ! enthalpies 
     
    562566         END_2D 
    563567      END DO 
     568#if defined key_mpi3 
     569      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ptc, 'T',  1.0_wp ) 
     570#else 
    564571      CALL lbc_lnk( 'icedyn_adv_umx', ptc, 'T',  1.0_wp ) 
     572#endif 
    565573      ! 
    566574   END SUBROUTINE adv_umx 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_rhg_evp.F90

    r13630 r13807  
    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 
    324327      CALL lbc_lnk_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 
     328#endif 
    325329      ! 
    326330      !                                  !== Landfast ice parameterization ==! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/domutl.F90

    r13571 r13807  
    103103      ! 
    104104      puniq(:,:) = ztstref(:,:)                    ! default definition 
     105#if defined key_mpi3 
     106      CALL lbc_lnk_nc_multi( 'domwri', puniq, cdgrd, 1. )   ! apply boundary conditions 
     107#else 
    105108      CALL lbc_lnk( 'domwri', puniq, cdgrd, 1. )   ! apply boundary conditions 
     109#endif 
    106110      lluniq(:,:,1) = puniq(:,:) == ztstref(:,:)   ! check which values have not been changed  
    107111      ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/domvvl.F90

    r13630 r13807  
    724724               &                           + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    725725         END_3D 
     726#if defined key_mpi3 
     727         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     728#else 
    726729         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     730#endif 
    727731         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    728732         ! 
     
    733737               &                           + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    734738         END_3D 
     739#if defined key_mpi3 
     740         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     741#else 
    735742         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     743#endif 
    736744         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    737745         ! 
     
    743751               &                           + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    744752         END_3D 
     753#if defined key_mpi3 
     754         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     755#else 
    745756         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     757#endif 
    746758         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    747759         ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynadv_ubs.F90

    r13571 r13807  
    124124         END_2D 
    125125      END DO 
     126#if defined key_mpi3 
     127      CALL lbc_lnk_nc_multi( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U', 1.0_wp,  & 
     128                      &   zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp,  &  
     129                      &   zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V', 1.0_wp,  & 
     130                      &   zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V', 1.0_wp   ) 
     131#else 
    126132      CALL lbc_lnk_multi( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U', 1.0_wp,  & 
    127133                      &   zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp,  &  
    128134                      &   zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V', 1.0_wp,  & 
    129135                      &   zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V', 1.0_wp   ) 
     136#endif 
    130137      ! 
    131138      !                                      ! ====================== ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynatf.F90

    r13571 r13807  
    167167# endif 
    168168      ! 
     169#if defined key_mpi3 
     170      CALL lbc_lnk_nc_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp )     !* local domain boundaries 
     171#else 
    169172      CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp )     !* local domain boundaries 
     173#endif 
    170174      ! 
    171175      !                                !* BDY open boundaries 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynldf_lap_blp.F90

    r13571 r13807  
    132132      CALL dyn_ldf_lap( kt, Kbb, Kmm, pu, pv, zulap, zvlap, 1 )   ! rotated laplacian applied to pt (output in zlap,Kbb) 
    133133      ! 
     134#if defined key_mpi3 
     135      CALL lbc_lnk_nc_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp )             ! Lateral boundary conditions 
     136#else 
    134137      CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp )             ! Lateral boundary conditions 
     138#endif 
    135139      ! 
    136140      CALL dyn_ldf_lap( kt, Kbb, Kmm, zulap, zvlap, pu_rhs, pv_rhs, 2 )   ! rotated laplacian applied to zlap (output in pt(:,:,:,:,Krhs)) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynvor.F90

    r13630 r13807  
    618618      END DO                                           !   End of slab 
    619619         ! 
     620#if defined key_mpi3 
     621      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 
     622#else 
    620623      CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 
     624#endif 
    621625 
    622626      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    739743      END DO 
    740744      ! 
     745#if defined key_mpi3 
     746      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 
     747#else 
    741748      CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 
     749#endif 
    742750      ! 
    743751      DO jk = 1, jpkm1                                 ! Horizontal slab 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/IOM/iom.F90

    r13630 r13807  
    13421342               !--- overlap areas and extra hallows (mpp) 
    13431343               IF(     PRESENT(pv_r2d) .AND. idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 
     1344#if defined key_mpi3 
     1345                  CALL lbc_lnk_nc_multi( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill ) 
     1346#else 
    13441347                  CALL lbc_lnk( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill ) 
     1348#endif 
    13451349               ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 
     1350#if defined key_mpi3 
     1351                  CALL lbc_lnk_nc_multi( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill ) 
     1352#else 
    13461353                  CALL lbc_lnk( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill ) 
     1354#endif 
    13471355               ENDIF 
    13481356               ! 
     
    13631371            IF(lwp) WRITE(numout,*) 'XIOS RST READ (3D): ',TRIM(cdvar) 
    13641372            CALL xios_recv_field( trim(cdvar), pv_r3d) 
     1373#if defined key_mpi3 
     1374            IF(idom /= jpdom_unknown )   CALL lbc_lnk_nc_multi( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 
     1375#else 
    13651376            IF(idom /= jpdom_unknown )   CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 
     1377#endif 
    13661378         ELSEIF( PRESENT(pv_r2d) ) THEN 
    13671379            IF(lwp) WRITE(numout,*) 'XIOS RST READ (2D): ', TRIM(cdvar) 
    13681380            CALL xios_recv_field( trim(cdvar), pv_r2d) 
     1381#if defined key_mpi3 
     1382            IF(idom /= jpdom_unknown )   CALL lbc_lnk_nc_multi('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 
     1383#else 
    13691384            IF(idom /= jpdom_unknown )   CALL lbc_lnk('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 
     1385#endif 
    13701386         ELSEIF( PRESENT(pv_r1d) ) THEN 
    13711387            IF(lwp) WRITE(numout,*) 'XIOS RST READ (1D): ', TRIM(cdvar) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/LBC/mpp_nc_generic.h90

    r13561 r13807  
    6767      LOGICAL  ::   llsend_we, llsend_ea, llsend_no, llsend_so       ! communication send 
    6868      LOGICAL  ::   llrecv_we, llrecv_ea, llrecv_no, llrecv_so       ! communication receive  
    69       LOGICAL  ::   lldo_nfd                                     ! do north pole folding 
    70       LOGICAL  ::   llncall = .TRUE.                                 ! default: 9-point stencil 
     69      LOGICAL  ::   lldo_nfd                                         ! do north pole folding 
     70      LOGICAL  ::   llncall                                          ! default: 9-point stencil 
    7171 
    7272      !!---------------------------------------------------------------------- 
     
    7676      ! ----------------------------------------- ! 
    7777      ! 
     78      llncall = .TRUE.  
    7879      ipk = K_SIZE(ptab)   ! 3rd dimension 
    7980      ipl = L_SIZE(ptab)   ! 4th    - 
     
    102103      zland = 0._wp                                     ! land filling value: zero by default 
    103104      IF( PRESENT( pfillval ) )   zland = pfillval      ! set land value 
     105 
    104106 
    105107      ! define the method we will use to fill the halos in each direction 
     
    374376         CASE ( jpfillperio )                 ! use east-weast periodicity 
    375377            ishift2 = nn_hls 
    376             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     378            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    377379               ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
    378380            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    379381         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    380             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     382            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    381383               ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift,jj,jk,jl,jf) 
    382384            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    383385         CASE ( jpfillcst   )                 ! filling with constant value 
    384             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     386            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    385387               ARRAY_IN(ishift+ji,jj,jk,jl,jf) = zland 
    386             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     388            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    387389         END SELECT 
    388390         ! ---------------------- 
     
    398400         CASE ( jpfillperio )                 ! use east-weast periodicity 
    399401            ishift2 = jpi - 2 * nn_hls 
    400             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     402            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    401403               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
    402             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     404            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    403405         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    404             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     406            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    405407               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(nn_hls+1,jj,jk,jl,jf) 
    406             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     408            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    407409         CASE ( jpfillcst   )                 ! filling with constant value 
    408             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     410            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    409411               ARRAY_IN(ji,jj,jk,jl,jf) = zland 
    410             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     412            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    411413         END SELECT 
    412414 
     
    426428         CASE ( jpfillperio )                 ! use east-weast periodicity 
    427429            ishift2 = jpi - 2 * nn_hls 
    428             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     430            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    429431               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
    430             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     432            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    431433         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    432             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     434            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    433435               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(nn_hls+1,jj,jk,jl,jf) 
    434             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     436            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    435437         CASE ( jpfillcst   )                 ! filling with constant value 
    436             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     438            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    437439               ARRAY_IN(ji,jj,jk,jl,jf) = zland 
    438             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     440            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    439441         END SELECT 
    440442         ! --------------------- 
     
    451453         CASE ( jpfillperio )                 ! use east-weast periodicity 
    452454            ishift2 = nn_hls 
    453             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     455            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    454456               ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
    455457            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    456458         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    457             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     459            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    458460               ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift,jj,jk,jl,jf) 
    459461            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    460462         CASE ( jpfillcst   )                 ! filling with constant value 
    461             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = nn_hls + 1, jpj - nn_hls   ;   DO ji = 1, nn_hls 
     463            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, jpj   ;   DO ji = 1, nn_hls 
    462464               ARRAY_IN(ishift+ji,jj,jk,jl,jf) = zland 
    463             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     465            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    464466         END SELECT 
     467 
    465468      ENDIF 
    466469 
     
    478481               idx = idx + 1 
    479482            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     483            IF(nonwr .eq. -1) THEN 
     484               ishift = jpj - nn_hls 
     485               SELECT CASE ( ifill_we ) 
     486                  CASE ( jpfillperio ) 
     487                     ishift2 = jpi - 2 * nn_hls 
     488                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift, jpj   ;  DO ji = 1, nn_hls 
     489                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
     490                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     491                  CASE ( jpfillcopy  ) 
     492                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift, jpj   ;  DO ji = 1, nn_hls 
     493                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(nn_hls+1,jj,jk,jl,jf) 
     494                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     495 
     496                  CASE ( jpfillcst   ) 
     497                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift, jpj   ;  DO ji = 1, nn_hls 
     498                        ARRAY_IN(ji,jj,jk,jl,jf) = zland 
     499                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     500               END SELECT 
     501            END IF 
     502            IF(noner .eq. -1) THEN 
     503               ishift = jpi - nn_hls 
     504               ishift2 = jpj - nn_hls 
     505               SELECT CASE ( ifill_ea ) 
     506                  CASE ( jpfillperio ) 
     507                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift2, jpj   ;  DO ji = 1, nn_hls 
     508                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ji,jj,jk,jl,jf) 
     509                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     510 
     511                  CASE ( jpfillcopy  ) 
     512                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift2, jpj   ;  DO ji = 1, nn_hls 
     513                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift,jj,jk,jl,jf) 
     514                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     515                  CASE ( jpfillcst   ) 
     516                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift2, jpj   ;  DO ji = 1, nn_hls 
     517                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = zland 
     518                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     519               END SELECT 
     520            END IF 
    480521         CASE ( jpfillperio )                 ! use north-south periodicity 
    481522            ishift2 = nn_hls 
    482             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     523            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    483524               ARRAY_IN(ji,ishift+jj,jk,jl,jf) = ARRAY_IN(ji,ishift2+jj,jk,jl,jf) 
    484             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     525            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    485526         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    486             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     527            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    487528               ARRAY_IN(ji,ishift+jj,jk,jl,jf) = ARRAY_IN(ji,ishift,jk,jl,jf) 
    488             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     529            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    489530         CASE ( jpfillcst   )                 ! filling with constant value 
    490             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     531            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    491532               ARRAY_IN(ji,ishift+jj,jk,jl,jf) = zland 
    492             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     533            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    493534         END SELECT 
     535 
    494536         ! ---------------------- 
    495537         ! 2.4 fill southern halo 
     
    502544               idx = idx + 1 
    503545            END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     546            IF(noswr .eq. -1) THEN 
     547               SELECT CASE ( ifill_we ) 
     548                  CASE ( jpfillperio ) 
     549                     ishift2 = jpi - 2 * nn_hls 
     550                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     551                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
     552                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     553                  CASE ( jpfillcopy  ) 
     554                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     555                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(nn_hls+1,jj,jk,jl,jf) 
     556                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     557 
     558                  CASE ( jpfillcst   ) 
     559                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     560                        ARRAY_IN(ji,jj,jk,jl,jf) = zland 
     561                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     562               END SELECT 
     563            END IF 
     564            IF(noser .eq. -1) THEN 
     565               ishift = jpi - nn_hls 
     566               SELECT CASE ( ifill_ea ) 
     567                  CASE ( jpfillperio ) 
     568                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     569                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ji+nn_hls,jj,jk,jl,jf) 
     570                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     571 
     572                  CASE ( jpfillcopy  ) 
     573                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     574                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift,jj,jk,jl,jf) 
     575                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     576                  CASE ( jpfillcst   ) 
     577                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     578                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = zland 
     579                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     580               END SELECT 
     581            END IF 
    504582         CASE ( jpfillperio )                 ! use north-south periodicity 
    505583            ishift2 = jpj - 2 * nn_hls 
    506             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     584            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    507585               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ji,ishift2+jj,jk,jl,jf) 
    508             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     586            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    509587         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    510             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     588            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    511589               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ji,nn_hls+1,jk,jl,jf) 
    512             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     590            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    513591         CASE ( jpfillcst   )                 ! filling with constant value 
    514             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     592            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    515593               ARRAY_IN(ji,jj,jk,jl,jf) = zland 
    516             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     594            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    517595         END SELECT 
    518596      ELSE 
     
    527605               idx = idx + 1 
    528606            END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     607            IF(noswr .eq. -1) THEN 
     608               SELECT CASE ( ifill_we ) 
     609                  CASE ( jpfillperio ) 
     610                     ishift2 = jpi - 2 * nn_hls 
     611                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     612                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
     613                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     614                  CASE ( jpfillcopy  ) 
     615                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     616                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(nn_hls+1,jj,jk,jl,jf) 
     617                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     618 
     619                  CASE ( jpfillcst   ) 
     620                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     621                        ARRAY_IN(ji,jj,jk,jl,jf) = zland 
     622                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     623               END SELECT 
     624            END IF 
     625            IF(noser .eq. -1) THEN 
     626               ishift = jpi - nn_hls 
     627               SELECT CASE ( ifill_ea ) 
     628                  CASE ( jpfillperio ) 
     629                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     630                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ji+nn_hls,jj,jk,jl,jf) 
     631                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     632 
     633                  CASE ( jpfillcopy  ) 
     634                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     635                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift,jj,jk,jl,jf) 
     636                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     637                  CASE ( jpfillcst   ) 
     638                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;  DO ji = 1, nn_hls 
     639                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = zland 
     640                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     641               END SELECT 
     642            END IF 
    529643         CASE ( jpfillperio )                 ! use north-south periodicity 
    530644            ishift2 = jpj - 2 * nn_hls 
    531             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     645            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    532646               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ji,ishift2+jj,jk,jl,jf) 
    533             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     647            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    534648         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    535             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     649            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    536650               ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ji,nn_hls+1,jk,jl,jf) 
    537             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     651            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    538652         CASE ( jpfillcst   )                 ! filling with constant value 
    539             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     653            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    540654               ARRAY_IN(ji,jj,jk,jl,jf) = zland 
    541             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     655            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    542656         END SELECT 
     657 
    543658         ! ---------------------- 
    544659         ! 2.4 fill northern halo 
     
    552667               idx = idx + 1 
    553668            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     669            IF(nonwr .eq. -1) THEN 
     670               ishift = jpj - nn_hls 
     671               SELECT CASE ( ifill_we ) 
     672                  CASE ( jpfillperio ) 
     673                     ishift2 = jpi - 2 * nn_hls 
     674                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift, jpj   ;  DO ji = 1, nn_hls 
     675                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(ishift2+ji,jj,jk,jl,jf) 
     676                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     677                  CASE ( jpfillcopy  ) 
     678                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift, jpj   ;  DO ji = 1, nn_hls 
     679                        ARRAY_IN(ji,jj,jk,jl,jf) = ARRAY_IN(nn_hls+1,jj,jk,jl,jf) 
     680                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     681 
     682                  CASE ( jpfillcst   ) 
     683                     DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift, jpj   ;  DO ji = 1, nn_hls 
     684                        ARRAY_IN(ji,jj,jk,jl,jf) = zland 
     685                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     686               END SELECT 
     687            END IF 
     688            IF(noner .eq. -1) THEN 
     689               ishift = jpi - nn_hls 
     690               ishift2 = jpj - nn_hls 
     691               SELECT CASE ( ifill_ea ) 
     692                  CASE ( jpfillperio ) 
     693                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift2, jpj   ;  DO ji = 1, nn_hls 
     694                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ji,jj,jk,jl,jf) 
     695                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     696 
     697                  CASE ( jpfillcopy  ) 
     698                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift2, jpj   ;  DO ji = 1, nn_hls 
     699                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = ARRAY_IN(ishift,jj,jk,jl,jf) 
     700                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     701                  CASE ( jpfillcst   ) 
     702                     DO jf = 1, ipf  ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1 + ishift2, jpj   ;  DO ji = 1, nn_hls 
     703                        ARRAY_IN(ishift+ji,jj,jk,jl,jf) = zland 
     704                     END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
     705               END SELECT 
     706            END IF 
    554707         CASE ( jpfillperio )                 ! use north-south periodicity 
    555708            ishift2 = nn_hls 
    556             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     709            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    557710               ARRAY_IN(ji,ishift+jj,jk,jl,jf) = ARRAY_IN(ji,ishift2+jj,jk,jl,jf) 
    558             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     711            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    559712         CASE ( jpfillcopy  )                 ! filling with inner domain values 
    560             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     713            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    561714               ARRAY_IN(ji,ishift+jj,jk,jl,jf) = ARRAY_IN(ji,ishift,jk,jl,jf) 
    562             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     715            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    563716         CASE ( jpfillcst   )                 ! filling with constant value 
    564             DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = nn_hls + 1, jpi - nn_hls 
     717            DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk   ;   DO jj = 1, nn_hls   ;   DO ji = 1, jpi 
    565718               ARRAY_IN(ji,ishift+jj,jk,jl,jf) = zland 
    566             END DO;   END DO   ;   END DO   ;   END DO   ;   END DO 
     719            END DO   ;   END DO   ;   END DO   ;   END DO   ;   END DO 
    567720         END SELECT 
    568721      ENDIF 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/LDF/ldfslp.F90

    r13630 r13807  
    229229!!gm end modif 
    230230      END_3D 
     231#if defined key_mpi3 
     232      CALL lbc_lnk_nc_multi( 'ldfslp', zwz, 'U', -1.0_wp,  zww, 'V', -1.0_wp )      ! lateral boundary conditions 
     233#else  
    231234      CALL lbc_lnk_multi( 'ldfslp', zwz, 'U', -1.0_wp,  zww, 'V', -1.0_wp )      ! lateral boundary conditions 
     235#endif 
    232236      ! 
    233237      !                                    !* horizontal Shapiro filter 
     
    303307!!gm end modif 
    304308      END_3D 
     309#if defined key_mpi3 
     310      CALL lbc_lnk_nc_multi( 'ldfslp', zwz, 'T', -1.0_wp,  zww, 'T', -1.0_wp )      ! lateral boundary conditions 
     311#else 
    305312      CALL lbc_lnk_multi( 'ldfslp', zwz, 'T', -1.0_wp,  zww, 'T', -1.0_wp )      ! lateral boundary conditions 
     313#endif 
    306314      ! 
    307315      !                                           !* horizontal Shapiro filter 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/fldread.F90

    r13571 r13807  
    372372         CALL wgt_list( sdjf, iw ) 
    373373         CALL fld_interp( sdjf%num, sdjf%clvar, iw, ipk, dta_alias(:,:,:), sdjf%nrec(1,iaa), sdjf%lsmname ) 
     374#if defined key_mpi3 
     375         CALL lbc_lnk_nc_multi( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) 
     376#else 
    374377         CALL lbc_lnk( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) 
     378#endif 
    375379      ELSE                                          ! default case 
    376380         ! C1D case: If product of spatial dimensions == ipk, then x,y are of 
     
    383387         IF( lk_c1d .AND. lmoor ) THEN 
    384388            CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, dta_alias(2,2,:), sdjf%nrec(1,iaa) )   ! jpdom_unknown -> no lbc_lnk 
     389#if defined key_mpi3 
     390            CALL lbc_lnk_nc_multi( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy ) 
     391#else 
    385392            CALL lbc_lnk( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy ) 
     393#endif 
    386394         ELSE 
    387395            CALL iom_get( sdjf%num,  jpdom_global, sdjf%clvar, dta_alias(:,:,:), sdjf%nrec(1,iaa),   & 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/geo2ocean.F90

    r13295 r13807  
    272272      ! =========================== ! 
    273273      !           ! lateral boundary cond.: T-, U-, V-, F-pts, sgn 
     274#if defined key_mpi3 
     275      CALL lbc_lnk_nc_multi( 'geo2ocean', gcost, 'T', -1.0_wp, gsint, 'T', -1.0_wp, gcosu, 'U', -1.0_wp, gsinu, 'U', -1.0_wp, &  
     276                      &   gcosv, 'V', -1.0_wp, gsinv, 'V', -1.0_wp, gcosf, 'F', -1.0_wp, gsinf, 'F', -1.0_wp  ) 
     277#else 
    274278      CALL lbc_lnk_multi( 'geo2ocean', gcost, 'T', -1.0_wp, gsint, 'T', -1.0_wp, gcosu, 'U', -1.0_wp, gsinu, 'U', -1.0_wp, &  
    275279                      &   gcosv, 'V', -1.0_wp, gsinv, 'V', -1.0_wp, gcosf, 'F', -1.0_wp, gsinf, 'F', -1.0_wp  ) 
     280#endif 
    276281      ! 
    277282   END SUBROUTINE angle 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcwave.F90

    r13630 r13807  
    199199      ENDIF 
    200200 
     201#if defined key_mpi3 
     202      CALL lbc_lnk_nc_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 
     203#else 
    201204      CALL lbc_lnk_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 
     205#endif 
    202206 
    203207      ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traatf.F90

    r13295 r13807  
    110110#endif 
    111111      !                                              ! local domain boundaries  (T-point, unchanged sign) 
     112#if defined key_mpi3 
     113      CALL lbc_lnk_nc_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 
     114#else 
    112115      CALL lbc_lnk_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 
     116#endif 
    113117      ! 
    114118      IF( ln_bdy )   CALL bdy_tra( kt, Kbb, pts, Kaa )  ! BDY open boundaries 
     
    156160         ENDIF 
    157161         ! 
     162#if defined key_mpi3 
     163         CALL lbc_lnk_nc_multi( 'traatf', pts(:,:,:,jp_tem,Kbb) , 'T', 1.0_wp, pts(:,:,:,jp_sal,Kbb) , 'T', 1.0_wp, & 
     164                  &                    pts(:,:,:,jp_tem,Kmm) , 'T', 1.0_wp, pts(:,:,:,jp_sal,Kmm) , 'T', 1.0_wp, & 
     165                  &                    pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp  ) 
     166#else 
    158167         CALL lbc_lnk_multi( 'traatf', pts(:,:,:,jp_tem,Kbb) , 'T', 1.0_wp, pts(:,:,:,jp_sal,Kbb) , 'T', 1.0_wp, & 
    159168                  &                    pts(:,:,:,jp_tem,Kmm) , 'T', 1.0_wp, pts(:,:,:,jp_sal,Kmm) , 'T', 1.0_wp, & 
    160169                  &                    pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp  ) 
     170#endif 
    161171         ! 
    162172      ENDIF      
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/lib_fortran.F90

    r13571 r13807  
    229229         ENDIF 
    230230      END_2D 
     231#if defined key_mpi3 
     232      CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     233#else 
    231234      CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     235#endif 
    232236      ! no need for 2nd exchange when nn_hls = 2 
    233237      IF( nn_hls /= 2 ) THEN 
     
    248252            IF( MOD(mjg(jpj-2), 3) == 0 )   p2d(:,jpj-1) = p2d(:,  jpj) 
    249253         ENDIF 
     254#if defined key_mpi3 
     255         CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     256#else 
    250257         CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     258#endif 
    251259      ENDIF 
    252260 
     
    284292         END_2D 
    285293      END DO 
     294#if defined key_mpi3 
     295      CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     296#else 
    286297      CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     298#endif 
    287299      ! no need for 2nd exchange when nn_hls = 2 
    288300      IF( nn_hls /= 2 ) THEN 
     
    303315            IF( MOD(mjg(jpj-2), 3) == 0 )   p3d(:,jpj-1,:) = p3d(:,  jpj,:) 
    304316         ENDIF 
     317#if defined key_mpi3 
     318         CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     319#else 
    305320         CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     321#endif 
    306322      ENDIF 
    307323 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/tests/CANAL/MY_SRC/domvvl.F90

    r13632 r13807  
    725725               &                           + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    726726         END_3D 
     727#if defined key_mpi3 
     728         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     729#else 
    727730         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     731#endif 
    728732         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    729733         ! 
     
    734738               &                           + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    735739         END_3D 
     740#if defined key_mpi3 
     741         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     742#else 
    736743         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     744#endif 
    737745         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    738746         ! 
     
    744752               &                           + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    745753         END_3D 
     754#if defined key_mpi3 
     755         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     756#else 
    746757         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     758#endif 
    747759         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    748760         ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/tests/VORTEX/MY_SRC/domvvl.F90

    r13632 r13807  
    725725               &                           + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    726726         END_3D 
     727#if defined key_mpi3 
     728         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     729#else 
    727730         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     731#endif 
    728732         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    729733         ! 
     
    734738               &                           + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    735739         END_3D 
     740#if defined key_mpi3 
     741         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     742#else 
    736743         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     744#endif 
    737745         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    738746         ! 
     
    744752               &                           + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    745753         END_3D 
     754#if defined key_mpi3 
     755         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     756#else 
    746757         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     758#endif 
    747759         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    748760         ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/tests/VORTEX/MY_SRC/usrdef_zgr.F90

    r12740 r13807  
    190190      z2d(:,:) = REAL( jpkm1 , wp )          ! flat bottom 
    191191      ! 
     192#if defined key_mpi3 
     193      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     194#else 
    192195      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     196#endif 
    193197      ! 
    194198      k_bot(:,:) = NINT( z2d(:,:) )          ! =jpkm1 over the ocean point, =0 elsewhere 
Note: See TracChangeset for help on using the changeset viewer.