source: trunk/tools/density_binning/density_bin_IDL_gm/msf.pro @ 169

Last change on this file since 169 was 169, checked in by pinsard, 15 years ago

add compile_opt idl2, strictarrsubs and subsequent modifications

  • Property svn:keywords set to Id
File size: 1.4 KB
Line 
1;+
2;
3; Calcul de la Fonction de Courant a travers les lignes J
4;
5;
6; @history
7;  creation : 12/02/99 M Imbard
8;  Modification : 12/11/98 G. Roullet
9;                 18/11/98 G. Roullet
10; @version
11; $Id$
12;
13;-
14PRO msf, v, sf $
15    , MSK=msk
16;
17  compile_opt idl2, strictarrsubs
18;
19@common
20COMMON moy, zonmsk, mermsk, jpl
21IF n_elements(jpl) EQ 0 THEN jpl = jpj
22;
23;  jpl bandes de latitudes
24;
25fm = fltarr(jpl, jpk)
26sf = fltarr(jpl, jpk)
27msfmsk = fltarr(jpl, jpk)
28zv = v
29z = zv
30ze1v = zv
31ze3v = zv
32vert = replicate(1, jpk)
33;
34;  Masque de u pour un calcul de msf sur le sous domaine msk(jpi,jpj)
35;
36IF n_elements(msk) NE 0 THEN BEGIN
37      zvmask = boundperio( (msk +shift(msk, 0, -1) ) < 1 )
38      zvmask = zvmask[*]#vert
39      zv = zv*zvmask
40ENDIF
41;
42;  Ecriture "tricky" optimisee... si vous avez compris comment
43;  on calculait un flux a partir de champ 2D, vous avez fait le
44;  plus dur : ici on generalise a 3D d''ou l''utilisation de #vert
45;
46;  calcul du flux
47;
48FOR i = 0, jpi-1 DO BEGIN for j= 0, jpj-1 do begin ze1v[i,j,*] = replicate(e1v[i,j],jpk) & endfor &endfor
49FOR k = 0, jpk-1 DO BEGIN ze3v[*,*,k]=replicate(e3t[k],jpi*jpj) & endfor
50;
51z= -v*ze1v*ze3v
52;
53;  integration zonale du flux !
54;
55fm = total(z, 1)
56;
57;  calcul de la msf en integrant depuis le fond
58;
59FOR k = jpk-2, 0, -1 DO begin sf[*, k] = sf[*, k+1]+fm[*, k] & endfor
60;
61;  msfmsk est le masque associe a msf (utilise pour les graphiques)
62;
63msfmsk = fm NE 0.
64;
65END
Note: See TracBrowser for help on using the repository browser.