source: trunk/procs/msf_simple.pro @ 13

Last change on this file since 13 was 2, checked in by post_it, 17 years ago

Initial import from ~/POST_IT/

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