/[lmdze]/trunk/libf/dyn3d/init_dynzon.f90
ViewVC logotype

Contents of /trunk/libf/dyn3d/init_dynzon.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 61 - (show annotations)
Fri Apr 20 14:58:43 2012 UTC (12 years ago) by guez
File size: 4104 byte(s)
No more included file in LMDZE, not even "netcdf.inc".

Created a variable containing the list of common source files in
GNUmakefile. So we now also see clearly files that are specific to
each program.

Split module "histcom". Assembled resulting files in directory
"Histcom".

Removed aliasing in calls to "laplacien".

1 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 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 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

  ViewVC Help
Powered by ViewVC 1.1.21