source: LMDZ4/trunk/libf/phylmd/ini_histISCCP.h @ 5423

Last change on this file since 5423 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:keywords set to Author Date Id Revision
File size: 9.8 KB
Line 
1!
2! $Id: ini_histISCCP.h 1403 2010-07-01 09:02:53Z evignon $
3!
4      IF (ok_isccp) THEN
5c
6c$OMP MASTER
7      ndex2d = 0
8      ndex3d = 0
9c
10c pour les champs instantannes, il faut mettre la meme valeur pour
11c zout et zsto.
12c dtime est passe par ailleurs a histbeg
13c zstophy = frequence de stockage des champs tous les pdt physiques
14c zout = frequence d'ecriture des champs
15cIM 300505     zstophy = dtime
16c appel du simulateur toutes les 3heures
17!IM on lit la frequence d'appel dans physiq.def
18!         zcals(1) = dtime *6.  !toutes les 3h (en s)
19          zcals(1) = freq_ISCCP !toutes les freq_ISCCP secondes
20        DO n=1, napisccp
21          zcalh(n) = zcals(n)/3600. !stoutes les Xh (en heures)
22        ENDDO !n
23c
24c ecriture 8 fois par jour
25c       zout = dtime * REAL(NINT(86400./dtime*ecrit_isccp))
26c ecriture toutes les 2h (12 fois par jour)
27c       zout = dtime * 4.
28c ecriture toutes les 1/2 h (48 fois par jour)
29c       zout = dtime
30c
31c       IF(freqout_isccp.EQ.1.) THEN
32c ecriture jounaliere
33!IM on ecrit les resultats du simulateur ISCCP toutes les
34! ecrit_ISCCP secondes      zout_isccp(1) = ecrit_day !(en s)
35          zout_isccp(1) = ecrit_ISCCP !(en s)
36c ecriture mensuelle
37c         zout = dtime * ecrit_mth !(en s)
38        DO n=1, napisccp
39          zoutj(n)=zout_isccp(n)/86400. !(en jours)
40c
41c le nombre de sous-colonnes ncol : ncol=(100.*zcalh)/zoutd
42          ncol(n)=NINT((100.*zcalh(n))/zoutj(n))
43          IF(ncol(n).GT.ncolmx) THEN
44           PRINT*,'Warning: Augmenter le nombre colonnes du simulateur'
45           PRINT*,'         ISCCP ncol=', ncol,' ncolmx=',ncolmx
46c          PRINT*,'n ncol',n,ncol(n)
47           CALL abort
48          ENDIF
49c
50        DO l=1, ncol(n)
51          vertlev(l,n)=REAL(l)
52        ENDDO !ncol
53c
54        ENDDO !n
55
56c       PRINT*, 'La frequence de sortie ISCCP est de ', ecrit_isccp
57c
58        idayref = day_ref
59        CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
60c       write(*,*)'ISCCP ', itau_phy, zjulian
61c
62c
63c definition coordonnees lon,lat en globale
64c
65cym        CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon)
66cym        DO i = 1, iim
67cym          zx_lon(i,1) = rlon(i+1)
68cym          zx_lon(i,jjmp1) = rlon(i+1)
69cym        ENDDO
70
71cym        CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat,zx_lat)
72c
73cIM BEG region
74cym Desole dans un premier temps le mode region ne marchera pas
75cym Il faudra voir dans un second temps pour l'implementer
76cym Mais cela posera des problemes au niveau de la reconstruction
77
78          imin_ins=1
79          imax_ins=iim
80          jmin_ins=1
81          jmax_ins=jjmp1
82cym          do i=1,iim-1
83cym             if(zx_lon(i,1).lt.lonmin_ins) imin_ins=i
84cym             if(zx_lon(i,1).le.lonmax_ins) imax_ins=i+1
85cym          enddo
86cym          do j=1,jjmp1
87cym             if(zx_lat(1,j).ge.latmin_ins) jmax_ins=j
88cym             if(zx_lat(1,j).gt.latmax_ins) jmin_ins=j
89cym          enddo
90c
91          print*,'On stoke le fichier histISCCP sur ',
92     s   imin_ins,imax_ins,jmin_ins,jmax_ins
93cym          print*,'On stoke le fichier histISCCP instantanne sur ',
94cym     s   zx_lon(imin_ins,1),zx_lon(imax_ins,1),
95cym     s   zx_lat(1,jmin_ins),zx_lat(1,jmax_ins)
96cIM END region
97c
98        IF(1.EQ.0) THEN
99cym         CALL histbeg("histISCCP.nc", iim,zx_lon(:,1),jjmp1,zx_lat(1,:),
100cym     .                 1, iim, 1, jjmp1,
101cym     .                 itau_phy, zjulian, dtime,
102cym     .                 nhori, nid_isccp)
103         CALL histbeg_phy("histISCCP.nc", itau_phy, zjulian, dtime,
104     .                 nhori, nid_isccp)
105        ENDIF !(1.EQ.0) THEN
106c
107cym         CALL histbeg("histISCCP.nc", iim,zx_lon(:,1),
108cym     .                 jjmp1,zx_lat(1,:),
109cym     .                 imin_ins,imax_ins-imin_ins+1,
110cym     .                 jmin_ins,jmax_ins-jmin_ins+1,
111cym     .                 itau_phy, zjulian, dtime,
112cym     .                 nhori, nid_isccp)
113
114         CALL histbeg_phy("histISCCP.nc", itau_phy, zjulian, dtime,
115     .                 nhori, nid_isccp)
116c
117        IF(type_run.EQ."ENSP".OR.type_run.EQ."CLIM") THEN
118         CALL histvert(nid_isccp, "cldtopres","Cloud Top Pressure","mb",
119     .                 lmaxm1, cldtopres, nvert,'down')
120        ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN
121         CALL histvert(nid_isccp,"cldtopres3","Cloud Top Pressure","mb",
122     .                 lmax3, cldtopres3, nvert3,'down')
123        ENDIF
124        DO n=1, napisccp
125         CALL histvert(nid_isccp, "Nbcol"//verticaxe(n),
126     .        "Nb of Column"//verticaxe(n),"1",
127     .        ncol(n), vertlev(:,n), nvlev(n),'up')
128        ENDDO
129c
130        IF(type_run.EQ."ENSP".OR.type_run.EQ."CLIM") THEN
131c
132c variables a ecrire
133c
134         DO n=1, napisccp
135c
136         DO k=1, kmaxm1
137          CALL histdef(nid_isccp, "cldISCCP_"//taulev(k)//verticaxe(n),
138     .                "LMDZ ISCCP cld", "%",
139     .                iim, jj_nb,nhori,lmaxm1,1,lmaxm1,nvert,32,
140     .                "ave(X)", zcals(n),zout_isccp(n))
141         ENDDO
142c
143         CALL histdef(nid_isccp, "nsunlit"//verticaxe(n),
144     .                "Nb of calls with sunlit ", "%",
145     .                iim, jj_nb,nhori,1,1,1,-99,32,
146     .                "ave(X)", zcals(n),zout_isccp(n))
147c
148         CALL histdef(nid_isccp, "meantaucld"//verticaxe(n),
149     .                "ISCCP mean cloud optical thickness", "1",
150     .                iim, jj_nb,nhori,1,1,1,-99,32,
151     .                "ave(X)", zcals(n),zout_isccp(n))
152c
153         ENDDO
154c
155        ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN
156c
157         DO n=1, napisccp
158c
159c         print*,'n=',n,' avant histdef(..LMDZ ISCCP cld'
160c
161          DO k=1, kmaxm1
162           DO l=1, lmaxm1
163c
164           CALL histdef(nid_isccp, pclev(l)//taulev(k)//verticaxe(n),
165     .                "LMDZ ISCCP cld "//cnameisccp(l,k), "%",
166     .                iim, jj_nb,nhori,1,1,1,-99,32,
167     .                "ave(X)", zcals(n),zout_isccp(n))
168c
169           ENDDO
170          ENDDO
171c
172c         print*,'n=',n,' avant histdef(..Nb of calls sunlit'
173          CALL histdef(nid_isccp, "nsunlit"//verticaxe(n),
174     .                "Nb of calls with sunlit ", "%",
175     .                iim, jj_nb,nhori,1,1,1,-99,32,
176     .                "ave(X)", zcals(n),zout_isccp(n))
177c
178         CALL histdef(nid_isccp, "meantaucld"//verticaxe(n),
179     .                "ISCCP mean cloud optical thickness", "1",
180     .                iim, jj_nb,nhori,1,1,1,-99,32,
181     .                "ave(X)", zcals(n),zout_isccp(n))
182c
183c 9types de nuages ISCCP-D2
184          CALL histdef(nid_isccp, "cirr",
185     .                "Cirrus lk ISCCP-D2", "%",
186     .                iim, jj_nb,nhori,1,1,1,-99,32,
187     .                "ave(X)", zcals(n),zout_isccp(n))
188c
189          CALL histdef(nid_isccp, "cist",
190     .                "CiSt lk ISCCP-D2", "%",
191     .                iim, jj_nb,nhori,1,1,1,-99,32,
192     .                "ave(X)", zcals(n),zout_isccp(n))
193c
194          CALL histdef(nid_isccp, "deep",
195     .                "Deep lk ISCCP-D2", "%",
196     .                iim, jj_nb,nhori,1,1,1,-99,32,
197     .                "ave(X)", zcals(n),zout_isccp(n))
198c
199          CALL histdef(nid_isccp, "alcu",
200     .                "AlCu lk ISCCP-D2", "%",
201     .                iim, jj_nb,nhori,1,1,1,-99,32,
202     .                "ave(X)", zcals(n),zout_isccp(n))
203c
204          CALL histdef(nid_isccp, "alst",
205     .                "AlSt lk ISCCP-D2", "%",
206     .                iim, jj_nb,nhori,1,1,1,-99,32,
207     .                "ave(X)", zcals(n),zout_isccp(n))
208c
209          CALL histdef(nid_isccp, "nist",
210     .                "NiSt lk ISCCP-D2", "%",
211     .                iim, jj_nb,nhori,1,1,1,-99,32,
212     .                "ave(X)", zcals(n),zout_isccp(n))
213c
214          CALL histdef(nid_isccp, "cumu",
215     .                "Cumu lk ISCCP-D2", "%",
216     .                iim, jj_nb,nhori,1,1,1,-99,32,
217     .                "ave(X)", zcals(n),zout_isccp(n))
218c
219          CALL histdef(nid_isccp, "stcu",
220     .                "StCu lk ISCCP-D2", "%",
221     .                iim, jj_nb,nhori,1,1,1,-99,32,
222     .                "ave(X)", zcals(n),zout_isccp(n))
223c
224          CALL histdef(nid_isccp, "stra",
225     .                "Stra lk ISCCP-D2", "%",
226     .                iim, jj_nb,nhori,1,1,1,-99,32,
227     .                "ave(X)", zcals(n),zout_isccp(n))
228c
229c 3_epaisseurs_optiques x3_pressions_au_sommet_des_nuages  types de nuages
230          CALL histdef(nid_isccp, "thin",
231     .                "Opt. thin ISCCP-D2 like clouds", "%",
232     .                iim, jj_nb,nhori,lmax3,1,lmax3,nvert3,32,
233     .                "ave(X)", zcals(n),zout_isccp(n))
234c
235          CALL histdef(nid_isccp, "mid",
236     .                "Opt. intermediate ISCCP-D2 like clouds", "%",
237     .                iim, jj_nb,nhori,lmax3,1,lmax3,nvert3,32,
238     .                "ave(X)", zcals(n),zout_isccp(n))
239c
240          CALL histdef(nid_isccp, "thick",
241     .                "Opt. thick ISCCP-D2 like clouds", "%",
242     .                iim, jj_nb,nhori,lmax3,1,lmax3,nvert3,32,
243     .                "ave(X)", zcals(n),zout_isccp(n))
244c
245c        IF(1.EQ.0) THEN
246c        IF(n.EQ.3) THEN
247c        IF(n.EQ.1) THEN
248c
249cIM 070905 BEG
250         IF(1.EQ.0) THEN
251          print*,'n=',n,' avant histdef(..boxptop axe'
252cIM verif boxptop
253          CALL histdef(nid_isccp,"boxptop"//verticaxe(n),
254     .                "Boxptop axe"//verticaxe(n), "mb",
255     .                iim, jj_nb,nhori,
256     .                ncol(n),1,ncol(n),nvlev(n),32,
257cIM  .                ncolmx,1,ncolmx,nvlev,32,
258cIM  .                "inst(X)",dtime,dtime)
259     .                "ave(X)",zcals(n),zout_isccp(n))
260         ENDIF !(1.EQ.0) THEN
261cIM 070905 END
262c        ENDIF !(n.EQ.3) THEN
263c       ENDIF !(1.EQ.0) THEN
264c
265c         print*,'n=',n,' avant histdef(..seed axe'
266          CALL histdef(nid_isccp, "seed"//verticaxe(n),
267     .                "seed axe"//verticaxe(n), "-",
268     .                iim, jj_nb,nhori,1,1,1,-99,32,
269cIM  .                "inst(X)", dtime,dtime)
270     .                "ave(X)", zcals(n),zout_isccp(n))
271c
272         ENDDO !n
273        ENDIF
274        CALL histend(nid_isccp)
275c
276c$OMP END MASTER
277      ENDIF ! ok_isccp
Note: See TracBrowser for help on using the repository browser.