1 |
guez |
57 |
module init_dynzon_m |
2 |
|
|
|
3 |
|
|
IMPLICIT NONE |
4 |
|
|
|
5 |
|
|
integer, parameter:: ntr = 5 |
6 |
|
|
integer, parameter:: nQ = 7 |
7 |
|
|
integer ncum, fileid |
8 |
|
|
character(len=10) znom(ntr, nQ) |
9 |
|
|
character(len=4), parameter:: nom(nQ) = (/'T ', 'gz ', 'K ', 'ang ', & |
10 |
|
|
'u ', 'ovap', 'un '/) |
11 |
|
|
|
12 |
|
|
contains |
13 |
|
|
|
14 |
|
|
SUBROUTINE init_dynzon(dt_app) |
15 |
|
|
|
16 |
|
|
! From LMDZ4/libf/dyn3d/bilan_dyn.F, version 1.5 2005/03/16 10:12:17 |
17 |
|
|
|
18 |
|
|
USE conf_gcm_m, ONLY : day_step, iperiod, periodav |
19 |
guez |
61 |
USE histbeg_totreg_m, ONLY : histbeg_totreg |
20 |
|
|
USE histdef_m, ONLY : histdef |
21 |
|
|
USE histend_m, ONLY : histend |
22 |
|
|
USE histvert_m, ONLY : histvert |
23 |
guez |
57 |
USE calendar, ONLY : ymds2ju |
24 |
|
|
USE dimens_m, ONLY : jjm, llm |
25 |
|
|
USE comvert, ONLY : presnivs |
26 |
|
|
USE comgeom, ONLY : rlatv |
27 |
|
|
USE temps, ONLY : annee_ref, day_ref, itau_dyn |
28 |
|
|
USE nr_util, ONLY : pi |
29 |
|
|
|
30 |
|
|
! Arguments: |
31 |
|
|
|
32 |
|
|
real, intent(in):: dt_app |
33 |
|
|
|
34 |
|
|
! Local: |
35 |
|
|
|
36 |
|
|
real dt_cum |
37 |
|
|
character(len=5), parameter:: unites(nQ) = (/'K ', 'm2/s2', 'm2/s2', & |
38 |
|
|
'ang ', 'm/s ', 'kg/kg', 'un '/) |
39 |
|
|
|
40 |
|
|
! champs de tansport en moyenne zonale |
41 |
|
|
integer itr |
42 |
|
|
|
43 |
|
|
character(len=26) znoml(ntr, nQ) |
44 |
|
|
character(len=12) zunites(ntr, nQ) |
45 |
|
|
|
46 |
|
|
character(len=3), parameter:: ctrs(ntr) = (/' ', 'TOT', 'MMC', 'TRS', & |
47 |
|
|
'STN'/) |
48 |
|
|
|
49 |
|
|
integer iQ |
50 |
|
|
|
51 |
|
|
! Initialisation du fichier contenant les moyennes zonales. |
52 |
|
|
|
53 |
|
|
integer thoriid, zvertiid |
54 |
|
|
|
55 |
|
|
real zjulian |
56 |
|
|
integer zan, dayref |
57 |
|
|
|
58 |
|
|
real rlong(jjm), rlatg(jjm) |
59 |
|
|
|
60 |
|
|
!----------------------------------------------------------------- |
61 |
|
|
|
62 |
|
|
print *, "Call sequence information: init_dynzon" |
63 |
|
|
|
64 |
|
|
! initialisation des fichiers |
65 |
|
|
! ncum est la frequence de stokage en pas de temps |
66 |
|
|
ncum = day_step / iperiod * periodav |
67 |
|
|
dt_cum = ncum * dt_app |
68 |
|
|
|
69 |
|
|
! Initialisation du fichier contenant les moyennes zonales |
70 |
|
|
|
71 |
|
|
zan = annee_ref |
72 |
|
|
dayref = day_ref |
73 |
|
|
CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) |
74 |
|
|
|
75 |
|
|
rlong = 0. |
76 |
|
|
rlatg = rlatv*180./pi |
77 |
|
|
|
78 |
|
|
call histbeg_totreg('dynzon', rlong(:1), rlatg, 1, 1, 1, jjm, itau_dyn, & |
79 |
|
|
zjulian, dt_cum, thoriid, fileid) |
80 |
|
|
|
81 |
|
|
! Appel à histvert pour la grille verticale |
82 |
|
|
|
83 |
|
|
call histvert(fileid, 'presnivs', 'Niveaux sigma', 'mb', llm, presnivs, & |
84 |
|
|
zvertiid) |
85 |
|
|
|
86 |
|
|
! Appels à histdef pour la définition des variables à sauvegarder |
87 |
|
|
do iQ = 1, nQ |
88 |
|
|
do itr = 1, ntr |
89 |
|
|
if (itr == 1) then |
90 |
|
|
znom(itr, iQ) = nom(iQ) |
91 |
|
|
znoml(itr, iQ) = nom(iQ) |
92 |
|
|
zunites(itr, iQ) = unites(iQ) |
93 |
|
|
else |
94 |
|
|
znom(itr, iQ) = ctrs(itr)//'v'//nom(iQ) |
95 |
|
|
znoml(itr, iQ) = 'transport : v * '//nom(iQ)//' '//ctrs(itr) |
96 |
|
|
zunites(itr, iQ) = 'm/s * '//unites(iQ) |
97 |
|
|
endif |
98 |
|
|
enddo |
99 |
|
|
enddo |
100 |
|
|
|
101 |
|
|
! Déclarations des champs avec dimension verticale |
102 |
|
|
do iQ = 1, nQ |
103 |
|
|
do itr = 1, ntr |
104 |
|
|
call histdef(fileid, znom(itr, iQ), znoml(itr, iQ), & |
105 |
|
|
zunites(itr, iQ), 1, jjm, thoriid, llm, 1, llm, zvertiid, & |
106 |
|
|
'ave(X)', dt_cum, dt_cum) |
107 |
|
|
enddo |
108 |
|
|
! Déclarations pour les fonctions de courant |
109 |
|
|
call histdef(fileid, 'psi'//nom(iQ), 'stream fn. '//znoml(2, iQ), & |
110 |
|
|
zunites(2, iQ), 1, jjm, thoriid, llm, 1, llm, zvertiid, & |
111 |
|
|
'ave(X)', dt_cum, dt_cum) |
112 |
|
|
enddo |
113 |
|
|
|
114 |
|
|
! Déclarations pour les champs de transport d'air |
115 |
|
|
call histdef(fileid, 'masse', 'masse', & |
116 |
|
|
'kg', 1, jjm, thoriid, llm, 1, llm, zvertiid, & |
117 |
|
|
'ave(X)', dt_cum, dt_cum) |
118 |
|
|
call histdef(fileid, 'v', 'v', & |
119 |
|
|
'm/s', 1, jjm, thoriid, llm, 1, llm, zvertiid, & |
120 |
|
|
'ave(X)', dt_cum, dt_cum) |
121 |
|
|
! Déclarations pour les fonctions de courant |
122 |
|
|
call histdef(fileid, 'psi', 'stream fn. MMC ', 'mega t/s', & |
123 |
|
|
1, jjm, thoriid, llm, 1, llm, zvertiid, & |
124 |
|
|
'ave(X)', dt_cum, dt_cum) |
125 |
|
|
|
126 |
|
|
! Déclaration des champs 1D de transport en latitude |
127 |
|
|
do iQ = 1, nQ |
128 |
|
|
do itr = 2, ntr |
129 |
|
|
call histdef(fileid, 'a'//znom(itr, iQ), znoml(itr, iQ), & |
130 |
|
|
zunites(itr, iQ), 1, jjm, thoriid, 1, 1, 1, -99, & |
131 |
|
|
'ave(X)', dt_cum, dt_cum) |
132 |
|
|
enddo |
133 |
|
|
enddo |
134 |
|
|
|
135 |
|
|
CALL histend(fileid) |
136 |
|
|
|
137 |
|
|
end SUBROUTINE init_dynzon |
138 |
|
|
|
139 |
|
|
end module init_dynzon_m |