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 2587 for branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/mpp_tam.F90 – NEMO

Ignore:
Timestamp:
2011-02-15T12:58:59+01:00 (13 years ago)
Author:
vidard
Message:

refer to ticket #798

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/mpp_tam.F90

    r1885 r2587  
    4747      & mpp_sum_reals,      & 
    4848      & mpp_global_or,      & 
    49       & mpp_global_max_real 
     49      & mpp_global_max_real, & 
     50      & mpp_global_max_real2 
    5051 
    5152CONTAINS 
     
    151152   SUBROUTINE mpp_global_max_real( zin, zout ) 
    152153      !!---------------------------------------------------------------------- 
    153       !!               ***  ROUTINE mpp_global_or *** 
     154      !!               ***  ROUTINE mpp_global_max_real *** 
    154155      !!           
    155156      !! ** Purpose : Copy a local zin array to a global array and 
     
    213214   END SUBROUTINE mpp_global_max_real 
    214215 
     216 
     217   SUBROUTINE mpp_global_max_real2( zin, zout ) 
     218      !!---------------------------------------------------------------------- 
     219      !!               ***  ROUTINE mpp_global_max_real2 *** 
     220      !!           
     221      !! ** Purpose : Copy a local zin array to a global array and 
     222      !!              apply the "max" operation for all elements in 
     223      !!              a global (jpiglo,jpjglo) array across processors 
     224      !! 
     225      !! ** Method  : MPI allreduce 
     226      !! 
     227      !! ** Action  : This does only work for MPI.  
     228      !!              It does not work for SHMEM. 
     229      !! 
     230      !! References : http://www.mpi-forum.org 
     231      !! 
     232      !! History : 
     233      !!        !  08-01  (K. Mogensen)  Original code 
     234      !!---------------------------------------------------------------------- 
     235 
     236      !! * Arguments 
     237      REAL(wp), DIMENSION(jpi,jpj), INTENT(IN) :: & 
     238         & zin 
     239      REAL(wp), DIMENSION(jpiglo,jpjglo), INTENT(OUT) :: & 
     240         & zout 
     241      !! * Local declarations 
     242      INTEGER :: & 
     243         & ierr 
     244#if defined key_mpp_mpi 
     245#include <mpif.h> 
     246      REAL(wp), DIMENSION(:,:), ALLOCATABLE :: & 
     247         & zcp 
     248      INTEGER :: & 
     249         & ji, & 
     250         & jj 
     251       
     252      ! Copy data for input to MPI 
     253 
     254      ALLOCATE( & 
     255         & zcp(jpiglo,jpjglo) & 
     256         & ) 
     257      zcp(:,:) = -1e+38 
     258      DO jj = nldj, nlej 
     259         DO ji = nldi, nlei 
     260            zcp(mig(ji),mjg(jj)) = zin(ji,jj) 
     261         ENDDO 
     262      ENDDO 
     263 
     264      ! Call the MPI library to find the coast lines globally 
     265 
     266      CALL mpi_allreduce( zcp, zout, jpiglo*jpjglo, mpivar, & 
     267         &                mpi_max, mpi_comm_opa, ierr ) 
     268 
     269      DEALLOCATE( & 
     270         & zcp & 
     271         & ) 
     272 
     273#elif defined key_mpp_shmem 
     274#error "Only MPI support for MPP in NEMOVAR" 
     275#else 
     276      zout(:,:) = zin(:,:) 
     277#endif 
     278       
     279   END SUBROUTINE mpp_global_max_real2 
     280    
    215281END MODULE mpp_tam 
Note: See TracChangeset for help on using the changeset viewer.