Ignore:
Timestamp:
12/21/10 14:26:05 (13 years ago)
Author:
smasson
Message:

take into account the ssh in moyenne and grossemoyenne

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SRC/ToBeReviewed/CALCULS/grossemoyenne.pro

    r424 r440  
    6161; mean even if NAN is activated (see SPATIALFIRST explanations...) 
    6262; 
     63; @keyword SSH 
     64; array giving the sea level elenation (in meter) that must be added 
     65; to the thickness of the first level when computing vertical mean 
     66; 
    6367; @keyword WDEPTH 
    6468; to specify that the field is at W depth instead of T 
     
    8993;- 
    9094FUNCTION grossemoyenne, tab, direc, BOXZOOM=boxzoom, INTEGRATION=integration, KEEPBOTTOM = keepbottom $ 
    91                       , NAN=nan, NODOMDEF=nodomdef, WDEPTH=wdepth $ 
     95                      , NAN=nan, NODOMDEF=nodomdef, WDEPTH=wdepth, ssh=ssh $ 
    9296                      , SPATIALFIRST=spatialfirst, TEMPORALFIRST=temporalfirst $ 
    9397                      , _EXTRA=ex 
     
    164168;--------------------------------------------------------------- 
    165169  grille, mask, glam, gphi, gdep, nx, ny, nz, firstx, firsty, firstz, lastx, lasty, lastz, e1, e2, e3, WDEPTH = wdepth 
     170;--------------------------------------------------------------- 
     171; check the use of ssh keyword... 
     172;--------------------------------------------------------------- 
     173  IF keyword_set(ssh) AND dirz NE 0 AND firstz EQ 0 AND taille[0] GT 2 THEN BEGIN 
     174    szssh = size(ssh) 
     175    IF szssh[1] NE taille[1] OR szssh[2] NE taille[2] THEN $ 
     176       return, report('ssh and input arrays must have the same size') 
     177    sshh = ssh 
     178  ENDIF 
    166179;------------------------------------------------------------ 
    167180; I.4) if dirt equal 1, we make the temporal average and we send it in moyenne 
    168181;------------------------------------------------------------ 
    169   if dirt EQ 1 AND NOT keyword_set(spatialfirst) then begin 
     182  if dirt EQ 1 AND NOT keyword_set(spatialfirst) then BEGIN 
     183    IF keyword_set(sshh) THEN return, report('ssh and temporal mean: case not coded...') 
    170184    if dim EQ 3d then BEGIN 
    171185      case 1 of 
     
    338352;--------------------------------------------------------------- 
    339353    case 1 of 
    340       taille[1] eq jpi and taille[2] eq jpj and taille[3] eq jpk and taille[4] eq jpt: $ 
     354      taille[1] eq jpi and taille[2] eq jpj and taille[3] eq jpk and taille[4] eq jpt:BEGIN  
    341355        res = tab[firstx:lastx, firsty:lasty, firstz:lastz, *] 
    342       taille[1] eq jpi and taille[2] eq jpj and taille[3] eq nz and taille[4] eq jpt: $ 
     356        IF keyword_set(sshh) THEN sshh = sshh[firstx:lastx, firsty:lasty, *] 
     357      END 
     358      taille[1] eq jpi and taille[2] eq jpj and taille[3] eq nz and taille[4] eq jpt:BEGIN  
    343359        res = tab[firstx:lastx, firsty:lasty, *, *] 
     360        IF keyword_set(sshh) THEN sshh = sshh[firstx:lastx, firsty:lasty, *] 
     361      END 
    344362      taille[1] EQ  nx and taille[2] eq  ny and taille[3] eq nz and taille[4] eq jpt:res = tab 
    345363      taille[1] EQ  nx and taille[2] eq  ny and taille[3] eq jpk and taille[4] eq jpt: $ 
     
    455473        echelle = (temporary(e33)*temporary(mask))[*]#replicate(1, jpt) 
    456474        echelle = reform(echelle, nx, ny, nz, jpt, /over) 
     475        IF keyword_set(sshh) THEN echelle[*, *, 0, *] = echelle[*, *, 0, *] + sshh 
    457476        if keyword_set(integration) then divi = 1 ELSE begin 
    458477          IF msknan[0] NE -1 THEN divi = total(echelle*msknan, 3) $ 
     
    506525        echelle = (temporary(e133[*])*temporary(mask[*]))#replicate(1, jpt) 
    507526        echelle = reform(echelle, nx, ny, nz, jpt, /over) 
     527        IF keyword_set(sshh) THEN echelle[*, *, 0, *] = echelle[*, *, 0, *] + sshh*( e1[*]#replicate(1., jpt) ) 
    508528        if keyword_set(integration) then divi = 1 ELSE begin 
    509529          IF msknan[0] NE -1 THEN divi = total(total(echelle*msknan, 1), 2) $ 
     
    527547        echelle = (temporary(e233[*])*temporary(mask[*]))#replicate(1, jpt) 
    528548        echelle = reform(echelle, nx, ny, nz, jpt, /over) 
     549        IF keyword_set(sshh) THEN echelle[*, *, 0, *] = echelle[*, *, 0, *] + sshh*( e2[*]#replicate(1., jpt) ) 
    529550        if keyword_set(integration) then divi = 1 ELSE begin 
    530551          IF msknan[0] NE -1 THEN divi = total(total(echelle*msknan, 2), 2) $ 
     
    548569        echelle = (temporary(e1233[*])*temporary(mask[*]))#replicate(1, jpt) 
    549570        echelle = reform(echelle, nx, ny, nz, jpt, /over) 
     571        IF keyword_set(sshh) THEN echelle[*, *, 0, *] = echelle[*, *, 0, *] + sshh*( (e1[*]*e2[*])#replicate(1., jpt) ) 
    550572        if keyword_set(integration) then divi = 1 ELSE begin 
    551573          IF msknan[0] NE -1 THEN divi = total(total(total(echelle*msknan, 1), 1), 1) $ 
Note: See TracChangeset for help on using the changeset viewer.