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

Contents of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 62 - (show annotations)
Thu Jul 26 14:37:37 2012 UTC (11 years, 10 months ago) by guez
Original Path: trunk/libf/dyn3d/dynredem0.f90
File size: 8718 byte(s)
Changed handling of compiler in compilation system.

Removed the prefix letters "y", "p", "t" or "z" in some names of variables.

Replaced calls to NetCDF by calls to NetCDF95.

Extracted "ioget_calendar" procedures from "calendar.f90" into a
separate file.

Extracted to a separate file, "mathop2.f90", procedures that were not
part of the generic interface "mathop" in "mathop.f90".

Removed computation of "dq" in "bilan_dyn", which was not used.

In "iniadvtrac", removed schemes 20 Slopes and 30 Prather. Was not
compatible with declarations of array sizes.

In "clcdrag", "ustarhb", "vdif_kcay", "yamada4" and "coefkz", changed
the size of some arrays from "klon" to "knon".

Removed possible call to "conema3" in "physiq".

Removed unused argument "cd" in "yamada".

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

  ViewVC Help
Powered by ViewVC 1.1.21