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