source: LMDZ4/branches/LMDZ4_V2_patch/libf/phylmd/calcul_simulISCCP.h @ 739

Last change on this file since 739 was 738, checked in by lmdzadmin, 19 years ago

Correction bug: le seed pour le simulateur ISCCP doit etre aleatoire.
FC/IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.1 KB
Line 
1c
2c $Header$
3c
4cIM 090704 BEG
5c     nbapp_isccp=48
6c     nbapp_isccp=8
7c     nbapp_isccp=6
8c     nbapp_isccp=4 !CPU < 30min pour  9pdt/jour
9      nbapp_isccp=3 !CPU ??           10pdt/jour
10c     nbapp_isccp=2
11c     nbapp_isccp=1
12      isccppas=NINT(86400./dtime/nbapp_isccp)
13cIM 010904 BEG
14cIM   IF (MOD(itap,isccppas).EQ.0) THEN
15c      PRINT*,'itap,isccppas,xjour',itap,isccppas,xjour
16c
17cIM initialisation nbsunlit pour calculs simulateur ISCCP pdt la journee
18c
19      DO i=1, klon
20       sunlit(i)=1 
21       IF(rmu0(i).EQ.0.) sunlit(i)=0
22       nbsunlit(1,i)=FLOAT(sunlit(i))
23      ENDDO
24c
25cIM calcul tau, emissivite nuages convectifs
26c
27      convfra(:,:)=rnebcon(:,:)
28      convliq(:,:)=rnebcon(:,:)*clwcon(:,:)
29cIM Amip2 beg
30c
31      CALL newmicro (paprs, pplay,ok_newmicro,
32     .            t_seri, convliq, convfra, dtau_c, dem_c,
33     .            cldh_c, cldl_c, cldm_c, cldt_c, cldq_c,
34     .            flwp_c, fiwp_c, flwc_c, fiwc_c,
35     e            ok_aie,
36     e            sulfate, sulfate_pi,
37     e            bl95_b0, bl95_b1,
38     s            cldtaupi, re, fl)
39c
40cIM Amip2 end
41
42c
43cIM calcul tau, emissivite nuages startiformes
44c
45cIM Amip2 beg
46c
47      CALL newmicro (paprs, pplay,ok_newmicro,
48     .            t_seri, cldliq, cldfra, dtau_s, dem_s,
49     .            cldh_s, cldl_s, cldm_s, cldt_s, cldq_s,
50     .            flwp_s, fiwp_s, flwc_s, fiwc_s,
51     e            ok_aie,
52     e            sulfate, sulfate_pi,
53     e            bl95_b0, bl95_b1,
54     s            cldtaupi, re, fl)
55c
56cIM Amip2 end
57c
58      cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
59c
60cIM inversion des niveaux de pression ==> de haut en bas
61c
62      CALL haut2bas(klon, klev, pplay, pfull)
63      CALL haut2bas(klon, klev, q_seri, qv)
64      CALL haut2bas(klon, klev, cldtot, cc)
65      CALL haut2bas(klon, klev, rnebcon, conv)
66      CALL haut2bas(klon, klev, dtau_s, dtau_sH2B)
67      CALL haut2bas(klon, klev, dtau_c, dtau_cH2B)
68      CALL haut2bas(klon, klev, t_seri, at)
69      CALL haut2bas(klon, klev, dem_s, dem_sH2B)
70      CALL haut2bas(klon, klev, dem_c, dem_cH2B)
71      CALL haut2bas(klon, klevp1, paprs, phalf)
72c
73cIM lecture invtau, tautab des fichiers formattes
74c
75      IF (debut) THEN
76c     open(99,file='tautab.bin',access='sequential',
77c    $     form='unformatted',status='old')
78c     read(99) tautab
79c
80      open(99,file='tautab.formatted', FORM='FORMATTED')
81      read(99,'(f30.20)') tautab
82      close(99)
83c
84      open(99,file='invtau.formatted',form='FORMATTED')
85      read(99,'(i10)') invtau
86      close(99)
87c
88cIM: calcul coordonnees regions pour statistiques distribution
89cIM: nuages en ftion du regime dynamique pour regions oceaniques
90c
91      IF (ok_regdyn) THEN !histREGDYN
92c
93#include "ini_coord_REGDYN.h"
94c
95      ENDIF !ok_regdyn
96c
97      ENDIF !debut
98c
99cIM: initialisation de seed
100c       DO i=1, klon
101c         seed(i)=i+100
102c       ENDDO
103c
104        DO i=1, klon
105c
106         aa=ABS(paprs(i,2)-NINT(paprs(i,2)))
107         seed_re(i)=1000.*aa+1.
108         seed(i)=NINT(seed_re(i))
109c
110         IF(seed(i).LT.50) THEN
111c          print*,'seed<50 avant i seed itap paprs',i,
112c    .     seed(i),itap,paprs(i,2)
113           seed(i)=50+seed(i)+i+itap
114           seed_old(i)=seed(i)
115c
116           IF(itap.GT.1) then
117            IF(seed(i).EQ.seed_old(i)) THEN
118             seed(i)=seed(i)+10
119             seed_old(i)=seed(i)
120            ENDIF   
121           ENDIF
122c
123c          print*,'seed<50 apres i seed itap paprs',i,
124c    .     seed(i),itap,paprs(i,2)
125c
126          ELSE IF(seed(i).EQ.0) THEN
127           print*,'seed=0 i paprs aa seed_re',
128     .     i,paprs(i,2),aa,seed_re(i)
129           STOP   
130          ELSE IF(seed(i).LT.0) THEN
131           print*,'seed < 0, i seed itap paprs',i,
132     .     seed(i),itap,paprs(i,2)
133           STOP   
134          ENDIF
135c
136        ENDDO
137c     
138cIM: pas de debug, debugcol
139      debug=0
140      debugcol=0
141c
142cIM o500 ==> distribution nuage ftion du regime dynamique (vit. verticale a 500 hPa)
143c
144        DO k=1, klevm1
145        kp1=k+1
146c       PRINT*,'k, presnivs',k,presnivs(k), presnivs(kp1)
147        if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN
148         DO i=1, klon
149          o500(i)=omega(i,k)*RDAY/100.
150c         if(i.EQ.1) print*,' 500hPa lev',k,presnivs(k),presnivs(kp1)
151         ENDDO
152         GOTO 1000
153        endif
1541000  continue
155      ENDDO
156c
157cIM recalcule les nuages vus par satellite, via le simulateur ISCCP
158c
159      CALL ISCCP_CLOUD_TYPES(
160     &     debug,
161     &     debugcol,
162cIM 300704    &     itap, debut,
163cIM 300604 klon !BAD
164     &     klon,
165     &     sunlit,
166     &     klev,
167     &     ncol,
168     &     seed,
169     &     pfull,
170     &     phalf,
171     &     qv, cc, conv, dtau_sH2B, dtau_cH2B,
172     &     top_height,
173     &     overlap,
174     &     tautab,
175     &     invtau,
176     &     ztsol,
177     &     emsfc_lw,
178     &     at, dem_sH2B, dem_cH2B,
179     &     fq_isccp,
180     &     totalcldarea,
181     &     meanptop,
182     &     meantaucld,
183     &     boxtau,
184     &     boxptop)
185c
186c calcul regime dynamique sur les regions fixees
187c
188       IF (ok_regdyn) THEN !histREGDYN
189c
190#include "calcul_REGDYN.h"
191c
192       ENDIF !(ok_regdyn) THEN !histREGDYN
193cIM    ENDIF !(MOD(itaprad,radpas).EQ.0) THEN
194cIM 010904 END
Note: See TracBrowser for help on using the repository browser.