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.
mpp_map.F90 in NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/OBS – NEMO

source: NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/OBS/mpp_map.F90 @ 14644

Last change on this file since 14644 was 14644, checked in by sparonuz, 3 years ago

Merge trunk -r14642:HEAD

  • Property svn:keywords set to Id
File size: 2.9 KB
RevLine 
[2128]1MODULE mpp_map
2   !!======================================================================
3   !!                       ***  MODULE mpp_mpa  ***
4   !! NEMOVAR: MPP global grid point mapping to processors
5   !!======================================================================
[2335]6   !! History :  2.0  ! 2007-08  (K. Mogensen)  Original code
7   !!----------------------------------------------------------------------
[2128]8
9   !!----------------------------------------------------------------------
[2335]10   !!  mppmap_init : Initialize mppmap.
[2128]11   !!----------------------------------------------------------------------
[2335]12   USE par_kind, ONLY :   wp            ! Precision variables
[13286]13   USE par_oce , ONLY :   jpi, jpj, Nis0, Nie0, Njs0, Nje0   ! Ocean parameters
14   USE dom_oce , ONLY :   mig, mjg, narea                    ! Ocean space and time domain variables
[14644]15#if ! defined key_mpi_off
[13286]16   USE lib_mpp , ONLY :   mpi_comm_oce   ! MPP library
[2128]17#endif
[2335]18   USE in_out_manager   ! I/O manager
[2128]19
20   IMPLICIT NONE
21   PRIVATE
22
[2335]23   PUBLIC ::   mppmap_init, mppmap   !: ???
[2128]24
[2335]25   INTEGER, DIMENSION(:,:), ALLOCATABLE ::   mppmap   ! ???
[2128]26
[2287]27   !!----------------------------------------------------------------------
[9598]28   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
[2287]29   !! $Id$
[10068]30   !! Software governed by the CeCILL license (see ./LICENSE)
[2287]31   !!----------------------------------------------------------------------
[2128]32CONTAINS
33
34   SUBROUTINE mppmap_init
35      !!----------------------------------------------------------------------
36      !!               ***  ROUTINE mppmap_init ***
37      !!         
38      !! ** Purpose : Setup a global map of processor rank for all gridpoints
39      !!
40      !! ** Method  : MPI all reduce.
41      !!
42      !! ** Action  : This does only work for MPI.
43      !!
44      !! References : http://www.mpi-forum.org
45      !!----------------------------------------------------------------------
[2335]46      INTEGER, DIMENSION(:,:), ALLOCATABLE ::   imppmap   !
[14644]47#if ! defined key_mpi_off
[2128]48      INTEGER :: ierr
[2363]49
[2249]50INCLUDE 'mpif.h'
[2128]51#endif
[2335]52      !!----------------------------------------------------------------------
[2128]53
[4245]54      IF (.NOT. ALLOCATED(mppmap)) THEN
55         ALLOCATE( &
56            & mppmap(jpiglo,jpjglo) &
57            & )
58      ENDIF
[2128]59      ! Initialize local imppmap
60
61      ALLOCATE( &
62         & imppmap(jpiglo,jpjglo) &
63         & )
64      imppmap(:,:) = 0
65
[9523]66!      ! Setup local grid points
[13286]67      imppmap(mig(1):mig(jpi),mjg(1):mjg(jpj)) = narea
[2128]68     
69      ! Get global data
70
[14644]71#if ! defined key_mpi_off
[2128]72
73      ! Call the MPI library to find the max across processors
[2335]74      CALL mpi_allreduce( imppmap, mppmap, jpiglo*jpjglo, mpi_integer,   &
[9570]75         &                mpi_max, mpi_comm_oce, ierr )
[2128]76#else     
77     
[2335]78      ! No MPP: Just copy the data
[2128]79      mppmap(:,:) = imppmap(:,:)
80#endif
[2335]81      !
[2128]82   END SUBROUTINE mppmap_init
83
[2335]84   !!======================================================================
[2128]85END MODULE mpp_map
Note: See TracBrowser for help on using the repository browser.