include file: PARCOMM 3
*IF DEF,MPP                                                                PARCOMM.2      
!========================== COMDECK PARCOMM ====================           PARCOMM.3      
!                                                                          PARCOMM.4      
! *** NOTE : This comdeck requires comdeck PARPARM to be *CALLed           PARCOMM.5      
!            first.                                                        PARCOMM.6      
!                                                                          PARCOMM.7      
!   Description:                                                           PARCOMM.8      
!                                                                          PARCOMM.9      
!   This COMDECK contains COMMON blocks for the MPP-UM                     PARCOMM.10     
!                                                                          PARCOMM.11     
!                                                                          PARCOMM.12     
!   Two COMMON blocks are defined:                                         PARCOMM.13     
!     i)  UM_PARVAR holds information required by the                      PARCOMM.14     
!         Parallel Unified Model itself                                    PARCOMM.15     
!     ii) MP_PARVAR holds information required by the interface to         PARCOMM.16     
!         the Message Passing Software used by the PUM                     PARCOMM.17     
!                                                                          PARCOMM.18     
!   Key concepts used in the inline documentation are:                     PARCOMM.19     
!     o GLOBAL data - the entire data domain processed by the UM           PARCOMM.20     
!     o LOCAL data - the fragment of the GLOBAL data which is              PARCOMM.21     
!       stored by this particular process                                  PARCOMM.22     
!     o PERSONAL data - the fragment of the LOCAL data which is            PARCOMM.23     
!       updated by this particular process                                 PARCOMM.24     
!     o HALO data - a halo around the PERSONAL data which forms            PARCOMM.25     
!       the LOCAL data                                                     PARCOMM.26     
!                                                                          PARCOMM.27     
!     Acronyms used:                                                       PARCOMM.28     
!     LPG - Logical Process Grid, this is the grid of logical              PARCOMM.29     
!           processors; each logical processor handles one of the          PARCOMM.30     
!           decomposed parts of the global data. It does not               PARCOMM.31     
!           necessarily represent a physical grid of processors.           PARCOMM.32     
!                                                                          PARCOMM.33     
!   History:                                                               PARCOMM.34     
!                                                                          PARCOMM.35     
!   4.1      27/1/96  New comdeck based on second section of               PARCOMM.36     
!                     old PARVARS.   P.Burton                              PARCOMM.37     
!   4.2     19/08/96  Removed some unused variables, and added             GPB0F402.193    
!                     current_decomp_type variable to allow use            GPB0F402.194    
!                     of flexible decompositions.                          GPB0F402.195    
!                     Added nproc_max to indicate the max. number          GPB0F402.196    
!                     of processors used for MPP-UM                        GPB0F402.197    
!                                                      P.Burton            GPB0F402.198    
!                                                                          PARCOMM.38     
! -------------------- COMMON BLOCKS --------------------                  PARCOMM.39     
!                                                                          PARCOMM.40     
! =======================================================                  PARCOMM.41     
! Common block for the Parallel Unified Model                              PARCOMM.42     
! =======================================================                  PARCOMM.43     
                                                                           PARCOMM.44     
      INTEGER                                                              PARCOMM.45     
     &   first_comp_pe       ! top left pe in LPG                          PARCOMM.46     
     &,  last_comp_pe        ! bottom right pe in LPG                      PARCOMM.47     
     &,  current_decomp_type ! current decomposition type                  GPB0F402.199    
     &,  Offx                ! halo size in EW direction                   PARCOMM.49     
     &,  Offy                ! halo size in NS direction                   PARCOMM.50     
     &,  glsize(Ndim_max)    ! global data size                            PARCOMM.51     
     &,  lasize(Ndim_max)    ! local data size                             PARCOMM.52     
     &,  blsizep(Ndim_max)   ! personal p data area                        PARCOMM.53     
     &,  blsizeu(Ndim_max)   ! personal u data area                        PARCOMM.54     
     &,  datastart(Ndim_max) ! position of personal data in global data    PARCOMM.55     
     &                       !   (in terms of standard Fortran array       PARCOMM.56     
     &                       !    notation)                                PARCOMM.57     
     &,  gridsize(Ndim_max)  ! size of the LPG in each dimension           PARCOMM.58     
     &,  gridpos(Ndim_max)   ! position of this process in the LPG         PARCOMM.59     
!                            ! 0,1,2,...,nproc_x-1 etc.                    PARCOMM.60     
                                                                           PARCOMM.61     
      LOGICAL                                                              PARCOMM.62     
     &    atbase             ! process at the bottom of the LPG            PARCOMM.63     
     &,   attop              ! process at the top of the LPG               PARCOMM.64     
     &,   atleft             ! process at the left of the LPG              PARCOMM.65     
     &,   atright            ! process at the right of the LPG             PARCOMM.66     
! NB: None of the above logicals are mutually exclusive                    PARCOMM.67     
                                                                           PARCOMM.68     
      COMMON /UM_PARVAR/                                                   PARCOMM.69     
     &                  first_comp_pe,last_comp_pe                         PARCOMM.70     
     &,                 current_decomp_type,Offx, Offy                     GPB0F402.203    
     &,                 glsize,lasize,blsizep,blsizeu                      PARCOMM.72     
     &,                 datastart,gridsize,gridpos                         PARCOMM.73     
     &,                 atbase,attop,atleft,atright                        PARCOMM.74     
                                                                           PARCOMM.75     
! =======================================================                  PARCOMM.76     
! Common block for the Message Passing Software                            PARCOMM.77     
! =======================================================                  PARCOMM.78     
                                                                           PARCOMM.79     
      INTEGER                                                              PARCOMM.80     
     &  bound(Ndim_max)           ! type of boundary (cyclic or static)    PARCOMM.81     
     &                            !  in each direction                     PARCOMM.82     
     &, g_lasize(Ndim_max,0:maxproc)                                       PARCOMM.83     
!                                 ! global copy of local data size         PARCOMM.84     
     &, g_blsizep(Ndim_max,0:maxproc)                                      PARCOMM.85     
!                                 ! global copy of personal p data area    PARCOMM.86     
     &, g_blsizeu(Ndim_max,0:maxproc)                                      PARCOMM.87     
!                                 ! global copy of personal u data area    PARCOMM.88     
     &, g_datastart(Ndim_max,0:maxproc)                                    PARCOMM.89     
!                                 ! global copy of datastart               PARCOMM.90     
     &, g_gridpos(Ndim_max,0:maxproc)                                      PARCOMM.91     
!                                 ! global copy of gridpos                 PARCOMM.92     
     &, nproc                     ! number of processors in current        GPB0F402.204    
!                                 ! decomposition                          GPB0F402.205    
     &, nproc_max                 ! maximum number of processors           GPB0F402.206    
     &, nproc_x                   ! number of processors in x-direction    PARCOMM.94     
     &, nproc_y                   ! number of processors in y-direction    PARCOMM.95     
     &, mype                      ! number of this processor               PARCOMM.96     
     &                            !  (starting from 0)                     PARCOMM.97     
     &, neighbour(4)              ! array with the tids of the four        PARCOMM.98     
     &                            ! neighbours in the horizontal plane     PARCOMM.99     
     &, gc_proc_row_group         ! GID for procs along a proc row         PARCOMM.100    
     &, gc_proc_col_group         ! GID for procs along a proc col         PARCOMM.101    
     &, gc_all_proc_group         ! GID for all procs                      PARCOMM.102    
                                                                           PARCOMM.103    
      COMMON /MP_PARVAR/                                                   PARCOMM.104    
     &                  bound                                              PARCOMM.105    
     &,                 g_lasize,g_blsizep,g_blsizeu                       PARCOMM.106    
     &,                 g_datastart,g_gridpos                              PARCOMM.107    
     &,                 nproc,nproc_max,nproc_x,nproc_y,mype               GPB0F402.207    
     &,                 neighbour,gc_proc_row_group                        PARCOMM.109    
     &,                 gc_proc_col_group, gc_all_proc_group               PARCOMM.110    
                                                                           PARCOMM.111    
                                                                           PARCOMM.112    
                                                                           PARCOMM.117    
! ---------------------- End of comdeck PARCOMM -----------------------    PARCOMM.118    
*ENDIF                                                                     PARCOMM.119