| 1 | edhill | 1.1 | C $Header: /u/gcmpack/MITgcm/pkg/ex3/EX3_TOPOLOGY.h,v 1.3 2006/02/06 21:09:54 edhill Exp $ | 
| 2 |  |  | C $Name:  $ | 
| 3 |  |  |  | 
| 4 |  |  | C     Tile topology data | 
| 5 |  |  | C | 
| 6 |  |  | C     .           N | 
| 7 |  |  | C     .    C4     E3     C3 | 
| 8 |  |  | C     .      +---------+ | 
| 9 |  |  | C     .      |         | | 
| 10 |  |  | C     .      |         | | 
| 11 |  |  | C     . W E4 |         | E2  E | 
| 12 |  |  | C     .      |         | | 
| 13 |  |  | C     .      |         | | 
| 14 |  |  | C     .      +---------+ | 
| 15 |  |  | C     .    C1     E1     C2 | 
| 16 |  |  | C     .           S | 
| 17 |  |  | C | 
| 18 |  |  | C     =====  "Global" Topology  ===== | 
| 19 |  |  | C | 
| 20 |  |  | C     The following "global" variables define a tile topology and are | 
| 21 |  |  | C     invariant with respect to the model decomposition (that is, the | 
| 22 |  |  | C     sets of threads & MPI processes) used. | 
| 23 |  |  | C | 
| 24 |  |  | C     ex3_affm           :: The eight possible 2x2 affine matricies | 
| 25 |  |  | C     .                     for vector rotations and permutations | 
| 26 |  |  | C     .                     between two orthogonal, adjacent grids | 
| 27 |  |  | C | 
| 28 |  |  | C     ex3_t_num          :: total number of tiles | 
| 29 |  |  | C     ex3_t_iproc(t)     :: MPI process ID for each tile | 
| 30 |  |  | C     ex3_t_ori(t)       :: tile orientation (1=rh, -1=lh) | 
| 31 |  |  | C     ex3_t_nxy(t)       :: number of X,Y cells in each tile | 
| 32 |  |  | C | 
| 33 |  |  | C     ex3_f_ind(t)       :: face index for each tile | 
| 34 |  |  | C     ex3_f_nxy(2,t)     :: face number of X,Y cells | 
| 35 |  |  | C     ex3_f_oij(2,t)     :: face i,j offsets (0 for face==tile) | 
| 36 |  |  | C     . | 
| 37 |  |  | C     ex3_e_n(t)         :: number of E-neighbors | 
| 38 |  |  | C     ex3_e_iam(e,t)     :: E-neighbor affine matrix index | 
| 39 |  |  | C     ex3_e_iopt(e,t)    :: E-neighbor global tile index for the | 
| 40 |  |  | C     .                       opposing tile | 
| 41 |  |  | C     ex3_e_iope(e,t)    :: E-neighbor edge index for the | 
| 42 |  |  | C     .                       opposing tile | 
| 43 |  |  | C     ex3_e_dat(k,d,e,t) :: E-neighbor information for each tile | 
| 44 |  |  | C     .                           /  1  -->  edge-alignment flag: | 
| 45 |  |  | C     .                           |            0    : seam is NOT along | 
| 46 |  |  | C     .                           |                   this direction | 
| 47 |  |  | C     .                           |            1,-1 : interior is +,- | 
| 48 |  |  | C     .                           |                   and use OLx,OLy | 
| 49 |  |  | C     .                       k = |            -ow- : use width value | 
| 50 |  |  | C     .                           |                   from 3 below | 
| 51 |  |  | C     .                           |  2  -->  first cell index or the | 
| 52 |  |  | C     .                           |            abutting *inside* cell | 
| 53 |  |  | C     .                           |  3  -->  last  cell index or the | 
| 54 |  |  | C     .                           |            exchange width as a | 
| 55 |  |  | C     .                           \            distance and direction | 
| 56 |  |  | C     .                       d =   1,2 -->  i,j directions | 
| 57 |  |  | C     .                       e =  E-neighbor index | 
| 58 |  |  | C     .                       t =  tile index | 
| 59 |  |  | C | 
| 60 |  |  | C     ex3_c_n(4,t)       :: number of C-neighbors at each corner | 
| 61 |  |  | C     ex3_c_ind(k,4,t)   :: tile index for each C-neighbor | 
| 62 |  |  | C     ex3_c_num(k,4,t)   :: tile corner number for each C-neighbor | 
| 63 |  |  | C     .                        1  -->  SW | 
| 64 |  |  | C     .                        2  -->  SE  (per above diagram) | 
| 65 |  |  | C     .                        3  -->  NE | 
| 66 |  |  | C     .                        4  -->  NW | 
| 67 |  |  | C     ex3_c_ori(k,4,t)   :: tile orientation for each C-neighbor | 
| 68 |  |  | C | 
| 69 |  |  | C | 
| 70 |  |  | C     =====  "Local" Topology  ===== | 
| 71 |  |  | C | 
| 72 |  |  | C     The following "local" variables are dependent upon the particular | 
| 73 |  |  | C     model decomposition (threads & MPI processes) used. | 
| 74 |  |  | C | 
| 75 |  |  | C     ex3_p_ntile        :: number of tiles associated with this | 
| 76 |  |  | C     .                       (eg. MPI) process | 
| 77 |  |  | C     ex3_p_itile(m)     :: global indicies of the tiles associated | 
| 78 |  |  | C     .                       with this MPI process [myBxLo..myBxHi] | 
| 79 |  |  | C | 
| 80 |  |  | C     ex3_e_iopt_il(e,t) :: tile locality flag: | 
| 81 |  |  | C     .                       -1: tile is not in local memory | 
| 82 |  |  | C     .                        1: local tile index ("bibj") | 
| 83 |  |  |  | 
| 84 |  |  | INTEGER | 
| 85 |  |  | &     ex3_affm(4,8) | 
| 86 |  |  | INTEGER | 
| 87 |  |  | &     ex3_t_num, | 
| 88 |  |  | &     ex3_t_iproc(EX3_MAX_TILES), | 
| 89 |  |  | &     ex3_t_ori(EX3_MAX_TILES), | 
| 90 |  |  | &     ex3_t_nxy(2,EX3_MAX_TILES), | 
| 91 |  |  | &     ex3_f_ind(EX3_MAX_TILES), | 
| 92 |  |  | &     ex3_f_nxy(2,EX3_MAX_TILES), | 
| 93 |  |  | &     ex3_f_oij(2,EX3_MAX_TILES), | 
| 94 |  |  | &     ex3_e_n(EX3_MAX_TILES), | 
| 95 |  |  | &     ex3_e_iam(EX3_MAX_E_NBS,EX3_MAX_TILES), | 
| 96 |  |  | &     ex3_e_iopt(EX3_MAX_E_NBS,EX3_MAX_TILES), | 
| 97 |  |  | &     ex3_e_iope(EX3_MAX_E_NBS,EX3_MAX_TILES), | 
| 98 |  |  | &     ex3_e_dat(3,2,EX3_MAX_E_NBS,EX3_MAX_TILES), | 
| 99 |  |  | &     ex3_c_n(4,EX3_MAX_TILES), | 
| 100 |  |  | &     ex3_c_ind(EX3_MAX_C_NBS,4,EX3_MAX_TILES), | 
| 101 |  |  | &     ex3_c_num(EX3_MAX_C_NBS,4,EX3_MAX_TILES), | 
| 102 |  |  | &     ex3_c_ori(EX3_MAX_C_NBS,4,EX3_MAX_TILES) | 
| 103 |  |  |  | 
| 104 |  |  | COMMON / EX3_TOPO_GLOBAL / | 
| 105 |  |  | &     ex3_affm, | 
| 106 |  |  | &     ex3_t_num, | 
| 107 |  |  | &     ex3_t_iproc, | 
| 108 |  |  | &     ex3_t_ori, | 
| 109 |  |  | &     ex3_t_nxy, | 
| 110 |  |  | &     ex3_f_ind, | 
| 111 |  |  | &     ex3_f_nxy, | 
| 112 |  |  | &     ex3_f_oij, | 
| 113 |  |  | &     ex3_e_n, | 
| 114 |  |  | &     ex3_e_iam, | 
| 115 |  |  | &     ex3_e_iopt, | 
| 116 |  |  | &     ex3_e_iope, | 
| 117 |  |  | &     ex3_e_dat, | 
| 118 |  |  | &     ex3_c_n, | 
| 119 |  |  | &     ex3_c_ind, | 
| 120 |  |  | &     ex3_c_num, | 
| 121 |  |  | &     ex3_c_ori | 
| 122 |  |  |  | 
| 123 |  |  | INTEGER | 
| 124 |  |  | &     ex3_p_ntile, | 
| 125 |  |  | &     ex3_p_itile(EX3_MAX_TILES), | 
| 126 |  |  | &     ex3_e_iopt_il(EX3_MAX_E_NBS,EX3_MAX_TILES) | 
| 127 |  |  |  | 
| 128 |  |  | COMMON / EX3_TOPO_LOCAL / | 
| 129 |  |  | &     ex3_p_ntile, | 
| 130 |  |  | &     ex3_p_itile, | 
| 131 |  |  | &     ex3_e_iopt_il | 
| 132 |  |  |  | 
| 133 |  |  |  | 
| 134 |  |  | CEH3 ;;; Local Variables: *** | 
| 135 |  |  | CEH3 ;;; mode:fortran *** | 
| 136 |  |  | CEH3 ;;; End: *** |