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

Annotation of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 113 - (hide annotations)
Thu Sep 18 19:56:46 2014 UTC (9 years, 8 months ago) by guez
File size: 7937 byte(s)
Moved the call to read_serre out of conf_gcm so that it can be called
only in the program ce0l, not in gcm. In gcm, variables of module
serre are read from start file. Added reading of dzoomx, dzoomy, taux,
tauy from start file, in dynetat0. Those variables were written by
dynredem0 but not read.

Removed possibility fxyhypb = false, because the geometric part of the
program is such a mess. Could then remove variables transx, transy,
alphax, alphay, pxo, pyo of module serre.

Bug fix in tau2alpha: missing save attributes. The first call to
tau2alpha needs to compute dxdyu and dxdyv regardless of value of
argument type, because they will be needed for subsequent calls to
tau2alpha with various values of argument type.

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 comgeom, ONLY: aire_2d, cu_2d, cv_2d, rlatu, rlatv, rlonu, rlonv
14     USE dimens_m, ONLY: iim, jjm, llm, nqmx
15 guez 92 USE disvert_m, ONLY: ap, bp, pa, preff, presnivs
16 guez 62 USE ener, ONLY: ang0, etot0, ptot0, stot0, ztot0
17     USE iniadvtrac_m, ONLY: tname, ttext
18 guez 92 USE ju2ymds_m, ONLY: ju2ymds
19     USE netcdf, ONLY: nf90_clobber, nf90_float, nf90_global, nf90_unlimited
20 guez 62 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 paramet_m, ONLY: iip1, jjp1, llmp1
23     USE serre, ONLY: clat, clon, dzoomx, dzoomy, grossismx, grossismy, taux, &
24     tauy
25     USE temps, ONLY: annee_ref, day_ref
26 guez 92 use ymds2ju_m, only: ymds2ju
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 113 tab_cntrl(24) = 1.
87     tab_cntrl(25) = dzoomx
88     tab_cntrl(26) = dzoomy
89     tab_cntrl(27) = 0.
90     tab_cntrl(28) = taux
91     tab_cntrl(29) = tauy
92 guez 5
93 guez 18 tab_cntrl(30) = real(iday_end)
94 guez 5
95 guez 39 CALL nf95_create(fichnom, nf90_clobber, ncid)
96     CALL nf95_put_att(ncid, nf90_global, 'title', &
97 guez 18 'Fichier de démarrage dynamique')
98 guez 5
99 guez 7 ! Definir les dimensions du fichiers:
100 guez 5
101 guez 39 CALL nf95_def_dim(ncid, 'index', length, idim_index)
102     CALL nf95_def_dim(ncid, 'rlonu', iip1, idim_rlonu)
103     CALL nf95_def_dim(ncid, 'rlatu', jjp1, idim_rlatu)
104     CALL nf95_def_dim(ncid, 'rlonv', iip1, idim_rlonv)
105     CALL nf95_def_dim(ncid, 'rlatv', jjm, idim_rlatv)
106     CALL nf95_def_dim(ncid, 'sigs', llm, idim_s)
107     CALL nf95_def_dim(ncid, 'sig', llmp1, idim_sig)
108     CALL nf95_def_dim(ncid, 'temps', nf90_unlimited, idim_tim)
109 guez 5
110 guez 7 ! Definir et enregistrer certains champs invariants:
111 guez 5
112 guez 39 CALL nf95_def_var(ncid, 'controle', nf90_float, idim_index, varid)
113     CALL nf95_put_att(ncid, varid, 'title', 'Parametres de controle')
114 guez 5
115 guez 39 CALL nf95_def_var(ncid, 'rlonu', nf90_float, idim_rlonu, varid)
116     CALL nf95_put_att(ncid, varid, 'title', 'Longitudes des points U')
117 guez 5
118 guez 39 CALL nf95_def_var(ncid, 'rlatu', nf90_float, idim_rlatu, varid)
119     CALL nf95_put_att(ncid, varid, 'title', 'Latitudes des points U')
120 guez 5
121 guez 39 CALL nf95_def_var(ncid, 'rlonv', nf90_float, idim_rlonv, varid)
122     CALL nf95_put_att(ncid, varid, 'title', 'Longitudes des points V')
123 guez 5
124 guez 39 CALL nf95_def_var(ncid, 'rlatv', nf90_float, idim_rlatv, varid)
125     CALL nf95_put_att(ncid, varid, 'title', 'Latitudes des points V')
126 guez 5
127 guez 39 CALL nf95_def_var(ncid, 'ap', nf90_float, idim_sig, varid)
128     CALL nf95_put_att(ncid, varid, 'title', 'Coefficient A pour hybride')
129 guez 5
130 guez 39 CALL nf95_def_var(ncid, 'bp', nf90_float, idim_sig, varid)
131     CALL nf95_put_att(ncid, varid, 'title', 'Coefficient B pour hybride')
132 guez 5
133 guez 39 CALL nf95_def_var(ncid, 'presnivs', nf90_float, idim_s, varid)
134 guez 5
135 guez 7 ! Coefficients de passage cov. <-> contra. <--> naturel
136 guez 5
137 guez 62 CALL nf95_def_var(ncid, 'cu', nf90_float, (/idim_rlonu, idim_rlatu/), varid)
138 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Coefficient de passage pour U')
139 guez 5
140 guez 62 CALL nf95_def_var(ncid, 'cv', nf90_float, (/idim_rlonv, idim_rlatv/), varid)
141 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Coefficient de passage pour V')
142 guez 5
143 guez 7 ! Aire de chaque maille:
144 guez 5
145 guez 62 CALL nf95_def_var(ncid, 'aire', nf90_float, (/idim_rlonv, idim_rlatu/), &
146     varid)
147 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Aires de chaque maille')
148 guez 5
149 guez 7 ! Geopentiel au sol:
150 guez 5
151 guez 62 CALL nf95_def_var(ncid, 'phisinit', nf90_float, &
152     (/idim_rlonv, idim_rlatu/), varid)
153 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Geopotentiel au sol')
154 guez 5
155 guez 7 ! Definir les variables pour pouvoir les enregistrer plus tard:
156 guez 3
157 guez 39 CALL nf95_def_var(ncid, 'temps', nf90_float, idim_tim, varid)
158     CALL nf95_put_att(ncid, varid, 'title', 'Temps de simulation')
159 guez 62 WRITE(unites, 200) yyears0, mmois0, jjour0
160 guez 18 200 FORMAT ('days since ', I4, '-', I2.2, '-', I2.2, ' 00:00:00')
161 guez 39 CALL nf95_put_att(ncid, varid, 'units', unites)
162 guez 7
163 guez 62 CALL nf95_def_var(ncid, 'ucov', nf90_float, &
164     (/idim_rlonu, idim_rlatu, idim_s, idim_tim/), varid)
165 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse U')
166 guez 5
167 guez 62 CALL nf95_def_var(ncid, 'vcov', nf90_float, &
168     (/idim_rlonv, idim_rlatv, idim_s, idim_tim/), varid)
169 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse V')
170 guez 5
171 guez 62 CALL nf95_def_var(ncid, 'teta', nf90_float, &
172     (/idim_rlonv, idim_rlatu, idim_s, idim_tim/), varid)
173 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Temperature')
174 guez 5
175 guez 18 DO iq = 1, nqmx
176 guez 62 CALL nf95_def_var(ncid, tname(iq), nf90_float, &
177     (/idim_rlonv, idim_rlatu, idim_s, idim_tim/), varid)
178 guez 39 CALL nf95_put_att(ncid, varid, 'title', ttext(iq))
179 guez 18 END DO
180 guez 5
181 guez 62 CALL nf95_def_var(ncid, 'masse', nf90_float, &
182     (/idim_rlonv, idim_rlatu, idim_s, idim_tim/), varid)
183 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'C est quoi ?')
184 guez 5
185 guez 62 CALL nf95_def_var(ncid, 'ps', nf90_float, &
186     (/idim_rlonv, idim_rlatu, idim_tim/), varid)
187 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Pression au sol')
188 guez 5
189 guez 39 CALL nf95_enddef(ncid)
190 guez 3
191 guez 39 CALL nf95_inq_varid(ncid, 'controle', varid)
192     CALL nf95_put_var(ncid, varid, tab_cntrl)
193 guez 3
194 guez 39 CALL nf95_inq_varid(ncid, 'rlonu', varid)
195     CALL nf95_put_var(ncid, varid, rlonu)
196 guez 18
197 guez 39 CALL nf95_inq_varid(ncid, 'rlatu', varid)
198     CALL nf95_put_var(ncid, varid, rlatu)
199 guez 18
200 guez 39 CALL nf95_inq_varid(ncid, 'rlonv', varid)
201     CALL nf95_put_var(ncid, varid, rlonv)
202 guez 18
203 guez 39 CALL nf95_inq_varid(ncid, 'rlatv', varid)
204     CALL nf95_put_var(ncid, varid, rlatv)
205 guez 18
206 guez 39 CALL nf95_inq_varid(ncid, 'ap', varid)
207     CALL nf95_put_var(ncid, varid, ap)
208 guez 18
209 guez 39 CALL nf95_inq_varid(ncid, 'bp', varid)
210     CALL nf95_put_var(ncid, varid, bp)
211 guez 18
212 guez 39 CALL nf95_inq_varid(ncid, 'presnivs', varid)
213     CALL nf95_put_var(ncid, varid, presnivs)
214 guez 18
215 guez 39 CALL nf95_inq_varid(ncid, 'cu', varid)
216     CALL nf95_put_var(ncid, varid, cu_2d)
217 guez 18
218 guez 39 CALL nf95_inq_varid(ncid, 'cv', varid)
219     CALL nf95_put_var(ncid, varid, cv_2d)
220 guez 18
221 guez 39 CALL nf95_inq_varid(ncid, 'aire', varid)
222     CALL nf95_put_var(ncid, varid, aire_2d)
223 guez 18
224 guez 39 CALL nf95_inq_varid(ncid, 'phisinit', varid)
225     CALL nf95_put_var(ncid, varid, phis)
226 guez 18
227 guez 39 CALL nf95_close(ncid) ! fermer le fichier
228 guez 18
229     PRINT *, 'iim, jjm, llm, iday_end', iim, jjm, llm, iday_end
230     PRINT *, 'rad, omeg, g, cpp, kappa', rad, omeg, g, cpp, kappa
231    
232 guez 7 END SUBROUTINE dynredem0
233    
234 guez 18 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21