- Timestamp:
- 01/19/10 10:02:48 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Interpolation/lbcorca.pro
r371 r418 21 21 ; @keyword CORRECTION {optional}{type=0 or 1}{default=0} 22 22 ; Activate to correct the wrong lateral boundary condition in arr (in that case arr is changed) 23 ; 24 ; @keyword STOP {optional}{type=0 or 1}{default=0} 25 ; Activate to stop within the programm when getting a wrong lateral boundaries condition 23 26 ; 24 27 ; @returns … … 43 46 ; 44 47 ;- 45 FUNCTION lbcorca, arr, grid, psign, VERBOSE=verbose, CORRECTION=correction 48 FUNCTION lbcorca, arr, grid, psign, VERBOSE=verbose, CORRECTION=correction, STOP = stop 46 49 ; 47 50 compile_opt idl2, strictarrsubs … … 56 59 ; east-west periodicity checks 57 60 58 IF array_equal(arr[0, *, *, *], arr[jpi-2, *, *, *]) NE 1 THEN BEGIN 59 IF keyword_set(verbose) THEN print, 'east-west periodicity (1) error' 61 tst = arr[0, *, *, *] - arr[jpi-2, *, *, *] 62 nberr = total(tst NE 0) 63 IF nberr NE 0 THEN BEGIN 64 IF keyword_set(verbose) THEN print, grid + 'east-west periodicity (1) : '+strtrim(nberr, 1)+' errors' 65 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 66 IF keyword_set(stop) THEN stop 60 67 IF keyword_set(correction) THEN arr[0, *, *, *] = arr[jpi-2, *, *, *] 61 68 res = res + 1 62 69 ENDIF 63 IF array_equal(arr[1, *, *, *], arr[jpi-1, *, *, *]) NE 1 THEN BEGIN 64 IF keyword_set(verbose) THEN print, 'east-west periodicity (2) error' 70 tst = arr[1, *, *, *] - arr[jpi-1, *, *, *] 71 nberr = total(tst NE 0) 72 IF nberr NE 0 THEN BEGIN 73 IF keyword_set(verbose) THEN print, grid + 'east-west periodicity (2) : '+strtrim(nberr, 1)+' errors' 74 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 75 IF keyword_set(stop) THEN stop 65 76 IF keyword_set(correction) THEN arr[jpi-1, *, *, *] = arr[1, *, *, *] 66 77 res = res + 1 … … 73 84 CASE grid OF 74 85 'T':BEGIN 75 IF array_equal(arr[1:jpi-1, jpj-1, *, *], psign * reverse(arr[1:jpi-1, jpj-3, *, *])) NE 1 THEN BEGIN 76 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) error' 86 tst = arr[1:jpi-1, jpj-1, *, *] - psign * reverse(arr[1:jpi-1, jpj-3, *, *]) 87 nberr = total(tst NE 0) 88 IF nberr NE 0 THEN BEGIN 89 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) : '+strtrim(nberr, 1)+' errors' 90 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 91 IF keyword_set(stop) THEN stop 77 92 IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[1:jpi-1, jpj-3, *, *]) 78 93 res = res + 1 79 94 ENDIF 80 IF array_equal(arr[1:jpi/2, jpj-2, *, *], psign * reverse(arr[jpi/2:jpi-1, jpj-2, *, *])) NE 1 THEN BEGIN 81 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) error' 82 IF keyword_set(correction) THEN arr[1:jpi/2, jpj-2, *, *] = psign * reverse(arr[jpi/2:jpi-1, jpj-2, *, *]) 95 tst = arr[1:jpi/2, jpj-2, *, *] - psign * reverse(arr[jpi/2:jpi-1, jpj-2, *, *]) 96 nberr = total(tst NE 0) 97 IF nberr NE 0 THEN BEGIN 98 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 99 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 100 IF keyword_set(stop) THEN stop 101 IF keyword_set(correction) THEN arr[jpi/2:jpi-1, jpj-2, *, *] = psign * reverse(arr[1:jpi/2, jpj-2, *, *]) 83 102 res = res + 1 84 103 ENDIF 85 104 END 86 105 'U':BEGIN 87 IF array_equal(arr[1:jpi-1, jpj-1, *, *], psign * reverse(arr[0:jpi-2, jpj-3, *, *])) NE 1 THEN BEGIN 88 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) error' 106 tst = arr[1:jpi-1, jpj-1, *, *] - psign * reverse(arr[0:jpi-2, jpj-3, *, *]) 107 nberr = total(tst NE 0) 108 IF nberr NE 0 THEN BEGIN 109 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) : '+strtrim(nberr, 1)+' errors' 110 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 111 IF keyword_set(stop) THEN stop 89 112 IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[0:jpi-2, jpj-3, *, *]) 90 113 res = res + 1 91 114 ENDIF 92 IF array_equal(arr[1:jpi/2, jpj-2, *, *], psign * reverse(arr[jpi/2-1:jpi-2, jpj-2, *, *])) NE 1 THEN BEGIN 93 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) error' 94 IF keyword_set(correction) THEN arr[1:jpi/2, jpj-2, *, *] = psign * reverse(arr[jpi/2-1:jpi-2, jpj-2, *, *]) 115 tst = arr[1:jpi/2, jpj-2, *, *] - psign * reverse(arr[jpi/2-1:jpi-2, jpj-2, *, *]) 116 nberr = total(tst NE 0) 117 IF nberr NE 0 THEN BEGIN 118 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 119 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 120 IF keyword_set(stop) THEN stop 121 IF keyword_set(correction) THEN arr[jpi/2-1:jpi-2, jpj-2, *, *] = psign * reverse(arr[1:jpi/2, jpj-2, *, *]) 95 122 res = res + 1 96 123 ENDIF 97 124 END 98 125 'V':BEGIN 99 IF array_equal(arr[1:jpi-1, jpj-1, *, *], psign * reverse(arr[1:jpi-1, jpj-4, *, *])) NE 1 THEN BEGIN 100 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) error' 126 tst = arr[1:jpi-1, jpj-1, *, *] - psign * reverse(arr[1:jpi-1, jpj-4, *, *]) 127 nberr = total(tst NE 0) 128 IF nberr NE 0 THEN BEGIN 129 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) : '+strtrim(nberr, 1)+' errors' 130 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 131 IF keyword_set(stop) THEN stop 101 132 IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[1:jpi-1, jpj-4, *, *]) 102 133 res = res + 1 103 134 ENDIF 104 IF array_equal(arr[1:jpi/2, jpj-2, *, *], psign * reverse(arr[jpi/2:jpi-1, jpj-3, *, *])) NE 1 THEN BEGIN 105 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) error' 106 IF keyword_set(correction) THEN arr[1:jpi/2, jpj-2, *, *] = psign * reverse(arr[jpi/2:jpi-1, jpj-3, *, *]) 135 tst = arr[1:jpi-1, jpj-2, *, *] - psign * reverse(arr[1:jpi-1, jpj-3, *, *]) 136 nberr = total(tst NE 0) 137 IF nberr NE 0 THEN BEGIN 138 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 139 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 140 IF keyword_set(stop) THEN stop 141 IF keyword_set(correction) THEN arr[1:jpi-1, jpj-2, *, *] = psign * reverse(arr[1:jpi-1, jpj-3, *, *]) 107 142 res = res + 1 108 143 ENDIF 109 144 END 110 145 'F':BEGIN 111 IF array_equal(arr[1:jpi-1, jpj-1, *, *], psign * reverse(arr[0:jpi-2, jpj-4, *, *])) NE 1 THEN BEGIN 112 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) error' 146 tst = arr[1:jpi-1, jpj-1, *, *] - psign * reverse(arr[0:jpi-2, jpj-4, *, *]) 147 nberr = total(tst NE 0) 148 IF nberr NE 0 THEN BEGIN 149 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) : '+strtrim(nberr, 1)+' errors' 150 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 151 IF keyword_set(stop) THEN stop 113 152 IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[0:jpi-2, jpj-4, *, *]) 114 153 res = res + 1 115 154 ENDIF 116 IF array_equal(arr[1:jpi/2, jpj-2, *, *], psign * reverse(arr[jpi/2-1:jpi-2, jpj-3, *, *])) NE 1 THEN BEGIN 117 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) error' 118 IF keyword_set(correction) THEN arr[1:jpi/2, jpj-2, *, *] = psign * reverse(arr[jpi/2-1:jpi-2, jpj-3, *, *]) 155 tst = arr[1:jpi-1, jpj-2, *, *] - psign * reverse(arr[0:jpi-2, jpj-3, *, *]) 156 nberr = total(tst NE 0) 157 IF nberr NE 0 THEN BEGIN 158 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 159 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 160 IF keyword_set(stop) THEN stop 161 IF keyword_set(correction) THEN arr[1:jpi-1, jpj-2, *, *] = psign * reverse(arr[0:jpi-2, jpj-3, *, *]) 119 162 res = res + 1 120 163 ENDIF … … 126 169 CASE grid OF 127 170 'T':BEGIN 128 IF array_equal(arr[1:jpi-2, jpj-1, *, *], psign * reverse(arr[1:jpi-2, jpj-2, *, *])) NE 1 THEN BEGIN 129 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity error' 171 tst = arr[1:jpi-2, jpj-1, *, *] - psign * reverse(arr[1:jpi-2, jpj-2, *, *]) 172 nberr = total(tst NE 0) 173 IF nberr NE 0 THEN BEGIN 174 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity : '+strtrim(nberr, 1)+' errors' 175 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 176 IF keyword_set(stop) THEN stop 130 177 IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[1:jpi-2, jpj-2, *, *]) 131 178 res = res + 1 … … 133 180 END 134 181 'U':BEGIN 135 IF array_equal(arr[1:jpi-2, jpj-1, *, *], psign * reverse(arr[0:jpi-3, jpj-2, *, *])) NE 1 THEN BEGIN 136 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity error' 182 tst = arr[1:jpi-2, jpj-1, *, *] - psign * reverse(arr[0:jpi-3, jpj-2, *, *]) 183 nberr = total(tst NE 0) 184 IF nberr NE 0 THEN BEGIN 185 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity : '+strtrim(nberr, 1)+' errors' 186 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 187 IF keyword_set(stop) THEN stop 137 188 IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[0:jpi-3, jpj-2, *, *]) 138 189 res = res + 1 … … 140 191 END 141 192 'V':BEGIN 142 IF array_equal(arr[1:jpi-2, jpj-1, *, *], psign * reverse(arr[1:jpi-2, jpj-3, *, *])) NE 1 THEN BEGIN 143 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity error' 193 tst = arr[1:jpi-2, jpj-1, *, *] - psign * reverse(arr[1:jpi-2, jpj-3, *, *]) 194 nberr = total(tst NE 0) 195 IF nberr NE 0 THEN BEGIN 196 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (1) : '+strtrim(nberr, 1)+' errors' 197 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 198 IF keyword_set(stop) THEN stop 144 199 IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[1:jpi-2, jpj-3, *, *]) 145 200 res = res + 1 146 201 ENDIF 202 tst = arr[jpi/2:jpi-1, jpj-2, *, *] - psign * reverse(arr[0:jpi/2-1, jpj-2, *, *]) 203 nberr = total(tst NE 0) 204 IF nberr NE 0 THEN BEGIN 205 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 206 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 207 IF keyword_set(stop) THEN stop 208 IF keyword_set(correction) THEN arr[jpi/2:jpi-1, jpj-2, *, *] = psign * reverse(arr[0:jpi/2-1, jpj-2, *, *]) 209 res = res + 1 210 ENDIF 147 211 END 148 212 'F':BEGIN 149 IF array_equal(arr[1:jpi-2, jpj-1, *, *], psign * reverse(arr[0:jpi-3, jpj-3, *, *])) NE 1 THEN BEGIN 150 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity error' 213 tst = arr[1:jpi-2, jpj-1, *, *] - psign * reverse(arr[0:jpi-3, jpj-3, *, *]) 214 nberr = total(tst NE 0) 215 IF nberr NE 0 THEN BEGIN 216 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 217 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 218 IF keyword_set(stop) THEN stop 151 219 IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[0:jpi-3, jpj-3, *, *]) 220 res = res + 1 221 ENDIF 222 tst = arr[jpi/2:jpi-2, jpj-2, *, *] - psign * reverse(arr[0:jpi/2-2, jpj-2, *, *]) 223 nberr = total(tst NE 0) 224 IF nberr NE 0 THEN BEGIN 225 IF keyword_set(verbose) THEN print, grid + 'grid: north pole periodicity (2) : '+strtrim(nberr, 1)+' errors' 226 IF keyword_set(verbose) AND nberr LE 10 THEN print, ' located on : ', where(tst NE 0) 227 IF keyword_set(stop) THEN stop 228 IF keyword_set(correction) THEN arr[jpi/2:jpi-2, jpj-2, *, *] = psign * reverse(arr[0:jpi/2-2, jpj-2, *, *]) 152 229 res = res + 1 153 230 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.