Changeset 12807 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/do_loop_substitute.h90
- Timestamp:
- 2020-04-23T15:14:45+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/do_loop_substitute.h90
r12760 r12807 50 50 ! includes the possibility of strides for which an extra set of DO_3DS macros are defined. 51 51 ! 52 ! In the following definitions the inner PE domain is defined by start indices of (_ nIs_0, nJs_0) and end indices of (nIe_0, nJs_0)53 ! The following macros are defined just below: _ nIs_0, nJs_0, _nIs_1, nJs_1, _nIe_0, nJs_0, _nIe_1, nJe_1.52 ! In the following definitions the inner PE domain is defined by start indices of (_Nis0, Njs0) and end indices of (Nie0, Njs0) 53 ! The following macros are defined just below: _Nis0, Njs0, _Nis1, Njs1, _Nie0, Njs0, _Nie1, Nje1. 54 54 ! These names are chosen to, hopefully, avoid any future, unintended matches elsewhere in the code. 55 55 ! … … 58 58 ! -0- fortran code : defined in par_oce.F90 the folowwing valiables : 59 59 !!# 60 !!# INTEGER, PUBLIC :: nIs_0, nIs_1, nIs_2 !: start I-index (_0: no halo, _1 & _2: 1 & 2-halos)61 !!# INTEGER, PUBLIC :: nIe_0, nIe_1, nIe_2 !: end I-index (_0: no halo, _1 & _2: 1 & 2-halos)62 !!# INTEGER, PUBLIC :: nJs_0, nJs_1, nJs_2 !: start J-index (_0: no halo, _1 & _2: 1 & 2-halos)63 !!# INTEGER, PUBLIC :: nJe_0, nJe_1, nJe_2 !: end J-index (_0: no halo, _1 & _2: 1 & 2-halos)60 !!# INTEGER, PUBLIC :: Nis0, Nis1, Nis2 !: start I-index (_0: no halo, _1 & _2: 1 & 2-halos) 61 !!# INTEGER, PUBLIC :: Nie0, Nie1, Nie2 !: end I-index (_0: no halo, _1 & _2: 1 & 2-halos) 62 !!# INTEGER, PUBLIC :: Njs0, Njs1, Njs2 !: start J-index (_0: no halo, _1 & _2: 1 & 2-halos) 63 !!# INTEGER, PUBLIC :: Nje0, Nje1, Nje2 !: end J-index (_0: no halo, _1 & _2: 1 & 2-halos) 64 64 !!# 65 65 ! -1- fortran code put in mppinit.F90 : … … 76 76 !!# IF( nn_hls == 1 ) THEN !* halo size of 1 77 77 !!# ! 78 !!# nIs_0 = 2 ; nIs_1 = 1 ; nIs_2 = nIs_179 !!# nJs_0 = nIs_0 ; nJs_1 = nIs_1 ; nJs_2 = nIs_180 !!# ! 81 !!# nIe_0 = jpi-1 ; nJe_1 = jpi ; nIe_2 = nIe_182 !!# nJe_0 = jpj-1 ; nJe_1 = jpj-1 ; nJe_2 = nIe_178 !!# Nis0 = 2 ; Nis1 = 1 ; Nis2 = Nis1 79 !!# Njs0 = Nis0 ; Njs1 = Nis1 ; Njs2 = Nis1 80 !!# ! 81 !!# Nie0 = jpi-1 ; Nje1 = jpi ; Nie2 = Nie1 82 !!# Nje0 = jpj-1 ; Nje1 = jpj-1 ; Nje2 = Nie1 83 83 !!# ! 84 84 !!# ELSEIF( nn_hls == 2 ) THEN !* halo size of 2 85 85 !!# ! 86 !!# nIs_0 = 3 ; nIs_1 = 2 ; nIs_2 = 187 !!# nJs_0 = nIs_0 ; nJs_1 = nIs_1 ; nJs_2 = nIs_288 !!# ! 89 !!# nIe_0 = jpi-2 ; nJe_1 = jpi-1 ; nIe_2 = jpi90 !!# nJe_0 = jpj-2 ; nJe_1 = jpj-1 ; nJe_2 = jpj86 !!# Nis0 = 3 ; Nis1 = 2 ; Nis2 = 1 87 !!# Njs0 = Nis0 ; Njs1 = Nis1 ; Njs2 = Nis2 88 !!# ! 89 !!# Nie0 = jpi-2 ; Nje1 = jpi-1 ; Nie2 = jpi 90 !!# Nje0 = jpj-2 ; Nje1 = jpj-1 ; Nje2 = jpj 91 91 !!# ! 92 92 !!# ELSE !* unexpected halo size … … 103 103 ! 2D loops with 1 104 104 105 #define DO_2D_00_00 DO jj = nJs_0, nJe_0 ; DO ji = nIs_0, nIe_0106 #define DO_2D_00_01 DO jj = nJs_0, nJe_0 ; DO ji = nIs_0, nIe_1107 #define DO_2D_00_10 DO jj = nJs_0, nJe_0 ; DO ji = nIs_1, nIe_0108 #define DO_2D_00_11 DO jj = nJs_0, nJe_0 ; DO ji = nIs_1, nIe_1109 110 #define DO_2D_01_00 DO jj = nJs_0, nJe_1 ; DO ji = nIs_0, nIe_0111 #define DO_2D_01_01 DO jj = nJs_0, nJe_1 ; DO ji = nIs_0, nIe_1112 #define DO_2D_01_10 DO jj = nJs_0, nJe_1 ; DO ji = nIs_1, nIe_0113 #define DO_2D_01_11 DO jj = nJs_0, nJe_1 ; DO ji = nIs_1, nIe_1114 115 #define DO_2D_10_00 DO jj = nJs_1, nJe_0 ; DO ji = nIs_0, nIe_0116 #define DO_2D_10_01 DO jj = nJs_1, nJe_0 ; DO ji = nIs_0, nIe_1 ! not used ?117 #define DO_2D_10_10 DO jj = nJs_1, nJe_0 ; DO ji = nIs_1, nIe_0118 #define DO_2D_10_11 DO jj = nJs_1, nJe_0 ; DO ji = nIs_1, nIe_1119 120 #define DO_2D_11_00 DO jj = nJs_1, nJe_1 ; DO ji = nIs_0, nIe_0121 #define DO_2D_11_01 DO jj = nJs_1, nJe_1 ; DO ji = nIs_0, nIe_1122 #define DO_2D_11_10 DO jj = nJs_1, nJe_1 ; DO ji = nIs_1, nIe_0123 #define DO_2D_11_11 DO jj = nJs_1, nJe_1 ; DO ji = nIs_1, nIe_1105 #define DO_2D_00_00 DO jj = Njs0, Nje0 ; DO ji = Nis0, Nie0 106 #define DO_2D_00_01 DO jj = Njs0, Nje0 ; DO ji = Nis0, Nie1 107 #define DO_2D_00_10 DO jj = Njs0, Nje0 ; DO ji = Nis1, Nie0 108 #define DO_2D_00_11 DO jj = Njs0, Nje0 ; DO ji = Nis1, Nie1 109 110 #define DO_2D_01_00 DO jj = Njs0, Nje1 ; DO ji = Nis0, Nie0 111 #define DO_2D_01_01 DO jj = Njs0, Nje1 ; DO ji = Nis0, Nie1 112 #define DO_2D_01_10 DO jj = Njs0, Nje1 ; DO ji = Nis1, Nie0 113 #define DO_2D_01_11 DO jj = Njs0, Nje1 ; DO ji = Nis1, Nie1 114 115 #define DO_2D_10_00 DO jj = Njs1, Nje0 ; DO ji = Nis0, Nie0 116 #define DO_2D_10_01 DO jj = Njs1, Nje0 ; DO ji = Nis0, Nie1 ! not used ? 117 #define DO_2D_10_10 DO jj = Njs1, Nje0 ; DO ji = Nis1, Nie0 118 #define DO_2D_10_11 DO jj = Njs1, Nje0 ; DO ji = Nis1, Nie1 119 120 #define DO_2D_11_00 DO jj = Njs1, Nje1 ; DO ji = Nis0, Nie0 121 #define DO_2D_11_01 DO jj = Njs1, Nje1 ; DO ji = Nis0, Nie1 122 #define DO_2D_11_10 DO jj = Njs1, Nje1 ; DO ji = Nis1, Nie0 123 #define DO_2D_11_11 DO jj = Njs1, Nje1 ; DO ji = Nis1, Nie1 124 124 125 125 ! 2D loops with 1 following a 2/3D loop with 2 126 126 127 #define DO_2D_00_01nxt2 DO jj = nJs_0 , nJe_0 ; DO ji = nIs_0 , nIe_1nxt2128 #define DO_2D_00_10nxt2 DO jj = nJs_0 , nJe_0 ; DO ji = nIs_1nxt2, nIe_0129 #define DO_2D_00_11nxt2 DO jj = nJs_0 , nJe_0 ; DO ji = nIs_1nxt2, nIe_1nxt2130 131 #define DO_2D_01_00nxt2 DO jj = nJs_0 , nJe_1nxt2 ; DO ji = nIs_0 , nIe_0132 #define DO_2D_01_01nxt2 DO jj = nJs_0 , nJe_1nxt2 ; DO ji = nIs_0 , nIe_1nxt2133 #define DO_2D_01_10nxt2 DO jj = nJs_0 , nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_0134 #define DO_2D_01_11nxt2 DO jj = nJs_0 , nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_1nxt2135 136 #define DO_2D_10_00nxt2 DO jj = nJs_1nxt2, nJe_0 ; DO ji = nIs_0 , nIe_0137 #define DO_2D_10_01nxt2 DO jj = nJs_1nxt2, nJe_0 ; DO ji = nIs_0 , nIe_1nxt2 ! not used ?138 #define DO_2D_10_10nxt2 DO jj = nJs_1nxt2, nJe_0 ; DO ji = nIs_1nxt2, nIe_0139 #define DO_2D_10_11nxt2 DO jj = nJs_1nxt2, nJe_0 ; DO ji = nIs_1nxt2, nIe_1nxt2140 141 #define DO_2D_11_00nxt2 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_0 , nIe_0142 #define DO_2D_11_01nxt2 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_0 , nIe_1nxt2143 #define DO_2D_11_10nxt2 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_0144 #define DO_2D_11_11nxt2 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_1nxt2127 #define DO_2D_00_01nxt2 DO jj = Njs0 , Nje0 ; DO ji = Nis0 , Nie1nxt2 128 #define DO_2D_00_10nxt2 DO jj = Njs0 , Nje0 ; DO ji = Nis1nxt2, Nie0 129 #define DO_2D_00_11nxt2 DO jj = Njs0 , Nje0 ; DO ji = Nis1nxt2, Nie1nxt2 130 131 #define DO_2D_01_00nxt2 DO jj = Njs0 , Nje1nxt2 ; DO ji = Nis0 , Nie0 132 #define DO_2D_01_01nxt2 DO jj = Njs0 , Nje1nxt2 ; DO ji = Nis0 , Nie1nxt2 133 #define DO_2D_01_10nxt2 DO jj = Njs0 , Nje1nxt2 ; DO ji = Nis1nxt2, Nie0 134 #define DO_2D_01_11nxt2 DO jj = Njs0 , Nje1nxt2 ; DO ji = Nis1nxt2, Nie1nxt2 135 136 #define DO_2D_10_00nxt2 DO jj = Njs1nxt2, Nje0 ; DO ji = Nis0 , Nie0 137 #define DO_2D_10_01nxt2 DO jj = Njs1nxt2, Nje0 ; DO ji = Nis0 , Nie1nxt2 ! not used ? 138 #define DO_2D_10_10nxt2 DO jj = Njs1nxt2, Nje0 ; DO ji = Nis1nxt2, Nie0 139 #define DO_2D_10_11nxt2 DO jj = Njs1nxt2, Nje0 ; DO ji = Nis1nxt2, Nie1nxt2 140 141 #define DO_2D_11_00nxt2 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis0 , Nie0 142 #define DO_2D_11_01nxt2 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis0 , Nie1nxt2 143 #define DO_2D_11_10nxt2 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis1nxt2, Nie0 144 #define DO_2D_11_11nxt2 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis1nxt2, Nie1nxt2 145 145 146 146 ! 2D loops with 2 147 147 148 #define DO_2D_11_12 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_2149 #define DO_2D_11_21 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_2 , nIe_1nxt2150 #define DO_2D_11_22 DO jj = nJs_1nxt2, nJe_1nxt2 ; DO ji = nIs_2 , nIe_2151 152 #define DO_2D_12_11 DO jj = nJs_1nxt2, nJe_2 ; DO ji = nIs_1nxt2, nIe_1nxt2153 #define DO_2D_12_12 DO jj = nJs_1nxt2, nJe_2 ; DO ji = nIs_1nxt2, nIe_2154 #define DO_2D_12_21 DO jj = nJs_1nxt2, nJe_2 ; DO ji = nIs_2 , nIe_1nxt2155 #define DO_2D_12_22 DO jj = nJs_1nxt2, nJe_2 ; DO ji = nIs_2 , nIe_2156 157 #define DO_2D_21_11 DO jj = nJs_2 , nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_1nxt2158 #define DO_2D_21_12 DO jj = nJs_2 , nJe_1nxt2 ; DO ji = nIs_1nxt2, nIe_2 ! not used ?159 #define DO_2D_21_21 DO jj = nJs_2 , nJe_1nxt2 ; DO ji = nIs_2 , nIe_1nxt2160 #define DO_2D_21_22 DO jj = nJs_2 , nJe_1nxt2 ; DO ji = nIs_2 , nIe_2148 #define DO_2D_11_12 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis1nxt2, Nie2 149 #define DO_2D_11_21 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis2 , Nie1nxt2 150 #define DO_2D_11_22 DO jj = Njs1nxt2, Nje1nxt2 ; DO ji = Nis2 , Nie2 151 152 #define DO_2D_12_11 DO jj = Njs1nxt2, Nje2 ; DO ji = Nis1nxt2, Nie1nxt2 153 #define DO_2D_12_12 DO jj = Njs1nxt2, Nje2 ; DO ji = Nis1nxt2, Nie2 154 #define DO_2D_12_21 DO jj = Njs1nxt2, Nje2 ; DO ji = Nis2 , Nie1nxt2 155 #define DO_2D_12_22 DO jj = Njs1nxt2, Nje2 ; DO ji = Nis2 , Nie2 156 157 #define DO_2D_21_11 DO jj = Njs2 , Nje1nxt2 ; DO ji = Nis1nxt2, Nie1nxt2 158 #define DO_2D_21_12 DO jj = Njs2 , Nje1nxt2 ; DO ji = Nis1nxt2, Nie2 ! not used ? 159 #define DO_2D_21_21 DO jj = Njs2 , Nje1nxt2 ; DO ji = Nis2 , Nie1nxt2 160 #define DO_2D_21_22 DO jj = Njs2 , Nje1nxt2 ; DO ji = Nis2 , Nie2 161 161 162 #define DO_2D_22_11 DO jj = nJs_2 , nJe_2 ; DO ji = nIs_1nxt2, nIe_1nxt2163 #define DO_2D_22_12 DO jj = nJs_2 , nJe_2 ; DO ji = nIs_1nxt2, nIe_2164 #define DO_2D_22_21 DO jj = nJs_2 , nJe_2 ; DO ji = nIs_2 , nIe_1nxt2165 #define DO_2D_22_22 DO jj = nJs_2 , nJe_2 ; DO ji = nIs_2 , nIe_2162 #define DO_2D_22_11 DO jj = Njs2 , Nje2 ; DO ji = Nis1nxt2, Nie1nxt2 163 #define DO_2D_22_12 DO jj = Njs2 , Nje2 ; DO ji = Nis1nxt2, Nie2 164 #define DO_2D_22_21 DO jj = Njs2 , Nje2 ; DO ji = Nis2 , Nie1nxt2 165 #define DO_2D_22_22 DO jj = Njs2 , Nje2 ; DO ji = Nis2 , Nie2 166 166 167 167 ! 3D loops with 1
Note: See TracChangeset
for help on using the changeset viewer.