source: LMDZ4/branches/LMDZ4-dev-20091210/libf/dyn3d/write_paramLMDZ_dyn.h @ 3406

Last change on this file since 3406 was 1201, checked in by Laurent Fairhead, 15 years ago

Modifications nécessaires a l'inclusion d'un calendrier réaliste.
La date courante est calculée dans leapfrog.F et exprimée en Jour Julien
(modifié). On en a profité pour faire un peu de ménage dans la gestion des dates
du modèle.
Dans la physique, on utilise les routines de passages entre calendrier Julien et
Gregorien incluses dans IOIPSL pour calculer le nombre de jours écoulés depuis le
1er janvier (pour les conditions aux limites) ou l'equinoxe (pour le calcul de
la longitude solaire). Le calcul de l'orbite reprend celui du gcm planétaire
(codé par FH)
On décide du calendrier à utiliser à l'aide du paramètre calend du run.def. Par
défaut celui-ci est à earth_360d
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 8.0 KB
Line 
1! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
2! Attention : il n'y a aucune raison pour ecrire ces constantes
3! comme des champs 2D. A corriger un jour ...
4
5c
6      ndex2d = 0
7      itau_w=itau_dyn+itau
8c
9      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(prt_level) 
10      CALL histwrite(nid_ctesGCM, "prt_level", itau_w,
11     .               zx_tmp_2d,iip1*jjp1,ndex2d)
12c
13      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(dayref)
14      CALL histwrite(nid_ctesGCM, "dayref", itau_w,
15     .               zx_tmp_2d,iip1*jjp1,ndex2d)
16c
17      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(anneeref)
18      CALL histwrite(nid_ctesGCM, "anneeref", itau_w,
19     .               zx_tmp_2d,iip1*jjp1,ndex2d)
20c
21      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(raz_date)
22      CALL histwrite(nid_ctesGCM, "raz_date", itau_w,
23     .               zx_tmp_2d,iip1*jjp1,ndex2d)
24c
25      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(nday)
26      CALL histwrite(nid_ctesGCM, "nday", itau_w,
27     .               zx_tmp_2d,iip1*jjp1,ndex2d)
28c
29      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(day_step)
30      CALL histwrite(nid_ctesGCM, "day_step", itau_w,
31     .               zx_tmp_2d,iip1*jjp1,ndex2d)
32c
33      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(iperiod)
34      CALL histwrite(nid_ctesGCM, "iperiod", itau_w,
35     .               zx_tmp_2d,iip1*jjp1,ndex2d)
36c
37      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(iapp_tracvl)
38      CALL histwrite(nid_ctesGCM, "iapp_tracvl", itau_w,
39     .               zx_tmp_2d,iip1*jjp1,ndex2d)
40c
41      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(iconser)
42      CALL histwrite(nid_ctesGCM, "iconser", itau_w,
43     .               zx_tmp_2d,iip1*jjp1,ndex2d)
44c
45      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(iecri)
46      CALL histwrite(nid_ctesGCM, "iecri", itau_w,
47     .               zx_tmp_2d,iip1*jjp1,ndex2d)
48c
49      zx_tmp_2d(1:iip1,1:jjp1)=periodav
50      CALL histwrite(nid_ctesGCM, "periodav", itau_w,
51     .               zx_tmp_2d,iip1*jjp1,ndex2d)
52c
53      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(idissip)
54      CALL histwrite(nid_ctesGCM, "idissip", itau_w,
55     .               zx_tmp_2d,iip1*jjp1,ndex2d)
56c
57      IF(lstardis) THEN
58       zx_tmp_2d(1:iip1,1:jjp1)=1.
59      ELSE
60       zx_tmp_2d(1:iip1,1:jjp1)=0.
61      ENDIF
62      CALL histwrite(nid_ctesGCM, "lstardis", itau_w,
63     .               zx_tmp_2d,iip1*jjp1,ndex2d)
64c
65      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(nitergdiv)
66      CALL histwrite(nid_ctesGCM, "nitergdiv", itau_w,
67     .               zx_tmp_2d,iip1*jjp1,ndex2d)
68c
69      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(nitergrot)
70      CALL histwrite(nid_ctesGCM, "nitergrot", itau_w,
71     .               zx_tmp_2d,iip1*jjp1,ndex2d)
72c
73      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(niterh) 
74      CALL histwrite(nid_ctesGCM, "niterh", itau_w,
75     .               zx_tmp_2d,iip1*jjp1,ndex2d)
76c
77      zx_tmp_2d(1:iip1,1:jjp1)=tetagdiv
78      CALL histwrite(nid_ctesGCM, "tetagdiv", itau_w,
79     .               zx_tmp_2d,iip1*jjp1,ndex2d)
80c
81      zx_tmp_2d(1:iip1,1:jjp1)=tetagrot
82      CALL histwrite(nid_ctesGCM, "tetagrot", itau_w,
83     .               zx_tmp_2d,iip1*jjp1,ndex2d)
84c
85      zx_tmp_2d(1:iip1,1:jjp1)=tetatemp
86      CALL histwrite(nid_ctesGCM, "tetatemp", itau_w,
87     .               zx_tmp_2d,iip1*jjp1,ndex2d)
88c
89      zx_tmp_2d(1:iip1,1:jjp1)=coefdis
90      CALL histwrite(nid_ctesGCM, "coefdis", itau_w,
91     .               zx_tmp_2d,iip1*jjp1,ndex2d)
92c
93      IF(purmats) THEN
94       zx_tmp_2d(1:iip1,1:jjp1)=1.
95      ELSE
96       zx_tmp_2d(1:iip1,1:jjp1)=0.
97      ENDIF
98      CALL histwrite(nid_ctesGCM, "purmats", itau_w,
99     .               zx_tmp_2d,iip1*jjp1,ndex2d)
100c
101      IF(ok_guide) THEN
102       zx_tmp_2d(1:iip1,1:jjp1)=1.
103      ELSE
104       zx_tmp_2d(1:iip1,1:jjp1)=0.
105      ENDIF
106      CALL histwrite(nid_ctesGCM, "ok_guide", itau_w,
107     .               zx_tmp_2d,iip1*jjp1,ndex2d)
108c
109      if (calend == 'earth_360d') then
110        zx_tmp_2d(1:iip1,1:jjp1)=1.
111      else if (calend == 'earth_365d') then
112        zx_tmp_2d(1:iip1,1:jjp1)=2.
113      else if (calend == 'earth_366d') then
114        zx_tmp_2d(1:iip1,1:jjp1)=3.
115      endif
116
117      CALL histwrite(nid_ctesGCM, "true_calendar", itau_w,
118     .               zx_tmp_2d,iip1*jjp1,ndex2d)
119c
120      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(iflag_phys)
121      CALL histwrite(nid_ctesGCM, "iflag_phys", itau_w,
122     .               zx_tmp_2d,iip1*jjp1,ndex2d)
123c
124      zx_tmp_2d(1:iip1,1:jjp1)=FLOAT(iphysiq)
125      CALL histwrite(nid_ctesGCM, "iphysiq", itau_w,
126     .               zx_tmp_2d,iip1*jjp1,ndex2d)
127c
128!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
129! FH 2008/05/02
130! La variable cycle_diurne n'est pas vue par la dynamique
131!     IF(cycle_diurne) THEN
132!      zx_tmp_2d(1:iip1,1:jjp1)=1.
133!     ELSE
134!      zx_tmp_2d(1:iip1,1:jjp1)=0.
135!     ENDIF
136!     CALL histwrite(nid_ctesGCM, "cycle_diurne", itau_w,
137!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
138!
139!     IF(soil_model) THEN
140!      zx_tmp_2d(1:iip1,1:jjp1)=1.
141!     ELSE
142!      zx_tmp_2d(1:iip1,1:jjp1)=0.
143!     ENDIF
144!     CALL histwrite(nid_ctesGCM, "soil_model", itau_w,
145!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
146!
147!     IF(new_oliq) THEN
148!      zx_tmp_2d(1:iip1,1:jjp1)=1.
149!     ELSE
150!      zx_tmp_2d(1:iip1,1:jjp1)=0.
151!     ENDIF
152!     CALL histwrite(nid_ctesGCM, "new_oliq", itau_w,
153!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
154!
155!     IF(ok_orodr) THEN
156!      zx_tmp_2d(1:iip1,1:jjp1)=1.
157!     ELSE
158!      zx_tmp_2d(1:iip1,1:jjp1)=0.
159!     ENDIF
160!     CALL histwrite(nid_ctesGCM, "ok_orodr", itau_w,
161!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
162!
163!     IF(ok_orolf) THEN
164!      zx_tmp_2d(1:iip1,1:jjp1)=1.
165!     ELSE
166!      zx_tmp_2d(1:iip1,1:jjp1)=0.
167!     ENDIF
168!     CALL histwrite(nid_ctesGCM, "ok_orolf", itau_w,
169!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
170!
171!     IF(ok_limitvrai) THEN
172!      zx_tmp_2d(1:iip1,1:jjp1)=1.
173!     ELSE
174!      zx_tmp_2d(1:iip1,1:jjp1)=0.
175!     ENDIF
176!     CALL histwrite(nid_ctesGCM, "ok_limitvrai", itau_w,
177!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
178!
179!     zx_tmp_2d(1:iip1,1:jjp1)=nbapp_rad
180!     CALL histwrite(nid_ctesGCM, "nbapp_rad", itau_w,
181!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
182!
183!     zx_tmp_2d(1:iip1,1:jjp1)=iflag_con
184!     CALL histwrite(nid_ctesGCM, "iflag_con", itau_w,
185!    .               zx_tmp_2d,iip1*jjp1,ndex2d)
186!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
187c
188      zx_tmp_2d(1:iip1,1:jjp1)=clon
189      CALL histwrite(nid_ctesGCM, "clon", itau_w,
190     .               zx_tmp_2d,iip1*jjp1,ndex2d)
191c
192      zx_tmp_2d(1:iip1,1:jjp1)=clat
193      CALL histwrite(nid_ctesGCM, "clat", itau_w,
194     .               zx_tmp_2d,iip1*jjp1,ndex2d)
195c
196      zx_tmp_2d(1:iip1,1:jjp1)=grossismx
197      CALL histwrite(nid_ctesGCM, "grossismx", itau_w,
198     .               zx_tmp_2d,iip1*jjp1,ndex2d)
199c
200      zx_tmp_2d(1:iip1,1:jjp1)=grossismy
201      CALL histwrite(nid_ctesGCM, "grossismy", itau_w,
202     .               zx_tmp_2d,iip1*jjp1,ndex2d)
203c
204      IF(fxyhypb) THEN
205       zx_tmp_2d(1:iip1,1:jjp1)=1.
206      ELSE
207       zx_tmp_2d(1:iip1,1:jjp1)=0.
208      ENDIF
209      CALL histwrite(nid_ctesGCM, "fxyhypb", itau_w,
210     .               zx_tmp_2d,iip1*jjp1,ndex2d)
211c
212      zx_tmp_2d(1:iip1,1:jjp1)=dzoomx
213      CALL histwrite(nid_ctesGCM, "dzoomx", itau_w,
214     .               zx_tmp_2d,iip1*jjp1,ndex2d)
215c
216      zx_tmp_2d(1:iip1,1:jjp1)=dzoomy
217      CALL histwrite(nid_ctesGCM, "dzoomy", itau_w,
218     .               zx_tmp_2d,iip1*jjp1,ndex2d)
219c
220      zx_tmp_2d(1:iip1,1:jjp1)=taux
221      CALL histwrite(nid_ctesGCM, "taux", itau_w,
222     .               zx_tmp_2d,iip1*jjp1,ndex2d)
223c
224      zx_tmp_2d(1:iip1,1:jjp1)=tauy
225      CALL histwrite(nid_ctesGCM, "tauy", itau_w,
226     .               zx_tmp_2d,iip1*jjp1,ndex2d)
227c
228      IF(ysinus) THEN
229       zx_tmp_2d(1:iip1,1:jjp1)=1.
230      ELSE
231       zx_tmp_2d(1:iip1,1:jjp1)=0.
232      ENDIF
233      CALL histwrite(nid_ctesGCM, "ysinus", itau_w,
234     .               zx_tmp_2d,iip1*jjp1,ndex2d)
235c
236      zx_tmp_2d(1:iip1,1:jjp1)=ip_ebil_dyn
237      CALL histwrite(nid_ctesGCM, "ip_ebil_dyn", itau_w,
238     .               zx_tmp_2d,iip1*jjp1,ndex2d)
239c
240c=================================================================
241c
242      if (ok_sync) then
243        call histsync(nid_ctesGCM)
244      endif
245c
246c=================================================================
Note: See TracBrowser for help on using the repository browser.