[644] | 1 | c |
---|
| 2 | c $Header$ |
---|
| 3 | c |
---|
[684] | 4 | c on appelle le simulateur ISCCP toutes les 3h |
---|
| 5 | c et on fait des sorties 1 fois par jour |
---|
[644] | 6 | c |
---|
[684] | 7 | c ATTENTION : le temps de calcul peut augmenter considerablement ! |
---|
| 8 | c =============================================================== c |
---|
| 9 | DO n=1, napisccp |
---|
| 10 | c |
---|
| 11 | nbapp_isccp=30 !appel toutes les 15h |
---|
| 12 | isccppas=NINT((itap*dtime)/3600.) !Nb. d'heures de la physique |
---|
| 13 | freqin_pdt(n)=ifreq_isccp(n) |
---|
| 14 | c |
---|
[644] | 15 | cIM initialisation nbsunlit pour calculs simulateur ISCCP pdt la journee |
---|
| 16 | c |
---|
| 17 | DO i=1, klon |
---|
| 18 | sunlit(i)=1 |
---|
| 19 | IF(rmu0(i).EQ.0.) sunlit(i)=0 |
---|
[684] | 20 | nbsunlit(1,i,n)=FLOAT(sunlit(i)) |
---|
[644] | 21 | ENDDO |
---|
| 22 | c |
---|
| 23 | cIM calcul tau, emissivite nuages convectifs |
---|
| 24 | c |
---|
| 25 | convfra(:,:)=rnebcon(:,:) |
---|
| 26 | convliq(:,:)=rnebcon(:,:)*clwcon(:,:) |
---|
| 27 | c |
---|
| 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, |
---|
| 33 | e sulfate, sulfate_pi, |
---|
| 34 | e bl95_b0, bl95_b1, |
---|
| 35 | s cldtaupi, re, fl) |
---|
| 36 | c |
---|
| 37 | cIM calcul tau, emissivite nuages startiformes |
---|
| 38 | c |
---|
| 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, |
---|
| 44 | e sulfate, sulfate_pi, |
---|
| 45 | e bl95_b0, bl95_b1, |
---|
| 46 | s cldtaupi, re, fl) |
---|
| 47 | c |
---|
| 48 | cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.) |
---|
| 49 | c |
---|
| 50 | cIM inversion des niveaux de pression ==> de haut en bas |
---|
| 51 | c |
---|
| 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) |
---|
| 62 | c |
---|
| 63 | cIM lecture invtau, tautab des fichiers formattes |
---|
| 64 | c |
---|
| 65 | IF (debut) THEN |
---|
| 66 | c open(99,file='tautab.bin',access='sequential', |
---|
| 67 | c $ form='unformatted',status='old') |
---|
| 68 | c read(99) tautab |
---|
| 69 | c |
---|
| 70 | open(99,file='tautab.formatted', FORM='FORMATTED') |
---|
| 71 | read(99,'(f30.20)') tautab |
---|
| 72 | close(99) |
---|
| 73 | c |
---|
| 74 | open(99,file='invtau.formatted',form='FORMATTED') |
---|
| 75 | read(99,'(i10)') invtau |
---|
| 76 | close(99) |
---|
| 77 | c |
---|
[684] | 78 | ENDIF !debut |
---|
[644] | 79 | c |
---|
[684] | 80 | cIM: initialisation de seed |
---|
[644] | 81 | c |
---|
[684] | 82 | DO i=1, klon |
---|
[644] | 83 | c |
---|
[684] | 84 | aa=ABS(paprs(i,2)-NINT(paprs(i,2))) |
---|
| 85 | seed_re(i,n)=1000.*aa+1. |
---|
| 86 | seed(i,n)=NINT(seed_re(i,n)) |
---|
[644] | 87 | c |
---|
[684] | 88 | IF(seed(i,n).LT.50) THEN |
---|
| 89 | c print*,'seed<50 avant i seed itap paprs',i, |
---|
| 90 | c . seed(i,n),itap,paprs(i,2) |
---|
| 91 | seed(i,n)=50+seed(i,n)+i+itap |
---|
| 92 | seed_old(i,n)=seed(i,n) |
---|
| 93 | c |
---|
| 94 | IF(itap.GT.1) then |
---|
| 95 | IF(seed(i,n).EQ.seed_old(i,n)) THEN |
---|
| 96 | seed(i,n)=seed(i,n)+10 |
---|
| 97 | seed_old(i,n)=seed(i,n) |
---|
| 98 | ENDIF |
---|
| 99 | ENDIF |
---|
| 100 | c |
---|
| 101 | c print*,'seed<50 apres i seed itap paprs',i, |
---|
| 102 | c . seed(i,n),itap,paprs(i,2) |
---|
| 103 | c |
---|
| 104 | ELSE IF(seed(i,n).EQ.0) THEN |
---|
| 105 | print*,'seed=0 i paprs aa seed_re', |
---|
| 106 | . i,paprs(i,2),aa,seed_re(i,n) |
---|
| 107 | STOP |
---|
| 108 | ELSE IF(seed(i,n).LT.0) THEN |
---|
| 109 | print*,'seed < 0, i seed itap paprs',i, |
---|
| 110 | . seed(i,n),itap,paprs(i,2) |
---|
| 111 | STOP |
---|
| 112 | ENDIF |
---|
| 113 | c |
---|
[644] | 114 | ENDDO |
---|
| 115 | c |
---|
| 116 | cIM: pas de debug, debugcol |
---|
| 117 | debug=0 |
---|
| 118 | debugcol=0 |
---|
| 119 | c |
---|
| 120 | cIM o500 ==> distribution nuage ftion du regime dynamique (vit. verticale a 500 hPa) |
---|
| 121 | c |
---|
| 122 | DO k=1, klevm1 |
---|
| 123 | kp1=k+1 |
---|
| 124 | c PRINT*,'k, presnivs',k,presnivs(k), presnivs(kp1) |
---|
| 125 | if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN |
---|
| 126 | DO i=1, klon |
---|
| 127 | o500(i)=omega(i,k)*RDAY/100. |
---|
| 128 | c if(i.EQ.1) print*,' 500hPa lev',k,presnivs(k),presnivs(kp1) |
---|
| 129 | ENDDO |
---|
| 130 | GOTO 1000 |
---|
| 131 | endif |
---|
| 132 | 1000 continue |
---|
| 133 | ENDDO |
---|
| 134 | c |
---|
| 135 | cIM recalcule les nuages vus par satellite, via le simulateur ISCCP |
---|
| 136 | c |
---|
| 137 | CALL ISCCP_CLOUD_TYPES( |
---|
| 138 | & debug, |
---|
| 139 | & debugcol, |
---|
| 140 | & klon, |
---|
| 141 | & sunlit, |
---|
| 142 | & klev, |
---|
[684] | 143 | & ncol(n), |
---|
| 144 | & seed(:,n), |
---|
[644] | 145 | & pfull, |
---|
| 146 | & phalf, |
---|
| 147 | & qv, cc, conv, dtau_sH2B, dtau_cH2B, |
---|
| 148 | & top_height, |
---|
| 149 | & overlap, |
---|
| 150 | & tautab, |
---|
| 151 | & invtau, |
---|
| 152 | & ztsol, |
---|
| 153 | & emsfc_lw, |
---|
| 154 | & at, dem_sH2B, dem_cH2B, |
---|
[684] | 155 | & fq_isccp(:,:,:,n), |
---|
| 156 | & totalcldarea(:,n), |
---|
| 157 | & meanptop(:,n), |
---|
| 158 | & meantaucld(:,n), |
---|
| 159 | & boxtau(:,:,n), |
---|
| 160 | & boxptop(:,:,n)) |
---|
[644] | 161 | c |
---|
[684] | 162 | ENDDO !n=1, napisccp |
---|
| 163 | |
---|