source: LMDZ4/trunk/libf/phylmd/calcul_simulISCCP.h @ 5080

Last change on this file since 5080 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: 4.3 KB
RevLine 
[644]1c
[1403]2c $Id: calcul_simulISCCP.h 1403 2010-07-01 09:02:53Z abarral $
[644]3c
[684]4c on appelle le simulateur ISCCP toutes les 3h
5c et on fait des sorties 1 fois par jour
[644]6c
[684]7c ATTENTION : le temps de calcul peut augmenter considerablement !
8c =============================================================== c
9      DO n=1, napisccp
10c
11      nbapp_isccp=30 !appel toutes les 15h
[827]12cIM 170107      isccppas=NINT((itap*dtime)/3600.) !Nb. d'heures de la physique
[684]13      freqin_pdt(n)=ifreq_isccp(n)
14c
[644]15cIM initialisation nbsunlit pour calculs simulateur ISCCP pdt la journee
16c
17      DO i=1, klon
18       sunlit(i)=1 
19       IF(rmu0(i).EQ.0.) sunlit(i)=0
[1403]20       nbsunlit(1,i,n)=REAL(sunlit(i))
[644]21      ENDDO
22c
23cIM calcul tau, emissivite nuages convectifs
24c
25      convfra(:,:)=rnebcon(:,:)
26      convliq(:,:)=rnebcon(:,:)*clwcon(:,:)
27c
28      CALL newmicro (paprs, pplay,ok_newmicro,
29     .            t_seri, convliq, convfra, dtau_c, dem_c,
30     .            cldh_c, cldl_c, cldm_c, cldt_c, cldq_c,
31     .            flwp_c, fiwp_c, flwc_c, fiwc_c,
32     e            ok_aie,
[1279]33     e            mass_solu_aero, mass_solu_aero_pi,
[644]34     e            bl95_b0, bl95_b1,
35     s            cldtaupi, re, fl)
36c
37cIM calcul tau, emissivite nuages startiformes
38c
39      CALL newmicro (paprs, pplay,ok_newmicro,
40     .            t_seri, cldliq, cldfra, dtau_s, dem_s,
41     .            cldh_s, cldl_s, cldm_s, cldt_s, cldq_s,
42     .            flwp_s, fiwp_s, flwc_s, fiwc_s,
43     e            ok_aie,
[1279]44     e            mass_solu_aero, mass_solu_aero_pi,
[644]45     e            bl95_b0, bl95_b1,
46     s            cldtaupi, re, fl)
47c
48      cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
49c
50cIM inversion des niveaux de pression ==> de haut en bas
51c
52      CALL haut2bas(klon, klev, pplay, pfull)
53      CALL haut2bas(klon, klev, q_seri, qv)
54      CALL haut2bas(klon, klev, cldtot, cc)
55      CALL haut2bas(klon, klev, rnebcon, conv)
56      CALL haut2bas(klon, klev, dtau_s, dtau_sH2B)
57      CALL haut2bas(klon, klev, dtau_c, dtau_cH2B)
58      CALL haut2bas(klon, klev, t_seri, at)
59      CALL haut2bas(klon, klev, dem_s, dem_sH2B)
60      CALL haut2bas(klon, klev, dem_c, dem_cH2B)
61      CALL haut2bas(klon, klevp1, paprs, phalf)
62c
[684]63cIM: initialisation de seed
[644]64c
[684]65        DO i=1, klon
[644]66c
[684]67         aa=ABS(paprs(i,2)-NINT(paprs(i,2)))
68         seed_re(i,n)=1000.*aa+1.
69         seed(i,n)=NINT(seed_re(i,n))
[644]70c
[684]71         IF(seed(i,n).LT.50) THEN
72c          print*,'seed<50 avant i seed itap paprs',i,
73c    .     seed(i,n),itap,paprs(i,2)
74           seed(i,n)=50+seed(i,n)+i+itap
75           seed_old(i,n)=seed(i,n)
76c
77           IF(itap.GT.1) then
78            IF(seed(i,n).EQ.seed_old(i,n)) THEN
79             seed(i,n)=seed(i,n)+10
80             seed_old(i,n)=seed(i,n)
81            ENDIF
82           ENDIF
83c
84c          print*,'seed<50 apres i seed itap paprs',i,
85c    .     seed(i,n),itap,paprs(i,2)
86c
87          ELSE IF(seed(i,n).EQ.0) THEN
88           print*,'seed=0 i paprs aa seed_re',
89     .     i,paprs(i,2),aa,seed_re(i,n)
[1403]90           abort_message = ''
91           CALL abort_gcm (modname,abort_message,1)
[684]92          ELSE IF(seed(i,n).LT.0) THEN
93           print*,'seed < 0, i seed itap paprs',i,
94     .     seed(i,n),itap,paprs(i,2)
[1403]95           abort_message = ''
96           CALL abort_gcm (modname,abort_message,1)
[684]97          ENDIF
98c
[644]99        ENDDO
100c     
101cIM: pas de debug, debugcol
102      debug=0
103      debugcol=0
104c
105cIM o500 ==> distribution nuage ftion du regime dynamique (vit. verticale a 500 hPa)
106c
107        DO k=1, klevm1
108        kp1=k+1
109c       PRINT*,'k, presnivs',k,presnivs(k), presnivs(kp1)
110        if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN
111         DO i=1, klon
112          o500(i)=omega(i,k)*RDAY/100.
113c         if(i.EQ.1) print*,' 500hPa lev',k,presnivs(k),presnivs(kp1)
114         ENDDO
115         GOTO 1000
116        endif
1171000  continue
118      ENDDO
119c
120cIM recalcule les nuages vus par satellite, via le simulateur ISCCP
121c
122      CALL ISCCP_CLOUD_TYPES(
123     &     debug,
124     &     debugcol,
125     &     klon,
126     &     sunlit,
127     &     klev,
[684]128     &     ncol(n),
129     &     seed(:,n),
[644]130     &     pfull,
131     &     phalf,
132     &     qv, cc, conv, dtau_sH2B, dtau_cH2B,
133     &     top_height,
134     &     overlap,
135     &     tautab,
136     &     invtau,
137     &     ztsol,
138     &     emsfc_lw,
139     &     at, dem_sH2B, dem_cH2B,
[684]140     &     fq_isccp(:,:,:,n),
141     &     totalcldarea(:,n),
142     &     meanptop(:,n),
143     &     meantaucld(:,n),
144     &     boxtau(:,:,n),
145     &     boxptop(:,:,n))
[644]146c
[684]147      ENDDO !n=1, napisccp
148
Note: See TracBrowser for help on using the repository browser.