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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 27 - (show annotations)
Thu Mar 25 14:29:07 2010 UTC (14 years, 1 month ago) by guez
File size: 9196 byte(s)
"dyn3d" and "filtrez" do not contain any included file so make rules
have been updated.

"comdissip.f90" was useless, removed it.

"dynredem0" wrote undefined value in "controle(31)", that was
overwritten by "dynredem1". Now "dynredem0" just writes 0 to
"controle(31)".

Removed arguments of "inidissip". "inidissip" now accesses the
variables by use association.

In program "etat0_lim", "itaufin" is not defined so "dynredem1" wrote
undefined value to "controle(31)". Added argument "itau" of
"dynredem1" to correct that.

"itaufin" does not need to be a module variable (of "temps"), made it
a local variable of "leapfrog".

Removed calls to "diagedyn" from "leapfrog".

1 MODULE dynredem0_m
2
3 IMPLICIT NONE
4
5 CONTAINS
6
7 SUBROUTINE dynredem0(fichnom, iday_end, phis)
8
9 ! From dyn3d/dynredem.F, version 1.2 2004/06/22 11:45:30
10 ! Ecriture du fichier de redémarrage au format NetCDF (initialisation)
11
12 USE comconst, ONLY : cpp, daysec, dtvr, g, kappa, omeg, rad
13 USE comvert, ONLY : ap, bp, nivsig, nivsigs, pa, preff, presnivs
14 USE comgeom, ONLY : aire_2d, cu_2d, cv_2d, rlatu, rlatv, rlonu, rlonv
15 USE dimens_m, ONLY : iim, jjm, llm, nqmx
16 USE ener, ONLY : ang0, etot0, ptot0, stot0, ztot0
17 USE ioipsl, ONLY : ju2ymds, ymds2ju
18 USE iniadvtrac_m, ONLY : tname, ttext
19 USE logic, ONLY : fxyhypb, ysinus
20 USE netcdf95, ONLY : nf95_close, nf95_create, nf95_def_dim, &
21 nf95_def_var, nf95_enddef, nf95_inq_varid, nf95_put_att, &
22 nf95_put_var
23 USE netcdf, ONLY : nf90_clobber, nf90_float, nf90_global, &
24 nf90_unlimited
25 USE paramet_m, ONLY : iip1, jjp1, llmp1
26 USE serre, ONLY : clat, clon, dzoomx, dzoomy, grossismx, grossismy, &
27 taux, tauy
28 USE temps, ONLY : annee_ref, day_ref
29
30 CHARACTER (len=*), INTENT (IN) :: fichnom
31 INTEGER, INTENT (IN) :: iday_end
32 REAL, INTENT (IN) :: phis(:, :)
33
34 ! Local:
35
36 INTEGER :: iq, l
37 INTEGER, PARAMETER:: length = 100
38 REAL :: tab_cntrl(length) ! tableau des parametres du run
39
40 ! Variables locales pour NetCDF:
41
42 INTEGER :: dims2(2), dims3(3), dims4(4)
43 INTEGER :: idim_index
44 INTEGER :: idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
45 INTEGER :: idim_s, idim_sig
46 INTEGER :: idim_tim
47 INTEGER :: nid, nvarid
48
49 REAL :: zjulian, hours
50 INTEGER :: yyears0, jjour0, mmois0
51 CHARACTER (len=30) :: unites
52
53 !-----------------------------------------------------------------------
54
55 PRINT *, 'Call sequence information: dynredem0'
56
57 CALL ymds2ju(annee_ref, 1, iday_end, 0., zjulian)
58 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
59
60 DO l = 1, length
61 tab_cntrl(l) = 0.
62 END DO
63 tab_cntrl(1) = real(iim)
64 tab_cntrl(2) = real(jjm)
65 tab_cntrl(3) = real(llm)
66 tab_cntrl(4) = real(day_ref)
67 tab_cntrl(5) = real(annee_ref)
68 tab_cntrl(6) = rad
69 tab_cntrl(7) = omeg
70 tab_cntrl(8) = g
71 tab_cntrl(9) = cpp
72 tab_cntrl(10) = kappa
73 tab_cntrl(11) = daysec
74 tab_cntrl(12) = dtvr
75 tab_cntrl(13) = etot0
76 tab_cntrl(14) = ptot0
77 tab_cntrl(15) = ztot0
78 tab_cntrl(16) = stot0
79 tab_cntrl(17) = ang0
80 tab_cntrl(18) = pa
81 tab_cntrl(19) = preff
82
83 ! Paramètres pour le zoom :
84
85 tab_cntrl(20) = clon
86 tab_cntrl(21) = clat
87 tab_cntrl(22) = grossismx
88 tab_cntrl(23) = grossismy
89
90 IF (fxyhypb) THEN
91 tab_cntrl(24) = 1.
92 tab_cntrl(25) = dzoomx
93 tab_cntrl(26) = dzoomy
94 tab_cntrl(27) = 0.
95 tab_cntrl(28) = taux
96 tab_cntrl(29) = tauy
97 ELSE
98 tab_cntrl(24) = 0.
99 tab_cntrl(25) = dzoomx
100 tab_cntrl(26) = dzoomy
101 tab_cntrl(27) = 0.
102 tab_cntrl(28) = 0.
103 tab_cntrl(29) = 0.
104 IF (ysinus) tab_cntrl(27) = 1.
105 END IF
106
107 tab_cntrl(30) = real(iday_end)
108
109 CALL nf95_create(fichnom, nf90_clobber, nid)
110 CALL nf95_put_att(nid, nf90_global, 'title', &
111 'Fichier de démarrage dynamique')
112
113 ! Definir les dimensions du fichiers:
114
115 CALL nf95_def_dim(nid, 'index', length, idim_index)
116 CALL nf95_def_dim(nid, 'rlonu', iip1, idim_rlonu)
117 CALL nf95_def_dim(nid, 'rlatu', jjp1, idim_rlatu)
118 CALL nf95_def_dim(nid, 'rlonv', iip1, idim_rlonv)
119 CALL nf95_def_dim(nid, 'rlatv', jjm, idim_rlatv)
120 CALL nf95_def_dim(nid, 'sigs', llm, idim_s)
121 CALL nf95_def_dim(nid, 'sig', llmp1, idim_sig)
122 CALL nf95_def_dim(nid, 'temps', nf90_unlimited, idim_tim)
123
124 ! Definir et enregistrer certains champs invariants:
125
126 CALL nf95_def_var(nid, 'controle', nf90_float, idim_index, nvarid)
127 CALL nf95_put_att(nid, nvarid, 'title', 'Parametres de controle')
128
129 CALL nf95_def_var(nid, 'rlonu', nf90_float, idim_rlonu, nvarid)
130 CALL nf95_put_att(nid, nvarid, 'title', 'Longitudes des points U')
131
132 CALL nf95_def_var(nid, 'rlatu', nf90_float, idim_rlatu, nvarid)
133 CALL nf95_put_att(nid, nvarid, 'title', 'Latitudes des points U')
134
135 CALL nf95_def_var(nid, 'rlonv', nf90_float, idim_rlonv, nvarid)
136 CALL nf95_put_att(nid, nvarid, 'title', 'Longitudes des points V')
137
138 CALL nf95_def_var(nid, 'rlatv', nf90_float, idim_rlatv, nvarid)
139 CALL nf95_put_att(nid, nvarid, 'title', 'Latitudes des points V')
140
141 CALL nf95_def_var(nid, 'nivsigs', nf90_float, idim_s, nvarid)
142 CALL nf95_put_att(nid, nvarid, 'title', 'Numero naturel des couches s')
143
144 CALL nf95_def_var(nid, 'nivsig', nf90_float, idim_sig, nvarid)
145 CALL nf95_put_att(nid, nvarid, 'title', &
146 'Numero naturel des couches sigma')
147
148 CALL nf95_def_var(nid, 'ap', nf90_float, idim_sig, nvarid)
149 CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient A pour hybride')
150
151 CALL nf95_def_var(nid, 'bp', nf90_float, idim_sig, nvarid)
152 CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient B pour hybride')
153
154 CALL nf95_def_var(nid, 'presnivs', nf90_float, idim_s, nvarid)
155
156 ! Coefficients de passage cov. <-> contra. <--> naturel
157
158 dims2(1) = idim_rlonu
159 dims2(2) = idim_rlatu
160 CALL nf95_def_var(nid, 'cu', nf90_float, dims2, nvarid)
161 CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient de passage pour U')
162
163 dims2(1) = idim_rlonv
164 dims2(2) = idim_rlatv
165 CALL nf95_def_var(nid, 'cv', nf90_float, dims2, nvarid)
166 CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient de passage pour V')
167
168 ! Aire de chaque maille:
169
170 dims2(1) = idim_rlonv
171 dims2(2) = idim_rlatu
172 CALL nf95_def_var(nid, 'aire', nf90_float, dims2, nvarid)
173 CALL nf95_put_att(nid, nvarid, 'title', 'Aires de chaque maille')
174
175 ! Geopentiel au sol:
176
177 dims2(1) = idim_rlonv
178 dims2(2) = idim_rlatu
179 CALL nf95_def_var(nid, 'phisinit', nf90_float, dims2, nvarid)
180 CALL nf95_put_att(nid, nvarid, 'title', 'Geopotentiel au sol')
181
182 ! Definir les variables pour pouvoir les enregistrer plus tard:
183
184 CALL nf95_def_var(nid, 'temps', nf90_float, idim_tim, nvarid)
185 CALL nf95_put_att(nid, nvarid, 'title', 'Temps de simulation')
186 WRITE (unites, 200) yyears0, mmois0, jjour0
187 200 FORMAT ('days since ', I4, '-', I2.2, '-', I2.2, ' 00:00:00')
188 CALL nf95_put_att(nid, nvarid, 'units', unites)
189
190
191 dims4(1) = idim_rlonu
192 dims4(2) = idim_rlatu
193 dims4(3) = idim_s
194 dims4(4) = idim_tim
195 CALL nf95_def_var(nid, 'ucov', nf90_float, dims4, nvarid)
196 CALL nf95_put_att(nid, nvarid, 'title', 'Vitesse U')
197
198 dims4(1) = idim_rlonv
199 dims4(2) = idim_rlatv
200 dims4(3) = idim_s
201 dims4(4) = idim_tim
202 CALL nf95_def_var(nid, 'vcov', nf90_float, dims4, nvarid)
203 CALL nf95_put_att(nid, nvarid, 'title', 'Vitesse V')
204
205 dims4(1) = idim_rlonv
206 dims4(2) = idim_rlatu
207 dims4(3) = idim_s
208 dims4(4) = idim_tim
209 CALL nf95_def_var(nid, 'teta', nf90_float, dims4, nvarid)
210 CALL nf95_put_att(nid, nvarid, 'title', 'Temperature')
211
212 dims4(1) = idim_rlonv
213 dims4(2) = idim_rlatu
214 dims4(3) = idim_s
215 dims4(4) = idim_tim
216 DO iq = 1, nqmx
217 CALL nf95_def_var(nid, tname(iq), nf90_float, dims4, nvarid)
218 CALL nf95_put_att(nid, nvarid, 'title', ttext(iq))
219 END DO
220
221 dims4(1) = idim_rlonv
222 dims4(2) = idim_rlatu
223 dims4(3) = idim_s
224 dims4(4) = idim_tim
225 CALL nf95_def_var(nid, 'masse', nf90_float, dims4, nvarid)
226 CALL nf95_put_att(nid, nvarid, 'title', 'C est quoi ?')
227
228 dims3(1) = idim_rlonv
229 dims3(2) = idim_rlatu
230 dims3(3) = idim_tim
231 CALL nf95_def_var(nid, 'ps', nf90_float, dims3, nvarid)
232 CALL nf95_put_att(nid, nvarid, 'title', 'Pression au sol')
233
234 CALL nf95_enddef(nid)
235
236 CALL nf95_inq_varid(nid, 'controle', nvarid)
237 CALL nf95_put_var(nid, nvarid, tab_cntrl)
238
239 CALL nf95_inq_varid(nid, 'rlonu', nvarid)
240 CALL nf95_put_var(nid, nvarid, rlonu)
241
242 CALL nf95_inq_varid(nid, 'rlatu', nvarid)
243 CALL nf95_put_var(nid, nvarid, rlatu)
244
245 CALL nf95_inq_varid(nid, 'rlonv', nvarid)
246 CALL nf95_put_var(nid, nvarid, rlonv)
247
248 CALL nf95_inq_varid(nid, 'rlatv', nvarid)
249 CALL nf95_put_var(nid, nvarid, rlatv)
250
251 CALL nf95_inq_varid(nid, 'nivsigs', nvarid)
252 CALL nf95_put_var(nid, nvarid, nivsigs)
253
254 CALL nf95_inq_varid(nid, 'nivsig', nvarid)
255 CALL nf95_put_var(nid, nvarid, nivsig)
256
257 CALL nf95_inq_varid(nid, 'ap', nvarid)
258 CALL nf95_put_var(nid, nvarid, ap)
259
260 CALL nf95_inq_varid(nid, 'bp', nvarid)
261 CALL nf95_put_var(nid, nvarid, bp)
262
263 CALL nf95_inq_varid(nid, 'presnivs', nvarid)
264 CALL nf95_put_var(nid, nvarid, presnivs)
265
266 CALL nf95_inq_varid(nid, 'cu', nvarid)
267 CALL nf95_put_var(nid, nvarid, cu_2d)
268
269 CALL nf95_inq_varid(nid, 'cv', nvarid)
270 CALL nf95_put_var(nid, nvarid, cv_2d)
271
272 CALL nf95_inq_varid(nid, 'aire', nvarid)
273 CALL nf95_put_var(nid, nvarid, aire_2d)
274
275 CALL nf95_inq_varid(nid, 'phisinit', nvarid)
276 CALL nf95_put_var(nid, nvarid, phis)
277
278 CALL nf95_close(nid) ! fermer le fichier
279
280 PRINT *, 'iim, jjm, llm, iday_end', iim, jjm, llm, iday_end
281 PRINT *, 'rad, omeg, g, cpp, kappa', rad, omeg, g, cpp, kappa
282
283 END SUBROUTINE dynredem0
284
285 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21