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