source: LMDZ5/branches/LMDZ5V2.0-dev/libf/dyn3d/write_paramLMDZ_dyn.h @ 1455

Last change on this file since 1455 was 1403, checked in by Laurent Fairhead, 14 years ago

Merged LMDZ4V5.0-dev branch changes r1292:r1399 to trunk.

Validation:
Validation consisted in compiling the HEAD revision of the trunk,
LMDZ4V5.0-dev branch and the merged sources and running different
configurations on local and SX8 machines comparing results.

Local machine: bench configuration, 32x24x11, gfortran

  • IPSLCM5A configuration (comparison between trunk and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent
  • MH07 configuration, new physics package (comparison between LMDZ4V5.0-dev branch and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent

SX8 machine (brodie), 96x95x39 on 4 processors:

  • IPSLCM5A configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent
  • MH07 configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent

Changes to the makegcm and create_make_gcm scripts to take into account
main programs in F90 files


Fusion de la branche LMDZ4V5.0-dev (r1292:r1399) au tronc principal

Validation:
La validation a consisté à compiler la HEAD de le trunk et de la banche
LMDZ4V5.0-dev et les sources fusionnées et de faire tourner le modéle selon
différentes configurations en local et sur SX8 et de comparer les résultats

En local: 32x24x11, config bench/gfortran

  • pour une config IPSLCM5A (comparaison tronc/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux (à part sur RN et Pb)
    • fichiers histoire égaux
  • pour une config nlle physique (MH07) (comparaison LMDZ4v5.0-dev/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux
    • fichiers histoire équivalents

Sur brodie, 96x95x39 sur 4 proc:

  • pour une config IPSLCM5A:
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc
  • pour une config MH07
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc

Changement sur makegcm et create_make-gcm pour pouvoir prendre en compte des
programmes principaux en *F90

  • 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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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)=REAL(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.