/[lmdze]/trunk/dyn3d/dynredem0.f
ViewVC logotype

Annotation of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 23 - (hide annotations)
Mon Dec 14 15:25:16 2009 UTC (14 years, 5 months ago) by guez
Original Path: trunk/libf/dyn3d/dynredem0.f90
File size: 9258 byte(s)
Split "orografi.f": one file for each procedure. Put the created files
in new directory "Orography".

Removed argument "vcov" of procedure "sortvarc". Removed arguments
"itau" and "time" of procedure "caldyn0". Removed arguments "itau",
"time" and "vcov" of procedure "sortvarc0".

Removed argument "time" of procedure "dynredem1". Removed NetCDF
variable "temps" in files "start.nc" and "restart.nc", because its
value is always 0.

Removed argument "nq" of procedures "iniadvtrac" and "leapfrog". The
number of "tracers read in "traceur.def" must now be equal to "nqmx",
or "nqmx" must equal 4 if there is no file "traceur.def". Replaced
variable "nq" by constant "nqmx" in "leapfrog".

NetCDF variable for ozone field in "coefoz.nc" must now be called
"tro3" instead of "r".

Fixed bug in "zenang".

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 ioipsl, ONLY : ju2ymds, ymds2ju
13     USE dimens_m, ONLY : iim, jjm, llm, nqmx
14     USE paramet_m, ONLY : iip1, jjp1, llmp1
15     USE comconst, ONLY : cpp, daysec, dtvr, g, kappa, omeg, rad
16     USE comvert, ONLY : ap, bp, nivsig, nivsigs, pa, preff, presnivs
17     USE logic, ONLY : fxyhypb, ysinus
18     USE comgeom, ONLY : aire_2d, cu_2d, cv_2d, rlatu, rlatv, rlonu, rlonv
19     USE serre, ONLY : clat, clon, dzoomx, dzoomy, grossismx, grossismy, &
20     taux, tauy
21     USE temps, ONLY : annee_ref, day_ref, itaufin, itau_dyn
22     USE ener, ONLY : ang0, etot0, ptot0, stot0, ztot0
23     USE iniadvtrac_m, ONLY : tname, ttext
24     USE netcdf95, ONLY : nf95_close, nf95_create, nf95_def_dim, &
25     nf95_def_var, nf95_enddef, nf95_inq_varid, nf95_put_att, &
26     nf95_put_var
27     USE netcdf, ONLY : nf90_clobber, nf90_float, nf90_global, &
28     nf90_unlimited
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     tab_cntrl(31) = real(itau_dyn+itaufin)
109 guez 5
110 guez 18 CALL nf95_create(fichnom, nf90_clobber, nid)
111     CALL nf95_put_att(nid, nf90_global, 'title', &
112     'Fichier de démarrage dynamique')
113 guez 5
114 guez 7 ! Definir les dimensions du fichiers:
115 guez 5
116 guez 18 CALL nf95_def_dim(nid, 'index', length, idim_index)
117     CALL nf95_def_dim(nid, 'rlonu', iip1, idim_rlonu)
118     CALL nf95_def_dim(nid, 'rlatu', jjp1, idim_rlatu)
119     CALL nf95_def_dim(nid, 'rlonv', iip1, idim_rlonv)
120     CALL nf95_def_dim(nid, 'rlatv', jjm, idim_rlatv)
121     CALL nf95_def_dim(nid, 'sigs', llm, idim_s)
122     CALL nf95_def_dim(nid, 'sig', llmp1, idim_sig)
123     CALL nf95_def_dim(nid, 'temps', nf90_unlimited, idim_tim)
124 guez 5
125 guez 7 ! Definir et enregistrer certains champs invariants:
126 guez 5
127 guez 18 CALL nf95_def_var(nid, 'controle', nf90_float, idim_index, nvarid)
128     CALL nf95_put_att(nid, nvarid, 'title', 'Parametres de controle')
129 guez 5
130 guez 18 CALL nf95_def_var(nid, 'rlonu', nf90_float, idim_rlonu, nvarid)
131     CALL nf95_put_att(nid, nvarid, 'title', 'Longitudes des points U')
132 guez 5
133 guez 18 CALL nf95_def_var(nid, 'rlatu', nf90_float, idim_rlatu, nvarid)
134     CALL nf95_put_att(nid, nvarid, 'title', 'Latitudes des points U')
135 guez 5
136 guez 18 CALL nf95_def_var(nid, 'rlonv', nf90_float, idim_rlonv, nvarid)
137     CALL nf95_put_att(nid, nvarid, 'title', 'Longitudes des points V')
138 guez 5
139 guez 18 CALL nf95_def_var(nid, 'rlatv', nf90_float, idim_rlatv, nvarid)
140     CALL nf95_put_att(nid, nvarid, 'title', 'Latitudes des points V')
141 guez 5
142 guez 18 CALL nf95_def_var(nid, 'nivsigs', nf90_float, idim_s, nvarid)
143     CALL nf95_put_att(nid, nvarid, 'title', 'Numero naturel des couches s')
144 guez 5
145 guez 18 CALL nf95_def_var(nid, 'nivsig', nf90_float, idim_sig, nvarid)
146     CALL nf95_put_att(nid, nvarid, 'title', &
147     'Numero naturel des couches sigma')
148 guez 5
149 guez 18 CALL nf95_def_var(nid, 'ap', nf90_float, idim_sig, nvarid)
150     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient A pour hybride')
151 guez 5
152 guez 18 CALL nf95_def_var(nid, 'bp', nf90_float, idim_sig, nvarid)
153     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient B pour hybride')
154 guez 5
155 guez 18 CALL nf95_def_var(nid, 'presnivs', nf90_float, idim_s, nvarid)
156 guez 5
157 guez 7 ! Coefficients de passage cov. <-> contra. <--> naturel
158 guez 5
159 guez 7 dims2(1) = idim_rlonu
160     dims2(2) = idim_rlatu
161 guez 18 CALL nf95_def_var(nid, 'cu', nf90_float, dims2, nvarid)
162     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient de passage pour U')
163 guez 5
164 guez 7 dims2(1) = idim_rlonv
165     dims2(2) = idim_rlatv
166 guez 18 CALL nf95_def_var(nid, 'cv', nf90_float, dims2, nvarid)
167     CALL nf95_put_att(nid, nvarid, 'title', 'Coefficient de passage pour V')
168 guez 5
169 guez 7 ! Aire de chaque maille:
170 guez 5
171 guez 7 dims2(1) = idim_rlonv
172     dims2(2) = idim_rlatu
173 guez 18 CALL nf95_def_var(nid, 'aire', nf90_float, dims2, nvarid)
174     CALL nf95_put_att(nid, nvarid, 'title', 'Aires de chaque maille')
175 guez 5
176 guez 7 ! Geopentiel au sol:
177 guez 5
178 guez 7 dims2(1) = idim_rlonv
179     dims2(2) = idim_rlatu
180 guez 18 CALL nf95_def_var(nid, 'phisinit', nf90_float, dims2, nvarid)
181     CALL nf95_put_att(nid, nvarid, 'title', 'Geopotentiel au sol')
182 guez 5
183 guez 7 ! Definir les variables pour pouvoir les enregistrer plus tard:
184 guez 3
185 guez 18 CALL nf95_def_var(nid, 'temps', nf90_float, idim_tim, nvarid)
186     CALL nf95_put_att(nid, nvarid, 'title', 'Temps de simulation')
187     WRITE (unites, 200) yyears0, mmois0, jjour0
188     200 FORMAT ('days since ', I4, '-', I2.2, '-', I2.2, ' 00:00:00')
189     CALL nf95_put_att(nid, nvarid, 'units', unites)
190 guez 7
191 guez 5
192 guez 7 dims4(1) = idim_rlonu
193     dims4(2) = idim_rlatu
194     dims4(3) = idim_s
195     dims4(4) = idim_tim
196 guez 18 CALL nf95_def_var(nid, 'ucov', nf90_float, dims4, nvarid)
197     CALL nf95_put_att(nid, nvarid, 'title', 'Vitesse U')
198 guez 5
199 guez 7 dims4(1) = idim_rlonv
200     dims4(2) = idim_rlatv
201     dims4(3) = idim_s
202     dims4(4) = idim_tim
203 guez 18 CALL nf95_def_var(nid, 'vcov', nf90_float, dims4, nvarid)
204     CALL nf95_put_att(nid, nvarid, 'title', 'Vitesse V')
205 guez 5
206 guez 7 dims4(1) = idim_rlonv
207     dims4(2) = idim_rlatu
208     dims4(3) = idim_s
209     dims4(4) = idim_tim
210 guez 18 CALL nf95_def_var(nid, 'teta', nf90_float, dims4, nvarid)
211     CALL nf95_put_att(nid, nvarid, 'title', 'Temperature')
212 guez 5
213 guez 7 dims4(1) = idim_rlonv
214     dims4(2) = idim_rlatu
215     dims4(3) = idim_s
216     dims4(4) = idim_tim
217 guez 18 DO iq = 1, nqmx
218     CALL nf95_def_var(nid, tname(iq), nf90_float, dims4, nvarid)
219     CALL nf95_put_att(nid, nvarid, 'title', ttext(iq))
220     END DO
221 guez 5
222 guez 7 dims4(1) = idim_rlonv
223     dims4(2) = idim_rlatu
224     dims4(3) = idim_s
225     dims4(4) = idim_tim
226 guez 18 CALL nf95_def_var(nid, 'masse', nf90_float, dims4, nvarid)
227     CALL nf95_put_att(nid, nvarid, 'title', 'C est quoi ?')
228 guez 5
229 guez 7 dims3(1) = idim_rlonv
230     dims3(2) = idim_rlatu
231     dims3(3) = idim_tim
232 guez 18 CALL nf95_def_var(nid, 'ps', nf90_float, dims3, nvarid)
233     CALL nf95_put_att(nid, nvarid, 'title', 'Pression au sol')
234 guez 5
235 guez 18 CALL nf95_enddef(nid)
236 guez 3
237 guez 18 CALL nf95_inq_varid(nid, 'controle', nvarid)
238     CALL nf95_put_var(nid, nvarid, tab_cntrl)
239 guez 3
240 guez 18 CALL nf95_inq_varid(nid, 'rlonu', nvarid)
241     CALL nf95_put_var(nid, nvarid, rlonu)
242    
243     CALL nf95_inq_varid(nid, 'rlatu', nvarid)
244     CALL nf95_put_var(nid, nvarid, rlatu)
245    
246     CALL nf95_inq_varid(nid, 'rlonv', nvarid)
247     CALL nf95_put_var(nid, nvarid, rlonv)
248    
249     CALL nf95_inq_varid(nid, 'rlatv', nvarid)
250     CALL nf95_put_var(nid, nvarid, rlatv)
251    
252     CALL nf95_inq_varid(nid, 'nivsigs', nvarid)
253     CALL nf95_put_var(nid, nvarid, nivsigs)
254    
255     CALL nf95_inq_varid(nid, 'nivsig', nvarid)
256     CALL nf95_put_var(nid, nvarid, nivsig)
257    
258     CALL nf95_inq_varid(nid, 'ap', nvarid)
259     CALL nf95_put_var(nid, nvarid, ap)
260    
261     CALL nf95_inq_varid(nid, 'bp', nvarid)
262     CALL nf95_put_var(nid, nvarid, bp)
263    
264     CALL nf95_inq_varid(nid, 'presnivs', nvarid)
265     CALL nf95_put_var(nid, nvarid, presnivs)
266    
267     CALL nf95_inq_varid(nid, 'cu', nvarid)
268     CALL nf95_put_var(nid, nvarid, cu_2d)
269    
270     CALL nf95_inq_varid(nid, 'cv', nvarid)
271     CALL nf95_put_var(nid, nvarid, cv_2d)
272    
273     CALL nf95_inq_varid(nid, 'aire', nvarid)
274     CALL nf95_put_var(nid, nvarid, aire_2d)
275    
276     CALL nf95_inq_varid(nid, 'phisinit', nvarid)
277     CALL nf95_put_var(nid, nvarid, phis)
278    
279     CALL nf95_close(nid) ! fermer le fichier
280    
281     PRINT *, 'iim, jjm, llm, iday_end', iim, jjm, llm, iday_end
282     PRINT *, 'rad, omeg, g, cpp, kappa', rad, omeg, g, cpp, kappa
283    
284 guez 7 END SUBROUTINE dynredem0
285    
286 guez 18 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21