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

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

fill uses paragraph in header with used commons

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