-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFSTD_Flux.tcl
More file actions
81 lines (63 loc) · 2.18 KB
/
Copy pathFSTD_Flux.tcl
File metadata and controls
81 lines (63 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/sh
# the next line restarts using tclsh \
exec $SPI_PATH/tclsh "$0" "$@"
#============================================================================
# Environnement Canada
# Centre Meteorologique Canadien
# 2100 Trans-Canadienne
# Dorval, Quebec
#
# Projet : Exemple de scripts.
# Fichier : FSTD_Flux.tcl
# Creation : Avril 2005 - J.P. Gauthier - CMC/CMOE
# Description: Calculer le flux traversant une coupr vertical
#
# Parametres :
#
# Retour:
#
# Remarques :
#
#============================================================================
package require TclData
#package require TclGeoEER
package require Logger
Log::Start [info script] 0.1
fstdfield vector { UU VV }
file delete -force $env(CI_DATA_OUT)/FSTD_Flux.fstd
#----- Ouvrir les fichiers d'entree (1) sortie (2)
fstdfile open IN read $env(CI_DATA_IN)/2005102612_012c
fstdfile open OUT write $env(CI_DATA_OUT)/FSTD_Flux.fstd
#----- coordonnees de la coupe
set coords { 17.74 -101.26 17.75 -97.59 23.45 -97.96 }
set total 0
#----- Creer une projection geographique afin de "sampler" la coupe aux Km
projection create PROJ
#----- Recuperer le path a chaque km
set path [projection function PROJ -path $coords 1000]
#----- Recuper la distance totale
set dist [projection function PROJ -dist $path 0]
#----- Boucler sur les pas de temps
foreach field [fstdfield find IN -1 "" 850 -1 -1 "" "CV"] {
#----- Lire les concentrations et les vents
fstdfield read CONC IN $field
fstdfield read WIND IN [fstdfield define CONC -DATEV] "" -1 -1 -1 "" "UU"
fstdfield readcube CONC
fstdfield readcube WIND
#----- Effectuer la coupe verticale pour les concentrations et les vents
fstdfield vertical XWIND WIND $path
fstdfield vertical XCONC CONC $path
#----- Multipler la composante y par la concentration
vexpr FLUX XWIND\[1\]*XCONC
fstdfield define FLUX -NOMVAR FLUX
fstdfield write FLUX OUT 0 True
fstdfield write XWIND OUT 0 True
fstdfield write XCONC OUT 0 True
#----- Calculer la somme dans le temps
set total [expr $total+[vexpr FLUX ssum(FLUX)/(3600*3)]]
}
fstdfield writegeo FLUX OUT
fstdfile close IN OUT
#----- Flux total dans le temps
Log::Print INFO "Flux total: $total"
Log::End