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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 27 - (hide annotations)
Thu Mar 25 14:29:07 2010 UTC (14 years, 2 months 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 guez 18 MODULE dynredem0_m
2 guez 3
3 guez 7 IMPLICIT NONE
4 guez 3
5 guez 18 CONTAINS
6 guez 3
7 guez 7 SUBROUTINE dynredem0(fichnom, iday_end, phis)
8 guez 3
9 guez 23 ! From dyn3d/dynredem.F, version 1.2 2004/06/22 11:45:30
10 guez 7 ! Ecriture du fichier de redémarrage au format NetCDF (initialisation)
11 guez 3
12 guez 18 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 guez 27 USE dimens_m, ONLY : iim, jjm, llm, nqmx
16 guez 18 USE ener, ONLY : ang0, etot0, ptot0, stot0, ztot0
17 guez 27 USE ioipsl, ONLY : ju2ymds, ymds2ju
18 guez 18 USE iniadvtrac_m, ONLY : tname, ttext
19 guez 27 USE logic, ONLY : fxyhypb, ysinus
20 guez 18 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 guez 27 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 guez 5
30 guez 18 CHARACTER (len=*), INTENT (IN) :: fichnom
31     INTEGER, INTENT (IN) :: iday_end
32     REAL, INTENT (IN) :: phis(:, :)
33 guez 5
34 guez 7 ! Local:
35 guez 3
36 guez 18 INTEGER :: iq, l
37 guez 22 INTEGER, PARAMETER:: length = 100
38 guez 18 REAL :: tab_cntrl(length) ! tableau des parametres du run
39 guez 5
40 guez 7 ! Variables locales pour NetCDF:
41 guez 3
42 guez 18 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 guez 3
49 guez 18 REAL :: zjulian, hours
50     INTEGER :: yyears0, jjour0, mmois0
51     CHARACTER (len=30) :: unites
52 guez 3
53 guez 7 !-----------------------------------------------------------------------
54 guez 3
55 guez 18 PRINT *, 'Call sequence information: dynredem0'
56 guez 3
57 guez 23 CALL ymds2ju(annee_ref, 1, iday_end, 0., zjulian)
58 guez 18 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
59 guez 5
60 guez 18 DO l = 1, length
61 guez 7 tab_cntrl(l) = 0.
62 guez 18 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 guez 7 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 guez 5
83 guez 7 ! Paramètres pour le zoom :
84 guez 3
85 guez 18 tab_cntrl(20) = clon
86     tab_cntrl(21) = clat
87     tab_cntrl(22) = grossismx
88     tab_cntrl(23) = grossismy
89 guez 5
90 guez 18 IF (fxyhypb) THEN
91 guez 7 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 guez 18 IF (ysinus) tab_cntrl(27) = 1.
105     END IF
106 guez 5
107 guez 18 tab_cntrl(30) = real(iday_end)
108 guez 5
109 guez 18 CALL nf95_create(fichnom, nf90_clobber, nid)
110     CALL nf95_put_att(nid, nf90_global, 'title', &
111     'Fichier de démarrage dynamique')
112 guez 5
113 guez 7 ! Definir les dimensions du fichiers:
114 guez 5
115 guez 18 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 guez 5
124 guez 7 ! Definir et enregistrer certains champs invariants:
125 guez 5
126 guez 18 CALL nf95_def_var(nid, 'controle', nf90_float, idim_index, nvarid)
127     CALL nf95_put_att(nid, nvarid, 'title', 'Parametres de controle')
128 guez 5
129 guez 18 CALL nf95_def_var(nid, 'rlonu', nf90_float, idim_rlonu, nvarid)
130     CALL nf95_put_att(nid, nvarid, 'title', 'Longitudes des points U')
131 guez 5
132 guez 18 CALL nf95_def_var(nid, 'rlatu', nf90_float, idim_rlatu, nvarid)
133     CALL nf95_put_att(nid, nvarid, 'title', 'Latitudes des points U')
134 guez 5
135 guez 18 CALL nf95_def_var(nid, 'rlonv', nf90_float, idim_rlonv, nvarid)
136     CALL nf95_put_att(nid, nvarid, 'title', 'Longitudes des points V')
137 guez 5
138 guez 18 CALL nf95_def_var(nid, 'rlatv', nf90_float, idim_rlatv, nvarid)
139     CALL nf95_put_att(nid, nvarid, 'title', 'Latitudes des points V')
140 guez 5
141 guez 18 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 guez 5
144 guez 18 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 guez 5
148 guez 18 CALL nf95_def_var(nid, 'ap', nf90_float, idim_sig, nvarid)
149     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient A pour hybride')
150 guez 5
151 guez 18 CALL nf95_def_var(nid, 'bp', nf90_float, idim_sig, nvarid)
152     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient B pour hybride')
153 guez 5
154 guez 18 CALL nf95_def_var(nid, 'presnivs', nf90_float, idim_s, nvarid)
155 guez 5
156 guez 7 ! Coefficients de passage cov. <-> contra. <--> naturel
157 guez 5
158 guez 7 dims2(1) = idim_rlonu
159     dims2(2) = idim_rlatu
160 guez 18 CALL nf95_def_var(nid, 'cu', nf90_float, dims2, nvarid)
161     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient de passage pour U')
162 guez 5
163 guez 7 dims2(1) = idim_rlonv
164     dims2(2) = idim_rlatv
165 guez 18 CALL nf95_def_var(nid, 'cv', nf90_float, dims2, nvarid)
166     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient de passage pour V')
167 guez 5
168 guez 7 ! Aire de chaque maille:
169 guez 5
170 guez 7 dims2(1) = idim_rlonv
171     dims2(2) = idim_rlatu
172 guez 18 CALL nf95_def_var(nid, 'aire', nf90_float, dims2, nvarid)
173     CALL nf95_put_att(nid, nvarid, 'title', 'Aires de chaque maille')
174 guez 5
175 guez 7 ! Geopentiel au sol:
176 guez 5
177 guez 7 dims2(1) = idim_rlonv
178     dims2(2) = idim_rlatu
179 guez 18 CALL nf95_def_var(nid, 'phisinit', nf90_float, dims2, nvarid)
180     CALL nf95_put_att(nid, nvarid, 'title', 'Geopotentiel au sol')
181 guez 5
182 guez 7 ! Definir les variables pour pouvoir les enregistrer plus tard:
183 guez 3
184 guez 18 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 guez 7
190 guez 5
191 guez 7 dims4(1) = idim_rlonu
192     dims4(2) = idim_rlatu
193     dims4(3) = idim_s
194     dims4(4) = idim_tim
195 guez 18 CALL nf95_def_var(nid, 'ucov', nf90_float, dims4, nvarid)
196     CALL nf95_put_att(nid, nvarid, 'title', 'Vitesse U')
197 guez 5
198 guez 7 dims4(1) = idim_rlonv
199     dims4(2) = idim_rlatv
200     dims4(3) = idim_s
201     dims4(4) = idim_tim
202 guez 18 CALL nf95_def_var(nid, 'vcov', nf90_float, dims4, nvarid)
203     CALL nf95_put_att(nid, nvarid, 'title', 'Vitesse V')
204 guez 5
205 guez 7 dims4(1) = idim_rlonv
206     dims4(2) = idim_rlatu
207     dims4(3) = idim_s
208     dims4(4) = idim_tim
209 guez 18 CALL nf95_def_var(nid, 'teta', nf90_float, dims4, nvarid)
210     CALL nf95_put_att(nid, nvarid, 'title', 'Temperature')
211 guez 5
212 guez 7 dims4(1) = idim_rlonv
213     dims4(2) = idim_rlatu
214     dims4(3) = idim_s
215     dims4(4) = idim_tim
216 guez 18 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 guez 5
221 guez 7 dims4(1) = idim_rlonv
222     dims4(2) = idim_rlatu
223     dims4(3) = idim_s
224     dims4(4) = idim_tim
225 guez 18 CALL nf95_def_var(nid, 'masse', nf90_float, dims4, nvarid)
226     CALL nf95_put_att(nid, nvarid, 'title', 'C est quoi ?')
227 guez 5
228 guez 7 dims3(1) = idim_rlonv
229     dims3(2) = idim_rlatu
230     dims3(3) = idim_tim
231 guez 18 CALL nf95_def_var(nid, 'ps', nf90_float, dims3, nvarid)
232     CALL nf95_put_att(nid, nvarid, 'title', 'Pression au sol')
233 guez 5
234 guez 18 CALL nf95_enddef(nid)
235 guez 3
236 guez 18 CALL nf95_inq_varid(nid, 'controle', nvarid)
237     CALL nf95_put_var(nid, nvarid, tab_cntrl)
238 guez 3
239 guez 18 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 guez 7 END SUBROUTINE dynredem0
284    
285 guez 18 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21