Changeset 418 for trunk/SRC


Ignore:
Timestamp:
01/19/10 10:02:48 (14 years ago)
Author:
smasson
Message:

bugfix+updgrade lbcorca.pro

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SRC/Interpolation/lbcorca.pro

    r371 r418  
    2121; @keyword CORRECTION {optional}{type=0 or 1}{default=0} 
    2222; 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 
    2326; 
    2427; @returns 
     
    4346; 
    4447;- 
    45 FUNCTION lbcorca, arr, grid, psign, VERBOSE=verbose, CORRECTION=correction 
     48FUNCTION lbcorca, arr, grid, psign, VERBOSE=verbose, CORRECTION=correction, STOP = stop 
    4649; 
    4750  compile_opt idl2, strictarrsubs 
     
    5659; east-west periodicity checks 
    5760 
    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 
    6067    IF keyword_set(correction) THEN arr[0, *, *, *] = arr[jpi-2, *, *, *] 
    6168    res = res + 1  
    6269  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 
    6576    IF keyword_set(correction) THEN arr[jpi-1, *, *, *] = arr[1, *, *, *] 
    6677    res = res + 1  
     
    7384      CASE grid OF 
    7485        '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 
    7792            IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[1:jpi-1, jpj-3, *, *]) 
    7893            res = res + 1  
    7994          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, *, *]) 
    83102            res = res + 1  
    84103          ENDIF 
    85104        END 
    86105        '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 
    89112            IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[0:jpi-2, jpj-3, *, *]) 
    90113            res = res + 1  
    91114          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, *, *]) 
    95122            res = res + 1  
    96123          ENDIF 
    97124        END 
    98125        '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 
    101132            IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[1:jpi-1, jpj-4, *, *]) 
    102133            res = res + 1  
    103134          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, *, *]) 
    107142            res = res + 1  
    108143          ENDIF 
    109144        END 
    110145        '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 
    113152            IF keyword_set(correction) THEN arr[1:jpi-1, jpj-1, *, *] = psign * reverse(arr[0:jpi-2, jpj-4, *, *]) 
    114153            res = res + 1  
    115154          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, *, *]) 
    119162            res = res + 1  
    120163          ENDIF 
     
    126169      CASE grid OF 
    127170        '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 
    130177            IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[1:jpi-2, jpj-2, *, *]) 
    131178            res = res + 1  
     
    133180        END 
    134181        '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 
    137188            IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[0:jpi-3, jpj-2, *, *]) 
    138189            res = res + 1  
     
    140191        END 
    141192        '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 
    144199            IF keyword_set(correction) THEN arr[1:jpi-2, jpj-1, *, *] = psign * reverse(arr[1:jpi-2, jpj-3, *, *]) 
    145200            res = res + 1  
    146201          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 
    147211        END 
    148212        '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 
    151219            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, *, *]) 
    152229            res = res + 1  
    153230          ENDIF 
Note: See TracChangeset for help on using the changeset viewer.