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 branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/OBS – NEMO

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/OBS/mpp_map.F90 @ 2335

Last change on this file since 2335 was 2335, checked in by gm, 14 years ago

v3.3beta: Suppress obsolete key_mpp_shmem

  • Property svn:keywords set to Id
File size: 2.8 KB
Line 
1MODULE mpp_map
2   !!======================================================================
3   !!                       ***  MODULE mpp_mpa  ***
4   !! NEMOVAR: MPP global grid point mapping to processors
5   !!======================================================================
6   !! History :  2.0  ! 2007-08  (K. Mogensen)  Original code
7   !!----------------------------------------------------------------------
8
9   !!----------------------------------------------------------------------
10   !!  mppmap_init : Initialize mppmap.
11   !!----------------------------------------------------------------------
12   USE par_kind, ONLY :   wp            ! Precision variables
13   USE par_oce , ONLY :   jpi, jpj      ! Ocean parameters
14   USE dom_oce , ONLY :   mig, mjg, nldi, nlei, nldj, nlej, narea   ! Ocean space and time domain variables
15#if defined key_mpp_mpi
16   USE lib_mpp, ONLY :   mpi_comm_opa   ! MPP library
17#endif
18   USE in_out_manager   ! I/O manager
19
20   IMPLICIT NONE
21   PRIVATE
22
23   PUBLIC ::   mppmap_init, mppmap   !: ???
24
25   INTEGER, DIMENSION(:,:), ALLOCATABLE ::   mppmap   ! ???
26
27   !!----------------------------------------------------------------------
28   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
29   !! $Id$
30   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
31   !!----------------------------------------------------------------------
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      !!----------------------------------------------------------------------
46      INTEGER, DIMENSION(:,:), ALLOCATABLE ::   imppmap   !
47#if defined key_mpp_mpi
48      INTEGER :: ierr
49INCLUDE 'mpif.h'
50#endif
51      !!----------------------------------------------------------------------
52
53      ALLOCATE( &
54         & mppmap(jpiglo,jpjglo) &
55         & )
56
57      ! Initialize local imppmap
58
59      ALLOCATE( &
60         & imppmap(jpiglo,jpjglo) &
61         & )
62      imppmap(:,:) = 0
63
64      ! Setup local grid points
65      imppmap(mig(nldi):mig(nlei),mjg(nldj):mjg(nlej)) = narea 
66     
67      ! Get global data
68
69#if defined key_mpp_mpi
70
71      ! Call the MPI library to find the max across processors
72      CALL mpi_allreduce( imppmap, mppmap, jpiglo*jpjglo, mpi_integer,   &
73         &                mpi_max, mpi_comm_opa, ierr )
74#else     
75     
76      ! No MPP: Just copy the data
77      mppmap(:,:) = imppmap(:,:)
78#endif
79      !
80   END SUBROUTINE mppmap_init
81
82   !!======================================================================
83END MODULE mpp_map
Note: See TracBrowser for help on using the repository browser.