2 c $Id: calcul_simulISCCP.h 1403 2010-07-01 09:02:53Z fairhead $
4 c on appelle le simulateur ISCCP toutes les 3h
5 c et on fait des sorties 1 fois par jour
7 c ATTENTION : le temps
de calcul peut augmenter considerablement !
8 c ===============================================================
c
12 cIM 170107 isccppas=
NINT((itap*
dtime)/3600.) !Nb. d
'heures de la physique
13 freqin_pdt(n)=ifreq_isccp(n)
15 cIM initialisation nbsunlit pour calculs simulateur ISCCP pdt la journee
19 IF(rmu0(i).EQ.0.) sunlit(i)=0
20 nbsunlit(1,i,n)=REAL(sunlit(i))
23 cIM calcul tau, emissivite nuages convectifs
25 convfra(:,:)=rnebcon(:,:)
26 convliq(:,:)=rnebcon(:,:)*clwcon(:,:)
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,
33 e mass_solu_aero, mass_solu_aero_pi,
37 cIM calcul tau, emissivite nuages startiformes
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,
44 e mass_solu_aero, mass_solu_aero_pi,
48 cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
50 cIM inversion des niveaux de pression ==> de haut en bas
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)
63 cIM: initialisation de seed
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))
71 IF(seed(i,n).LT.50) THEN
72 c print*,'seed<50 avant
i seed itap paprs
',i,
73 c . 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)
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)
84 c print*,'seed<50 apres
i seed itap paprs
',i,
85 c . seed(i,n),itap,paprs(i,2)
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)
91 CALL abort_gcm (modname,abort_message,1)
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)
96 CALL abort_gcm (modname,abort_message,1)
101 cIM: pas de debug, debugcol
105 cIM o500 ==> distribution nuage ftion du regime dynamique (vit. verticale a 500 hPa)
109 c PRINT*,'k,
presnivs',k,presnivs(k), presnivs(kp1)
110 if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN
112 o500(i)=omega(i,k)*RDAY/100.
113 c if(i.EQ.1) print*,' 500hPa lev
',k,presnivs(k),presnivs(kp1)
120 cIM recalcule les nuages vus par satellite, via le simulateur ISCCP
122 CALL ISCCP_CLOUD_TYPES(
132 & qv, cc, conv, dtau_sH2B, dtau_cH2B,
139 & at, dem_sH2B, dem_cH2B,