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

Annotation of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 62 - (hide 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 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 62 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 guez 5
28 guez 62 CHARACTER(len=*), INTENT(IN):: fichnom
29     INTEGER, INTENT(IN):: iday_end
30     REAL, INTENT(IN):: phis(:, :)
31 guez 5
32 guez 62 ! Local:
33 guez 3
34 guez 62 INTEGER iq, l
35 guez 22 INTEGER, PARAMETER:: length = 100
36 guez 62 REAL tab_cntrl(length) ! tableau des paramètres du run
37 guez 5
38 guez 62 ! Variables locales pour NetCDF:
39 guez 3
40 guez 62 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 guez 3
46 guez 62 REAL zjulian, hours
47     INTEGER yyears0, jjour0, mmois0
48     CHARACTER(len=30) unites
49 guez 3
50 guez 7 !-----------------------------------------------------------------------
51 guez 3
52 guez 18 PRINT *, 'Call sequence information: dynredem0'
53 guez 3
54 guez 23 CALL ymds2ju(annee_ref, 1, iday_end, 0., zjulian)
55 guez 18 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
56 guez 5
57 guez 18 DO l = 1, length
58 guez 7 tab_cntrl(l) = 0.
59 guez 18 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 guez 7 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 guez 5
80 guez 62 ! Paramètres pour le zoom :
81 guez 3
82 guez 18 tab_cntrl(20) = clon
83     tab_cntrl(21) = clat
84     tab_cntrl(22) = grossismx
85     tab_cntrl(23) = grossismy
86 guez 5
87 guez 18 IF (fxyhypb) THEN
88 guez 7 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 guez 18 IF (ysinus) tab_cntrl(27) = 1.
102     END IF
103 guez 5
104 guez 18 tab_cntrl(30) = real(iday_end)
105 guez 5
106 guez 39 CALL nf95_create(fichnom, nf90_clobber, ncid)
107     CALL nf95_put_att(ncid, nf90_global, 'title', &
108 guez 18 'Fichier de démarrage dynamique')
109 guez 5
110 guez 7 ! Definir les dimensions du fichiers:
111 guez 5
112 guez 39 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 guez 5
121 guez 7 ! Definir et enregistrer certains champs invariants:
122 guez 5
123 guez 39 CALL nf95_def_var(ncid, 'controle', nf90_float, idim_index, varid)
124     CALL nf95_put_att(ncid, varid, 'title', 'Parametres de controle')
125 guez 5
126 guez 39 CALL nf95_def_var(ncid, 'rlonu', nf90_float, idim_rlonu, varid)
127     CALL nf95_put_att(ncid, varid, 'title', 'Longitudes des points U')
128 guez 5
129 guez 39 CALL nf95_def_var(ncid, 'rlatu', nf90_float, idim_rlatu, varid)
130     CALL nf95_put_att(ncid, varid, 'title', 'Latitudes des points U')
131 guez 5
132 guez 39 CALL nf95_def_var(ncid, 'rlonv', nf90_float, idim_rlonv, varid)
133     CALL nf95_put_att(ncid, varid, 'title', 'Longitudes des points V')
134 guez 5
135 guez 39 CALL nf95_def_var(ncid, 'rlatv', nf90_float, idim_rlatv, varid)
136     CALL nf95_put_att(ncid, varid, 'title', 'Latitudes des points V')
137 guez 5
138 guez 39 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 guez 5
141 guez 39 CALL nf95_def_var(ncid, 'nivsig', nf90_float, idim_sig, varid)
142     CALL nf95_put_att(ncid, varid, 'title', &
143 guez 18 'Numero naturel des couches sigma')
144 guez 5
145 guez 39 CALL nf95_def_var(ncid, 'ap', nf90_float, idim_sig, varid)
146     CALL nf95_put_att(ncid, varid, 'title', 'Coefficient A pour hybride')
147 guez 5
148 guez 39 CALL nf95_def_var(ncid, 'bp', nf90_float, idim_sig, varid)
149     CALL nf95_put_att(ncid, varid, 'title', 'Coefficient B pour hybride')
150 guez 5
151 guez 39 CALL nf95_def_var(ncid, 'presnivs', nf90_float, idim_s, varid)
152 guez 5
153 guez 7 ! Coefficients de passage cov. <-> contra. <--> naturel
154 guez 5
155 guez 62 CALL nf95_def_var(ncid, 'cu', nf90_float, (/idim_rlonu, idim_rlatu/), varid)
156 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Coefficient de passage pour U')
157 guez 5
158 guez 62 CALL nf95_def_var(ncid, 'cv', nf90_float, (/idim_rlonv, idim_rlatv/), varid)
159 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Coefficient de passage pour V')
160 guez 5
161 guez 7 ! Aire de chaque maille:
162 guez 5
163 guez 62 CALL nf95_def_var(ncid, 'aire', nf90_float, (/idim_rlonv, idim_rlatu/), &
164     varid)
165 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Aires de chaque maille')
166 guez 5
167 guez 7 ! Geopentiel au sol:
168 guez 5
169 guez 62 CALL nf95_def_var(ncid, 'phisinit', nf90_float, &
170     (/idim_rlonv, idim_rlatu/), varid)
171 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Geopotentiel au sol')
172 guez 5
173 guez 7 ! Definir les variables pour pouvoir les enregistrer plus tard:
174 guez 3
175 guez 39 CALL nf95_def_var(ncid, 'temps', nf90_float, idim_tim, varid)
176     CALL nf95_put_att(ncid, varid, 'title', 'Temps de simulation')
177 guez 62 WRITE(unites, 200) yyears0, mmois0, jjour0
178 guez 18 200 FORMAT ('days since ', I4, '-', I2.2, '-', I2.2, ' 00:00:00')
179 guez 39 CALL nf95_put_att(ncid, varid, 'units', unites)
180 guez 7
181 guez 62 CALL nf95_def_var(ncid, 'ucov', nf90_float, &
182     (/idim_rlonu, idim_rlatu, idim_s, idim_tim/), varid)
183 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse U')
184 guez 5
185 guez 62 CALL nf95_def_var(ncid, 'vcov', nf90_float, &
186     (/idim_rlonv, idim_rlatv, idim_s, idim_tim/), varid)
187 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse V')
188 guez 5
189 guez 62 CALL nf95_def_var(ncid, 'teta', nf90_float, &
190     (/idim_rlonv, idim_rlatu, idim_s, idim_tim/), varid)
191 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Temperature')
192 guez 5
193 guez 18 DO iq = 1, nqmx
194 guez 62 CALL nf95_def_var(ncid, tname(iq), nf90_float, &
195     (/idim_rlonv, idim_rlatu, idim_s, idim_tim/), varid)
196 guez 39 CALL nf95_put_att(ncid, varid, 'title', ttext(iq))
197 guez 18 END DO
198 guez 5
199 guez 62 CALL nf95_def_var(ncid, 'masse', nf90_float, &
200     (/idim_rlonv, idim_rlatu, idim_s, idim_tim/), varid)
201 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'C est quoi ?')
202 guez 5
203 guez 62 CALL nf95_def_var(ncid, 'ps', nf90_float, &
204     (/idim_rlonv, idim_rlatu, idim_tim/), varid)
205 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Pression au sol')
206 guez 5
207 guez 39 CALL nf95_enddef(ncid)
208 guez 3
209 guez 39 CALL nf95_inq_varid(ncid, 'controle', varid)
210     CALL nf95_put_var(ncid, varid, tab_cntrl)
211 guez 3
212 guez 39 CALL nf95_inq_varid(ncid, 'rlonu', varid)
213     CALL nf95_put_var(ncid, varid, rlonu)
214 guez 18
215 guez 39 CALL nf95_inq_varid(ncid, 'rlatu', varid)
216     CALL nf95_put_var(ncid, varid, rlatu)
217 guez 18
218 guez 39 CALL nf95_inq_varid(ncid, 'rlonv', varid)
219     CALL nf95_put_var(ncid, varid, rlonv)
220 guez 18
221 guez 39 CALL nf95_inq_varid(ncid, 'rlatv', varid)
222     CALL nf95_put_var(ncid, varid, rlatv)
223 guez 18
224 guez 39 CALL nf95_inq_varid(ncid, 'nivsigs', varid)
225     CALL nf95_put_var(ncid, varid, nivsigs)
226 guez 18
227 guez 39 CALL nf95_inq_varid(ncid, 'nivsig', varid)
228     CALL nf95_put_var(ncid, varid, nivsig)
229 guez 18
230 guez 39 CALL nf95_inq_varid(ncid, 'ap', varid)
231     CALL nf95_put_var(ncid, varid, ap)
232 guez 18
233 guez 39 CALL nf95_inq_varid(ncid, 'bp', varid)
234     CALL nf95_put_var(ncid, varid, bp)
235 guez 18
236 guez 39 CALL nf95_inq_varid(ncid, 'presnivs', varid)
237     CALL nf95_put_var(ncid, varid, presnivs)
238 guez 18
239 guez 39 CALL nf95_inq_varid(ncid, 'cu', varid)
240     CALL nf95_put_var(ncid, varid, cu_2d)
241 guez 18
242 guez 39 CALL nf95_inq_varid(ncid, 'cv', varid)
243     CALL nf95_put_var(ncid, varid, cv_2d)
244 guez 18
245 guez 39 CALL nf95_inq_varid(ncid, 'aire', varid)
246     CALL nf95_put_var(ncid, varid, aire_2d)
247 guez 18
248 guez 39 CALL nf95_inq_varid(ncid, 'phisinit', varid)
249     CALL nf95_put_var(ncid, varid, phis)
250 guez 18
251 guez 39 CALL nf95_close(ncid) ! fermer le fichier
252 guez 18
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 guez 7 END SUBROUTINE dynredem0
257    
258 guez 18 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21