Ignore:
Timestamp:
04/28/06 14:18:03 (18 years ago)
Author:
pinsard
Message:

upgrade of GRILLE/Utilities according to cerbere.lodyc.jussieu.fr: /usr/home/smasson/SAXO_RD/ : files

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/ToBeReviewed/GRILLE/grille.pro

    r12 r13  
    1313; 
    1414; CALLING SEQUENCE: 
    15 ;  grille,mask,glam,gphi,gdep,nx,ny,nz,premierx,premiery,premierz,dernierx,derniery,dernierz,e1,e2,e3 
     15;  grille,mask,glam,gphi,gdep,nx,ny,nz,firstx,firsty,firstz,lastx,lasty,lastz,e1,e2,e3 
    1616; 
    1717; INPUTS:rien. ATTENTION les choix de la grille se fait a partir de la 
     
    3232;         /NOTRI: utile seulement qd TRI est active. dans ce cas 
    3333;         grille retourne -1 ds la variable tri meme si la variable du 
    34 ;         common triangles est definie et differente de -1 
    35 ; 
    36 ; OUTPUTS:mask,glam,gphi,gdep,nx,ny,nz,premierx,premiery,premierz, 
    37 ;         dernierx,derniery,dernierz,e1,e2,e3 
     34;         common triangles_list est definie et differente de -1 
     35; 
     36;         /WDEPTH: to specify that the field is at W depth instad of T  
     37;         depth (automatically activated if vargrid eq 'W') 
     38; 
     39; OUTPUTS:mask,glam,gphi,gdep,nx,ny,nz,firstx,firsty,firstz, 
     40;         lastx,lasty,lastz,e1,e2,e3 
    3841; 
    3942;         pour leur definition cf domdef et la gestion des sous 
     
    4346;         mask, glam et gphi il suffit de taper grille, mask, glam, gphi 
    4447; 
    45 ; COMMON BLOCKS: 
    46 ;       common.pro      congridseb.pro 
     48; COMMON BLOCKS: cm_4mesh and cm_4data 
    4749; 
    4850; SIDE EFFECTS: utilise la variable globale vargird 
     
    5961;------------------------------------------------------------ 
    6062;------------------------------------------------------------ 
    61 pro grille, mask, glam, gphi, gdep, nx, ny,nz,premierx,premiery,premierz,dernierx, derniery, dernierz, e1,e2,e3, TRI = tri, NOTRI = notri, TOUT = tout, FORPLT = forplt, _EXTRA = ex 
    62 @common 
    63    tempsun = systime(1)         ; pour key_performance 
    64 ;------------------------------------------------------------ 
    65    if keyword_set(tout) then begin 
    66       oldboite = [lon1, lon2, lat1, lat2, prof1, prof2] 
    67       domdef, grille = vargrid, _EXTRA = ex 
    68    endif 
    69    tempdeux = systime(1)        ; pour key_performance =2 
    70    CASE 1 OF  
    71 ;------------------------------------------------------------ 
    72 ; grille T 
    73 ;------------------------------------------------------------ 
    74       vargrid eq 'OPAPTDHT' or vargrid eq 'OPAPT3DT' $ 
    75        or vargrid eq 'T': begin 
     63pro grille, mask, glam, gphi, gdep, nx, ny, nz, firstx, firsty, firstz, lastx, lasty, lastz, e1, e2, e3, TRI = tri, NOTRI = notri, TOUT = tout, FORPLT = forplt, IFPLTZ = ifpltz, WDEPTH = wdepth, _EXTRA = ex 
     64;------------------------------------------------------------ 
     65; include commons 
     66@cm_4mesh 
     67@cm_4data 
     68  IF NOT keyword_set(key_forgetold) THEN BEGIN 
     69@updatenew 
     70  ENDIF 
     71;--------------------- 
     72  tempsun = systime(1)          ; pour key_performance 
     73;------------------------------------------------------------ 
     74  vargrid = strupcase(strmid(vargrid,0,/reverse_offset)) 
     75; 
     76  if vargrid eq 'W' then wdepth = 1 
     77  if keyword_set(tout) then begin 
     78    savedbox = 1b 
     79    saveboxparam, 'boxparam4grille.dat' 
     80    domdef, gridtype = vargrid, _EXTRA = ex 
     81  endif 
     82  tempdeux = systime(1)         ; pour key_performance =2 
     83;------------------------------------------------------------ 
     84;------------------------------------------------------------ 
     85  IF keyword_set(wdepth) THEN BEGIN 
     86    firstz = firstzw  
     87    lastz = lastzw 
     88    nz = nzw 
     89  ENDIF ELSE BEGIN 
     90    firstz = firstzt 
     91    lastz = lastzt 
     92    nz = nzt 
     93  ENDELSE 
     94;------------------------------------------------------------ 
     95;------------------------------------------------------------ 
     96  CASE 1 OF  
     97;------------------------------------------------------------ 
     98; grille T and W 
     99;------------------------------------------------------------ 
     100    vargrid eq 'T' OR vargrid eq 'W' : begin 
    76101;scalaires 
    77          nx=nxt 
    78          ny=nyt 
    79          nz=nzt 
    80          premierx = premierxt 
    81          premiery = premieryt 
    82          premierz = premierzt 
    83          dernierx = dernierxt 
    84          derniery = dernieryt 
    85          dernierz = dernierzt 
     102      nx = nxt 
     103      ny = nyt 
     104      firstx = firstxt 
     105      firsty = firstyt 
     106      lastx = lastxt 
     107      lasty = lastyt 
    86108;vecteurs 2d 
    87          glam=glamt[premierx:dernierx, premiery:derniery] 
    88          gphi=gphit[premierx:dernierx, premiery:derniery] 
    89          e1  =e1t[premierx:dernierx, premiery:derniery] 
    90          e2  =e2t[premierx:dernierx, premiery:derniery] 
     109      IF n_elements(glam) NE 1 THEN glam = glamt[firstx:lastx, firsty:lasty] 
     110      IF n_elements(gphi) NE 1 THEN gphi = gphit[firstx:lastx, firsty:lasty] 
     111      IF n_elements(e1) NE 1 THEN e1 = e1t[firstx:lastx, firsty:lasty] 
     112      IF n_elements(e2) NE 1 THEN e2 = e2t[firstx:lastx, firsty:lasty] 
    91113;vecteurs 3d 
    92          mask=tmask[premierx:dernierx, premiery:derniery, premierz:dernierz] 
    93       end 
    94 ;------------------------------------------------------------ 
    95 ; grille W 
    96 ;------------------------------------------------------------ 
    97       vargrid eq 'OPAPT3DW' or vargrid eq 'W': begin 
     114      IF keyword_set(forplt) THEN mask = tmask[firstx:lastx, firsty:lasty, firstz] $ 
     115      ELSE IF n_elements(mask) NE 1 THEN mask = tmask[firstx:lastx, firsty:lasty, firstz:lastz] 
     116    end 
     117;------------------------------------------------------------ 
     118; grille U 
     119;------------------------------------------------------------ 
     120    vargrid eq 'U': begin 
    98121;scalaires 
    99          nx=nxt 
    100          ny=nyt 
    101          nz=nzw 
    102          premierx = premierxt 
    103          premiery = premieryt 
    104          premierz = premierzw 
    105          dernierx = dernierxt 
    106          derniery = dernieryt 
    107          dernierz = dernierzw 
     122      nx = nxu 
     123      ny = nyu 
     124      firstx = firstxu 
     125      firsty = firstyu 
     126      lastx = lastxu 
     127      lasty = lastyu 
    108128;vecteurs 2d 
    109          terre = where(tmask[*, *, 0] EQ 0) 
    110          glam=glamt[premierx:dernierx, premiery:derniery] 
    111          gphi=gphit[premierx:dernierx, premiery:derniery] 
    112          e1  =e1t[premierx:dernierx, premiery:derniery] 
    113          e2  =e2t[premierx:dernierx, premiery:derniery] 
     129      IF n_elements(glam) NE 1 THEN glam = glamu[firstx:lastx, firsty:lasty] 
     130      IF n_elements(gphi) NE 1 THEN gphi = gphiu[firstx:lastx, firsty:lasty] 
     131      if keyword_set(forplt) then BEGIN 
     132        mask = 1b-tmask[firstx:lastx, firsty:lasty, firstz] 
     133        eastboarder = mask-shift(mask, 1, 0)*mask 
     134        westboarder = mask-shift(mask, -1, 0)*mask 
     135        if key_periodic NE 1 OR nx NE jpi then westboarder[nx-1, *] = 0b 
     136        tmp1 = shift(eastboarder, 0, 1) 
     137        tmp1[*, 0] = 0b 
     138        tmp2 = shift(eastboarder, 0, -1) 
     139        tmp2[*, ny-1] = 0b 
     140        add = (temporary(tmp1)+temporary(tmp2))*(1b-eastboarder)*(1b-temporary(westboarder)) 
     141        eastboarder = temporary(eastboarder)+temporary(add) 
     142        tmp1 = (mask+shift(mask, 0, -1)+shift(mask, 0, 1)) NE 1b 
     143        tmp1[*, ny-1] = 1b 
     144        tmp1[*, 0] = 1b 
     145        tmp2 = (mask+shift(mask, -1, 0)+shift(mask, 1, 0)) NE 1b 
     146        if key_periodic NE 1 OR nx NE jpi then begin 
     147          tmp2[nx-1, *] = 1b 
     148          tmp2[0, *] = 0b 
     149        endif 
     150        no1 = temporary(tmp1)*temporary(tmp2) 
     151        tmp = temporary(eastboarder)*temporary(no1)*mask 
     152        mask[0:nx-2, *] = 0b  
     153        tmp = temporary(tmp)+temporary(mask) 
     154        tmp = where(tmp GE 1) 
     155        if tmp[0] NE -1 then begin 
     156          glam[tmp] = (glamt[firstx:lastx, firsty:lasty])[tmp] 
     157          gphi[tmp] = (gphit[firstx:lastx, firsty:lasty])[tmp] 
     158        endif 
     159      ENDIF 
     160      IF n_elements(e1) NE 1 THEN e1  = e1u[firstx:lastx, firsty:lasty] 
     161      IF n_elements(e2) NE 1 THEN e2  = e2u[firstx:lastx, firsty:lasty] 
    114162;vecteurs 3d 
    115          mask=tmask[premierx:dernierx, premiery:derniery, premierz:dernierz] 
    116       end 
    117 ;------------------------------------------------------------ 
    118 ; grille U 
    119 ;------------------------------------------------------------ 
    120       vargrid eq 'OPAPTDHU' or vargrid eq 'OPAPT3DU' $ 
    121        or vargrid eq 'U': begin 
     163      IF keyword_set(forplt) THEN mask = (umask())[firstx:lastx, firsty:lasty, firstz] $ 
     164      ELSE IF n_elements(mask) NE 1 THEN mask = (umask())[firstx:lastx, firsty:lasty, firstz:lastz] 
     165    end 
     166;------------------------------------------------------------ 
     167; grille V 
     168;------------------------------------------------------------ 
     169    vargrid eq 'OPAPTDHV' or vargrid eq 'OPAPT3DV' $ 
     170      or vargrid eq 'V': begin 
    122171;scalaires 
    123          nx=nxu 
    124          ny=nyu 
    125          nz=nzt 
    126          premierx = premierxu 
    127          premiery = premieryu 
    128          premierz = premierzt 
    129          dernierx = dernierxu 
    130          derniery = dernieryu 
    131          dernierz = dernierzt 
     172      nx = nxv 
     173      ny = nyv 
     174      firstx = firstxv 
     175      firsty = firstyv 
     176      lastx = lastxv 
     177      lasty = lastyv 
    132178;vecteurs 2d 
    133          glam=glamu[premierx:dernierx, premiery:derniery] 
    134          gphi=gphiu[premierx:dernierx, premiery:derniery] 
    135          if keyword_set(forplt) then BEGIN  
    136             mask = tmask[premierx:dernierx, premiery:derniery, niveau-1] 
    137             terre = where(mask EQ 0) 
    138             if terre[0] NE -1 then begin 
    139                glam[terre] = (glamt[premierx:dernierx, premiery:derniery])[terre] 
    140                gphi[terre] = (gphit[premierx:dernierx, premiery:derniery])[terre] 
    141             endif 
    142          ENDIF 
    143          e1  =e1u[premierx:dernierx, premiery:derniery] 
    144          e2  =e2u[premierx:dernierx, premiery:derniery] 
     179      IF n_elements(glam) NE 1 THEN glam = glamv[firstx:lastx, firsty:lasty] 
     180      IF n_elements(gphi) NE 1 THEN gphi = gphiv[firstx:lastx, firsty:lasty] 
     181      if keyword_set(forplt) then BEGIN  
     182        mask = 1b-tmask[firstx:lastx, firsty:lasty, firstz] 
     183        northboarder = mask-shift(mask, 0, 1)*mask 
     184        southboarder = mask-shift(mask, 0, -1)*mask 
     185        southboarder[*, ny-1] = 0b 
     186        tmp1 = shift(northboarder, -1, 0) 
     187        if key_periodic NE 1 OR nx NE jpi then tmp1[nx-1, *] = 0b 
     188        tmp2 = shift(northboarder, 1, 0) 
     189        if key_periodic NE 1 OR nx NE jpi then tmp2[0, *] = 0b 
     190        add = (temporary(tmp1)+temporary(tmp2))*(1b-northboarder)*(1b-southboarder) 
     191        northboarder = temporary(northboarder)+temporary(add) 
     192        tmp1 = (mask+shift(mask, 0, -1)+shift(mask, 0, 1)) NE 1b 
     193        tmp1[*, ny-1] = 1b 
     194        tmp1[*, 0] = 0b 
     195        tmp2 = (mask+shift(mask, -1, 0)+shift(mask, 1, 0)) NE 1b 
     196        if key_periodic NE 1 OR nx NE jpi then begin 
     197          tmp2[nx-1, *] = 1b 
     198          tmp2[0, *] = 1b 
     199        endif 
     200        no1 = temporary(tmp1)*temporary(tmp2) 
     201        tmp = temporary(northboarder)*mask*temporary(no1) 
     202        mask[*, 0:ny-2] = 0b 
     203        tmp = temporary(tmp)+temporary(mask) 
     204        tmp = where(tmp GE 1) 
     205        if tmp[0] NE -1 then begin 
     206          glam[tmp] = (glamt[firstx:lastx, firsty:lasty])[tmp] 
     207          gphi[tmp] = (gphit[firstx:lastx, firsty:lasty])[tmp] 
     208        endif 
     209      ENDIF 
     210      IF n_elements(e1) NE 1 THEN e1  = e1v[firstx:lastx, firsty:lasty] 
     211      IF n_elements(e2) NE 1 THEN e2  = e2v[firstx:lastx, firsty:lasty] 
    145212;vecteurs 3d 
    146          mask=(umask())[premierx:dernierx, premiery:derniery, premierz:dernierz] 
    147       end 
    148 ;------------------------------------------------------------ 
    149 ; grille V 
    150 ;------------------------------------------------------------ 
    151       vargrid eq 'OPAPTDHV' or vargrid eq 'OPAPT3DV' $ 
    152        or vargrid eq 'V': begin 
     213      IF keyword_set(forplt) THEN mask = (vmask())[firstx:lastx, firsty:lasty, firstz] $ 
     214      ELSE IF n_elements(mask) NE 1 THEN mask = (vmask())[firstx:lastx, firsty:lasty, firstz:lastz] 
     215    end 
     216;------------------------------------------------------------ 
     217; grille F 
     218;------------------------------------------------------------ 
     219    vargrid eq 'OPAPTDHF' or vargrid eq 'OPAPT3DF' $  
     220      or vargrid eq 'F': begin 
    153221;scalaires 
    154          nx=nxv 
    155          ny=nyv 
    156          nz=nzt 
    157          premierx = premierxv 
    158          premiery = premieryv 
    159          premierz = premierzt 
    160          dernierx = dernierxv 
    161          derniery = dernieryv 
    162          dernierz = dernierzt 
     222      nx = nxf 
     223      ny = nyf 
     224      firstx = firstxf 
     225      firsty = firstyf 
     226      lastx = lastxf 
     227      lasty = lastyf 
    163228;vecteurs 2d 
    164          glam=glamv[premierx:dernierx, premiery:derniery] 
    165          gphi=gphiv[premierx:dernierx, premiery:derniery] 
    166          if keyword_set(forplt) then BEGIN  
    167             mask = tmask[premierx:dernierx, premiery:derniery, niveau-1] 
    168             terre = where(mask EQ 0) 
    169             if terre[0] NE -1 then begin 
    170                glam[terre] = (glamt[premierx:dernierx, premiery:derniery])[terre] 
    171                gphi[terre] = (gphit[premierx:dernierx, premiery:derniery])[terre] 
    172             endif 
    173          ENDIF 
    174          e1  =e1v[premierx:dernierx, premiery:derniery] 
    175          e2  =e2v[premierx:dernierx, premiery:derniery] 
     229      IF n_elements(glam) NE 1 THEN glam = glamf[firstx:lastx, firsty:lasty] 
     230      IF n_elements(gphi) NE 1 THEN gphi = gphif[firstx:lastx, firsty:lasty] 
     231      if keyword_set(forplt) then BEGIN  
     232        mask = 1b-tmask[firstx:lastx, firsty:lasty, firstz] 
     233        eastboarder = mask-shift(mask, 1, 0)*mask 
     234        westboarder = mask-shift(mask, -1, 0)*mask 
     235        westboarder[nx-1, *] = 0b 
     236        northboarder = mask-shift(mask, 0, 1)*mask 
     237        southboarder = mask-shift(mask, 0, -1)*mask 
     238        southboarder[*, ny-1] = 0b 
     239        tmp1 = shift(northboarder, -1, 0) 
     240        if key_periodic NE 1 OR nx NE jpi then tmp1[nx-1, *] = 0b 
     241        tmp2 = shift(northboarder, 1, 0) 
     242        if key_periodic NE 1 OR nx NE jpi then tmp2[0, *] = 0b 
     243        add = (temporary(tmp1)+temporary(tmp2))*(1b-northboarder)*(1b-southboarder) 
     244        northboarder = temporary(northboarder)+temporary(add) 
     245        tmp1 = shift(eastboarder, 0, 1) 
     246        tmp1[*, 0] = 0b 
     247        tmp2 = shift(eastboarder, 0, -1) 
     248        tmp2[*, ny-1] = 0b 
     249        add = (temporary(tmp1)+temporary(tmp2))*(1b-eastboarder)*(1b-temporary(westboarder)) 
     250        eastboarder = temporary(eastboarder)+temporary(add) 
     251        tmp1 = (mask+shift(mask, 0, -1)+shift(mask, 0, 1)) NE 1b 
     252        tmp1[*, ny-1] = 1b 
     253        tmp1[*, 0] = 1b 
     254        tmp2 = (mask+shift(mask, -1, 0)+shift(mask, 1, 0)) NE 1b 
     255        if key_periodic NE 1 OR nx NE jpi then begin 
     256          tmp2[nx-1, *] = 1b 
     257          tmp2[0, *] = 1b 
     258        endif 
     259        no1 = temporary(tmp1)*temporary(tmp2) 
     260        tmp = (temporary(northboarder)+temporary(eastboarder))*mask*temporary(no1) 
     261        mask[0:nx-2, *] = 0b  
     262        mask[*, 0:ny-2] = 0b  
     263        tmp = temporary(tmp)+temporary(mask) 
     264        tmp = where(tmp GE 1) 
     265        if tmp[0] NE -1 then begin 
     266          glam[tmp] = (glamt[firstx:lastx, firsty:lasty])[tmp] 
     267          gphi[tmp] = (gphit[firstx:lastx, firsty:lasty])[tmp] 
     268        endif 
     269      ENDIF 
     270      IF n_elements(e1) NE 1 THEN e1  = e1f[firstx:lastx, firsty:lasty] 
     271      IF n_elements(e2) NE 1 THEN e2  = e2f[firstx:lastx, firsty:lasty] 
    176272;vecteurs 3d 
    177          mask=(vmask())[premierx:dernierx, premiery:derniery, premierz:dernierz] 
    178       end 
    179 ;------------------------------------------------------------ 
    180 ; grille F 
    181 ;------------------------------------------------------------ 
    182       vargrid eq 'OPAPTDHF' or vargrid eq 'OPAPT3DF' $  
    183        or vargrid eq 'F': begin 
    184 ;scalaires 
    185          nx=nxf 
    186          ny=nyf 
    187          nz=nzt 
    188          premierx = premierxf 
    189          premiery = premieryf 
    190          premierz = premierzt 
    191          dernierx = dernierxf 
    192          derniery = dernieryf 
    193          dernierz = dernierzt 
    194 ;vecteurs 2d 
    195          glam=glamf[premierx:dernierx, premiery:derniery] 
    196          gphi=gphif[premierx:dernierx, premiery:derniery] 
    197          if keyword_set(forplt) then BEGIN  
    198             mask = tmask[premierx:dernierx, premiery:derniery, niveau-1] 
    199             terre = where(mask EQ 0) 
    200             if terre[0] NE -1 then begin 
    201                glam[terre] = (glamt[premierx:dernierx, premiery:derniery])[terre] 
    202                gphi[terre] = (gphit[premierx:dernierx, premiery:derniery])[terre] 
    203             endif 
    204          ENDIF 
    205          e1  =e1f[premierx:dernierx, premiery:derniery] 
    206          e2  =e2f[premierx:dernierx, premiery:derniery] 
    207 ;vecteurs 3d 
    208          mask=(fmask())[premierx:dernierx, premiery:derniery, premierz:dernierz] 
     273      IF keyword_set(forplt) THEN mask = (fmask())[firstx:lastx, firsty:lasty, firstz] $ 
     274      ELSE IF n_elements(mask) NE 1 THEN mask = (fmask())[firstx:lastx, firsty:lasty, firstz:lastz] 
     275    END 
     276;------------------------------------------------------------ 
     277    ELSE:BEGIN  
     278      ras = report('Wrong definition of vargrid = '+vargrid+'. Only T, U, V, W or F are acceptable') 
     279      stop 
     280    END 
     281  ENDCASE 
     282  IF testvar(var = key_performance) EQ 2 THEN $ 
     283    print, 'temps grille: attribution des scalaires, vecteurs et tableaux ', systime(1)-tempdeux 
     284; 
     285;------------------------------------------------------------ 
     286;------------------------------------------------------------ 
     287;------------------------------------------------------------ 
     288; Variables se rapportant a la dimension verticale 
     289;------------------------------------------------------------ 
     290;------------------------------------------------------------ 
     291;------------------------------------------------------------ 
     292; 
     293; 
     294  tempdeux = systime(1)         ; pour key_performance =2 
     295  if keyword_set(wdepth) then begin 
     296    gdep = gdepw[firstz:lastz] 
     297    e3 = e3w[firstz:lastz] 
     298  endif else begin 
     299    gdep = gdept[firstz:lastz] 
     300    e3 = e3t[firstz:lastz] 
     301  ENDELSE 
     302; for the vertical sections with partial steps 
     303  IF keyword_set(ifpltz) AND keyword_set(key_partialstep) THEN BEGIN 
     304    CASE 1 OF 
     305      ifpltz EQ 'xz' AND ny EQ 1:BEGIN 
     306        bottom = total(tmask[firstx:lastx, firsty:lasty, firstz:lastz], 3) 
     307        good = where(bottom NE 0 AND bottom NE nz+keyword_set(wdepth)) 
     308        bottom = lindgen(nx)+(bottom-1l+keyword_set(wdepth))*nx 
     309        IF good[0] NE -1 THEN BEGIN 
     310          bottom = bottom[good] 
     311          IF lastz EQ jpk-1 THEN gdep[nz-1] = max(hdepw) 
     312          gdep = replicate(1, nx)#gdep 
     313          if keyword_set(wdepth) THEN $ 
     314            truegdep = hdepw[firstx:lastx, firsty:lasty] $ 
     315          ELSE truegdep = hdept[firstx:lastx, firsty:lasty] 
     316          gdep[bottom] = truegdep[good] 
     317        ENDIF 
    209318      END 
    210 ;------------------------------------------------------------ 
    211       ELSE:BEGIN  
    212          ras = report('Vauvaise definition de la variable vargrid: '+vargrid+'ceete variable doit etre T, U, V, W ou F') 
    213          stop 
     319      ifpltz EQ 'yz' AND nx EQ 1:BEGIN 
     320        bottom = total(tmask[firstx:lastx, firsty:lasty, firstz:lastz], 3) 
     321        good = where(bottom NE 0 AND bottom NE nz+keyword_set(wdepth)) 
     322        bottom = lindgen(ny)+(bottom-1l+keyword_set(wdepth))*ny 
     323        IF good[0] NE -1 THEN BEGIN 
     324          bottom = bottom[good] 
     325          IF lastz EQ jpk-1 THEN gdep[nz-1] = max(hdepw) 
     326          gdep = replicate(1, ny)#gdep 
     327          if keyword_set(wdepth) THEN $ 
     328            truegdep = hdepw[firstx:lastx, firsty:lasty] $ 
     329          ELSE truegdep = hdept[firstx:lastx, firsty:lasty] 
     330          gdep[bottom] = truegdep[good] 
     331        ENDIF 
    214332      END 
    215    ENDCASE 
    216    IF testvar(var = key_performance) EQ 2 THEN $ 
    217     print, 'temps grille: attribution des scalaires, vecteurs et tableaux ', systime(1)-tempdeux 
    218 ;------------------------------------------------------------ 
    219 ; Variables se rapportant a la dimension verticale 
    220 ;------------------------------------------------------------ 
    221    tempdeux = systime(1)        ; pour key_performance =2 
    222    if vargrid eq 'OPAPT3DW' or vargrid eq 'W' then begin 
    223       gdep = gdepw[premierz:dernierz] 
    224       e3=e3w[premierz:dernierz] 
    225    endif else begin 
    226       gdep = gdept[premierz:dernierz] 
    227       e3=e3t[premierz:dernierz] 
    228    endelse 
    229    IF testvar(var = key_performance) EQ 2 THEN $ 
     333      ELSE: 
     334    ENDCASE 
     335  ENDIF 
     336  IF testvar(var = key_performance) EQ 2 THEN $ 
    230337    print, 'temps grille: Variables se rapportant a la dimension verticale ', systime(1)-tempdeux 
    231338;------------------------------------------------------------ 
    232339; vecteur triangulation Qd TRI est active 
    233340;------------------------------------------------------------ 
    234    if arg_present(TRI) then $ 
    235     if triangles[0] EQ -1 OR keyword_set(notri) then tri = -1 ELSE BEGIN  
    236       tempdeux = systime(1)     ; pour key_performance =2 
    237       msk = bytarr(jpi, jpj) 
    238       msk[premierx:dernierx,premiery:derniery] = 1 
    239       ind = where( msk[triangles[0, *]]*msk[triangles[1, *]]*msk[triangles[2, *]] EQ 1 ) 
    240       tri =triangles[*, ind]-(premierx+premiery*jpi) 
    241       y = tri/jpi 
    242       x = tri-y*jpi 
    243       tri = x+y*nx 
    244       IF testvar(var = key_performance) EQ 2 THEN $ 
    245        print, 'temps grille: decoupage de la triangulation ', systime(1)-tempdeux 
    246    ENDELSE 
     341  if arg_present(TRI) then $ 
     342    if triangles_list[0] EQ -1 OR keyword_set(notri) then tri = -1 ELSE BEGIN  
     343    tempdeux = systime(1)       ; pour key_performance =2 
     344    msk = bytarr(jpi, jpj) 
     345    msk[firstx:lastx, firsty:lasty] = 1 
     346    ind = where( msk[triangles_list[0, *]]*msk[triangles_list[1, *]]*msk[triangles_list[2, *]] EQ 1 ) 
     347    tri = triangles_list[*, ind]-(firstx+firsty*jpi) 
     348    y = tri/jpi 
     349    x = tri-y*jpi 
     350    tri = x+y*nx 
     351    IF testvar(var = key_performance) EQ 2 THEN $ 
     352      print, 'temps grille: decoupage de la triangulation ', systime(1)-tempdeux 
     353  ENDELSE 
    247354;------------------------------------------------------------------ 
    248355; pour s'assurer qu'il n'y a pas de dimension degenerees (=1) 
     
    256363;    e3=reform(e3, /over) 
    257364 
    258    if keyword_set(tout) then domdef, oldboite, grille = vargrid 
    259    if keyword_set(key_performance) THEN print, 'temps grille', systime(1)-tempsun  
    260  
    261    return 
     365  if keyword_set(savedbox) THEN restoreboxparam, 'boxparam4grille.dat' 
     366  if keyword_set(key_performance) THEN print, 'temps grille', systime(1)-tempsun  
     367 
     368;------------------------------------------------------------ 
     369  IF NOT keyword_set(key_forgetold) THEN BEGIN 
     370@updateold 
     371  ENDIF  
     372;--------------------- 
     373  return 
    262374 
    263375end 
Note: See TracChangeset for help on using the changeset viewer.