Changeset 1864 for LMDZ5/branches/testing/libf/phylmd
- Timestamp:
- Sep 11, 2013, 11:45:01 AM (11 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 11 deleted
- 29 edited
- 5 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1797-1799,1801-1811,1813-1834,1836,1838-1840,1842-1860
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/clesphys.h
r1795 r1864 61 61 REAL pasphys 62 62 LOGICAL ok_histNMC(3) 63 INTEGER levout_histNMC(3) 63 64 REAL freq_outNMC(3) , freq_calNMC(3) 64 65 CHARACTER(len=4) type_run … … 73 74 REAL freq_COSP 74 75 LOGICAL :: ok_cosp,ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP 75 INTEGER :: ip_ebil_phy, iflag_rrtm 76 INTEGER :: ip_ebil_phy, iflag_rrtm, iflag_ice_thermo 76 77 LOGICAL :: ok_strato 77 78 LOGICAL :: ok_hines … … 91 92 & , f_cdrag_ter,f_cdrag_oce,f_rugoro & 92 93 & , lev_histhf, lev_histday, lev_histmth & 93 & , lev_histins, lev_histLES, lev_histdayNMC 94 & , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC & 94 95 & , pasphys, ok_histNMC, freq_outNMC, freq_calNMC & 95 96 & , type_run, ok_isccp, ok_regdyn, ok_cosp & … … 101 102 & , ok_lic_melt, cvl_corr, aer_type & 102 103 & , qsol0, iflag_rrtm, ok_strato,ok_hines,ecrit_LES & 103 & , co2_ppm0 104 & , co2_ppm0, iflag_ice_thermo 104 105 105 106 save /clesphys/ -
LMDZ5/branches/testing/libf/phylmd/concvl.F
r1795 r1864 1 SUBROUTINE concvl (iflag_c on,iflag_clos,1 SUBROUTINE concvl (iflag_clos, 2 2 . dtime,paprs,pplay, 3 3 . t,q,t_wake,q_wake,s_wake,u,v,tra,ntra, 4 . ALE,ALP, work1,work2,4 . ALE,ALP,sig1,w01, 5 5 . d_t,d_q,d_u,d_v,d_tra, 6 6 . rain, snow, kbas, ktop, sigd, … … 70 70 c====================================================================== 71 71 c 72 73 #include "clesphys.h" 72 74 #include "dimensions.h" 73 75 c 74 INTEGER iflag_c on,iflag_clos76 INTEGER iflag_clos 75 77 c 76 78 REAL dtime, paprs(klon,klev+1),pplay(klon,klev) … … 80 82 REAL tra(klon,klev,nbtr) 81 83 INTEGER ntra 82 REAL work1(klon,klev),work2(klon,klev),ptop2(klon)84 REAL sig1(klon,klev),w01(klon,klev),ptop2(klon) 83 85 REAL pmflxr(klon,klev+1),pmflxs(klon,klev+1) 84 86 REAL ALE(klon),ALP(klon) … … 354 356 if (iflag_con.eq.30) then 355 357 356 print *, '-> cv_driver' !jyg358 ! print *, '-> cv_driver' !jyg 357 359 CALL cv_driver(klon,klev,klevp1,ntra,iflag_con, 358 360 : t,q,qs,u,v,tra, 359 361 $ em_p,em_ph,iflag, 360 362 $ d_t,d_q,d_u,d_v,d_tra,rain, 361 $ Vprecip,cbmf, work1,work2, !jyg363 $ Vprecip,cbmf,sig1,w01, !jyg 362 364 $ kbas,ktop, 363 365 $ dtime,Ma,upwd,dnwd,dnwdbis,qcondc,wd,cape, … … 365 367 $ evap,ep,epmlmMm,eplaMm, !RomP 366 368 $ wdtrainA,wdtrainM) !RomP 367 print *, 'cv_driver ->' !jyg369 ! print *, 'cv_driver ->' !jyg 368 370 c 369 371 DO i = 1,klon … … 376 378 nloc=klon 377 379 CALL cva_driver(klon,klev,klev+1,ntra,nloc, 378 $ iflag_con,iflag_mix,iflag_clos,dtime, 380 $ iflag_con,iflag_mix,iflag_ice_thermo, 381 $ iflag_clos,dtime, 379 382 : t,q,qs,t_wake,q_wake,qs_wake,s_wake,u,v,tra, 380 383 $ em_p,em_ph, … … 382 385 . em_sig1feed,em_sig2feed,em_wght, 383 386 . iflag,d_t,d_q,d_u,d_v,d_tra,rain,kbas,ktop, 384 $ cbmf,plcl,plfc,wbeff, work1,work2,ptop2,sigd,387 $ cbmf,plcl,plfc,wbeff,sig1,w01,ptop2,sigd, 385 388 $ Ma,mip,Vprecip,upwd,dnwd,dnwdbis,qcondc,wd, 386 389 $ cape,cin,tvp, -
LMDZ5/branches/testing/libf/phylmd/conf_phys_m.F90
r1795 r1864 141 141 LOGICAL,SAVE :: reevap_ice_omp 142 142 INTEGER,SAVE :: iflag_pdf_omp 143 INTEGER,SAVE :: iflag_ice_thermo_omp 143 144 REAL,SAVE :: rad_froid_omp, rad_chau1_omp, rad_chau2_omp 144 145 REAL,SAVE :: t_glace_min_omp, t_glace_max_omp … … 155 156 Integer, save :: lev_histins_omp, lev_histLES_omp 156 157 INTEGER, SAVE :: lev_histdayNMC_omp 158 INTEGER, SAVE :: levout_histNMC_omp(3) 157 159 LOGICAL, SAVE :: ok_histNMC_omp(3) 158 160 REAL, SAVE :: freq_outNMC_omp(3), freq_calNMC_omp(3) … … 966 968 call getin('t_glace_max',t_glace_max_omp) 967 969 970 ! 971 !Config Key = iflag_ice_thermo 972 !Config Desc = 973 !Config Def = 0 974 !Config Help = 975 ! 976 iflag_ice_thermo_omp = 0 977 call getin('iflag_ice_thermo',iflag_ice_thermo_omp) 978 968 979 !Config Key = rei_min 969 980 !Config Desc = … … 1267 1278 lev_histLES_omp = 1 1268 1279 call getin('lev_histLES',lev_histLES_omp) 1269 ! 1280 ! 1270 1281 !Config Key = lev_histdayNMC 1271 1282 !Config Desc = … … 1275 1286 lev_histdayNMC_omp = 8 1276 1287 call getin('lev_histdayNMC',lev_histdayNMC_omp) 1288 ! 1289 !Config Key = levout_histNMC 1290 !Config Desc = 1291 !Config Def = 5 1292 !Config Help = 1293 ! 1294 levout_histNMC_omp(1) = 5 1295 levout_histNMC_omp(2) = 5 1296 levout_histNMC_omp(3) = 5 1297 call getin('levout_histNMC',levout_histNMC_omp) 1277 1298 ! 1278 1299 !histNMC BEG … … 1296 1317 !Config Help = 1297 1318 ! 1298 ! freq_outNMC_omp(1) = 2592000.1299 1319 freq_outNMC_omp(1) = mth_len*86400. 1300 1320 freq_outNMC_omp(2) = 86400. … … 1684 1704 t_glace_min = t_glace_min_omp 1685 1705 t_glace_max = t_glace_max_omp 1706 iflag_ice_thermo = iflag_ice_thermo_omp 1686 1707 rei_min = rei_min_omp 1687 1708 rei_max = rei_max_omp … … 1702 1723 lev_histLES = lev_histLES_omp 1703 1724 lev_histdayNMC = lev_histdayNMC_omp 1725 levout_histNMC = levout_histNMC_omp 1704 1726 ok_histNMC(:) = ok_histNMC_omp(:) 1705 1727 freq_outNMC(:) = freq_outNMC_omp(:) … … 1900 1922 write(lunout,*)' t_glace_min = ',t_glace_min 1901 1923 write(lunout,*)' t_glace_max = ',t_glace_max 1924 write(lunout,*)' iflag_ice_thermo = ',iflag_ice_thermo 1902 1925 write(lunout,*)' rei_min = ',rei_min 1903 1926 write(lunout,*)' rei_max = ',rei_max … … 1925 1948 write(lunout,*)' lev_histLES = ',lev_histLES 1926 1949 write(lunout,*)' lev_histdayNMC = ',lev_histdayNMC 1950 write(lunout,*)' levout_histNMC = ',levout_histNMC 1927 1951 write(lunout,*)' ok_histNMC = ',ok_histNMC 1928 1952 write(lunout,*)' freq_outNMC = ',freq_outNMC -
LMDZ5/branches/testing/libf/phylmd/cv3_routines.F
r1795 r1864 143 143 144 144 SUBROUTINE cv3_prelim(len,nd,ndp1,t,q,p,ph 145 : ,lv, cpn,tv,gz,h,hm,th)145 : ,lv,lf,cpn,tv,gz,h,hm,th) 146 146 implicit none 147 147 … … 157 157 158 158 c outputs: 159 real lv(len,nd), cpn(len,nd), tv(len,nd)159 real lv(len,nd), lf(len,nd), cpn(len,nd), tv(len,nd) 160 160 real gz(len,nd), h(len,nd), hm(len,nd) 161 161 real th(len,nd) … … 178 178 cdebug lv(i,k)= lv0-clmcpv*(t(i,k)-t0) 179 179 lv(i,k)= lv0-clmcpv*(t(i,k)-273.15) 180 lf(i,k)= lf0-clmci*(t(i,k)-273.15) 180 181 cpn(i,k)=cpd*(1.0-q(i,k))+cpv*q(i,k) 181 182 cpx(i,k)=cpd*(1.0-q(i,k))+cl*q(i,k) … … 918 919 end 919 920 921 SUBROUTINE Icefrac(t,clw,qi,nl,len) 922 implicit none 923 924 925 cJAM-------------------------------------------------------------------- 926 C Calcul de la quantité d'eau sous forme de glace 927 C-------------------------------------------------------------------- 928 Real qi(len,nl) 929 Real t(len,nl), clw(len,nl) 930 Real fracg 931 Integer nl, len, k, i 932 933 do k=3, nl 934 do i = 1, len 935 if (t(i,k).gt.263.15) then 936 qi(i,k)=0. 937 else 938 if (t(i,k).lt.243.15) then 939 qi(i,k)=clw(i,k) 940 else 941 fracg=(263.15-t(i,k))/20 942 qi(i,k)=clw(i,k)*fracg 943 endif 944 endif 945 C print*,t(i,k),qi(i,k),'temp,testglace' 946 enddo 947 enddo 948 949 return 950 951 end 952 920 953 SUBROUTINE cv3_undilute2(nloc,ncum,nd,icb,icbs,nk 921 954 : ,tnk,qnk,gznk,hnk,t,q,qs,gz 922 : ,p,h,tv,lv, pbase,buoybase,plcl923 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy )955 : ,p,h,tv,lv,lf,pbase,buoybase,plcl 956 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy,frac) 924 957 implicit none 925 958 … … 945 978 #include "cv3param.h" 946 979 #include "conema3.h" 980 #include "cvflag.h" 947 981 948 982 c inputs: 949 integer ncum, nd, nloc 983 integer ncum, nd, nloc, j 950 984 integer icb(nloc), icbs(nloc), nk(nloc) 951 985 real t(nloc,nd), q(nloc,nd), qs(nloc,nd), gz(nloc,nd) … … 953 987 real tnk(nloc), qnk(nloc), gznk(nloc) 954 988 real hnk(nloc) 955 real lv(nloc,nd), tv(nloc,nd), h(nloc,nd)989 real lv(nloc,nd), lf(nloc,nd), tv(nloc,nd), h(nloc,nd) 956 990 real pbase(nloc), buoybase(nloc), plcl(nloc) 957 991 … … 964 998 c local variables: 965 999 integer i, k 966 real tg,qg,ahg,alv,s,tc,es,denom,rg,tca,elacrit 967 real by, defrac, pden 1000 real tg,qg,ahg,alv,alf,s,tc,es,esi,denom,rg,tca,elacrit 1001 real als 1002 real qsat_new,snew, qi(nloc,nd) 1003 real by, defrac, pden, tbis 968 1004 real ah0(nloc), cape(nloc), capem(nloc), byp(nloc) 1005 real frac(nloc,nd) 969 1006 logical lcape(nloc) 970 1007 integer iposit(nloc) 1008 Real fracg 971 1009 972 1010 !===================================================================== … … 978 1016 ep(i,k)=0.0 979 1017 sigp(i,k)=spfac 1018 qi(i,k)=0. 980 1019 160 continue 981 1020 170 continue … … 1060 1099 1061 1100 c convect3: no approximation: 1062 tp(i,k)=(ah0(i)-gz(i,k)-alv*qg)/(cpd+(cl-cpd)*qnk(i)) 1063 1101 if (cvflag_ice) then 1102 tp(i,k)=Max(0.,(ah0(i)-gz(i,k)-alv*qg) 1103 & /(cpd+(cl-cpd)*qnk(i))) 1104 else 1105 tp(i,k)=(ah0(i)-gz(i,k)-alv*qg)/(cpd+(cl-cpd)*qnk(i)) 1106 endif 1107 c 1064 1108 clw(i,k)=qnk(i)-qg 1065 1109 clw(i,k)=max(0.0,clw(i,k)) … … 1068 1112 c convect3: (qg utilise au lieu du vrai mixing ratio rg): 1069 1113 tvp(i,k)=tp(i,k)*(1.+qg/eps-qnk(i)) ! whole thing 1114 if (cvflag_ice) then 1115 if(clw(i,k).lt.1.e-11) then 1116 tp(i,k)=tv(i,k) 1117 tvp(i,k)=tv(i,k) 1118 endif 1119 endif 1070 1120 endif 1121 1122 if (cvflag_ice) then 1123 cCR:attention boucle en klon dans Icefrac 1124 c Call Icefrac(t,clw,qi,nl,nloc) 1125 if (t(i,k).gt.263.15) then 1126 qi(i,k)=0. 1127 else 1128 if (t(i,k).lt.243.15) then 1129 qi(i,k)=clw(i,k) 1130 else 1131 fracg=(263.15-t(i,k))/20 1132 qi(i,k)=clw(i,k)*fracg 1133 endif 1134 endif 1135 cCR: fin test 1136 if(t(i,k).lt.263.15) then 1137 cCR: on commente les calculs d'Arnaud car division par zero 1138 cnouveau calcul propose par JYG 1139 c alv=lv0-clmcpv*(t(i,k)-273.15) 1140 c alf=lf0-clmci*(t(i,k)-273.15) 1141 c tg=tp(i,k) 1142 c tc=tp(i,k)-273.15 1143 c denom=243.5+tc 1144 c do j=1,3 1145 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1146 c il faudra que esi vienne en argument de la convection 1147 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1148 c tbis=t(i,k)+(tp(i,k)-tg) 1149 c esi=exp(23.33086-(6111.72784/tbis) 1150 c : +0.15215*log(tbis)) 1151 c qsat_new=eps*esi/(p(i,k)-esi*(1.-eps)) 1152 c snew=cpd*(1.-qnk(i))+cl*qnk(i)+alv*alv*qsat_new/ 1153 c : (rrv*tbis*tbis) 1154 c snew=1./snew 1155 c print*,esi,qsat_new,snew,'esi,qsat,snew' 1156 c tp(i,k)=tg+(alf*qi(i,k)+alv*qg*(1.-(esi/es)))*snew 1157 c print*,k,tp(i,k),qnk(i),'avec glace' 1158 c print*,'tpNAN',tg,alf,qi(i,k),alv,qg,esi,es,snew 1159 c enddo 1160 1161 alv=lv0-clmcpv*(t(i,k)-273.15) 1162 alf=lf0+clmci*(t(i,k)-273.15) 1163 als=alf+alv 1164 tg=tp(i,k) 1165 tp(i,k) = t(i,k) 1166 do j=1,3 1167 esi=exp(23.33086-(6111.72784/tp(i,k)) 1168 : +0.15215*log(tp(i,k))) 1169 qsat_new=eps*esi/(p(i,k)-esi*(1.-eps)) 1170 snew=cpd*(1.-qnk(i))+cl*qnk(i)+alv*als*qsat_new/ 1171 : (rrv*tp(i,k)*tp(i,k)) 1172 snew=1./snew 1173 cc print*,esi,qsat_new,snew,'esi,qsat,snew' 1174 tp(i,k)=tp(i,k)+ 1175 : ( (cpd*(1.-qnk(i))+cl*qnk(i))*(tg-tp(i,k)) + 1176 : alv*(qg-qsat_new) + alf*qi(i,k) )*snew 1177 c print*,k,tp(i,k),qsat_new,qnk(i),qi(i,k), 1178 c : 'k,tp,q,qt,qi avec glace' 1179 enddo 1180 1181 cCR:reprise du code AJ 1182 clw(i,k)=qnk(i)-qsat_new 1183 clw(i,k)=max(0.0,clw(i,k)) 1184 tvp(i,k)=Max(0.,tp(i,k)*(1.+qsat_new/eps-qnk(i))) 1185 c print*,tvp(i,k),'tvp' 1186 endif 1187 if(clw(i,k).lt.1.e-11) then 1188 tp(i,k)=tv(i,k) 1189 tvp(i,k)=tv(i,k) 1190 endif 1191 endif ! (cvflag_ice) 1192 1071 1193 290 continue 1072 1194 300 continue … … 1303 1425 do 590 i=1,ncum 1304 1426 if((k.ge.icb(i)).and.(k.le.inb(i)))then 1427 1428 if (cvflag_ice) then 1429 frac(i,k)=1.-(t(i,k)-243.15)/(263.15-243.15) 1430 frac(i,k)=min(max(frac(i,k),0.0),1.0) 1431 hp(i,k)=hnk(i)+(lv(i,k)+(cpd-cpv)*t(i,k)+frac(i,k)*lf(i,k)) 1432 : *ep(i,k)*clw(i,k) 1433 1434 else 1305 1435 hp(i,k)=hnk(i)+(lv(i,k)+(cpd-cpv)*t(i,k))*ep(i,k)*clw(i,k) 1436 endif 1437 1306 1438 endif 1307 1439 590 continue … … 1555 1687 1556 1688 SUBROUTINE cv3_mixing(nloc,ncum,nd,na,ntra,icb,nk,inb 1557 : ,ph,t,rr,rs,u,v,tra,h,lv, qnk1689 : ,ph,t,rr,rs,u,v,tra,h,lv,lf,frac,qnk 1558 1690 : ,unk,vnk,hp,tv,tvp,ep,clw,m,sig 1559 1691 : ,ment,qent,uent,vent,nent,sij,elij,ments,qents,traent) … … 1567 1699 #include "cvthermo.h" 1568 1700 #include "cv3param.h" 1701 #include "cvflag.h" 1569 1702 1570 1703 c inputs: … … 1578 1711 real tra(nloc,nd,ntra) ! input of convect3 1579 1712 real lv(nloc,na), h(nloc,na), hp(nloc,na) 1713 real lf(nloc,na), frac(nloc,na) 1580 1714 real tv(nloc,na), tvp(nloc,na), ep(nloc,na), clw(nloc,na) 1581 1715 real m(nloc,na) ! input of convect3 … … 1659 1793 rti=qnk(il)-ep(il,i)*clw(il,i) 1660 1794 bf2=1.+lv(il,j)*lv(il,j)*rs(il,j)/(rrv*t(il,j)*t(il,j)*cpd) 1795 1796 1797 if (cvflag_ice) then 1798 c print*,cvflag_ice,'cvflag_ice dans do 700' 1799 if (t(il,j).le.263.15) then 1800 bf2=1.+(lf(il,j)+lv(il,j))*(lv(il,j)+frac(il,j) 1801 : *lf(il,j))*rs(il,j)/(rrv*t(il,j)*t(il,j)*cpd) 1802 endif 1803 endif 1804 1661 1805 anum=h(il,j)-hp(il,i)+(cpv-cpd)*t(il,j)*(rti-rr(il,j)) 1662 1806 denom=h(il,i)-hp(il,i)+(cpd-cpv)*(rr(il,i)-rti)*t(il,j) … … 1671 1815 if((stemp.lt.0.0.or.stemp.gt.1.0.or.altem.gt.cwat) 1672 1816 : .and.j.gt.i)then 1817 1818 if (cvflag_ice) then 1819 anum=anum-(lv(il,j)+frac(il,j)*lf(il,j))*(rti-rs(il,j) 1820 : -cwat*bf2) 1821 denom=denom+(lv(il,j)+frac(il,j)*lf(il,j))*(rr(il,i)-rti) 1822 else 1673 1823 anum=anum-lv(il,j)*(rti-rs(il,j)-cwat*bf2) 1674 1824 denom=denom+lv(il,j)*(rr(il,i)-rti) 1825 endif 1826 1675 1827 if(abs(denom).lt.0.01)denom=0.01 1676 1828 sij(il,i,j)=anum/denom … … 1780 1932 lwork(il)=(nent(il,i).ne.0) 1781 1933 qp=qnk(il)-ep(il,i)*clw(il,i) 1934 1935 if(cvflag_ice) then 1936 1937 anum=h(il,i)-hp(il,i)-(lv(il,i)+frac(il,i)*lf(il,i))* 1938 : (qp-rs(il,i))+(cpv-cpd)*t(il,i)*(qp-rr(il,i)) 1939 denom=h(il,i)-hp(il,i)+(lv(il,i)+frac(il,i)*lf(il,i))* 1940 : (rr(il,i)-qp)+(cpd-cpv)*t(il,i)*(rr(il,i)-qp) 1941 else 1942 1782 1943 anum=h(il,i)-hp(il,i)-lv(il,i)*(qp-rs(il,i)) 1783 1944 : +(cpv-cpd)*t(il,i)*(qp-rr(il,i)) 1784 1945 denom=h(il,i)-hp(il,i)+lv(il,i)*(rr(il,i)-qp) 1785 1946 : +(cpd-cpv)*t(il,i)*(rr(il,i)-qp) 1947 endif 1948 1786 1949 if(abs(denom).lt.0.01)denom=0.01 1787 1950 scrit(il)=anum/denom … … 1948 2111 SUBROUTINE cv3_unsat(nloc,ncum,nd,na,ntra,icb,inb,iflag 1949 2112 : ,t,rr,rs,gz,u,v,tra,p,ph 1950 : ,th,tv,lv, cpn,ep,sigp,clw2113 : ,th,tv,lv,lf,cpn,ep,sigp,clw 1951 2114 : ,m,ment,elij,delt,plcl,coef_clos 1952 o ,mp,rp,up,vp,trap,wt,water,evap,b,sigd 2115 o ,mp,rp,up,vp,trap,wt,water,evap,fondue,ice 2116 : ,faci,b,sigd 1953 2117 o ,wdtrainA,wdtrainM) ! RomP 1954 2118 implicit none … … 1969 2133 real ep(nloc,na), sigp(nloc,na), clw(nloc,na) 1970 2134 real th(nloc,na),tv(nloc,na),lv(nloc,na),cpn(nloc,na) 2135 real lf(nloc,na) 1971 2136 real m(nloc,na), ment(nloc,na,na), elij(nloc,na,na) 1972 2137 real coef_clos(nloc) … … 1978 2143 real mp(nloc,na), rp(nloc,na), up(nloc,na), vp(nloc,na) 1979 2144 real water(nloc,na), evap(nloc,na), wt(nloc,na) 2145 real ice(nloc,na), fondue(nloc,na),faci(nloc,na) 1980 2146 real trap(nloc,na,ntra) 1981 2147 real b(nloc,na), sigd(nloc) … … 1988 2154 c local variables 1989 2155 integer i,j,k,il,num1,ndp1 1990 real tinv, delti 2156 real tinv, delti, coef 1991 2157 real awat, afac, afac1, afac2, bfac 1992 real pr1, pr2, sigt, b6, c6, revap, delth2158 real pr1, pr2, sigt, b6, c6, d6, e6, f6, revap, delth 1993 2159 real amfac, amp2, xf, tf, fac2, ur, sru, fac, d, af, bf 1994 real ampmax 2160 real ampmax, thaw 1995 2161 real tevap(nloc) 1996 real lvcp(nloc,na) 2162 real lvcp(nloc,na),lfcp(nloc,na) 1997 2163 real h(nloc,na),hm(nloc,na) 2164 real frac(nloc,na) 2165 real fraci(nloc,na),prec(nloc,na) 1998 2166 real wdtrain(nloc) 1999 2167 logical lwork(nloc),mplus(nloc) … … 2015 2183 wt(il,i)=0.001 2016 2184 water(il,i)=0.0 2185 frac(il,i)=0.0 2186 faci(il,i)=0.0 2187 fraci(il,i)=0.0 2188 ice(il,i)=0.0 2189 prec(il,i)=0.0 2190 fondue(il,i)=0.0 2017 2191 evap(il,i)=0.0 2018 2192 b(il,i)=0.0 2019 2193 lvcp(il,i)=lv(il,i)/cpn(il,i) 2194 lfcp(il,i)=lf(il,i)/cpn(il,i) 2020 2195 enddo 2021 2196 enddo … … 2115 2290 wt(il,i)=45.0 2116 2291 2292 if (cvflag_ice) then 2293 frac(il,inb(il)) = 1. -(t(il,inb(il))-243.15)/(263.15-243.15) 2294 frac(il,inb(il)) = min(max(frac(il,inb(il)),0.),1.) 2295 fraci(il,inb(il)) = frac(il,inb(il)) 2296 else 2297 continue 2298 endif 2299 2117 2300 if(i.lt.inb(il))then 2301 2302 if (cvflag_ice) then 2303 thaw = (t(il,i)-273.15)/(275.15-273.15) 2304 thaw = min(max(thaw,0.0),1.0) 2305 frac(il,i)=frac(il,i)*(1.-thaw) 2306 else 2307 continue 2308 endif 2309 2118 2310 rp(il,i)=rp(il,i+1) 2119 2311 : +(cpd*(t(il,i+1)-t(il,i))+gz(il,i+1)-gz(il,i))/lv(il,i) 2120 2312 rp(il,i)=0.5*(rp(il,i)+rr(il,i)) 2121 2313 endif 2314 fraci(il,i)=1.-(t(il,i)-243.15)/(263.15-243.15) 2315 fraci(il,i)=min(max(fraci(il,i),0.0),1.0) 2122 2316 rp(il,i)=max(rp(il,i),0.0) 2123 2317 rp(il,i)=amin1(rp(il,i),rs(il,i)) … … 2126 2320 if(i.eq.1)then 2127 2321 afac=p(il,1)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1)) 2322 if (cvflag_ice) then 2323 afac1=p(il,i)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1)) 2324 endif 2128 2325 else 2129 2326 rp(il,i-1)=rp(il,i) … … 2161 2358 c b6 = bfac*100.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2162 2359 c c6 = water(il,i+1) + wdtrain(il)*bfac 2360 c c6 = prec(il,i+1) + wdtrain(il)*bfac 2163 2361 c revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2164 2362 c evap(il,i)=sigt*afac*revap 2165 2363 c water(il,i)=revap*revap 2364 c prec(il,i)=revap*revap 2166 2365 cc print *,' i,b6,c6,revap,evap(il,i),water(il,i),wdtrain(il) ', 2167 2366 cc $ i,b6,c6,revap,evap(il,i),water(il,i),wdtrain(il) … … 2169 2368 c 2170 2369 c--------retour à la formulation originale d'Emanuel. 2370 if (cvflag_ice) then 2371 2372 c b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2373 c c6=prec(il,i+1)+bfac*wdtrain(il) 2374 c : -50.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))*evap(il,i+1) 2375 c if(c6.gt.0.0)then 2376 c revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2377 c 2378 cJAM Attention: evap=sigt*E 2379 c Modification: evap devient l'évaporation en milieu de couche 2380 c car nécessaire dans cv3_yield 2381 c Du coup, il faut modifier pas mal d'équations... 2382 c et l'expression de afac qui devient afac1 2383 c revap=sqrt((prec(i+1)+prec(i))/2) 2384 2385 b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac1 2386 c6=prec(il,i+1)+0.5*bfac*wdtrain(il) 2387 c print *,'bfac,sigd(il),sigt,afac1 ',bfac,sigd(il),sigt,afac1 2388 c print *,'prec(il,i+1),wdtrain(il) ',prec(il,i+1),wdtrain(il) 2389 c print *,'b6,c6,b6*b6+4.*c6 ',b6,c6,b6*b6+4.*c6 2390 if (c6 .gt. b6*b6+1.e-20) then 2391 revap=2.*c6/(b6+sqrt(b6*b6+4.*c6)) 2392 else 2393 revap=(-b6+sqrt(b6*b6+4.*c6))/2. 2394 endif 2395 prec(il,i)=Max(0.,2.*revap*revap-prec(il,i+1)) 2396 c print*,prec(il,i),'neige' 2397 2398 cjyg Dans sa formulation originale, Emanuel calcule l'evaporation par: 2399 cc evap(il,i)=sigt*afac*revap 2400 c ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee. 2401 c Ici,l'evaporation evap est simplement calculee par l'equation de 2402 c conservation. 2403 c prec(il,i)=revap*revap 2404 c else 2405 cjyg---- Correction : si c6 <= 0, water(il,i)=0. 2406 c prec(il,i)=0. 2407 c endif 2408 2409 cjyg--- Dans tous les cas, evaporation = [tt ce qui entre dans la couche i] 2410 c moins [tt ce qui sort de la couche i] 2411 c print *, 'evap avec ice' 2412 evap(il,i)= 2413 : (wdtrain(il)+sigd(il)*wt(il,i)*(prec(il,i+1)-prec(il,i))) 2414 : /(sigd(il)*(ph(il,i)-ph(il,i+1))*100.) 2415 2416 d6=bfac*wdtrain(il)-100.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1)) 2417 : *evap(il,i) 2418 e6=bfac*wdtrain(il) 2419 f6=-100.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))* 2420 : evap(il,i) 2421 2422 thaw=(t(il,i)-273.15)/(275.15-273.15) 2423 thaw=min(max(thaw,0.0),1.0) 2424 water(il,i)=water(il,i+1)+(1-fraci(il,i))*d6 2425 water(il,i)=max(water(il,i),0.) 2426 ice(il,i)=ice(il,i+1)+fraci(il,i)*d6 2427 ice(il,i)=max(ice(il,i),0.) 2428 fondue(il,i)=ice(il,i)*thaw 2429 water(il,i)=water(il,i)+fondue(il,i) 2430 ice(il,i)=ice(il,i)-fondue(il,i) 2431 2432 if(water(il,i)+ice(il,i).lt.1.e-30)then 2433 faci(il,i)=0. 2434 else 2435 faci(il,i)=ice(il,i)/(water(il,i)+ice(il,i)) 2436 endif 2437 2438 c water(il,i)=water(il,i+1)+(1.-fraci(il,i))*e6+(1.-faci(il,i))*f6 2439 c water(il,i)=max(water(il,i),0.) 2440 c ice(il,i)=ice(il,i+1)+fraci(il,i)*e6+faci(il,i)*f6 2441 c ice(il,i)=max(ice(il,i),0.) 2442 c fondue(il,i)=ice(il,i)*thaw 2443 c water(il,i)=water(il,i)+fondue(il,i) 2444 c ice(il,i)=ice(il,i)-fondue(il,i) 2445 c 2446 c if((water(il,i)+ice(il,i)).lt.1.e-30)then 2447 c faci(il,i)=0. 2448 c else 2449 c faci(il,i)=ice(il,i)/(water(il,i)+ice(il,i)) 2450 c endif 2451 2452 else 2171 2453 b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2172 2454 c6=water(il,i+1)+bfac*wdtrain(il) … … 2174 2456 if(c6.gt.0.0)then 2175 2457 revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2176 cjyg Dans sa formulation originale, Emanuel calcule l'evaporation par:2177 cc evap(il,i)=sigt*afac*revap2178 c ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee.2179 c Ici,l'evaporation evap est simplement calculee par l'equation de2180 c conservation.2181 2458 water(il,i)=revap*revap 2182 2459 else 2183 cjyg---- Correction : si c6 <= 0, water(il,i)=0. 2184 water(il,i) = 0. 2460 water(il,i)= 0. 2185 2461 endif 2186 cJYG/IM : ci-dessous formulation originale de KE 2187 c evap(il,i)=-evap(il,i+1) 2188 c : +(wdtrain(il)+sigd(il)*wt(il,i)*water(il,i+1)) 2189 c : /(sigd(il)*(ph(il,i)-ph(il,i+1))*50.) 2190 c 2191 cJYG/IM : ci-dessous modification formulation originale de KE 2192 c pour eliminer oscillations verticales de pluie se produisant 2193 c lorsqu'il y a evaporation totale de la pluie 2194 c 2195 c evap(il,i)= +(wdtrain(il)+sigd(il)*wt(il,i)*water(il,i+1)) !itlmd(jyg) 2196 c : /(sigd(il)*(ph(il,i)-ph(il,i+1))*100.) 2197 c end if !itlmd(jyg) 2198 cjyg--- Dans tous les cas, evaporation = [tt ce qui entre dans la couche i] 2199 c moins [tt ce qui sort de la couche i] 2462 c print *, 'evap sans ice' 2200 2463 evap(il,i)= 2201 2464 : (wdtrain(il)+sigd(il)*wt(il,i)*(water(il,i+1)-water(il,i))) 2202 2465 : /(sigd(il)*(ph(il,i)-ph(il,i+1))*100.) 2203 c 2466 2467 endif 2204 2468 endif !(i.le.inb(il) .and. lwork(il)) 2205 2469 995 Continue … … 2215 2479 tevap(il)=max(0.0,evap(il,i)) 2216 2480 delth=max(0.001,(th(il,i)-th(il,i-1))) 2481 if (cvflag_ice) then 2482 if (cvflag_grav) then 2483 mp(il,i)=100.*ginv*(lvcp(il,i)*sigd(il)*tevap(il) 2484 : *(p(il,i-1)-p(il,i))/delth 2485 : +lfcp(il,i)*sigd(il)*faci(il,i)*tevap(il) 2486 : *(p(il,i-1)-p(il,i))/delth 2487 : +lfcp(il,i)*sigd(il)*wt(il,i)/100.*fondue(il,i) 2488 : *(p(il,i-1)-p(il,i))/delth/(ph(il,i)-ph(il,i+1))) 2489 else 2490 mp(il,i)=10.*(lvcp(il,i)*sigd(il)*tevap(il) 2491 : *(p(il,i-1)-p(il,i))/delth 2492 : +lfcp(il,i)*sigd(il)*faci(il,i)*tevap(il) 2493 : *(p(il,i-1)-p(il,i))/delth 2494 : +lfcp(il,i)*sigd(il)*wt(il,i)/100.*fondue(il,i) 2495 : *(p(il,i-1)-p(il,i))/delth/(ph(il,i)-ph(il,i+1))) 2496 2497 endif 2498 else 2217 2499 if (cvflag_grav) then 2218 2500 mp(il,i)=100.*ginv*lvcp(il,i)*sigd(il)*tevap(il) … … 2223 2505 endif 2224 2506 c 2507 endif 2508 c 2225 2509 endif !(i.le.inb(il) .and. lwork(il) .and. i.ne.1) 2226 2510 996 Continue … … 2243 2527 : /(lvcp(il,i)*sigd(il)*th(il,i)) 2244 2528 af=xf*tf+mp(il,i+1)*mp(il,i+1)*tinv 2529 2530 if (cvflag_ice) then 2531 bf=2.*(tinv*mp(il,i+1))**3+tinv*mp(il,i+1)*xf*tf 2532 : +50.*(p(il,i-1)-p(il,i))*xf* 2533 : (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i))+ 2534 : (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i)/ 2535 : (ph(il,i)-ph(il,i+1))) 2536 else 2537 2245 2538 bf=2.*(tinv*mp(il,i+1))**3+tinv*mp(il,i+1)*xf*tf 2246 2539 : +50.*(p(il,i-1)-p(il,i))*xf*tevap(il) 2540 endif 2541 2247 2542 fac2=1.0 2248 2543 if(bf.lt.0.0)fac2=-1.0 … … 2262 2557 mp(il,i)=max(0.0,mp(il,i)) 2263 2558 2559 if (cvflag_ice) then 2264 2560 if (cvflag_grav) then 2265 2561 Cjyg : il y a vraisemblablement une erreur dans la ligne 2 suivante: 2266 2562 C il faut diviser par (mp(il,i)*sigd(il)*grav) et non par (mp(il,i)+sigd(il)*0.1). 2267 2563 C Et il faut bien revoir les facteurs 100. 2268 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))*tevap(il) 2564 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))* 2565 : (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i))+ 2566 : (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i) 2567 : /(ph(il,i)-ph(il,i+1))) 2568 2 /(mp(il,i)+sigd(il)*0.1) 2569 3 -10.0*(th(il,i)-th(il,i-1))*t(il,i)/(lvcp(il,i) 2570 : *sigd(il)*th(il,i)) 2571 else 2572 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))* 2573 : (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i))+ 2574 : (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i) 2575 : /(ph(il,i)-ph(il,i+1))) 2576 2 /(mp(il,i)+sigd(il)*0.1) 2577 3 -10.0*(th(il,i)-th(il,i-1))*t(il,i)/(lvcp(il,i) 2578 : *sigd(il)*th(il,i)) 2579 endif 2580 else 2581 if (cvflag_grav) then 2582 b(il,i-1)=b(il,i)+100.0*(p(il,i-1)-p(il,i))*tevap(il) 2269 2583 2 /(mp(il,i)+sigd(il)*0.1) 2270 2584 3 -10.0*(th(il,i)-th(il,i-1))*t(il,i)/(lvcp(il,i) … … 2276 2590 : *sigd(il)*th(il,i)) 2277 2591 endif 2592 endif 2278 2593 b(il,i-1)=max(b(il,i-1),0.0) 2279 2594 c … … 2391 2706 : ,icb,inb,delt 2392 2707 : ,t,rr,t_wake,rr_wake,s_wake,u,v,tra 2393 : ,gz,p,ph,h,hp,lv, cpn,th,th_wake2708 : ,gz,p,ph,h,hp,lv,lf,cpn,th,th_wake 2394 2709 : ,ep,clw,m,tp,mp,rp,up,vp,trap 2395 : ,wt,water, evap,b,sigd2710 : ,wt,water,ice,evap,fondue,faci,b,sigd 2396 2711 : ,ment,qent,hent,iflag_mix,uent,vent 2397 2712 : ,nent,elij,traent,sig … … 2422 2737 real th(nloc,na), p(nloc,nd), tp(nloc,na) 2423 2738 real lv(nloc,na), cpn(nloc,na), ep(nloc,na), clw(nloc,na) 2739 real lf(nloc,na) 2424 2740 real m(nloc,na), mp(nloc,na), rp(nloc,na), up(nloc,na) 2425 2741 real vp(nloc,na), wt(nloc,nd), trap(nloc,nd,ntra) 2426 2742 real water(nloc,na), evap(nloc,na), b(nloc,na), sigd(nloc) 2743 real fondue(nloc,na),faci(nloc,na), ice(nloc,na) 2427 2744 real ment(nloc,na,na), qent(nloc,na,na), uent(nloc,na,na) 2428 2745 real hent(nloc,na,na) … … 2455 2772 real cpinv, rdcp, dpinv 2456 2773 real awat(nloc) 2457 real lvcp(nloc,na), mke(nloc,na)2774 real lvcp(nloc,na), lfcp(nloc,na), mke(nloc,na) 2458 2775 real am(nloc), work(nloc), ad(nloc), amp1(nloc) 2459 2776 c!! real up1(nloc), dn1(nloc) … … 2513 2830 do il=1,ncum 2514 2831 lvcp(il,i)=lv(il,i)/cpn(il,i) 2832 lfcp(il,i)=lf(il,i)/cpn(il,i) 2515 2833 enddo 2516 2834 enddo … … 2522 2840 do il=1,ncum 2523 2841 if(ep(il,inb(il)).ge.0.0001 .and. iflag(il) .le. 1)then 2842 if (cvflag_ice) then 2843 if (cvflag_grav) then 2844 precip(il)=wt(il,1)*sigd(il)*(water(il,1)+ice(il,1))*86400. 2845 : *1000./(rowl*grav) 2846 else 2847 precip(il)=wt(il,1)*sigd(il)*(water(il,1)+ice(il,1))*8640. 2848 endif 2849 else 2524 2850 if (cvflag_grav) then 2525 2851 precip(il)=wt(il,1)*sigd(il)*water(il,1)*86400.*1000. … … 2527 2853 else 2528 2854 precip(il)=wt(il,1)*sigd(il)*water(il,1)*8640. 2855 endif 2529 2856 endif 2530 2857 endif … … 2539 2866 if(ep(il,inb(il)).ge.0.0001 .and. i.le.inb(il) 2540 2867 : .and. iflag(il) .le. 1)then 2868 if (cvflag_ice) then 2869 if (cvflag_grav) then 2870 VPrecip(il,i) = wt(il,i)*sigd(il)*(water(il,i)+ice(il,i)) 2871 : /grav 2872 else 2873 VPrecip(il,i) = wt(il,i)*sigd(il)*(water(il,i)+ice(il,i)) 2874 : /10. 2875 endif 2876 else 2541 2877 if (cvflag_grav) then 2542 2878 VPrecip(il,i) = wt(il,i)*sigd(il)*water(il,i)/grav 2543 2879 else 2544 2880 VPrecip(il,i) = wt(il,i)*sigd(il)*water(il,i)/10. 2881 endif 2545 2882 endif 2546 2883 endif … … 2585 2922 cjyg Correction pour conserver l'eau 2586 2923 ccc ft(il,1)=-0.5*lvcp(il,1)*sigd(il)*(evap(il,1)+evap(il,2)) !precip 2587 ft(il,1)=-lvcp(il,1)*sigd(il)*evap(il,1) !precip 2924 if (cvflag_ice) then 2925 ft(il,1)=-lvcp(il,1)*sigd(il)*evap(il,1) 2926 : -lfcp(il,1)*sigd(il)*evap(il,1)*faci(il,1) 2927 : -lfcp(il,1)*sigd(il)*(fondue(il,1)*wt(il,1))/ 2928 : (100.*(ph(il,1)-ph(il,2))) !precip 2929 else 2930 ft(il,1)=-lvcp(il,1)*sigd(il)*evap(il,1) 2931 endif 2588 2932 2589 2933 if (cvflag_grav) then … … 2595 2939 endif 2596 2940 2941 if (cvflag_ice) then 2942 ft(il,1)=ft(il,1)+0.01*sigd(il)*wt(il,1)*(cl-cpd)*water(il,2) 2943 : *(t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il,1)+ 2944 : 0.01*sigd(il)*wt(il,1)*(ci-cpd)*ice(il,2)* 2945 : (t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il,1) 2946 else 2597 2947 ft(il,1)=ft(il,1)+0.01*sigd(il)*wt(il,1)*(cl-cpd)*water(il,2) 2598 2948 : *(t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il,1) 2949 endif 2599 2950 2600 2951 ftd(il,1) = ft(il,1) ! fin precip … … 2791 3142 ! precip 2792 3143 ccc ft(il,i)= -0.5*sigd(il)*lvcp(il,i)*(evap(il,i)+evap(il,i+1)) 3144 if (cvflag_ice) then 2793 3145 ft(il,i)= -sigd(il)*lvcp(il,i)*evap(il,i) 3146 : -sigd(il)*lfcp(il,i)*evap(il,i)*faci(il,i) 3147 : -sigd(il)*lfcp(il,i)*fondue(il,i)*wt(il,i)/ 3148 : (100.*(p(il,i-1)-p(il,i))) 3149 else 3150 ft(il,i)= -sigd(il)*lvcp(il,i)*evap(il,i) 3151 endif 3152 2794 3153 rat=cpn(il,i-1)*cpinv 2795 3154 c … … 2798 3157 : *(mp(il,i+1)*t_wake(il,i)*b(il,i) 2799 3158 : -mp(il,i)*t_wake(il,i-1)*rat*b(il,i-1))*dpinv 3159 if (cvflag_ice) then 2800 3160 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 2801 3161 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3162 : +0.01*sigd(il)*wt(il,i)*(ci-cpd)*ice(il,i+1)* 3163 : (t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3164 else 3165 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 3166 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3167 endif 3168 2802 3169 ftd(il,i)=ft(il,i) 2803 3170 ! fin precip … … 2818 3185 : *(mp(il,i+1)*t_wake(il,i)*b(il,i) 2819 3186 : -mp(il,i)*t_wake(il,i-1)*rat*b(il,i-1))*dpinv 3187 3188 if (cvflag_ice) then 2820 3189 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 2821 3190 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3191 : +0.01*sigd(il)*wt(il,i)*(ci-cpd)*ice(il,i+1)* 3192 : (t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3193 else 3194 ft(il,i)=ft(il,i)+0.01*sigd(il)*wt(il,i)*(cl-cpd)*water(il,i+1) 3195 : *(t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv 3196 endif 3197 2822 3198 ftd(il,i)=ft(il,i) 2823 3199 ! fin precip … … 3744 4120 return 3745 4121 end 3746 -
LMDZ5/branches/testing/libf/phylmd/cv3a_compress.F
r1669 r1864 6 6 : ,u1,v1,gz1,th1,th1_wake 7 7 : ,tra1 8 : ,h1 ,lv1 ,cpn1 ,p1,ph1,tv1 ,tp1,tvp1,clw19 : ,h1_wake,lv1_wake, cpn1_wake ,tv1_wake8 : ,h1 ,lv1, lf1 ,cpn1 ,p1,ph1,tv1 ,tp1,tvp1,clw1 9 : ,h1_wake,lv1_wake,lf1_wake,cpn1_wake ,tv1_wake 10 10 : ,sig1,w01,ptop21 11 11 : ,Ale1,Alp1 … … 16 16 o ,u,v,gz,th,th_wake 17 17 o ,tra 18 o ,h ,lv ,cpn ,p,ph,tv ,tp,tvp,clw19 o ,h_wake,lv_wake, cpn_wake ,tv_wake18 o ,h ,lv, lf ,cpn ,p,ph,tv ,tp,tvp,clw 19 o ,h_wake,lv_wake,lf_wake,cpn_wake ,tv_wake 20 20 o ,sig,w0,ptop2 21 21 o ,Ale,Alp ) … … 45 45 real gz1(len,nd),th1(len,nd),th1_wake(len,nd) 46 46 real tra1(len,nd,ntra) 47 real h1(len,nd),lv1(len,nd), cpn1(len,nd)47 real h1(len,nd),lv1(len,nd),lf1(len,nd),cpn1(len,nd) 48 48 real p1(len,nd),ph1(len,nd+1),tv1(len,nd),tp1(len,nd) 49 49 real tvp1(len,nd),clw1(len,nd) 50 50 real h1_wake(len,nd),lv1_wake(len,nd),cpn1_wake(len,nd) 51 real tv1_wake(len,nd) 51 real tv1_wake(len,nd),lf1_wake(len,nd) 52 52 real sig1(len,nd), w01(len,nd), ptop21(len) 53 53 real Ale1(len),Alp1(len) … … 65 65 real gz(len,nd),th(len,nd),th_wake(len,nd) 66 66 real tra(len,nd,ntra) 67 real h(len,nd),lv(len,nd), cpn(len,nd)67 real h(len,nd),lv(len,nd),lf(len,nd),cpn(len,nd) 68 68 real p(len,nd),ph(len,nd+1),tv(len,nd),tp(len,nd) 69 69 real tvp(len,nd),clw(len,nd) 70 70 real h_wake(len,nd),lv_wake(len,nd),cpn_wake(len,nd) 71 real tv_wake(len,nd) 71 real tv_wake(len,nd),lf_wake(len,nd) 72 72 real sig(len,nd), w0(len,nd), ptop2(len) 73 73 real Ale(len),Alp(len) … … 99 99 h(nn,k)=h1(i,k) 100 100 lv(nn,k)=lv1(i,k) 101 lf(nn,k)=lf1(i,k) 101 102 cpn(nn,k)=cpn1(i,k) 102 103 p(nn,k)=p1(i,k) … … 108 109 h_wake(nn,k)=h1_wake(i,k) 109 110 lv_wake(nn,k)=lv1_wake(i,k) 111 lf_wake(nn,k)=lf1_wake(i,k) 110 112 cpn_wake(nn,k)=cpn1_wake(i,k) 111 113 tv_wake(nn,k)=tv1_wake(i,k) -
LMDZ5/branches/testing/libf/phylmd/cv_driver.F
r1795 r1864 341 341 ! --- SET CONSTANTS AND PARAMETERS 342 342 !------------------------------------------------------------------- 343 print *, '-> cv_driver' !jyg343 ! print *, '-> cv_driver' !jyg 344 344 c -- set simulation flags: 345 345 c (common cvflag) 346 346 347 CALL cv_flag 347 CALL cv_flag(0) 348 348 349 349 c -- set thermodynamical constants: … … 494 494 400 continue 495 495 496 print*,'cv_driver : klon, ncum = ',len,ncum496 ! print*,'cv_driver : klon, ncum = ',len,ncum 497 497 498 498 IF (ncum.gt.0) THEN … … 696 696 9999 continue 697 697 698 print *, 'fin cv_driver ->' !jyg698 ! print *, 'fin cv_driver ->' !jyg 699 699 return 700 700 end 701 701 702 702 !================================================================== 703 SUBROUTINE cv_flag 703 SUBROUTINE cv_flag(iflag_ice_thermo) 704 704 implicit none 705 706 c Argument : iflag_ice_thermo : ice thermodynamics is taken into account if 707 c iflag_ice_thermo >=1 708 INTEGER iflag_ice_thermo 705 709 706 710 #include "cvflag.h" … … 709 713 c differente de 10.0 dans convect3: 710 714 cvflag_grav = .TRUE. 715 cvflag_ice = iflag_ice_thermo .GE. 1 711 716 712 717 return … … 744 749 cpv = RCPV 745 750 cl = RCW 751 ci = RCS 746 752 rrv = RV 747 753 rrd = RD 748 754 lv0 = RLVTT 755 lf0 = RLSTT-RLVTT 749 756 g = RG ! not used in convect3 750 757 c ori t0 = RTT … … 758 765 clmcpv=cl-cpv 759 766 clmcpd=cl-cpd 767 clmci=cl-ci 760 768 cpdmcp=cpd-cpv 761 769 cpvmcpd=cpv-cpd -
LMDZ5/branches/testing/libf/phylmd/cva_driver.F
r1795 r1864 3 3 ! 4 4 SUBROUTINE cva_driver(len,nd,ndp1,ntra,nloc, 5 & iflag_con,iflag_mix, 5 & iflag_con,iflag_mix,iflag_ice_thermo, 6 6 & iflag_clos,delt, 7 7 & t1,q1,qs1,t1_wake,q1_wake,qs1_wake,s1_wake, … … 52 52 C iflag_con Integer Input version of convect (3/4) 53 53 C iflag_mix Integer Input version of mixing (0/1/2) 54 C iflag_ice_thermo Integer Input accounting for ice thermodynamics (0/1) 54 55 C iflag_clos Integer Input version of closure (0/1) 55 56 C delt Real Input time step … … 155 156 integer iflag_con 156 157 integer iflag_mix 158 integer iflag_ice_thermo 157 159 integer iflag_clos 158 160 real delt … … 381 383 real buoybase1(klon) 382 384 385 real lf1(klon,klev) ,lf1_wake(klon,klev) 383 386 real lv1(klon,klev) ,lv1_wake(klon,klev) 384 387 real cpn1(klon,klev),cpn1_wake(klon,klev) … … 419 422 real gz(nloc,klev),h(nloc,klev) ,hm(nloc,klev) 420 423 real h_wake(nloc,klev),hm_wake(nloc,klev) 421 real lv(nloc,klev) ,cpn(nloc,klev)422 real lv_wake(nloc,klev), cpn_wake(nloc,klev)424 real lv(nloc,klev), lf(nloc,klev), cpn(nloc,klev) 425 real lv_wake(nloc,klev), lf_wake(nloc,klev), cpn_wake(nloc,klev) 423 426 real p(nloc,klev),ph(nloc,klev+1),tv(nloc,klev) ,tp(nloc,klev) 424 427 real tv_wake(nloc,klev) … … 430 433 real sig(nloc,klev), w0(nloc,klev), ptop2(nloc) 431 434 real hp(nloc,klev), ep(nloc,klev), sigp(nloc,klev) 432 real frac(nloc),buoy(nloc,klev)435 real buoy(nloc,klev) 433 436 real cape(nloc) 434 437 real cin(nloc) … … 444 447 real sigd(nloc) 445 448 ! real mp(nloc,klev), qp(nloc,klev), up(nloc,klev), vp(nloc,klev) 446 ! real wt(nloc,klev), water(nloc,klev), evap(nloc,klev) 449 ! real wt(nloc,klev), water(nloc,klev), evap(nloc,klev), ice(nloc,klev) 447 450 ! real b(nloc,klev), sigd(nloc) 448 451 ! save mp,qp,up,vp,wt,water,evap,b 449 452 real, save, allocatable :: mp(:,:),qp(:,:),up(:,:),vp(:,:) 450 real, save, allocatable :: wt(:,:),water(:,:),evap(:,:), b(:,:) 451 c$OMP THREADPRIVATE(mp,qp,up,vp,wt,water,evap,b) 453 real, save, allocatable :: wt(:,:),water(:,:),evap(:,:) 454 real, save, allocatable :: ice(:,:),fondue(:,:), b(:,:) 455 real, save, allocatable :: frac(:,:), faci(:,:) 456 c$OMP THREADPRIVATE(mp,qp,up,vp,wt,water,evap,ice,fondue,b,frac,faci) 452 457 real ft(nloc,klev), fq(nloc,klev) 453 458 real ftd(nloc,klev), fqd(nloc,klev) … … 496 501 allocate(mp(nloc,klev), qp(nloc,klev), up(nloc,klev)) 497 502 allocate(vp(nloc,klev), wt(nloc,klev), water(nloc,klev)) 503 allocate(ice(nloc,klev), fondue(nloc,klev)) 498 504 allocate(evap(nloc,klev), b(nloc,klev)) 505 allocate(frac(nloc,klev), faci(nloc,klev)) 499 506 first=.false. 500 507 endif … … 502 509 c (common cvflag) 503 510 504 CALL cv_flag 511 CALL cv_flag(iflag_ice_thermo) 505 512 506 513 c -- set thermodynamical constants: … … 610 617 ! print*,'t1, q1 ',t1,q1 611 618 CALL cv3_prelim(len,nd,ndp1,t1,q1,p1,ph1 ! nd->na 612 o ,lv1, cpn1,tv1,gz1,h1,hm1,th1)619 o ,lv1,lf1,cpn1,tv1,gz1,h1,hm1,th1) 613 620 614 621 c 615 622 CALL cv3_prelim(len,nd,ndp1,t1_wake,q1_wake,p1,ph1 ! nd->na 616 o ,lv1_wake, cpn1_wake,tv1_wake,gz1_wake623 o ,lv1_wake,lf1_wake,cpn1_wake,tv1_wake,gz1_wake 617 624 o ,h1_wake,bid,th1_wake) 618 625 … … 755 762 : ,u1,v1,gz1,th1,th1_wake 756 763 : ,tra1 757 : ,h1 ,lv1 758 : ,h1_wake,lv1_wake, cpn1_wake ,tv1_wake764 : ,h1 ,lv1, lf1,cpn1 ,p1,ph1,tv1 ,tp1,tvp1,clw1 765 : ,h1_wake,lv1_wake,lf1_wake,cpn1_wake ,tv1_wake 759 766 : ,sig1,w01,ptop21 760 767 : ,Ale1,Alp1 … … 765 772 o ,u,v,gz,th,th_wake 766 773 o ,tra 767 o ,h ,lv ,cpn ,p,ph,tv ,tp,tvp,clw768 o ,h_wake,lv_wake, cpn_wake ,tv_wake774 o ,h ,lv, lf ,cpn ,p,ph,tv ,tp,tvp,clw 775 o ,h_wake,lv_wake,lf_wake,cpn_wake ,tv_wake 769 776 o ,sig,w0,ptop2 770 777 o ,Ale,Alp ) … … 800 807 CALL cv3_undilute2(nloc,ncum,nd,icb,icbs,nk !na->nd 801 808 : ,tnk,qnk,gznk,hnk,t,q,qs,gz 802 : ,p,h,tv,lv,pbase,buoybase,plcl 803 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy) 809 : ,p,h,tv,lv,lf,pbase,buoybase,plcl 810 o ,inb,tp,tvp,clw,hp,ep,sigp,buoy 811 : ,frac) 804 812 805 813 endif … … 816 824 !------------------------------------------------------------------- 817 825 IF (iflag_con .eq. 3) THEN 826 if ((iflag_ice_thermo.eq.1).and.(iflag_mix.ne.0)) then 827 write(*,*) " iflag_ice_thermo==1 requires iflag_mix==0", 828 & " but iflag_mix=",iflag_mix, ". Might as well stop here." 829 stop 830 endif 818 831 IF (iflag_mix .ge. 1 ) THEN 819 832 CALL zilch(supmax,nloc*klev) … … 877 890 IF (iflag_mix.eq.0) THEN 878 891 CALL cv3_mixing(nloc,ncum,nd,nd,ntra,icb,nk,inb ! na->nd 879 : ,ph,t,q,qs,u,v,tra,h,lv, qnk892 : ,ph,t,q,qs,u,v,tra,h,lv,lf,frac,qnk 880 893 : ,unk,vnk,hp,tv,tvp,ep,clw,m,sig 881 894 o ,ment,qent,uent,vent,nent,sigij,elij,ments,qents,traent) … … 913 926 CALL cv3_unsat(nloc,ncum,nd,nd,ntra,icb,inb,iflag ! na->nd 914 927 : ,t_wake,q_wake,qs_wake,gz,u,v,tra,p,ph 915 : ,th_wake,tv_wake,lv_wake, cpn_wake928 : ,th_wake,tv_wake,lv_wake,lf_wake,cpn_wake 916 929 : ,ep,sigp,clw 917 930 : ,m,ment,elij,delt,plcl,coef_clos 918 o ,mp,qp,up,vp,trap,wt,water,evap,b,sigd 931 o ,mp,qp,up,vp,trap,wt,water,evap,fondue,ice 932 : ,faci,b,sigd 919 933 o ,wdtrainA,wdtrainM) ! RomP 920 934 endif … … 943 957 : ,icb,inb,delt 944 958 : ,t,q,t_wake,q_wake,s_wake,u,v,tra 945 : ,gz,p,ph,h,hp,lv, cpn,th,th_wake959 : ,gz,p,ph,h,hp,lv,lf,cpn,th,th_wake 946 960 : ,ep,clw,m,tp,mp,qp,up,vp,trap 947 : ,wt,water, evap,b,sigd961 : ,wt,water,ice,evap,fondue,faci,b,sigd 948 962 : ,ment,qent,hent,iflag_mix,uent,vent 949 963 : ,nent,elij,traent,sig … … 1043 1057 return 1044 1058 end 1045 -
LMDZ5/branches/testing/libf/phylmd/cvflag.h
r766 r1864 3 3 ! 4 4 logical cvflag_grav 5 logical cvflag_ice 5 6 6 COMMON /cvflag/ cvflag_grav 7 COMMON /cvflag/ cvflag_grav, cvflag_ice 7 8 c$OMP THREADPRIVATE(/cvflag/) -
LMDZ5/branches/testing/libf/phylmd/cvthermo.h
r766 r1864 4 4 c Thermodynamical constants for convectL: 5 5 6 real cpd, cpv, cl, rrv, rrd, lv0, g, rowl, t07 real clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl 6 real cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0 7 real clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl, clmci 8 8 real eps, epsi, epsim1 9 9 real ginv, hrd 10 10 real grav 11 11 12 COMMON /cvthermo/ cpd, cpv, cl, rrv, rrd, lv0, g, rowl, t013 : , clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl14 : , eps, epsi, epsim1, ginv, hrd, grav12 COMMON /cvthermo/ cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl 13 : ,t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl 14 : ,clmci, eps, epsi, epsim1, ginv, hrd, grav 15 15 16 16 c$OMP THREADPRIVATE(/cvthermo/) -
LMDZ5/branches/testing/libf/phylmd/declare_STDlev.h
r1707 r1864 1 1 cIM for NMC files 2 real twriteSTD(klon,nlevSTD,nfiles)3 real qwriteSTD(klon,nlevSTD,nfiles)4 real rhwriteSTD(klon,nlevSTD,nfiles)5 real phiwriteSTD(klon,nlevSTD,nfiles)6 real uwriteSTD(klon,nlevSTD,nfiles)7 real vwriteSTD(klon,nlevSTD,nfiles)8 real wwriteSTD(klon,nlevSTD,nfiles)2 ! real twriteSTD(klon,nlevSTD,nfiles) 3 ! real qwriteSTD(klon,nlevSTD,nfiles) 4 ! real rhwriteSTD(klon,nlevSTD,nfiles) 5 ! real phiwriteSTD(klon,nlevSTD,nfiles) 6 ! real uwriteSTD(klon,nlevSTD,nfiles) 7 ! real vwriteSTD(klon,nlevSTD,nfiles) 8 ! real wwriteSTD(klon,nlevSTD,nfiles) 9 9 10 10 real twriteSTD3(klon,nlevSTD3) -
LMDZ5/branches/testing/libf/phylmd/etat0_netcdf.F90
r1795 r1864 504 504 zmax0(:) = 40. 505 505 f0(:) = 1.e-5 506 ema_work1(:,:) = 0.507 ema_work2(:,:) = 0.506 sig1(:,:) = 0. 507 w01(:,:) = 0. 508 508 wake_deltat(:,:) = 0. 509 509 wake_deltaq(:,:) = 0. -
LMDZ5/branches/testing/libf/phylmd/fisrtilp.F90
r1796 r1864 8 8 frac_impa, frac_nucl, beta, & 9 9 prfl, psfl, rhcl, zqta, fraca, & 10 ztv, zpspsk, ztla, zthl, iflag_cldcon) 10 ztv, zpspsk, ztla, zthl, iflag_cldcon, & 11 iflag_ice_thermo) 11 12 12 13 ! … … 51 52 REAL zpspsk(klon,klev),ztla(klon,klev) 52 53 REAL zthl(klon,klev) 54 REAL ztfondue, qsl, qsi 53 55 54 56 logical lognormale(klon) 57 logical ice_thermo 55 58 56 59 !AA … … 77 80 INTEGER ncoreczq 78 81 INTEGER iflag_cldcon 82 INTEGER iflag_ice_thermo 79 83 PARAMETER (ninter=5) 80 84 LOGICAL evap_prec ! evaporation de la pluie … … 97 101 INTEGER i, k, n, kk 98 102 REAL zqs(klon), zdqs(klon), zdelta, zcor, zcvm5 99 REAL zrfl(klon), zrfln(klon), zqev, zqevt 100 REAL zoliq(klon), zcond(klon), zq(klon), zqn(klon), zdelq 103 REAL zrfl(klon), zrfln(klon), zqev, zqevt 104 REAL zifl(klon), zifln(klon), zqev0,zqevi, zqevti 105 REAL zoliq(klon), zcond(klon), zq(klon), zqn(klon), zdelq 106 REAL zoliqp(klon), zoliqi(klon) 101 107 REAL ztglace, zt(klon) 102 108 INTEGER nexpo ! exponentiel pour glace/eau 103 109 REAL zdz(klon),zrho(klon),ztot , zrhol(klon) 104 110 REAL zchau ,zfroi ,zfice(klon),zneb(klon) 111 REAL zmelt, zpluie, zice, zcondold 112 PARAMETER (ztfondue=278.15) 105 113 ! 106 114 LOGICAL appel1er … … 145 153 DATA appel1er /.TRUE./ 146 154 !ym 155 ice_thermo = iflag_ice_thermo .GE. 1 147 156 zdelq=0.0 148 157 … … 188 197 ! 189 198 ztglace = RTT - 15.0 190 nexpo = 6 199 !AJ< 200 IF (ice_thermo) THEN 201 nexpo = 2 202 ELSE 203 nexpo = 6 204 ENDIF 205 !! RLVTT = 2.501e6 ! pas de redefinition des constantes physiques (jyg) 206 !! RLSTT = 2.834e6 ! pas de redefinition des constantes physiques (jyg) 207 !>AJ 191 208 !cc nexpo = 1 192 209 ! … … 223 240 ! DO i = 1, klon 224 241 zrfl(i) = 0.0 242 zifl(i) = 0.0 225 243 zneb(i) = seuil_neb 226 244 ENDDO … … 272 290 273 291 292 ! Calculer l'evaporation de la precipitation 293 ! 294 295 274 296 IF (evap_prec) THEN 275 297 DO i = 1, klon 276 IF (zrfl(i) .GT.0.) THEN 298 !AJ< 299 !! IF (zrfl(i) .GT.0.) THEN 300 IF (zrfl(i)+zifl(i).GT.0.) THEN 301 !>AJ 277 302 IF (thermcep) THEN 278 303 zdelta=MAX(0.,SIGN(1.,RTT-zt(i))) … … 288 313 ENDIF 289 314 ENDIF 290 zqev = MAX (0.0, (zqs(i)-zq(i))*zneb(i) ) 291 zqevt = coef_eva * (1.0-zq(i)/zqs(i)) * SQRT(zrfl(i)) & 292 * (paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 293 zqevt = MAX(0.0,MIN(zqevt,zrfl(i))) & 294 * RG*dtime/(paprs(i,k)-paprs(i,k+1)) 295 zqev = MIN (zqev, zqevt) 296 zrfln(i) = zrfl(i) - zqev*(paprs(i,k)-paprs(i,k+1)) & 297 /RG/dtime 298 299 ! pour la glace, on ré-évapore toute la précip dans la 300 ! couche du dessous 301 ! la glace venant de la couche du dessus est simplement 302 ! dans la couche du dessous. 303 304 IF (zt(i) .LT. t_coup.and.reevap_ice) zrfln(i)=0. 305 306 zq(i) = zq(i) - (zrfln(i)-zrfl(i)) & 307 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime 308 zt(i) = zt(i) + (zrfln(i)-zrfl(i)) & 309 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 310 * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 311 zrfl(i) = zrfln(i) 312 ENDIF 313 ENDDO 314 ENDIF 315 ENDIF ! (zrfl(i)+zifl(i).GT.0.) 316 ENDDO 317 !AJ< 318 IF (.NOT. ice_thermo) THEN 319 DO i = 1, klon 320 !AJ< 321 !! IF (zrfl(i) .GT.0.) THEN 322 IF (zrfl(i)+zifl(i).GT.0.) THEN 323 !>AJ 324 zqev = MAX (0.0, (zqs(i)-zq(i))*zneb(i) ) 325 zqevt = coef_eva * (1.0-zq(i)/zqs(i)) * SQRT(zrfl(i)) & 326 * (paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 327 zqevt = MAX(0.0,MIN(zqevt,zrfl(i))) & 328 * RG*dtime/(paprs(i,k)-paprs(i,k+1)) 329 zqev = MIN (zqev, zqevt) 330 zrfln(i) = zrfl(i) - zqev*(paprs(i,k)-paprs(i,k+1)) & 331 /RG/dtime 332 333 ! pour la glace, on ré-évapore toute la précip dans la 334 ! couche du dessous 335 ! la glace venant de la couche du dessus est simplement 336 ! dans la couche du dessous. 337 338 IF (zt(i) .LT. t_coup.and.reevap_ice) zrfln(i)=0. 339 340 zq(i) = zq(i) - (zrfln(i)-zrfl(i)) & 341 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime 342 zt(i) = zt(i) + (zrfln(i)-zrfl(i)) & 343 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 344 * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 345 zrfl(i) = zrfln(i) 346 zifl(i) = 0. 347 ENDIF ! (zrfl(i)+zifl(i).GT.0.) 348 ENDDO 349 ! 350 ELSE ! (.NOT. ice_thermo) 351 ! 352 DO i = 1, klon 353 !AJ< 354 !! IF (zrfl(i) .GT.0.) THEN 355 IF (zrfl(i)+zifl(i).GT.0.) THEN 356 !>AJ 357 !JAM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 358 ! Modification de l'évaporation avec la glace 359 ! Différentiation entre précipitation liquide et solide 360 ! On suppose que coef_evai=2*coef_eva 361 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 362 363 zqev0 = MAX (0.0, (zqs(i)-zq(i))*zneb(i) ) 364 ! zqev0 = MAX (0.0, zqs(i)-zq(i) ) 365 366 !JAM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 367 ! On différencie qsat pour l'eau et la glace 368 ! Si zdelta=1. --> glace 369 ! Si zdelta=0. --> eau liquide 370 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 371 372 qsl= R2ES*FOEEW(zt(i),0.)/pplay(i,k) 373 qsl= MIN(0.5,qsl) 374 zcor= 1./(1.-RETV*qsl) 375 qsl= qsl*zcor 376 377 zqevt = 1.*coef_eva*(1.0-zq(i)/qsl)*SQRT(zrfl(i)) & 378 *(paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 379 zqevt = MAX(0.0,MIN(zqevt,zrfl(i))) & 380 *RG*dtime/(paprs(i,k)-paprs(i,k+1)) 381 382 qsi= R2ES*FOEEW(zt(i),1.)/pplay(i,k) 383 qsi= MIN(0.5,qsi) 384 zcor= 1./(1.-RETV*qsi) 385 qsi= qsi*zcor 386 387 zqevti = 1.*coef_eva*(1.0-zq(i)/qsi)*SQRT(zifl(i)) & 388 *(paprs(i,k)-paprs(i,k+1))/pplay(i,k)*zt(i)*RD/RG 389 zqevti = MAX(0.0,MIN(zqevti,zifl(i))) & 390 *RG*dtime/(paprs(i,k)-paprs(i,k+1)) 391 392 393 !JAM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 394 ! Vérification sur l'évaporation 395 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 396 397 IF (zqevt+zqevti.GT.zqev0) THEN 398 zqev=zqev0*zqevt/(zqevt+zqevti) 399 zqevi=zqev0*zqevti/(zqevt+zqevti) 400 401 ELSE 402 IF (zqevt+zqevti.GT.0.) THEN 403 zqev=MIN(zqev0*zqevt/(zqevt+zqevti),zqevt) 404 zqevi=MIN(zqev0*zqevti/(zqevt+zqevti),zqevti) 405 ELSE 406 zqev=0. 407 zqevi=0. 408 ENDIF 409 ENDIF 410 411 zrfln(i) = Max(0.,zrfl(i) - zqev*(paprs(i,k)-paprs(i,k+1)) & 412 /RG/dtime) 413 zifln(i) = Max(0.,zifl(i) - zqevi*(paprs(i,k)-paprs(i,k+1)) & 414 /RG/dtime) 415 416 ! Pour la glace, on révapore toute la précip dans la couche du dessous 417 ! la glace venant de la couche du dessus est simplement dans la couche 418 ! du dessous. 419 420 ! IF (zt(i) .LT. t_coup.and.reevap_ice) zrfln(i)=0. 421 ! print*,zrfl(i),zrfln(i),zqevt,zqevti,RLMLT,'fluxdeprecip' 422 zq(i) = zq(i) - (zrfln(i)+zifln(i)-zrfl(i)-zifl(i)) & 423 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime 424 zt(i) = zt(i) + (zrfln(i)-zrfl(i)) & 425 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 426 * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) & 427 + (zifln(i)-zifl(i)) & 428 * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime & 429 * RLSTT/RCPD/(1.0+RVTMP2*zq(i)) 430 431 zrfl(i) = zrfln(i) 432 zifl(i) = zifln(i) 433 434 ENDIF ! (zrfl(i)+zifl(i).GT.0.) 435 ENDDO 436 437 ENDIF ! (.NOT. ice_thermo) 438 439 ENDIF ! (evap_prec) 315 440 ! 316 441 ! Calculer Qs et L/Cp*dQs/dT: … … 478 603 zq(i) = zq(i) - zcond(i) 479 604 ! zt(i) = zt(i) + zcond(i) * RLVTT/RCPD 480 zt(i) = zt(i) + zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 481 ENDDO 605 ENDDO 606 !AJ< 607 IF (.NOT. ice_thermo) THEN 608 DO i = 1, klon 609 zt(i) = zt(i) + zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) 610 ENDDO 611 ELSE 612 DO i = 1, klon 613 zfice(i) = 1.0 - (zt(i)-ztglace) / (273.15-ztglace) 614 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 615 zfice(i) = zfice(i)**nexpo 616 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) & 617 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*zq(i)) 618 ! print*,zt(i),zrfl(i),zifl(i),'temp1' 619 ENDDO 620 ENDIF 621 !>AJ 482 622 ! 483 623 ! Partager l'eau condensee en precipitation et eau liquide nuageuse … … 488 628 zrho(i) = pplay(i,k) / zt(i) / RD 489 629 zdz(i) = (paprs(i,k)-paprs(i,k+1)) / (zrho(i)*RG) 630 ENDIF 631 ENDDO 632 !AJ< 633 IF (.NOT. ice_thermo) THEN 634 DO i = 1, klon 635 IF (rneb(i,k).GT.0.0) THEN 490 636 zfice(i) = 1.0 - (zt(i)-ztglace) / (273.13-ztglace) 491 637 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 492 638 zfice(i) = zfice(i)**nexpo 639 !! zfice(i)=0. 640 ENDIF 641 ENDDO 642 ENDIF 643 DO i = 1, klon 644 IF (rneb(i,k).GT.0.0) THEN 493 645 zneb(i) = MAX(rneb(i,k), seuil_neb) 646 ! zt(i) = zt(i)+zcond(i)*zfice(i)*RLMLT/RCPD/(1.0+RVTMP2*zq(i)) 647 ! print*,zt(i),'fractionglace' 648 !>AJ 494 649 radliq(i,k) = zoliq(i)/REAL(ninter+1) 495 650 ENDIF … … 500 655 IF (rneb(i,k).GT.0.0) THEN 501 656 zrhol(i) = zrho(i) * zoliq(i) / zneb(i) 502 657 ! Initialization of zpluie and zice: 658 zpluie=0 659 zice=0 503 660 IF (zneb(i).EQ.seuil_neb) THEN 504 661 ztot = 0.0 … … 519 676 zchau = zct *dtime/REAL(ninter) * zoliq(i) & 520 677 *(1.0-EXP(-(zoliq(i)/zneb(i)/zcl )**2)) *(1.-zfice(i)) 521 ztot = zchau + zfroi 678 !AJ< 679 IF (.NOT. ice_thermo) THEN 680 ztot = zchau + zfroi 681 ELSE 682 zpluie = MIN(MAX(zchau,0.0),zoliq(i)*(1.-zfice(i))) 683 zice = MIN(MAX(zfroi,0.0),zoliq(i)*zfice(i)) 684 ztot = zpluie + zice 685 ENDIF 686 !>AJ 522 687 ztot = MAX(ztot ,0.0) 523 688 ENDIF 524 689 ztot = MIN(ztot,zoliq(i)) 690 !AJ< 691 ! zoliqp = MAX(zoliq(i)*(1.-zfice(i))-1.*zpluie , 0.0) 692 ! zoliqi = MAX(zoliq(i)*zfice(i)-1.*zice , 0.0) 693 zoliqp(i) = MAX(zoliq(i)*(1.-zfice(i))-1.*zpluie , 0.0) 694 zoliqi(i) = MAX(zoliq(i)*zfice(i)-1.*zice , 0.0) 525 695 zoliq(i) = MAX(zoliq(i)-ztot , 0.0) 696 !>AJ 526 697 radliq(i,k) = radliq(i,k) + zoliq(i)/REAL(ninter+1) 527 698 ENDIF … … 529 700 ENDDO 530 701 ! 531 DO i = 1, klon 532 IF (rneb(i,k).GT.0.0) THEN 702 IF (.NOT. ice_thermo) THEN 703 DO i = 1, klon 704 IF (rneb(i,k).GT.0.0) THEN 533 705 d_ql(i,k) = zoliq(i) 534 706 zrfl(i) = zrfl(i)+ MAX(zcond(i)-zoliq(i),0.0) & 535 707 * (paprs(i,k)-paprs(i,k+1))/(RG*dtime) 536 ENDIF 537 IF (zt(i).LT.RTT) THEN 708 ENDIF 709 ENDDO 710 ELSE 711 DO i = 1, klon 712 IF (rneb(i,k).GT.0.0) THEN 713 d_ql(i,k) = zoliq(i) 714 !AJ< 715 zrfl(i) = zrfl(i)+ MAX(zcond(i)*(1.-zfice(i))-zoliqp(i),0.0) & 716 *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 717 zifl(i) = zifl(i)+ MAX(zcond(i)*zfice(i)-zoliqi(i),0.0) & 718 *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 719 ! zrfl(i) = zrfl(i)+ zpluie & 720 ! *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 721 ! zifl(i) = zifl(i)+ zice & 722 ! *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 723 724 ENDIF 725 ENDDO 726 ENDIF 727 728 IF (ice_thermo) THEN 729 DO i = 1, klon 730 zmelt = ((zt(i)-273.15)/(ztfondue-273.15))**2 731 zmelt = MIN(MAX(zmelt,0.),1.) 732 zrfl(i)=zrfl(i)+zmelt*zifl(i) 733 zifl(i)=zifl(i)*(1.-zmelt) 734 ! print*,zt(i),'octavio1' 735 zt(i)=zt(i)-zifl(i)*zmelt*(RG*dtime)/(paprs(i,k)-paprs(i,k+1)) & 736 *RLMLT/RCPD/(1.0+RVTMP2*zq(i)) 737 ! print*,zt(i),zrfl(i),zifl(i),zmelt,'octavio2' 738 ENDDO 739 ENDIF 740 741 742 IF (.NOT. ice_thermo) THEN 743 DO i = 1, klon 744 IF (zt(i).LT.RTT) THEN 538 745 psfl(i,k)=zrfl(i) 539 ELSE746 ELSE 540 747 prfl(i,k)=zrfl(i) 541 ENDIF 542 ENDDO 748 ENDIF 749 ENDDO 750 ELSE 751 ! JAM************************************************* 752 ! Revoir partie ci-dessous: à quoi servent psfl et prfl? 753 ! ***************************************************** 754 755 DO i = 1, klon 756 ! IF (zt(i).LT.RTT) THEN 757 psfl(i,k)=zifl(i) 758 ! ELSE 759 prfl(i,k)=zrfl(i) 760 ! ENDIF 761 !>AJ 762 ENDDO 763 ENDIF 764 ! 543 765 ! 544 766 ! Calculer les tendances de q et de t: … … 604 826 DO i = 1, klon 605 827 IF ((t(i,1)+d_t(i,1)) .LT. RTT) THEN 606 snow(i) = zrfl(i) 828 !AJ< 829 !! snow(i) = zrfl(i) 830 snow(i) = zrfl(i)+zifl(i) 831 !>AJ 607 832 zlh_solid(i) = RLSTT-RLVTT 608 833 ELSE -
LMDZ5/branches/testing/libf/phylmd/hbtm.F
r1279 r1864 4 4 5 5 SUBROUTINE HBTM(knon, paprs, pplay, 6 . t2m,t10m,q2m,q10m,ustar, 6 . t2m,t10m,q2m,q10m,ustar,wstar, 7 7 . flux_t,flux_q,u,v,t,q, 8 8 . pblh,cape,EauLiq,ctei,pblT, … … 54 54 REAL q2m(klon), q10m(klon) ! q a 2 et 10m 55 55 REAL ustar(klon) 56 REAL wstar(klon) ! w*, convective velocity scale 56 57 REAL paprs(klon,klev+1) ! pression a inter-couche (Pa) 57 58 REAL pplay(klon,klev) ! pression au milieu de couche (Pa) … … 158 159 REAL fak1(klon) ! k*ustar*pblh 159 160 REAL fak2(klon) ! k*wm*pblh 160 REAL fak3(klon) ! fakn*wst r/wm161 REAL fak3(klon) ! fakn*wstar/wm 161 162 REAL pblk(klon) ! level eddy diffusivity for momentum 162 163 REAL pr(klon) ! Prandtl number for eddy diffusivities … … 164 165 REAL zh(klon) ! zmzp / pblh 165 166 REAL zzh(klon) ! (1-(zmzp/pblh))**2 166 REAL wstr(klon) ! w*, convective velocity scale167 167 REAL zm(klon) ! current level height 168 168 REAL zp(klon) ! current level height + one level up … … 625 625 wm(i) = ustar(i)*phiminv(i) 626 626 fak2(i) = wm(i)*pblh(i)*vk 627 wstr(i) = (heatv(i)*RG*pblh(i)/zxt)**onet 628 fak3(i) = fakn*wstr(i)/wm(i) 627 wstar(i) = (heatv(i)*RG*pblh(i)/zxt)**onet 628 fak3(i) = fakn*wstar(i)/wm(i) 629 ELSE 630 wstar(i)=0. 629 631 ENDIF 630 632 c Computes Theta_e for thermal (all cases : to be modified) -
LMDZ5/branches/testing/libf/phylmd/ini_histrac.h
r1750 r1864 147 147 148 148 ! TD COUCHE-LIMITE 149 IF ( couchelimite) THEN149 IF (iflag_vdf_trac>=0) THEN 150 150 CALL histdef(nid_tra, "d_tr_cl_"//tname(iiq), & 151 151 "tendance couche limite"// ttext(iiq), "?", & -
LMDZ5/branches/testing/libf/phylmd/iniphysiq.F
r1707 r1864 14 14 & klon_omp_end,klon_mpi_begin 15 15 USE comgeomphy, only : airephy,cuphy,cvphy,rlond,rlatd 16 16 USE phyaqua_mod, only: iniaqua 17 17 IMPLICIT NONE 18 18 c -
LMDZ5/branches/testing/libf/phylmd/iophy.F90
r1795 r1864 2 2 ! $Header$ 3 3 ! 4 module iophy 5 6 ! abd REAL,private,allocatable,dimension(:),save :: io_lat 7 ! abd REAL,private,allocatable,dimension(:),save :: io_lon 4 MODULE iophy 5 6 USE phys_output_var_mod 7 #ifdef CPP_XIOS 8 USE wxios 9 #endif 10 11 #ifdef CPP_XIOS 12 USE wxios 13 #endif 14 15 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lat 16 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lon 8 17 REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lat 9 18 REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lon … … 14 23 15 24 !$OMP THREADPRIVATE(itau_iophy) 16 25 26 #ifdef CPP_XIOS 27 INTERFACE histwrite_phy 28 MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy,histwrite2d_phy_old,histwrite3d_phy_old,histwrite2d_xios,histwrite3d_xios 29 END INTERFACE 30 #else 17 31 INTERFACE histwrite_phy 18 32 MODULE PROCEDURE histwrite2d_phy,histwrite3d_phy,histwrite2d_phy_old,histwrite3d_phy_old 19 33 END INTERFACE 34 #endif 20 35 21 36 INTERFACE histbeg_phy_all 22 MODULE PROCEDURE histbeg_phy,histbeg_phy _points37 MODULE PROCEDURE histbeg_phy,histbeg_phyxios,histbeg_phy_points 23 38 END INTERFACE 24 39 25 40 26 contains 27 28 subroutine init_iophy_new(rlat,rlon) 41 CONTAINS 42 43 ! ug Routine pour définir itau_iophy depuis phys_output_write_mod: 44 SUBROUTINE set_itau_iophy(ito) 45 IMPLICIT NONE 46 INTEGER, INTENT(IN) :: ito 47 itau_iophy = ito 48 END SUBROUTINE 49 50 SUBROUTINE init_iophy_new(rlat,rlon) 29 51 USE dimphy 30 52 USE mod_phys_lmdz_para 31 53 USE mod_grid_phy_lmdz 32 54 USE ioipsl 33 implicit none 34 include 'dimensions.h' 35 real,dimension(klon),intent(in) :: rlon 36 real,dimension(klon),intent(in) :: rlat 37 38 REAL,dimension(klon_glo) :: rlat_glo 39 REAL,dimension(klon_glo) :: rlon_glo 55 56 IMPLICIT NONE 57 INCLUDE 'dimensions.h' 58 REAL,DIMENSION(klon),INTENT(IN) :: rlon 59 REAL,DIMENSION(klon),INTENT(IN) :: rlat 60 61 REAL,DIMENSION(klon_glo) :: rlat_glo 62 REAL,DIMENSION(klon_glo) :: rlon_glo 40 63 41 64 INTEGER,DIMENSION(2) :: ddid … … 47 70 INTEGER,DIMENSION(2) :: dhe 48 71 INTEGER :: i 72 INTEGER :: data_ibegin, data_iend 49 73 50 74 CALL gather(rlat,rlat_glo) … … 65 89 ALLOCATE(io_lon(iim)) 66 90 io_lon(:)=rlon_glo(2-1/(iim*jjm):iim+1-1/(iim*jjm)) 91 !! (I) dtnb : total number of domains 92 !! (I) dnb : domain number 93 !! (I) did(:) : distributed dimensions identifiers 94 !! (up to 5 dimensions are supported) 95 !! (I) dsg(:) : total number of points for each dimension 96 !! (I) dsl(:) : local number of points for each dimension 97 !! (I) dpf(:) : position of first local point for each dimension 98 !! (I) dpl(:) : position of last local point for each dimension 99 !! (I) dhs(:) : start halo size for each dimension 100 !! (I) dhe(:) : end halo size for each dimension 101 !! (C) cdnm : Model domain definition name. 102 !! The names actually supported are : 103 !! "BOX", "APPLE", "ORANGE". 104 !! These names are case insensitive. 67 105 68 106 ddid=(/ 1,2 /) … … 72 110 dpl=(/ iim, jj_end /) 73 111 dhs=(/ ii_begin-1,0 /) 74 if (mpi_rank==mpi_size-1) then112 IF (mpi_rank==mpi_size-1) THEN 75 113 dhe=(/0,0/) 76 else114 ELSE 77 115 dhe=(/ iim-ii_end,0 /) 78 endif 79 80 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 116 ENDIF 117 118 #ifndef CPP_NO_IOIPSL 119 CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 81 120 'APPLE',phys_domain_id) 82 121 #endif 122 #ifdef CPP_XIOS 123 !Pour els soucis en MPI, réglage du masque: 124 IF (mpi_rank == 0) THEN 125 data_ibegin = 0 126 ELSE 127 data_ibegin = ii_begin - 1 128 END IF 129 130 IF (mpi_rank == mpi_size-1) THEN 131 data_iend = nbp_lon 132 ELSE 133 data_iend = ii_end + 1 134 END IF 135 136 WRITE(*,*) "TOTO mpirank=",mpi_rank,"iibeg=",ii_begin , "jjbeg=",jj_begin,"jjnb=",jj_nb,"jjend=",jj_end 137 138 !On initialise le domaine xios, maintenant que tout est connu: 139 !SUBROUTINE wxios_domain_param(dom_id, is_sequential, ni, nj, ni_glo, nj_glo, & 140 ! ibegin, iend, jbegin, jend, & 141 ! data_ni, data_ibegin, & 142 ! io_lat, io_lon) 143 CALL wxios_domain_param("dom_glo", is_sequential, nbp_lon, jj_nb, nbp_lon, nbp_lat, & 144 1, nbp_lon, ii_begin, ii_end, jj_begin, jj_end, & 145 klon_mpi+2*(nbp_lon-1), data_ibegin, data_iend, & 146 io_lat, io_lon) 147 #endif 83 148 !$OMP END MASTER 84 149 85 end subroutineinit_iophy_new86 87 subroutineinit_iophy(lat,lon)150 END SUBROUTINE init_iophy_new 151 152 SUBROUTINE init_iophy(lat,lon) 88 153 USE dimphy 89 154 USE mod_phys_lmdz_para 90 useioipsl91 implicit none92 include'dimensions.h'93 real,dimension(iim),intent(in) :: lon94 real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat155 USE ioipsl 156 IMPLICIT NONE 157 INCLUDE 'dimensions.h' 158 REAL,DIMENSION(iim),INTENT(IN) :: lon 159 REAL,DIMENSION(jjm+1-1/(iim*jjm)),INTENT(IN) :: lat 95 160 96 161 INTEGER,DIMENSION(2) :: ddid … … 120 185 endif 121 186 187 #ifndef CPP_NO_IOIPSL 122 188 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 123 189 'APPLE',phys_domain_id) 124 190 #endif 125 191 !$OMP END MASTER 126 192 127 end subroutineinit_iophy128 129 subroutine histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)193 end SUBROUTINE init_iophy 194 195 SUBROUTINE histbeg_phyxios(name,itau0,zjulian,dtime,ffreq,lev,nhori,nid_day) 130 196 USE dimphy 131 197 USE mod_phys_lmdz_para 132 198 use ioipsl 133 199 use write_field 134 implicit none200 IMPLICIT NONE 135 201 include 'dimensions.h' 136 202 137 character*(*), intent(IN) :: name 138 integer, intent(in) :: itau0 139 real,intent(in) :: zjulian 140 real,intent(in) :: dtime 203 character*(*), INTENT(IN) :: name 204 integer, INTENT(IN) :: itau0 205 REAL,INTENT(IN) :: zjulian 206 REAL,INTENT(IN) :: dtime 207 character(LEN=*), INTENT(IN) :: ffreq 208 INTEGER,INTENT(IN) :: lev 141 209 integer,intent(out) :: nhori 142 210 integer,intent(out) :: nid_day … … 150 218 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id) 151 219 endif 220 221 #ifdef CPP_XIOS 222 ! ug OMP en chantier... 223 IF((.NOT. is_using_mpi) .OR. is_mpi_root) THEN 224 ! ug Création du fichier 225 CALL wxios_add_file(name, ffreq, lev) 226 END IF 227 #endif 152 228 !$OMP END MASTER 153 229 154 end subroutine histbeg_phy 155 156 subroutine histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, & 230 END SUBROUTINE histbeg_phyxios 231 232 SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day) 233 USE dimphy 234 USE mod_phys_lmdz_para 235 use ioipsl 236 use write_field 237 IMPLICIT NONE 238 include 'dimensions.h' 239 240 character*(*), INTENT(IN) :: name 241 integer, INTENT(IN) :: itau0 242 REAL,INTENT(IN) :: zjulian 243 REAL,INTENT(IN) :: dtime 244 integer,intent(out) :: nhori 245 integer,intent(out) :: nid_day 246 247 !$OMP MASTER 248 #ifndef CPP_NO_IOIPSL 249 if (is_sequential) then 250 call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), & 251 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day) 252 else 253 call histbeg(name,iim,io_lon, jj_nb,io_lat(jj_begin:jj_end), & 254 1,iim,1,jj_nb,itau0, zjulian, dtime, nhori, nid_day,phys_domain_id) 255 endif 256 #endif 257 !$OMP END MASTER 258 259 END SUBROUTINE histbeg_phy 260 261 262 SUBROUTINE histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, & 157 263 plon,plat,plon_bounds,plat_bounds, & 158 264 nname,itau0,zjulian,dtime,nnhori,nnid_day) … … 162 268 use ioipsl 163 269 use write_field 164 implicit none270 IMPLICIT NONE 165 271 include 'dimensions.h' 166 272 167 real,dimension(klon),intent(in) :: rlon168 real,dimension(klon),intent(in) :: rlat169 integer, intent(in) :: itau0170 real,intent(in) :: zjulian171 real,intent(in) :: dtime172 integer, intent(in) :: pim273 REAL,DIMENSION(klon),INTENT(IN) :: rlon 274 REAL,DIMENSION(klon),INTENT(IN) :: rlat 275 integer, INTENT(IN) :: itau0 276 REAL,INTENT(IN) :: zjulian 277 REAL,INTENT(IN) :: dtime 278 integer, INTENT(IN) :: pim 173 279 integer, intent(out) :: nnhori 174 character(len=20), intent(in) :: nname280 character(len=20), INTENT(IN) :: nname 175 281 INTEGER, intent(out) :: nnid_day 176 282 integer :: i 177 REAL, dimension(klon_glo) :: rlat_glo178 REAL, dimension(klon_glo) :: rlon_glo179 INTEGER, DIMENSION(pim), intent(in) :: tabij180 REAL, dimension(pim), intent(in) :: plat, plon181 INTEGER, dimension(pim), intent(in) :: ipt, jpt182 REAL, dimension(pim,2), intent(out) :: plat_bounds, plon_bounds283 REAL,DIMENSION(klon_glo) :: rlat_glo 284 REAL,DIMENSION(klon_glo) :: rlon_glo 285 INTEGER, DIMENSION(pim), INTENT(IN) :: tabij 286 REAL,DIMENSION(pim), INTENT(IN) :: plat, plon 287 INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt 288 REAL,DIMENSION(pim,2), intent(out) :: plat_bounds, plon_bounds 183 289 184 290 INTEGER, SAVE :: tabprocbeg, tabprocend … … 187 293 INTEGER, PARAMETER :: nip=1 188 294 INTEGER :: npproc 189 REAL, allocatable, dimension(:) :: npplat, npplon190 REAL, allocatable, dimension(:,:) :: npplat_bounds, npplon_bounds295 REAL, allocatable, DIMENSION(:) :: npplat, npplon 296 REAL, allocatable, DIMENSION(:,:) :: npplat_bounds, npplon_bounds 191 297 INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm 192 REAL, dimension(iim,jjmp1) :: zx_lon, zx_lat298 REAL, DIMENSION(iim,jjmp1) :: zx_lon, zx_lat 193 299 194 300 CALL gather(rlat,rlat_glo) … … 278 384 ENDDO 279 385 ! print*,'iophy is_sequential nname, nnhori, nnid_day=',trim(nname),nnhori,nnid_day 386 #ifndef CPP_NO_IOIPSL 280 387 call histbeg(nname,pim,plon,plon_bounds, & 281 388 plat,plat_bounds, & 282 389 itau0, zjulian, dtime, nnhori, nnid_day) 390 #endif 283 391 else 284 392 npproc=0 … … 317 425 ENDIF 318 426 ENDDO 427 #ifndef CPP_NO_IOIPSL 319 428 call histbeg(nname,npstn,npplon,npplon_bounds, & 320 429 npplat,npplat_bounds, & 321 430 itau0,zjulian,dtime,nnhori,nnid_day,phys_domain_id) 431 #endif 322 432 endif 323 433 !$OMP END MASTER 324 434 325 end subroutine histbeg_phy_points 435 end SUBROUTINE histbeg_phy_points 436 437 438 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 439 440 USE ioipsl 441 USE dimphy 442 USE mod_phys_lmdz_para 443 444 IMPLICIT NONE 445 446 INCLUDE "dimensions.h" 447 INCLUDE "temps.h" 448 INCLUDE "clesphys.h" 449 450 INTEGER :: iff 451 LOGICAL :: lpoint 452 INTEGER, DIMENSION(nfiles) :: flag_var 453 CHARACTER(LEN=20) :: nomvar 454 CHARACTER(LEN=*) :: titrevar 455 CHARACTER(LEN=*) :: unitvar 456 457 REAL zstophym 458 459 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 460 zstophym=zoutm(iff) 461 ELSE 462 zstophym=zdtime_moy 463 ENDIF 464 465 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 466 CALL conf_physoutputs(nomvar,flag_var) 467 468 IF(.NOT.lpoint) THEN 469 IF ( flag_var(iff)<=lev_files(iff) ) THEN 470 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 471 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 472 type_ecri(iff), zstophym,zoutm(iff)) 473 ENDIF 474 ELSE 475 IF ( flag_var(iff)<=lev_files(iff) ) THEN 476 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 477 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 478 type_ecri(iff), zstophym,zoutm(iff)) 479 ENDIF 480 ENDIF 481 482 ! Set swaero_diag=true if at least one of the concerned variables are defined 483 IF (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN 484 IF ( flag_var(iff)<=lev_files(iff) ) THEN 485 swaero_diag=.TRUE. 486 END IF 487 END IF 488 END SUBROUTINE histdef2d_old 489 490 491 492 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 493 494 USE ioipsl 495 USE dimphy 496 USE mod_phys_lmdz_para 497 498 IMPLICIT NONE 499 500 INCLUDE "dimensions.h" 501 INCLUDE "temps.h" 502 ! INCLUDE "indicesol.h" 503 INCLUDE "clesphys.h" 504 505 INTEGER :: iff 506 LOGICAL :: lpoint 507 INTEGER, DIMENSION(nfiles) :: flag_var 508 CHARACTER(LEN=20) :: nomvar 509 CHARACTER(LEN=*) :: titrevar 510 CHARACTER(LEN=*) :: unitvar 511 512 REAL zstophym 513 514 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 515 CALL conf_physoutputs(nomvar,flag_var) 516 517 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 518 zstophym=zoutm(iff) 519 ELSE 520 zstophym=zdtime_moy 521 ENDIF 522 523 IF(.NOT.lpoint) THEN 524 IF ( flag_var(iff)<=lev_files(iff) ) THEN 525 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 526 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 527 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & 528 zstophym, zoutm(iff)) 529 ENDIF 530 ELSE 531 IF ( flag_var(iff)<=lev_files(iff) ) THEN 532 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 533 npstn,1,nhorim(iff), klev, levmin(iff), & 534 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 535 type_ecri(iff), zstophym,zoutm(iff)) 536 ENDIF 537 ENDIF 538 END SUBROUTINE histdef3d_old 539 540 541 542 543 544 545 546 547 SUBROUTINE histdef2d (iff,var) 548 549 USE ioipsl 550 USE dimphy 551 USE mod_phys_lmdz_para 552 553 IMPLICIT NONE 554 555 INCLUDE "dimensions.h" 556 INCLUDE "temps.h" 557 INCLUDE "clesphys.h" 558 559 INTEGER :: iff 560 TYPE(ctrl_out) :: var 561 562 REAL zstophym 563 CHARACTER(LEN=20) :: typeecrit 564 565 566 ! ug On récupère le type écrit de la structure: 567 ! Assez moche, à refaire si meilleure méthode... 568 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 569 typeecrit = 'once' 570 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 571 typeecrit = 't_min(X)' 572 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 573 typeecrit = 't_max(X)' 574 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 575 typeecrit = 'inst(X)' 576 ELSE 577 typeecrit = type_ecri_files(iff) 578 ENDIF 579 580 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 581 zstophym=zoutm(iff) 582 ELSE 583 zstophym=zdtime_moy 584 ENDIF 585 586 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 587 CALL conf_physoutputs(var%name, var%flag) 588 589 IF(.NOT.clef_stations(iff)) THEN 590 591 #ifdef CPP_XIOS 592 CALL wxios_add_field_to_file(var%name, 2, iff, phys_out_filenames(iff), & 593 var%description, var%unit, var%flag(iff), typeecrit) 594 #endif 595 #ifndef CPP_NO_IOIPSL 596 597 IF ( var%flag(iff)<=lev_files(iff) ) THEN 598 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 599 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 600 typeecrit, zstophym,zoutm(iff)) 601 ENDIF 602 ELSE 603 IF ( var%flag(iff)<=lev_files(iff)) THEN 604 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 605 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 606 typeecrit, zstophym,zoutm(iff)) 607 ENDIF 608 #endif 609 ENDIF 610 611 ! Set swaero_diag=true if at least one of the concerned variables are defined 612 IF (var%name=='topswad' .OR. var%name=='topswai' .OR. var%name=='solswad' .OR. var%name=='solswai' ) THEN 613 IF ( var%flag(iff)<=lev_files(iff) ) THEN 614 swaero_diag=.TRUE. 615 END IF 616 END IF 617 END SUBROUTINE histdef2d 618 SUBROUTINE histdef3d (iff,var) 619 620 USE ioipsl 621 USE dimphy 622 USE mod_phys_lmdz_para 623 624 IMPLICIT NONE 625 626 INCLUDE "dimensions.h" 627 INCLUDE "temps.h" 628 INCLUDE "clesphys.h" 629 630 INTEGER :: iff 631 TYPE(ctrl_out) :: var 632 633 REAL zstophym 634 CHARACTER(LEN=20) :: typeecrit 635 636 ! ug On récupère le type écrit de la structure: 637 ! Assez moche, à refaire si meilleure méthode... 638 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 639 typeecrit = 'once' 640 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 641 typeecrit = 't_min(X)' 642 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 643 typeecrit = 't_max(X)' 644 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 645 typeecrit = 'inst(X)' 646 ELSE 647 typeecrit = type_ecri_files(iff) 648 ENDIF 649 650 651 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 652 CALL conf_physoutputs(var%name,var%flag) 653 654 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 655 zstophym=zoutm(iff) 656 ELSE 657 zstophym=zdtime_moy 658 ENDIF 659 660 IF(.NOT.clef_stations(iff)) THEN 661 662 #ifdef CPP_XIOS 663 CALL wxios_add_field_to_file(var%name, 3, iff, phys_out_filenames(iff), & 664 var%description, var%unit, var%flag(iff), typeecrit) 665 #endif 666 #ifndef CPP_NO_IOIPSL 667 668 IF ( var%flag(iff)<=lev_files(iff) ) THEN 669 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 670 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 671 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, typeecrit, & 672 zstophym, zoutm(iff)) 673 ENDIF 674 ELSE 675 IF ( var%flag(iff)<=lev_files(iff)) THEN 676 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 677 npstn,1,nhorim(iff), klev, levmin(iff), & 678 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 679 typeecrit, zstophym,zoutm(iff)) 680 ENDIF 681 #endif 682 ENDIF 683 END SUBROUTINE histdef3d 684 685 SUBROUTINE conf_physoutputs(nam_var,flag_var) 686 !!! Lecture des noms et niveau de sortie des variables dans output.def 687 ! en utilisant les routines getin de IOIPSL 688 use ioipsl 689 690 IMPLICIT NONE 691 692 include 'iniprint.h' 693 694 CHARACTER(LEN=20) :: nam_var 695 INTEGER, DIMENSION(nfiles) :: flag_var 696 697 IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) 698 CALL getin('flag_'//nam_var,flag_var) 699 CALL getin('name_'//nam_var,nam_var) 700 IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) 701 702 END SUBROUTINE conf_physoutputs 703 704 326 705 327 706 SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field) 328 707 USE dimphy 329 708 USE mod_phys_lmdz_para 330 USE phys_output_var_mod331 709 USE ioipsl 332 710 IMPLICIT NONE … … 334 712 include 'iniprint.h' 335 713 336 integer, intent(in) :: nid337 logical, intent(in) :: lpoint338 character*(*), intent(IN) :: name339 integer, intent(in) :: itau340 real,dimension(:),intent(in) :: field341 REAL, dimension(klon_mpi) :: buffer_omp342 INTEGER, allocatable, dimension(:) :: index2d714 integer,INTENT(IN) :: nid 715 logical,INTENT(IN) :: lpoint 716 character*(*), INTENT(IN) :: name 717 integer, INTENT(IN) :: itau 718 REAL,DIMENSION(:),INTENT(IN) :: field 719 REAL,DIMENSION(klon_mpi) :: buffer_omp 720 INTEGER, allocatable, DIMENSION(:) :: index2d 343 721 REAL :: Field2d(iim,jj_nb) 344 722 345 723 integer :: ip 346 real,allocatable,dimension(:) :: fieldok347 348 349 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimensionnot equal to klon',1)724 REAL,allocatable,DIMENSION(:) :: fieldok 725 726 727 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 350 728 351 729 CALL Gather_omp(field,buffer_omp) … … 387 765 388 766 389 end subroutinehistwrite2d_phy_old390 391 subroutinehistwrite3d_phy_old(nid,lpoint,name,itau,field)767 end SUBROUTINE histwrite2d_phy_old 768 769 SUBROUTINE histwrite3d_phy_old(nid,lpoint,name,itau,field) 392 770 USE dimphy 393 771 USE mod_phys_lmdz_para 394 USE phys_output_var_mod395 772 396 773 use ioipsl 397 implicit none774 IMPLICIT NONE 398 775 include 'dimensions.h' 399 776 include 'iniprint.h' 400 777 401 integer, intent(in) :: nid402 logical, intent(in) :: lpoint403 character*(*), intent(IN) :: name404 integer, intent(in) :: itau405 real,dimension(:,:),intent(in) :: field ! --> field(klon,:)406 REAL, dimension(klon_mpi,size(field,2)) :: buffer_omp778 integer,INTENT(IN) :: nid 779 logical,INTENT(IN) :: lpoint 780 character*(*), INTENT(IN) :: name 781 integer, INTENT(IN) :: itau 782 REAL,DIMENSION(:,:),INTENT(IN) :: field ! --> field(klon,:) 783 REAL,DIMENSION(klon_mpi,size(field,2)) :: buffer_omp 407 784 REAL :: Field3d(iim,jj_nb,size(field,2)) 408 785 INTEGER :: ip, n, nlev 409 INTEGER, ALLOCATABLE, dimension(:) :: index3d410 real,allocatable, dimension(:,:) :: fieldok411 412 413 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimensionnot equal to klon',1)786 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 787 REAL,allocatable, DIMENSION(:,:) :: fieldok 788 789 790 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 414 791 nlev=size(field,2) 415 792 … … 460 837 !$OMP END MASTER 461 838 462 end subroutine histwrite3d_phy_old 839 end SUBROUTINE histwrite3d_phy_old 840 841 463 842 464 843 … … 468 847 USE mod_phys_lmdz_para 469 848 USE ioipsl 470 !Pour avoir nfiles, nidfiles tout ça tout ça...471 USE phys_output_var_mod472 849 473 850 474 851 475 852 #ifdef CPP_XIOS 476 ! USE WXIOS 477 #endif 853 USE wxios 854 #endif 855 478 856 479 857 IMPLICIT NONE 480 include 'dimensions.h' 481 482 ! integer,intent(in) :: nid 483 ! logical,intent(in) :: lpoint 484 ! character*(*), intent(IN) :: name 485 ! integer, intent(in) :: itau 486 ! real,dimension(:),intent(in) :: field 487 488 TYPE(ctrl_out), INTENT(IN) :: var 489 REAL, DIMENSION(:), INTENT(IN) :: field 490 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 858 INCLUDE 'dimensions.h' 859 INCLUDE 'iniprint.h' 860 861 TYPE(ctrl_out), INTENT(IN) :: var 862 REAL, DIMENSION(:), INTENT(IN) :: field 863 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 491 864 492 865 INTEGER :: iff, iff_beg, iff_end 493 866 494 REAL, dimension(klon_mpi) :: buffer_omp495 INTEGER, allocatable, dimension(:) :: index2d867 REAL,DIMENSION(klon_mpi) :: buffer_omp 868 INTEGER, allocatable, DIMENSION(:) :: index2d 496 869 REAL :: Field2d(iim,jj_nb) 497 870 498 871 INTEGER :: ip 499 872 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 873 874 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d ',var%name 500 875 501 876 ! ug RUSTINE POUR LES STD LEVS..... … … 508 883 END IF 509 884 510 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimension not equal to klon',1) 885 ! On regarde si on est dans la phase de définition ou d'écriture: 886 IF(.NOT.vars_defined) THEN 887 !$OMP MASTER 888 !Si phase de définition.... on définit 889 DO iff=iff_beg, iff_end 890 IF (clef_files(iff)) THEN 891 CALL histdef2d(iff, var) 892 ENDIF 893 ENDDO 894 !$OMP END MASTER 895 ELSE 896 897 !Et sinon on.... écrit 898 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 511 899 512 900 CALL Gather_omp(field,buffer_omp) … … 521 909 ALLOCATE(index2d(iim*jj_nb)) 522 910 ALLOCATE(fieldok(iim*jj_nb)) 523 911 #ifndef CPP_NO_IOIPSL 524 912 CALL histwrite(nid_files(iff),var%name,itau_iophy,Field2d,iim*jj_nb,index2d) 913 #endif 525 914 #ifdef CPP_XIOS 526 ! IF (iff .EQ. 1) THEN527 !CALL wxios_write_2D(var%name, Field2d)528 !ENDIF915 IF (iff == iff_beg) THEN 916 CALL wxios_write_2D(var%name, Field2d) 917 ENDIF 529 918 #endif 530 919 ELSE … … 533 922 534 923 IF (is_sequential) THEN 535 ! klon_mpi_begin=1536 ! klon_mpi_end=klon537 924 DO ip=1, npstn 538 925 fieldok(ip)=buffer_omp(nptabij(ip)) … … 540 927 ELSE 541 928 DO ip=1, npstn 542 ! print*,'histwrite2d is_sequential npstn ip name nptabij',npstn,ip,name,nptabij(ip)929 PRINT*,'histwrite2d is_sequential npstn ip namenptabij',npstn,ip,var%name,nptabij(ip) 543 930 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 544 931 nptabij(ip).LE.klon_mpi_end) THEN … … 547 934 ENDDO 548 935 ENDIF 549 936 #ifndef CPP_NO_IOIPSL 550 937 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn,index2d) 938 #endif 551 939 ENDIF 552 940 … … 556 944 ENDDO 557 945 !$OMP END MASTER 558 946 ENDIF ! vars_defined 947 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d ',var%name 559 948 END SUBROUTINE histwrite2d_phy 560 949 561 950 562 951 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 563 SUBROUTINE histwrite3d_phy(var, field )952 SUBROUTINE histwrite3d_phy(var, field, STD_iff) 564 953 USE dimphy 565 954 USE mod_phys_lmdz_para 566 567 use ioipsl 568 !Pour avoir nfiles, nidfiles tout ça tout ça... 569 USE phys_output_var_mod 955 USE ioipsl 570 956 571 957 … … 576 962 577 963 IMPLICIT NONE 578 include 'dimensions.h' 579 580 ! integer,intent(in) :: nid 581 ! logical,intent(in) :: lpoint 582 ! character*(*), intent(IN) :: name 583 ! integer, intent(in) :: itau 584 ! real,dimension(:,:),intent(in) :: field ! --> field(klon,:) 585 586 TYPE(ctrl_out), INTENT(IN) :: var 587 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 588 964 INCLUDE 'dimensions.h' 965 INCLUDE 'iniprint.h' 966 967 TYPE(ctrl_out), INTENT(IN) :: var 968 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 969 INTEGER, INTENT(IN), OPTIONAL :: STD_iff ! ug RUSTINE POUR LES STD LEVS..... 970 971 INTEGER :: iff, iff_beg, iff_end 589 972 590 973 REAL,DIMENSION(klon_mpi,SIZE(field,2)) :: buffer_omp 591 974 REAL :: Field3d(iim,jj_nb,SIZE(field,2)) 592 INTEGER :: ip, n, nlev , iff975 INTEGER :: ip, n, nlev 593 976 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 594 977 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 595 978 596 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimension not equal to klon',1) 597 nlev=size(field,2) 598 599 ! print*,'hist3d_phy mpi_rank npstn=',mpi_rank,npstn 600 601 ! DO ip=1, npstn 602 ! print*,'hist3d_phy mpi_rank nptabij',mpi_rank,nptabij(ip) 603 ! ENDDO 979 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d ',var%name 980 981 ! ug RUSTINE POUR LES STD LEVS..... 982 IF (PRESENT(STD_iff)) THEN 983 iff_beg = STD_iff 984 iff_end = STD_iff 985 ELSE 986 iff_beg = 1 987 iff_end = nfiles 988 END IF 989 990 ! On regarde si on est dans la phase de définition ou d'écriture: 991 IF(.NOT.vars_defined) THEN 992 !Si phase de définition.... on définit 993 !$OMP MASTER 994 DO iff=iff_beg, iff_end 995 IF (clef_files(iff)) THEN 996 CALL histdef3d(iff, var) 997 ENDIF 998 ENDDO 999 !$OMP END MASTER 1000 ELSE 1001 !Et sinon on.... écrit 1002 IF (SIZE(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 1003 nlev=SIZE(field,2) 1004 604 1005 605 1006 CALL Gather_omp(field,buffer_omp) … … 609 1010 610 1011 ! BOUCLE SUR LES FICHIERS 611 DO iff=1, nfiles1012 DO iff=iff_beg, iff_end 612 1013 IF (var%flag(iff) <= lev_files(iff) .AND. clef_files(iff)) THEN 613 1014 IF (.NOT.clef_stations(iff)) THEN 614 1015 ALLOCATE(index3d(iim*jj_nb*nlev)) 615 1016 ALLOCATE(fieldok(iim*jj_nb,nlev)) 1017 1018 #ifndef CPP_NO_IOIPSL 616 1019 CALL histwrite(nid_files(iff),var%name,itau_iophy,Field3d,iim*jj_nb*nlev,index3d) 1020 #endif 1021 617 1022 #ifdef CPP_XIOS 618 ! IF (iff .EQ.1) THEN619 !CALL wxios_write_3D(var%name, Field3d(:,:,1:klev))620 !ENDIF1023 IF (iff == 1) THEN 1024 CALL wxios_write_3D(var%name, Field3d(:,:,1:klev)) 1025 ENDIF 621 1026 #endif 622 1027 … … 627 1032 628 1033 IF (is_sequential) THEN 629 ! klon_mpi_begin=1630 ! klon_mpi_end=klon631 1034 DO n=1, nlev 632 1035 DO ip=1, npstn … … 644 1047 ENDDO 645 1048 ENDIF 1049 #ifndef CPP_NO_IOIPSL 646 1050 CALL histwrite(nid_files(iff),var%name,itau_iophy,fieldok,npstn*nlev,index3d) 1051 #endif 647 1052 ENDIF 648 1053 deallocate(index3d) … … 651 1056 ENDDO 652 1057 !$OMP END MASTER 1058 ENDIF ! vars_defined 1059 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d ',var%name 653 1060 END SUBROUTINE histwrite3d_phy 654 1061 1062 1063 ! VERSION DES HISTWRITE DEDIEES AU TOUT-XIOS-XML DEJA UTILISEE DANS PHYDEV 1064 #ifdef CPP_XIOS 1065 SUBROUTINE histwrite2d_xios(field_name,field) 1066 USE dimphy 1067 USE mod_phys_lmdz_para 1068 USE wxios 1069 1070 1071 IMPLICIT NONE 1072 INCLUDE 'dimensions.h' 1073 INCLUDE 'iniprint.h' 1074 1075 CHARACTER(LEN=*), INTENT(IN) :: field_name 1076 REAL, DIMENSION(:), INTENT(IN) :: field 1077 1078 REAL,DIMENSION(klon_mpi) :: buffer_omp 1079 INTEGER, allocatable, DIMENSION(:) :: index2d 1080 REAL :: Field2d(iim,jj_nb) 1081 1082 INTEGER :: ip 1083 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 1084 1085 IF (prt_level >= 9) WRITE(lunout,*)'Begin histrwrite2d_xios ',field_name 1086 1087 !Et sinon on.... écrit 1088 IF (SIZE(field)/=klon) CALL abort_gcm('iophy::histwrite2d_xios','Field first DIMENSION not equal to klon',1) 1089 1090 CALL Gather_omp(field,buffer_omp) 1091 !$OMP MASTER 1092 CALL grid1Dto2D_mpi(buffer_omp,Field2d) 1093 1094 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1095 !ATTENTION, STATIONS PAS GEREES ! 1096 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1097 !IF(.NOT.clef_stations(iff)) THEN 1098 IF (.TRUE.) THEN 1099 ALLOCATE(index2d(iim*jj_nb)) 1100 ALLOCATE(fieldok(iim*jj_nb)) 1101 1102 1103 CALL wxios_write_2D(field_name, Field2d) 1104 1105 ELSE 1106 ALLOCATE(fieldok(npstn)) 1107 ALLOCATE(index2d(npstn)) 1108 1109 IF (is_sequential) THEN 1110 DO ip=1, npstn 1111 fieldok(ip)=buffer_omp(nptabij(ip)) 1112 ENDDO 1113 ELSE 1114 DO ip=1, npstn 1115 PRINT*,'histwrite2d_xios is_sequential npstn ip namenptabij',npstn,ip,field_name,nptabij(ip) 1116 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 1117 nptabij(ip).LE.klon_mpi_end) THEN 1118 fieldok(ip)=buffer_omp(nptabij(ip)-klon_mpi_begin+1) 1119 ENDIF 1120 ENDDO 1121 ENDIF 1122 1123 ENDIF 1124 1125 deallocate(index2d) 1126 deallocate(fieldok) 1127 !$OMP END MASTER 1128 1129 IF (prt_level >= 9) WRITE(lunout,*)'End histrwrite2d_xios ',field_name 1130 END SUBROUTINE histwrite2d_xios 1131 1132 1133 ! ug NOUVELLE VERSION DES WRITE AVEC LA BOUCLE DO RENTREE 1134 SUBROUTINE histwrite3d_xios(field_name, field) 1135 USE dimphy 1136 USE mod_phys_lmdz_para 1137 USE wxios 1138 1139 1140 IMPLICIT NONE 1141 INCLUDE 'dimensions.h' 1142 INCLUDE 'iniprint.h' 1143 1144 CHARACTER(LEN=*), INTENT(IN) :: field_name 1145 REAL, DIMENSION(:,:), INTENT(IN) :: field ! --> field(klon,:) 1146 1147 REAL,DIMENSION(klon_mpi,SIZE(field,2)) :: buffer_omp 1148 REAL :: Field3d(iim,jj_nb,SIZE(field,2)) 1149 INTEGER :: ip, n, nlev 1150 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 1151 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 1152 1153 IF (prt_level >= 9) write(lunout,*)'Begin histrwrite3d_xios ',field_name 1154 1155 !Et on.... écrit 1156 IF (SIZE(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 1157 nlev=SIZE(field,2) 1158 1159 1160 CALL Gather_omp(field,buffer_omp) 1161 !$OMP MASTER 1162 CALL grid1Dto2D_mpi(buffer_omp,field3d) 1163 1164 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1165 !ATTENTION, STATIONS PAS GEREES ! 1166 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1167 !IF (.NOT.clef_stations(iff)) THEN 1168 IF(.TRUE.)THEN 1169 ALLOCATE(index3d(iim*jj_nb*nlev)) 1170 ALLOCATE(fieldok(iim*jj_nb,nlev)) 1171 CALL wxios_write_3D(field_name, Field3d(:,:,1:klev)) 1172 1173 ELSE 1174 nlev=size(field,2) 1175 ALLOCATE(index3d(npstn*nlev)) 1176 ALLOCATE(fieldok(npstn,nlev)) 1177 1178 IF (is_sequential) THEN 1179 DO n=1, nlev 1180 DO ip=1, npstn 1181 fieldok(ip,n)=buffer_omp(nptabij(ip),n) 1182 ENDDO 1183 ENDDO 1184 ELSE 1185 DO n=1, nlev 1186 DO ip=1, npstn 1187 IF(nptabij(ip).GE.klon_mpi_begin.AND. & 1188 nptabij(ip).LE.klon_mpi_end) THEN 1189 fieldok(ip,n)=buffer_omp(nptabij(ip)-klon_mpi_begin+1,n) 1190 ENDIF 1191 ENDDO 1192 ENDDO 1193 ENDIF 1194 ENDIF 1195 deallocate(index3d) 1196 deallocate(fieldok) 1197 !$OMP END MASTER 1198 1199 IF (prt_level >= 9) write(lunout,*)'End histrwrite3d_xios ',field_name 1200 END SUBROUTINE histwrite3d_xios 1201 #endif 655 1202 end module iophy -
LMDZ5/branches/testing/libf/phylmd/mod_phys_lmdz_para.F90
r1664 r1864 32 32 is_master=.FALSE. 33 33 ENDIF 34 CALL Test_transfert34 CALL Test_transfert 35 35 !$OMP END PARALLEL 36 36 IF (is_using_mpi .OR. is_using_omp) THEN -
LMDZ5/branches/testing/libf/phylmd/pbl_surface_mod.F90
r1795 r1864 174 174 t, q, u, v, & 175 175 pplay, paprs, pctsrf, & 176 ts, alb1, alb2,ustar, u10m, v10m,&176 ts, alb1, alb2,ustar, u10m, v10m,wstar, & 177 177 lwdown_m, cdragh, cdragm, zu1, zv1, & 178 178 alb1_m, alb2_m, zxsens, zxevap, & … … 294 294 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: alb2 ! albedo in near infra-red SW interval 295 295 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: ustar ! u* (m/s) 296 REAL, DIMENSION(klon, nbsrf+1), INTENT(INOUT) :: wstar ! w* (m/s) 296 297 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: u10m ! u speed at 10m 297 298 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: v10m ! v speed at 10m … … 406 407 REAL, DIMENSION(klon) :: yt2m, yq2m, yu10m 407 408 REAL, DIMENSION(klon) :: yustar 409 REAL, DIMENSION(klon) :: ywstar 408 410 REAL, DIMENSION(klon) :: ywindsp 409 411 REAL, DIMENSION(klon) :: yt10m, yq10m … … 1065 1067 q2m(:,nsrf) = 0. 1066 1068 ustar(:,nsrf) = 0. 1069 wstar(:,nsrf) = 0. 1067 1070 u10m(:,nsrf) = 0. 1068 1071 v10m(:,nsrf) = 0. … … 1145 1148 1146 1149 ! print*,'OK pbl 5' 1147 CALL HBTM(knon, ypaprs, ypplay, &1148 yt2m,yt10m,yq2m,yq10m,yustar, &1150 CALL hbtm(knon, ypaprs, ypplay, & 1151 yt2m,yt10m,yq2m,yq10m,yustar,ywstar, & 1149 1152 y_flux_t,y_flux_q,yu,yv,yt,yq, & 1150 1153 ypblh,ycapCL,yoliqCL,ycteiCL,ypblT, & … … 1154 1157 i = ni(j) 1155 1158 pblh(i,nsrf) = ypblh(j) 1159 wstar(i,nsrf) = ywstar(j) 1156 1160 plcl(i,nsrf) = ylcl(j) 1157 1161 capCL(i,nsrf) = ycapCL(j) … … 1215 1219 s_therm(:) = 0.0 ; s_trmb1(:) = 0.0 1216 1220 s_trmb2(:) = 0.0 ; s_trmb3(:) = 0.0 1221 wstar(:,is_ave)=0. 1217 1222 1218 1223 ! print*,'OK pbl 9' … … 1233 1238 zq2m(i) = zq2m(i) + q2m(i,nsrf) * pctsrf(i,nsrf) 1234 1239 zustar(i) = zustar(i) + ustar(i,nsrf) * pctsrf(i,nsrf) 1240 wstar(i,is_ave)=wstar(i,is_ave)+wstar(i,nsrf)*pctsrf(i,nsrf) 1235 1241 zu10m(i) = zu10m(i) + u10m(i,nsrf) * pctsrf(i,nsrf) 1236 1242 zv10m(i) = zv10m(i) + v10m(i,nsrf) * pctsrf(i,nsrf) -
LMDZ5/branches/testing/libf/phylmd/phys_local_var_mod.F90
r1795 r1864 3 3 ! 4 4 MODULE phys_local_var_mod 5 6 5 ! Variables locales pour effectuer les appels en serie 7 6 !====================================================================== … … 187 186 !$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop) 188 187 188 189 !Ajout de celles nécessaires au phys_output_write_mod 190 REAL, SAVE, ALLOCATABLE :: slp(:) 191 !$OMP THREADPRIVATE(slp) 192 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp 193 !$OMP THREADPRIVATE(sens, flwp, fiwp) 194 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils 195 !$OMP THREADPRIVATE(ale_wake, alp_wake, bils) 196 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh 197 !$OMP THREADPRIVATE(cdragm, cdragh) 198 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol 199 !$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol) 200 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw 201 !$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw) 202 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m 203 !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m) 204 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm 205 !$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm) 206 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils 207 !$OMP THREADPRIVATE(slab_wfbils) 208 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte 209 !$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte) 210 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving 211 !$OMP THREADPRIVATE(zxfqcalving) 212 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte 213 !$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte) 214 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc 215 !$OMP THREADPRIVATE(zxqsurf, rain_lsc) 216 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m 217 !$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m) 218 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion 219 !$OMP THREADPRIVATE(weak_inversion) 220 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det 221 !$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det) 222 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke 223 !$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke) 224 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2 225 !$OMP THREADPRIVATE(alp_bl_stat, n2, s2) 226 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig 227 !$OMP THREADPRIVATE(proba_notrig, random_notrig) 228 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo 229 !$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo) 230 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t2m, fevap, fluxlat, fsollw,evap_pot 231 !$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot) 232 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega 233 !$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega) 234 ! REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th 235 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th 236 !$OMP THREADPRIVATE(lambda_th) 237 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc 238 !$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc) 239 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi 240 !$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi) 241 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh 242 !$OMP THREADPRIVATE(wake_omg, zx_rh) 243 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno 244 !$OMP THREADPRIVATE(frugs, agesno) 245 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca 246 !$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca) 247 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2 248 !$OMP THREADPRIVATE(Vprecip, zw2) 249 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu 250 !$OMP THREADPRIVATE(pmfd, pmfu) 251 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv 252 !$OMP THREADPRIVATE(fluxt, fluxu, fluxv) 253 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD 254 !$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD) 255 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD 256 !$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD) 257 258 ! ug et d'autres encore: 259 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM 260 !$OMP THREADPRIVATE(wdtrainA, wdtrainM) 261 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec 262 !$OMP THREADPRIVATE(beta_prec) 263 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb 264 !$OMP THREADPRIVATE(rneb) 265 189 266 CONTAINS 190 267 … … 195 272 USE aero_mod 196 273 USE indice_sol_mod 274 USE phys_output_var_mod 275 USE phys_state_var_mod 197 276 198 277 IMPLICIT NONE … … 279 358 ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp)) 280 359 360 ! FH Ajout de celles nécessaires au phys_output_write_mod 361 362 ALLOCATE(slp(klon)) 363 ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon)) 364 ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon)) 365 ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon)) 366 ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon)) 367 ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon)) 368 ALLOCATE(s_lcl(klon)) 369 ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon)) 370 ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon)) 371 ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon)) 372 ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon)) 373 ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon)) 374 ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon)) 375 ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon)) 376 ALLOCATE(sens(klon), flwp(klon), fiwp(klon)) 377 ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon)) 378 ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon)) 379 ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon)) 380 ALLOCATE(proba_notrig(klon), random_notrig(klon)) 381 382 ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev)) 383 ! ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev)) 384 ALLOCATE(upwd(klon, klev), omega(klon, klev)) 385 ! ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev)) 386 ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev)) 387 ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev)) 388 ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev)) 389 ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev)) 390 ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev)) 391 ALLOCATE(pmfd(klon, klev), pmfu(klon, klev)) 392 393 ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf)) 394 ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf)) 395 ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf)) 396 ALLOCATE(evap_pot(klon, nbsrf)) 397 398 ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1)) 399 ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1)) 400 ALLOCATE(zw2(klon, klev+1)) 401 402 ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf)) 403 ALLOCATE(fluxt(klon, klev, nbsrf)) 404 405 ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles)) 406 ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles)) 407 ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles)) 408 ALLOCATE(rhwriteSTD(klon,nlevSTD,nfiles)) 409 410 ! ug et d'autres encore: 411 ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev)) 412 ALLOCATE(beta_prec(klon,klev)) 413 ALLOCATE(rneb(klon,klev)) 414 415 281 416 END SUBROUTINE phys_local_var_init 282 417 … … 368 503 deallocate(topswcf_aerop, solswcf_aerop) 369 504 505 506 ! FH Ajout de celles nécessaires au phys_output_write_mod 507 DEALLOCATE(slp) 508 DEALLOCATE(ale_wake, alp_wake, bils) 509 DEALLOCATE(cdragm, cdragh, cldh, cldl) 510 DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol) 511 DEALLOCATE(dthmin, evap, fder, plcl, plfc) 512 DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl) 513 DEALLOCATE(s_pblh, s_pblt, s_therm) 514 DEALLOCATE(slab_wfbils, tpot, tpote, ue) 515 DEALLOCATE(uq, ve, vq, zxffonte) 516 DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs) 517 DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf) 518 DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th) 519 DEALLOCATE(zq2m, zt2m, weak_inversion) 520 DEALLOCATE(sens, flwp, fiwp) 521 DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det) 522 DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke) 523 DEALLOCATE(alp_bl_stat, n2, s2) 524 DEALLOCATE(proba_notrig, random_notrig) 525 526 DEALLOCATE(dnwd, dnwd0) 527 ! DEALLOCATE(upwd, omega, coefh) 528 DEALLOCATE(upwd, omega) 529 ! DEALLOCATE(coefm, lambda_th, cldemi) 530 DEALLOCATE(lambda_th, cldemi) 531 DEALLOCATE(cldfra, cldtau, fiwc) 532 DEALLOCATE(fl, re, flwc) 533 DEALLOCATE(ref_liq, ref_ice, theta) 534 DEALLOCATE(zphi, wake_omg, zx_rh) 535 DEALLOCATE(pmfd, pmfu) 536 537 DEALLOCATE(t2m, fevap, fluxlat) 538 DEALLOCATE(frugs, agesno, fsollw, evap_pot) 539 DEALLOCATE(fsolsw, wfbils, wfbilo) 540 541 DEALLOCATE(pmflxr, pmflxs, prfl) 542 DEALLOCATE(psfl, fraca, Vprecip) 543 DEALLOCATE(zw2) 544 545 DEALLOCATE(fluxu, fluxv) 546 DEALLOCATE(fluxt) 547 548 DEALLOCATE(uwriteSTD, vwriteSTD) 549 DEALLOCATE(wwriteSTD, phiwriteSTD) 550 DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD) 551 552 ! ug et d'autres encore: 553 DEALLOCATE(wdtrainA, wdtrainM) 554 DEALLOCATE(beta_prec) 555 DEALLOCATE(rneb) 556 370 557 END SUBROUTINE phys_local_var_end 371 558 -
LMDZ5/branches/testing/libf/phylmd/phys_output_ctrlout_mod.F90
r1795 r1864 19 19 !!! Comosantes de la coordonnee sigma-hybride 20 20 !!! Ap et Bp 21 TYPE(ctrl_out), SAVE :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), &22 'Ap', '', '', (/ ('', i=1, 6) /))23 TYPE(ctrl_out), SAVE :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), &24 'Bp', '', '', (/ ('', i=1, 6) /))25 TYPE(ctrl_out), SAVE :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1, 1 /), &26 'Alt', '', '', (/ ('', i=1, 6) /))21 TYPE(ctrl_out), SAVE :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 22 'Ap', '', '', (/ ('', i=1, 9) /)) 23 TYPE(ctrl_out), SAVE :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 24 'Bp', '', '', (/ ('', i=1, 9) /)) 25 TYPE(ctrl_out), SAVE :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1, 1, 11, 11, 11 /), & 26 'Alt', '', '', (/ ('', i=1, 9) /)) 27 27 28 28 !!! 1D 29 TYPE(ctrl_out), SAVE :: o_phis = ctrl_out((/ 1, 1, 10, 5, 1, 1 /), & 30 'phis', 'Surface geop.height', 'm2/s2', (/ ('', i=1, 6) /)) 31 TYPE(ctrl_out), SAVE :: o_aire = ctrl_out((/ 1, 1, 10, 10, 1, 1 /), & 32 'aire', 'Grid area', '-', (/ 'once', 'once', 'once', 'once', 'once', 'once' /)) 33 TYPE(ctrl_out), SAVE :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10, 10 /), & 34 'contfracATM', '% sfce ter+lic', '-', & 35 (/ "once", "once", "once", "once", "once", "once" /)) 36 TYPE(ctrl_out), SAVE :: o_contfracOR = ctrl_out((/ 10, 1, 1, 10, 10, 10 /), & 37 'contfracOR', '% sfce terre OR', '-', (/ ('', i=1, 6) /)) 38 TYPE(ctrl_out), SAVE :: o_aireTER = ctrl_out((/ 10, 10, 1, 10, 10, 10 /), & 39 'aireTER', 'Grid area CONT', '-', (/ ('', i=1, 6) /)) 29 TYPE(ctrl_out), SAVE :: o_phis = ctrl_out((/ 1, 1, 10, 5, 1, 1, 11, 11, 11 /), & 30 'phis', 'Surface geop.height', 'm2/s2', (/ ('', i=1, 9) /)) 31 TYPE(ctrl_out), SAVE :: o_aire = ctrl_out((/ 1, 1, 10, 10, 1, 1, 11, 11, 11 /), & 32 'aire', 'Grid area', '-', (/ 'once', 'once', 'once', 'once', 'once', 'once', & 33 'once', 'once', 'once' /)) 34 TYPE(ctrl_out), SAVE :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10, 10, 11, 11, 11 /), & 35 'contfracATM', '% sfce ter+lic', '-', & 36 (/ 'once', 'once', 'once', 'once', 'once', 'once', 'once', 'once', 'once' /)) 37 TYPE(ctrl_out), SAVE :: o_contfracOR = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 38 'contfracOR', '% sfce terre OR', '-', (/ ('', i=1, 9) /)) 39 TYPE(ctrl_out), SAVE :: o_aireTER = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 40 'aireTER', 'Grid area CONT', '-', (/ ('', i=1, 9) /)) 40 41 41 42 !!! 2D 42 TYPE(ctrl_out), SAVE :: o_flat = ctrl_out((/ 5, 1, 10, 10, 5, 10 /), & 43 'flat', 'Latent heat flux', 'W/m2', (/ ('', i=1, 6) /)) 44 TYPE(ctrl_out), SAVE :: o_slp = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), & 45 'slp', 'Sea Level Pressure', 'Pa', (/ ('', i=1, 6) /)) 46 TYPE(ctrl_out), SAVE :: o_tsol = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), & 47 'tsol', 'Surface Temperature', 'K', (/ ('', i=1, 6) /)) 48 TYPE(ctrl_out), SAVE :: o_t2m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), & 49 't2m', 'Temperature 2m', 'K', (/ ('', i=1, 6) /)) 50 TYPE(ctrl_out), SAVE :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), & 51 't2m_min', 'Temp 2m min', 'K', & 52 (/ "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)" /)) 53 TYPE(ctrl_out), SAVE :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), & 54 't2m_max', 'Temp 2m max', 'K', & 55 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 43 TYPE(ctrl_out), SAVE :: o_flat = ctrl_out((/ 5, 1, 10, 10, 5, 10, 11, 11, 11 /), & 44 'flat', 'Latent heat flux', 'W/m2', (/ ('', i=1, 9) /)) 45 TYPE(ctrl_out), SAVE :: o_slp = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 46 'slp', 'Sea Level Pressure', 'Pa', (/ ('', i=1, 9) /)) 47 TYPE(ctrl_out), SAVE :: o_tsol = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 48 'tsol', 'Surface Temperature', 'K', (/ ('', i=1, 9) /)) 49 TYPE(ctrl_out), SAVE :: o_t2m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 50 't2m', 'Temperature 2m', 'K', (/ ('', i=1, 9) /)) 51 TYPE(ctrl_out), SAVE :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 52 't2m_min', 'Temp 2m min', 'K', & 53 (/ "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)", "t_min(X)" /)) 54 TYPE(ctrl_out), SAVE :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 55 't2m_max', 'Temp 2m max', 'K', & 56 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 57 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 56 58 57 59 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_t2m_srf = (/ & 58 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &59 't2m_ter', "Temp 2m "//clnsurf(1), "K", (/ ('', i=1, 6) /)), &60 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &61 't2m_lic', "Temp 2m "//clnsurf(2), "K", (/ ('', i=1, 6) /)), &62 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &63 't2m_oce', "Temp 2m "//clnsurf(3), "K", (/ ('', i=1, 6) /)), &64 ctrl_out((/ 10, 6, 10, 10, 10, 10 /), &65 't2m_sic', "Temp 2m "//clnsurf(4), "K", (/ ('', i=1, 6) /)) /)66 67 TYPE(ctrl_out), SAVE :: o_wind10m = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &68 'wind10m', '10-m wind speed', 'm/s', (/ ('', i=1, 6) /))69 TYPE(ctrl_out), SAVE :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &70 'wind10max', '10m wind speed max', 'm/s', (/ ('', i=1, 6) /))71 TYPE(ctrl_out), SAVE :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &72 'sicf', 'Sea-ice fraction', '-', (/ ('', i=1, 6) /))73 TYPE(ctrl_out), SAVE :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &74 'q2m', 'Specific humidity 2m', 'kg/kg', (/ ('', i=1, 6) /))75 TYPE(ctrl_out), SAVE :: o_ustar = ctrl_out((/ 1, 1, 1 , 5, 10, 10/), &76 'ustar', 'Friction velocity', 'm/s', (/ ('', i=1, 6) /))77 TYPE(ctrl_out), SAVE :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &78 'u10m', 'Vent zonal 10m', 'm/s', (/ ('', i=1, 6) /))79 TYPE(ctrl_out), SAVE :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &80 'v10m', 'Vent meridien 10m', 'm/s', (/ ('', i=1, 6) /))81 TYPE(ctrl_out), SAVE :: o_psol = ctrl_out((/ 1, 1, 1, 5, 10, 10 /), &82 'psol', 'Surface Pressure', 'Pa', (/ ('', i=1, 6) /))83 TYPE(ctrl_out), SAVE :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &84 'qsurf', 'Surface Air humidity', 'kg/kg', (/ ('', i=1, 6) /))60 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 61 't2m_ter', "Temp 2m "//clnsurf(1), "K", (/ ('', i=1, 9) /)), & 62 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 63 't2m_lic', "Temp 2m "//clnsurf(2), "K", (/ ('', i=1, 9) /)), & 64 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 65 't2m_oce', "Temp 2m "//clnsurf(3), "K", (/ ('', i=1, 9) /)), & 66 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /), & 67 't2m_sic', "Temp 2m "//clnsurf(4), "K", (/ ('', i=1, 9) /)) /) 68 69 TYPE(ctrl_out), SAVE :: o_wind10m = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 70 'wind10m', '10-m wind speed', 'm/s', (/ ('', i=1, 9) /)) 71 TYPE(ctrl_out), SAVE :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 72 'wind10max', '10m wind speed max', 'm/s', (/ ('', i=1, 9) /)) 73 TYPE(ctrl_out), SAVE :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 74 'sicf', 'Sea-ice fraction', '-', (/ ('', i=1, 9) /)) 75 TYPE(ctrl_out), SAVE :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 76 'q2m', 'Specific humidity 2m', 'kg/kg', (/ ('', i=1, 9) /)) 77 TYPE(ctrl_out), SAVE :: o_ustar = ctrl_out((/ 1, 1, 10, 5, 10, 10, 11, 11, 11 /), & 78 'ustar', 'Friction velocity', 'm/s', (/ ('', i=1, 9) /)) 79 TYPE(ctrl_out), SAVE :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 80 'u10m', 'Vent zonal 10m', 'm/s', (/ ('', i=1, 9) /)) 81 TYPE(ctrl_out), SAVE :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 82 'v10m', 'Vent meridien 10m', 'm/s', (/ ('', i=1, 9) /)) 83 TYPE(ctrl_out), SAVE :: o_psol = ctrl_out((/ 1, 1, 1, 5, 10, 10, 11, 11, 11 /), & 84 'psol', 'Surface Pressure', 'Pa', (/ ('', i=1, 9) /)) 85 TYPE(ctrl_out), SAVE :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 86 'qsurf', 'Surface Air humidity', 'kg/kg', (/ ('', i=1, 9) /)) 85 87 86 88 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_ustar_srf = (/ & 87 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_ter', & 88 "Friction velocity "//clnsurf(1),"m/s", (/ ('', i=1, 6) /)), & 89 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_lic', & 90 "Friction velocity "//clnsurf(2),"m/s", (/ ('', i=1, 6) /)), & 91 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_oce', & 92 "Friction velocity "//clnsurf(3),"m/s", (/ ('', i=1, 6) /)), & 93 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_sic', & 94 "Friction velocity "//clnsurf(4),"m/s", (/ ('', i=1, 6) /)) /) 89 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_ter', & 90 "Friction velocity "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 91 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_lic', & 92 "Friction velocity "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 93 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_oce', & 94 "Friction velocity "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 95 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'ustar_sic', & 96 "Friction velocity "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 97 98 TYPE(ctrl_out), SAVE, DIMENSION(5) :: o_wstar = (/ & 99 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_ter', & 100 "Friction velocity "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 101 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_lic', & 102 "Friction velocity "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 103 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_oce', & 104 "Friction velocity "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 105 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'wstar_sic', & 106 "Friction velocity "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)), & 107 ctrl_out((/ 5, 5, 10, 10, 10, 10, 11, 11, 11 /),'wstar', & 108 "w* convective velocity "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 95 109 96 110 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_u10m_srf = (/ & 97 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_ter', &98 "Vent Zonal 10m "//clnsurf(1),"m/s", (/ ('', i=1, 6) /)), &99 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_lic', &100 "Vent Zonal 10m "//clnsurf(2),"m/s", (/ ('', i=1, 6) /)), &101 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_oce', &102 "Vent Zonal 10m "//clnsurf(3),"m/s", (/ ('', i=1, 6) /)), &103 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_sic', &104 "Vent Zonal 10m "//clnsurf(4),"m/s", (/ ('', i=1, 6) /)) /)111 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_ter', & 112 "Vent Zonal 10m "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 113 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_lic', & 114 "Vent Zonal 10m "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 115 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_oce', & 116 "Vent Zonal 10m "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 117 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'u10m_sic', & 118 "Vent Zonal 10m "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 105 119 106 120 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_v10m_srf = (/ & 107 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_ter', &108 "Vent meredien 10m "//clnsurf(1),"m/s", (/ ('', i=1, 6) /)), &109 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_lic', &110 "Vent meredien 10m "//clnsurf(2),"m/s", (/ ('', i=1, 6) /)), &111 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_oce', &112 "Vent meredien 10m "//clnsurf(3),"m/s", (/ ('', i=1, 6) /)), &113 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'v10m_sic', &114 "Vent meredien 10m "//clnsurf(4),"m/s", (/ ('', i=1, 6) /)) /)115 116 TYPE(ctrl_out), SAVE :: o_qsol = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &117 'qsol', 'Soil watter content', 'mm', (/ ('', i=1, 6) /))118 TYPE(ctrl_out), SAVE :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &119 120 (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /))121 TYPE(ctrl_out), SAVE :: o_precip = ctrl_out((/ 1, 1, 1, 10, 5, 10 /), &122 'precip', 'Precip Totale liq+sol', 'kg/(s*m2)', (/ ('', i=1, 6) /))123 TYPE(ctrl_out), SAVE :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &124 'plul', 'Large-scale Precip.', 'kg/(s*m2)', (/ ('', i=1, 6) /))125 TYPE(ctrl_out), SAVE :: o_pluc = ctrl_out((/ 1, 1, 1, 10, 5, 10 /), &126 'pluc', 'Convective Precip.', 'kg/(s*m2)', (/ ('', i=1, 6) /))127 TYPE(ctrl_out), SAVE :: o_snow = ctrl_out((/ 1, 1, 10, 10, 5, 10 /), &128 'snow', 'Snow fall', 'kg/(s*m2)', (/ ('', i=1, 6) /))129 TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &130 'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 6) /))121 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_ter', & 122 "Vent meredien 10m "//clnsurf(1),"m/s", (/ ('', i=1, 9) /)), & 123 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_lic', & 124 "Vent meredien 10m "//clnsurf(2),"m/s", (/ ('', i=1, 9) /)), & 125 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_oce', & 126 "Vent meredien 10m "//clnsurf(3),"m/s", (/ ('', i=1, 9) /)), & 127 ctrl_out((/ 10, 6, 10, 10, 10, 10, 11, 11, 11 /),'v10m_sic', & 128 "Vent meredien 10m "//clnsurf(4),"m/s", (/ ('', i=1, 9) /)) /) 129 130 TYPE(ctrl_out), SAVE :: o_qsol = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 131 'qsol', 'Soil watter content', 'mm', (/ ('', i=1, 9) /)) 132 TYPE(ctrl_out), SAVE :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 133 'ndayrain', 'Number of dayrain(liq+sol)', '-', & 134 (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 135 TYPE(ctrl_out), SAVE :: o_precip = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), & 136 'precip', 'Precip Totale liq+sol', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 137 TYPE(ctrl_out), SAVE :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 138 'plul', 'Large-scale Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 139 TYPE(ctrl_out), SAVE :: o_pluc = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), & 140 'pluc', 'Convective Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 141 TYPE(ctrl_out), SAVE :: o_snow = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 142 'snow', 'Snow fall', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 143 TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 144 'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 9) /)) 131 145 132 146 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evap_srf = (/ & 133 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_ter', &134 "evaporation at surface "//clnsurf(1),"kg/(s*m2)", (/ ('', i=1, 6) /)), &135 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_lic', &136 "evaporation at surface "//clnsurf(2),"kg/(s*m2)", (/ ('', i=1, 6) /)), &137 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_oce', &138 "evaporation at surface "//clnsurf(3),"kg/(s*m2)", (/ ('', i=1, 6) /)), &139 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evap_sic', &140 "evaporation at surface "//clnsurf(4),"kg/(s*m2)", (/ ('', i=1, 6) /)) /)141 142 TYPE(ctrl_out), SAVE :: o_msnow = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &143 'msnow', 'Surface snow amount', 'kg/m2', (/ ('', i=1, 6) /))144 TYPE(ctrl_out), SAVE :: o_fsnow = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &145 'fsnow', 'Surface snow area fraction', '-', (/ ('', i=1, 6) /))146 TYPE(ctrl_out), SAVE :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &147 'tops', 'Solar rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))148 TYPE(ctrl_out), SAVE :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &149 'tops0', 'CS Solar rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))150 TYPE(ctrl_out), SAVE :: o_topl = ctrl_out((/ 1, 1, 10, 5, 10, 10 /), &151 'topl', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))152 TYPE(ctrl_out), SAVE :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &153 'topl0', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 6) /))154 TYPE(ctrl_out), SAVE :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &155 'SWupTOA', 'SWup at TOA', 'W/m2', (/ ('', i=1, 6) /))156 TYPE(ctrl_out), SAVE :: o_SWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &157 'SWupTOAclr', 'SWup clear sky at TOA', 'W/m2', (/ ('', i=1, 6) /))158 TYPE(ctrl_out), SAVE :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &159 'SWdnTOA', 'SWdn at TOA', 'W/m2', (/ ('', i=1, 6) /))160 TYPE(ctrl_out), SAVE :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &161 'SWdnTOAclr', 'SWdn clear sky at TOA', 'W/m2', (/ ('', i=1, 6) /))162 TYPE(ctrl_out), SAVE :: o_nettop = ctrl_out((/ 1, 4, 10, 10, 10, 10 /), &163 'nettop', 'Net dn radiatif flux at TOA', 'W/m2', (/ ('', i=1, 6) /))164 TYPE(ctrl_out), SAVE :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &165 'SWup200', 'SWup at 200mb', 'W/m2', (/ ('', i=1, 6) /))166 TYPE(ctrl_out), SAVE :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &167 'SWup200clr', 'SWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))168 TYPE(ctrl_out), SAVE :: o_SWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &169 'SWdn200', 'SWdn at 200mb', 'W/m2', (/ ('', i=1, 6) /))170 TYPE(ctrl_out), SAVE :: o_SWdn200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &171 'SWdn200clr', 'SWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))147 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_ter', & 148 "evaporation at surface "//clnsurf(1),"kg/(s*m2)", (/ ('', i=1, 9) /)), & 149 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_lic', & 150 "evaporation at surface "//clnsurf(2),"kg/(s*m2)", (/ ('', i=1, 9) /)), & 151 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_oce', & 152 "evaporation at surface "//clnsurf(3),"kg/(s*m2)", (/ ('', i=1, 9) /)), & 153 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evap_sic', & 154 "evaporation at surface "//clnsurf(4),"kg/(s*m2)", (/ ('', i=1, 9) /)) /) 155 156 TYPE(ctrl_out), SAVE :: o_msnow = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 157 'msnow', 'Surface snow amount', 'kg/m2', (/ ('', i=1, 9) /)) 158 TYPE(ctrl_out), SAVE :: o_fsnow = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 159 'fsnow', 'Surface snow area fraction', '-', (/ ('', i=1, 9) /)) 160 TYPE(ctrl_out), SAVE :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 161 'tops', 'Solar rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 162 TYPE(ctrl_out), SAVE :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 163 'tops0', 'CS Solar rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 164 TYPE(ctrl_out), SAVE :: o_topl = ctrl_out((/ 1, 1, 10, 5, 10, 10, 11, 11, 11 /), & 165 'topl', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 166 TYPE(ctrl_out), SAVE :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 167 'topl0', 'IR rad. at TOA', 'W/m2', (/ ('', i=1, 9) /)) 168 TYPE(ctrl_out), SAVE :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 169 'SWupTOA', 'SWup at TOA', 'W/m2', (/ ('', i=1, 9) /)) 170 TYPE(ctrl_out), SAVE :: o_SWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 171 'SWupTOAclr', 'SWup clear sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 172 TYPE(ctrl_out), SAVE :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 173 'SWdnTOA', 'SWdn at TOA', 'W/m2', (/ ('', i=1, 9) /)) 174 TYPE(ctrl_out), SAVE :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 175 'SWdnTOAclr', 'SWdn clear sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 176 TYPE(ctrl_out), SAVE :: o_nettop = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /), & 177 'nettop', 'Net dn radiatif flux at TOA', 'W/m2', (/ ('', i=1, 9) /)) 178 TYPE(ctrl_out), SAVE :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 179 'SWup200', 'SWup at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 180 TYPE(ctrl_out), SAVE :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 181 'SWup200clr', 'SWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 182 TYPE(ctrl_out), SAVE :: o_SWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 183 'SWdn200', 'SWdn at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 184 TYPE(ctrl_out), SAVE :: o_SWdn200clr = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 185 'SWdn200clr', 'SWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 172 186 173 187 ! arajouter 174 ! type(ctrl_out),save :: o_LWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWupTOA', &175 ! (/ ('', i=1, 6) /))176 ! type(ctrl_out),save :: o_LWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWupTOAclr', &177 ! (/ ('', i=1, 6) /))178 ! type(ctrl_out),save :: o_LWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWdnTOA', &179 ! (/ ('', i=1, 6) /))180 ! type(ctrl_out),save :: o_LWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10 /),'LWdnTOAclr', &181 ! (/ ('', i=1, 6) /))182 TYPE(ctrl_out), SAVE :: o_LWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &183 'LWup200', 'LWup at 200mb', 'W/m2', (/ ('', i=1, 6) /))184 TYPE(ctrl_out), SAVE :: o_LWup200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &185 'LWup200clr', 'LWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))186 TYPE(ctrl_out), SAVE :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &187 'LWdn200', 'LWdn at 200mb', 'W/m2', (/ ('', i=1, 6) /))188 TYPE(ctrl_out), SAVE :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &189 'LWdn200clr', 'LWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 6) /))190 TYPE(ctrl_out), SAVE :: o_sols = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &191 'sols', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 6) /))192 TYPE(ctrl_out), SAVE :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &193 'sols0', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 6) /))194 TYPE(ctrl_out), SAVE :: o_soll = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &195 'soll', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))196 TYPE(ctrl_out), SAVE :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &197 'soll0', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))198 TYPE(ctrl_out), SAVE :: o_radsol = ctrl_out((/ 1, 7, 10, 10, 10, 10 /), &199 'radsol', 'Rayonnement au sol', 'W/m2', (/ ('', i=1, 6) /))200 TYPE(ctrl_out), SAVE :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &201 'SWupSFC', 'SWup at surface', 'W/m2', (/ ('', i=1, 6) /))202 TYPE(ctrl_out), SAVE :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &203 'SWupSFCclr', 'SWup clear sky at surface', 'W/m2', (/ ('', i=1, 6) /))204 TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 5, 10 /), &205 'SWdnSFC', 'SWdn at surface', 'W/m2', (/ ('', i=1, 6) /))206 TYPE(ctrl_out), SAVE :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &207 'SWdnSFCclr', 'SWdn clear sky at surface', 'W/m2', (/ ('', i=1, 6) /))208 TYPE(ctrl_out), SAVE :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &209 'LWupSFC', 'Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))210 TYPE(ctrl_out), SAVE :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &211 'LWupSFCclr', 'CS Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))212 TYPE(ctrl_out), SAVE :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &213 'LWdnSFC', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))214 TYPE(ctrl_out), SAVE :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10 /), &215 'LWdnSFCclr', 'Down. CS IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /))216 TYPE(ctrl_out), SAVE :: o_bils = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &217 'bils', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))218 TYPE(ctrl_out), SAVE :: o_bils_tke = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &219 'bils_tke', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))220 TYPE(ctrl_out), SAVE :: o_bils_diss = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &221 'bils_diss', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))222 TYPE(ctrl_out), SAVE :: o_bils_ec = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &223 'bils_ec', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))224 TYPE(ctrl_out), SAVE :: o_bils_kinetic = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &225 'bils_kinetic', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))226 TYPE(ctrl_out), SAVE :: o_bils_enthalp = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &227 'bils_enthalp', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))228 TYPE(ctrl_out), SAVE :: o_bils_latent = ctrl_out((/ 1, 2, 10, 5, 10, 10 /), &229 'bils_latent', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 6) /))230 TYPE(ctrl_out), SAVE :: o_sens = ctrl_out((/ 1, 1, 10, 10, 5, 10 /), &231 'sens', 'Sensible heat flux', 'W/m2', (/ ('', i=1, 6) /))232 TYPE(ctrl_out), SAVE :: o_fder = ctrl_out((/ 1, 2, 10, 10, 10, 10 /), &233 'fder', 'Heat flux derivation', 'W/m2', (/ ('', i=1, 6) /))234 TYPE(ctrl_out), SAVE :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &235 'ffonte', 'Thermal flux for snow melting', 'W/m2', (/ ('', i=1, 6) /))236 TYPE(ctrl_out), SAVE :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &237 'fqcalving', 'Ice Calving', 'kg/m2/s', (/ ('', i=1, 6) /))238 TYPE(ctrl_out), SAVE :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &239 'fqfonte', 'Land ice melt', 'kg/m2/s', (/ ('', i=1, 6) /))240 TYPE(ctrl_out), SAVE :: o_taux = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &241 'taux', 'Zonal wind stress', 'Pa', (/ ('', i=1, 6) /))242 TYPE(ctrl_out), SAVE :: o_tauy = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &243 'tauy', 'Meridional wind stress', 'Pa', (/ ('', i=1, 6) /))188 ! type(ctrl_out),save :: o_LWupTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWupTOA', & 189 ! (/ ('', i=1, 9) /)) 190 ! type(ctrl_out),save :: o_LWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWupTOAclr', & 191 ! (/ ('', i=1, 9) /)) 192 ! type(ctrl_out),save :: o_LWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWdnTOA', & 193 ! (/ ('', i=1, 9) /)) 194 ! type(ctrl_out),save :: o_LWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11 /),'LWdnTOAclr', & 195 ! (/ ('', i=1, 9) /)) 196 TYPE(ctrl_out), SAVE :: o_LWup200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 197 'LWup200', 'LWup at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 198 TYPE(ctrl_out), SAVE :: o_LWup200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 199 'LWup200clr', 'LWup clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 200 TYPE(ctrl_out), SAVE :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 201 'LWdn200', 'LWdn at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 202 TYPE(ctrl_out), SAVE :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 203 'LWdn200clr', 'LWdn clear sky at 200mb', 'W/m2', (/ ('', i=1, 9) /)) 204 TYPE(ctrl_out), SAVE :: o_sols = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 205 'sols', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 9) /)) 206 TYPE(ctrl_out), SAVE :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 207 'sols0', 'Solar rad. at surf.', 'W/m2', (/ ('', i=1, 9) /)) 208 TYPE(ctrl_out), SAVE :: o_soll = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 209 'soll', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 210 TYPE(ctrl_out), SAVE :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 211 'soll0', 'IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 212 TYPE(ctrl_out), SAVE :: o_radsol = ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /), & 213 'radsol', 'Rayonnement au sol', 'W/m2', (/ ('', i=1, 9) /)) 214 TYPE(ctrl_out), SAVE :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 215 'SWupSFC', 'SWup at surface', 'W/m2', (/ ('', i=1, 9) /)) 216 TYPE(ctrl_out), SAVE :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 217 'SWupSFCclr', 'SWup clear sky at surface', 'W/m2', (/ ('', i=1, 9) /)) 218 TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 219 'SWdnSFC', 'SWdn at surface', 'W/m2', (/ ('', i=1, 9) /)) 220 TYPE(ctrl_out), SAVE :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 221 'SWdnSFCclr', 'SWdn clear sky at surface', 'W/m2', (/ ('', i=1, 9) /)) 222 TYPE(ctrl_out), SAVE :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 223 'LWupSFC', 'Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 224 TYPE(ctrl_out), SAVE :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 225 'LWupSFCclr', 'CS Upwd. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 226 TYPE(ctrl_out), SAVE :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 227 'LWdnSFC', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 228 TYPE(ctrl_out), SAVE :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11 /), & 229 'LWdnSFCclr', 'Down. CS IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 230 TYPE(ctrl_out), SAVE :: o_bils = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 231 'bils', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 232 TYPE(ctrl_out), SAVE :: o_bils_tke = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 233 'bils_tke', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 234 TYPE(ctrl_out), SAVE :: o_bils_diss = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 235 'bils_diss', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 236 TYPE(ctrl_out), SAVE :: o_bils_ec = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 237 'bils_ec', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 238 TYPE(ctrl_out), SAVE :: o_bils_kinetic = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 239 'bils_kinetic', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 240 TYPE(ctrl_out), SAVE :: o_bils_enthalp = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 241 'bils_enthalp', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 242 TYPE(ctrl_out), SAVE :: o_bils_latent = ctrl_out((/ 1, 2, 10, 5, 10, 10, 11, 11, 11 /), & 243 'bils_latent', 'Surf. total heat flux', 'W/m2', (/ ('', i=1, 9) /)) 244 TYPE(ctrl_out), SAVE :: o_sens = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11 /), & 245 'sens', 'Sensible heat flux', 'W/m2', (/ ('', i=1, 9) /)) 246 TYPE(ctrl_out), SAVE :: o_fder = ctrl_out((/ 1, 2, 10, 10, 10, 10, 11, 11, 11 /), & 247 'fder', 'Heat flux derivation', 'W/m2', (/ ('', i=1, 9) /)) 248 TYPE(ctrl_out), SAVE :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 249 'ffonte', 'Thermal flux for snow melting', 'W/m2', (/ ('', i=1, 9) /)) 250 TYPE(ctrl_out), SAVE :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 251 'fqcalving', 'Ice Calving', 'kg/m2/s', (/ ('', i=1, 9) /)) 252 TYPE(ctrl_out), SAVE :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 253 'fqfonte', 'Land ice melt', 'kg/m2/s', (/ ('', i=1, 9) /)) 254 TYPE(ctrl_out), SAVE :: o_taux = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 255 'taux', 'Zonal wind stress', 'Pa', (/ ('', i=1, 9) /)) 256 TYPE(ctrl_out), SAVE :: o_tauy = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 257 'tauy', 'Meridional wind stress', 'Pa', (/ ('', i=1, 9) /)) 244 258 245 259 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_taux_srf = (/ & 246 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_ter', &247 "Zonal wind stress"//clnsurf(1), "Pa", (/ ('', i=1, 6) /)), &248 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_lic', &249 "Zonal wind stress"//clnsurf(2), "Pa", (/ ('', i=1, 6) /)), &250 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_oce', &251 "Zonal wind stress"//clnsurf(3), "Pa", (/ ('', i=1, 6) /)), &252 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'taux_sic', &253 "Zonal wind stress"//clnsurf(4), "Pa", (/ ('', i=1, 6) /)) /)260 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_ter', & 261 "Zonal wind stress"//clnsurf(1), "Pa", (/ ('', i=1, 9) /)), & 262 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_lic', & 263 "Zonal wind stress"//clnsurf(2), "Pa", (/ ('', i=1, 9) /)), & 264 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_oce', & 265 "Zonal wind stress"//clnsurf(3), "Pa", (/ ('', i=1, 9) /)), & 266 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'taux_sic', & 267 "Zonal wind stress"//clnsurf(4), "Pa", (/ ('', i=1, 9) /)) /) 254 268 255 269 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tauy_srf = (/ & 256 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_ter', &257 "Meridional wind stress "//clnsurf(1),"Pa", (/ ('', i=1, 6) /)), &258 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_lic', &259 "Meridional wind stress "//clnsurf(2),"Pa", (/ ('', i=1, 6) /)), &260 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_oce', &261 "Meridional wind stress "//clnsurf(3),"Pa", (/ ('', i=1, 6) /)), &262 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tauy_sic', &263 "Meridional wind stress "//clnsurf(4),"Pa", (/ ('', i=1, 6) /)) /)270 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_ter', & 271 "Meridional wind stress "//clnsurf(1),"Pa", (/ ('', i=1, 9) /)), & 272 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_lic', & 273 "Meridional wind stress "//clnsurf(2),"Pa", (/ ('', i=1, 9) /)), & 274 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_oce', & 275 "Meridional wind stress "//clnsurf(3),"Pa", (/ ('', i=1, 9) /)), & 276 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tauy_sic', & 277 "Meridional wind stress "//clnsurf(4),"Pa", (/ ('', i=1, 9) /)) /) 264 278 265 279 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_pourc_srf = (/ & 266 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_ter', &267 "% "//clnsurf(1),"%", (/ ('', i=1, 6) /)), &268 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_lic', &269 "% "//clnsurf(2),"%", (/ ('', i=1, 6) /)), &270 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_oce', &271 "% "//clnsurf(3),"%", (/ ('', i=1, 6) /)), &272 ctrl_out((/ 1, 7, 10, 10, 10, 10 /),'pourc_sic', &273 "% "//clnsurf(4),"%", (/ ('', i=1, 6) /)) /)280 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_ter', & 281 "% "//clnsurf(1),"%", (/ ('', i=1, 9) /)), & 282 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_lic', & 283 "% "//clnsurf(2),"%", (/ ('', i=1, 9) /)), & 284 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_oce', & 285 "% "//clnsurf(3),"%", (/ ('', i=1, 9) /)), & 286 ctrl_out((/ 1, 7, 10, 10, 10, 10, 11, 11, 11 /),'pourc_sic', & 287 "% "//clnsurf(4),"%", (/ ('', i=1, 9) /)) /) 274 288 275 289 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_fract_srf = (/ & 276 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_ter', &277 "Fraction "//clnsurf(1),"1", (/ ('', i=1, 6) /)), &278 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_lic', &279 "Fraction "//clnsurf(2),"1", (/ ('', i=1, 6) /)), &280 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_oce', &281 "Fraction "//clnsurf(3),"1", (/ ('', i=1, 6) /)), &282 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'fract_sic', &283 "Fraction "//clnsurf(4),"1", (/ ('', i=1, 6) /)) /)290 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_ter', & 291 "Fraction "//clnsurf(1),"1", (/ ('', i=1, 9) /)), & 292 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_lic', & 293 "Fraction "//clnsurf(2),"1", (/ ('', i=1, 9) /)), & 294 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_oce', & 295 "Fraction "//clnsurf(3),"1", (/ ('', i=1, 9) /)), & 296 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'fract_sic', & 297 "Fraction "//clnsurf(4),"1", (/ ('', i=1, 9) /)) /) 284 298 285 299 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tsol_srf = (/ & 286 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_ter', &287 "Temperature "//clnsurf(1),"K", (/ ('', i=1, 6) /)), &288 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_lic', &289 "Temperature "//clnsurf(2),"K", (/ ('', i=1, 6) /)), &290 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_oce', &291 "Temperature "//clnsurf(3),"K", (/ ('', i=1, 6) /)), &292 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'tsol_sic', &293 "Temperature "//clnsurf(4),"K", (/ ('', i=1, 6) /)) /)300 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_ter', & 301 "Temperature "//clnsurf(1),"K", (/ ('', i=1, 9) /)), & 302 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_lic', & 303 "Temperature "//clnsurf(2),"K", (/ ('', i=1, 9) /)), & 304 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_oce', & 305 "Temperature "//clnsurf(3),"K", (/ ('', i=1, 9) /)), & 306 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'tsol_sic', & 307 "Temperature "//clnsurf(4),"K", (/ ('', i=1, 9) /)) /) 294 308 295 309 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evappot_srf = (/ & 296 ctrl_out((/ 1, 6, 10, 10, 10, 10 /),'evappot_ter', &297 "Temperature"//clnsurf(1),"K", (/ ('', i=1, 6) /)), &298 ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_lic', &299 "Temperature"//clnsurf(2),"K", (/ ('', i=1, 6) /)), &300 ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_oce', &301 "Temperature"//clnsurf(3),"K", (/ ('', i=1, 6) /)), &302 ctrl_out((/ 4, 6, 10, 10, 10, 10 /),'evappot_sic', &303 "Temperature"//clnsurf(4),"K", (/ ('', i=1, 6) /)) /)310 ctrl_out((/ 1, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_ter', & 311 "Temperature"//clnsurf(1),"K", (/ ('', i=1, 9) /)), & 312 ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_lic', & 313 "Temperature"//clnsurf(2),"K", (/ ('', i=1, 9) /)), & 314 ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_oce', & 315 "Temperature"//clnsurf(3),"K", (/ ('', i=1, 9) /)), & 316 ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /),'evappot_sic', & 317 "Temperature"//clnsurf(4),"K", (/ ('', i=1, 9) /)) /) 304 318 305 319 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_sens_srf = (/ & 306 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_ter', &307 "Sensible heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &308 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_lic', &309 "Sensible heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &310 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_oce', &311 "Sensible heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &312 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'sens_sic', &313 "Sensible heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)320 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_ter', & 321 "Sensible heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 322 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_lic', & 323 "Sensible heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 324 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_oce', & 325 "Sensible heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 326 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'sens_sic', & 327 "Sensible heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 314 328 315 329 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_lat_srf = (/ & 316 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_ter', &317 "Latent heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &318 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_lic', &319 "Latent heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &320 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_oce', &321 "Latent heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &322 ctrl_out((/ 1, 6, 10, 7, 10, 10 /),'lat_sic', &323 "Latent heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)330 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_ter', & 331 "Latent heat flux "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 332 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_lic', & 333 "Latent heat flux "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 334 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_oce', & 335 "Latent heat flux "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 336 ctrl_out((/ 1, 6, 10, 7, 10, 10, 11, 11, 11 /),'lat_sic', & 337 "Latent heat flux "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 324 338 325 339 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_flw_srf = (/ & 326 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_ter', &327 "LW "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &328 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_lic', &329 "LW "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &330 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_oce', &331 "LW "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &332 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'flw_sic', &333 "LW "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)340 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_ter', & 341 "LW "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 342 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_lic', & 343 "LW "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 344 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_oce', & 345 "LW "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 346 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'flw_sic', & 347 "LW "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 334 348 335 349 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_fsw_srf = (/ & 336 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_ter', &337 "SW "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &338 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_lic', &339 "SW "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &340 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_oce', &341 "SW "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &342 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'fsw_sic', &343 "SW "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)350 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_ter', & 351 "SW "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 352 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_lic', & 353 "SW "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 354 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_oce', & 355 "SW "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 356 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'fsw_sic', & 357 "SW "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 344 358 345 359 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_wbils_srf = (/ & 346 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_ter', &347 "Bilan sol "//clnsurf(1),"W/m2", (/ ('', i=1, 6) /)), &348 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_lic', &349 "Bilan sol "//clnsurf(2),"W/m2", (/ ('', i=1, 6) /)), &350 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_oce', &351 "Bilan sol "//clnsurf(3),"W/m2", (/ ('', i=1, 6) /)), &352 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbils_sic', &353 "Bilan sol "//clnsurf(4),"W/m2", (/ ('', i=1, 6) /)) /)360 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_ter', & 361 "Bilan sol "//clnsurf(1),"W/m2", (/ ('', i=1, 9) /)), & 362 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_lic', & 363 "Bilan sol "//clnsurf(2),"W/m2", (/ ('', i=1, 9) /)), & 364 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_oce', & 365 "Bilan sol "//clnsurf(3),"W/m2", (/ ('', i=1, 9) /)), & 366 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbils_sic', & 367 "Bilan sol "//clnsurf(4),"W/m2", (/ ('', i=1, 9) /)) /) 354 368 355 369 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_wbilo_srf = (/ & 356 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_ter', &357 "Bilan eau "//clnsurf(1),"kg/(m2*s)", (/ ('', i=1, 6) /)), &358 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_lic', &359 "Bilan eau "//clnsurf(2),"kg/(m2*s)", (/ ('', i=1, 6) /)), &360 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_oce', &361 "Bilan eau "//clnsurf(3),"kg/(m2*s)", (/ ('', i=1, 6) /)), &362 ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'wbilo_sic', &363 "Bilan eau "//clnsurf(4),"kg/(m2*s)", (/ ('', i=1, 6) /)) /)364 365 TYPE(ctrl_out), SAVE :: o_cdrm = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &366 'cdrm', 'Momentum drag coef.', '-', (/ ('', i=1, 6) /))367 TYPE(ctrl_out), SAVE :: o_cdrh = ctrl_out((/ 1, 10, 10, 7, 10, 10 /), &368 'cdrh', 'Heat drag coef.', '-', (/ ('', i=1, 6) /))369 TYPE(ctrl_out), SAVE :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &370 'cldl', 'Low-level cloudiness', '-', (/ ('', i=1, 6) /))371 TYPE(ctrl_out), SAVE :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &372 'cldm', 'Mid-level cloudiness', '-', (/ ('', i=1, 6) /))373 TYPE(ctrl_out), SAVE :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &374 'cldh', 'High-level cloudiness', '-', (/ ('', i=1, 6) /))375 TYPE(ctrl_out), SAVE :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 5, 10 /), &376 'cldt', 'Total cloudiness', '-', (/ ('', i=1, 6) /))377 TYPE(ctrl_out), SAVE :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &378 'cldq', 'Cloud liquid water path', 'kg/m2', (/ ('', i=1, 6) /))379 TYPE(ctrl_out), SAVE :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &380 'lwp', 'Cloud water path', 'kg/m2', (/ ('', i=1, 6) /))381 TYPE(ctrl_out), SAVE :: o_iwp = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &382 'iwp', 'Cloud ice water path', 'kg/m2', (/ ('', i=1, 6) /))383 TYPE(ctrl_out), SAVE :: o_ue = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &384 'ue', 'Zonal energy transport', '-', (/ ('', i=1, 6) /))385 TYPE(ctrl_out), SAVE :: o_ve = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &386 've', 'Merid energy transport', '-', (/ ('', i=1, 6) /))387 TYPE(ctrl_out), SAVE :: o_uq = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &388 'uq', 'Zonal humidity transport', '-', (/ ('', i=1, 6) /))389 TYPE(ctrl_out), SAVE :: o_vq = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &390 'vq', 'Merid humidity transport', '-', (/ ('', i=1, 6) /))391 TYPE(ctrl_out), SAVE :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &392 'cape', 'Conv avlbl pot ener', 'J/kg', (/ ('', i=1, 6) /))393 TYPE(ctrl_out), SAVE :: o_pbase = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &394 'pbase', 'Cld base pressure', 'Pa', (/ ('', i=1, 6) /))395 TYPE(ctrl_out), SAVE :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10, 10 /), &396 'ptop', 'Cld top pressure', 'Pa', (/ ('', i=1, 6) /))397 TYPE(ctrl_out), SAVE :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &398 'fbase', 'Cld base mass flux', 'kg/m2/s', (/ ('', i=1, 6) /))399 TYPE(ctrl_out), SAVE :: o_plcl = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &400 'plcl', 'Lifting Condensation Level', 'hPa', (/ ('', i=1, 6) /))401 TYPE(ctrl_out), SAVE :: o_plfc = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &402 'plfc', 'Level of Free Convection', 'hPa', (/ ('', i=1, 6) /))403 TYPE(ctrl_out), SAVE :: o_wbeff = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &404 'wbeff', 'Conv. updraft velocity at LFC (<100)', 'm/s', (/ ('', i=1, 6) /))405 TYPE(ctrl_out), SAVE :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &406 'prw', 'Precipitable water', 'kg/m2', (/ ('', i=1, 6) /))407 TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &408 's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 6) /))409 TYPE(ctrl_out), SAVE :: o_s_pblt = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &410 's_pblt', 't at Boundary Layer Height', 'K', (/ ('', i=1, 6) /))411 TYPE(ctrl_out), SAVE :: o_s_lcl = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &412 's_lcl', 'Condensation level', 'm', (/ ('', i=1, 6) /))413 TYPE(ctrl_out), SAVE :: o_s_therm = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &414 's_therm', 'Exces du thermique', 'K', (/ ('', i=1, 6) /))370 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_ter', & 371 "Bilan eau "//clnsurf(1),"kg/(m2*s)", (/ ('', i=1, 9) /)), & 372 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_lic', & 373 "Bilan eau "//clnsurf(2),"kg/(m2*s)", (/ ('', i=1, 9) /)), & 374 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_oce', & 375 "Bilan eau "//clnsurf(3),"kg/(m2*s)", (/ ('', i=1, 9) /)), & 376 ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'wbilo_sic', & 377 "Bilan eau "//clnsurf(4),"kg/(m2*s)", (/ ('', i=1, 9) /)) /) 378 379 TYPE(ctrl_out), SAVE :: o_cdrm = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 380 'cdrm', 'Momentum drag coef.', '-', (/ ('', i=1, 9) /)) 381 TYPE(ctrl_out), SAVE :: o_cdrh = ctrl_out((/ 1, 10, 10, 7, 10, 10, 11, 11, 11 /), & 382 'cdrh', 'Heat drag coef.', '-', (/ ('', i=1, 9) /)) 383 TYPE(ctrl_out), SAVE :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 384 'cldl', 'Low-level cloudiness', '-', (/ ('', i=1, 9) /)) 385 TYPE(ctrl_out), SAVE :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 386 'cldm', 'Mid-level cloudiness', '-', (/ ('', i=1, 9) /)) 387 TYPE(ctrl_out), SAVE :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 388 'cldh', 'High-level cloudiness', '-', (/ ('', i=1, 9) /)) 389 TYPE(ctrl_out), SAVE :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 5, 10, 11, 11, 11 /), & 390 'cldt', 'Total cloudiness', '-', (/ ('', i=1, 9) /)) 391 TYPE(ctrl_out), SAVE :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 392 'cldq', 'Cloud liquid water path', 'kg/m2', (/ ('', i=1, 9) /)) 393 TYPE(ctrl_out), SAVE :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 394 'lwp', 'Cloud water path', 'kg/m2', (/ ('', i=1, 9) /)) 395 TYPE(ctrl_out), SAVE :: o_iwp = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 396 'iwp', 'Cloud ice water path', 'kg/m2', (/ ('', i=1, 9) /)) 397 TYPE(ctrl_out), SAVE :: o_ue = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 398 'ue', 'Zonal energy transport', '-', (/ ('', i=1, 9) /)) 399 TYPE(ctrl_out), SAVE :: o_ve = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 400 've', 'Merid energy transport', '-', (/ ('', i=1, 9) /)) 401 TYPE(ctrl_out), SAVE :: o_uq = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 402 'uq', 'Zonal humidity transport', '-', (/ ('', i=1, 9) /)) 403 TYPE(ctrl_out), SAVE :: o_vq = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 404 'vq', 'Merid humidity transport', '-', (/ ('', i=1, 9) /)) 405 TYPE(ctrl_out), SAVE :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 406 'cape', 'Conv avlbl pot ener', 'J/kg', (/ ('', i=1, 9) /)) 407 TYPE(ctrl_out), SAVE :: o_pbase = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 408 'pbase', 'Cld base pressure', 'Pa', (/ ('', i=1, 9) /)) 409 TYPE(ctrl_out), SAVE :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10, 10, 11, 11, 11 /), & 410 'ptop', 'Cld top pressure', 'Pa', (/ ('', i=1, 9) /)) 411 TYPE(ctrl_out), SAVE :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 412 'fbase', 'Cld base mass flux', 'kg/m2/s', (/ ('', i=1, 9) /)) 413 TYPE(ctrl_out), SAVE :: o_plcl = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 414 'plcl', 'Lifting Condensation Level', 'hPa', (/ ('', i=1, 9) /)) 415 TYPE(ctrl_out), SAVE :: o_plfc = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 416 'plfc', 'Level of Free Convection', 'hPa', (/ ('', i=1, 9) /)) 417 TYPE(ctrl_out), SAVE :: o_wbeff = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 418 'wbeff', 'Conv. updraft velocity at LFC (<100)', 'm/s', (/ ('', i=1, 9) /)) 419 TYPE(ctrl_out), SAVE :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 420 'prw', 'Precipitable water', 'kg/m2', (/ ('', i=1, 9) /)) 421 TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 422 's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 9) /)) 423 TYPE(ctrl_out), SAVE :: o_s_pblt = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 424 's_pblt', 't at Boundary Layer Height', 'K', (/ ('', i=1, 9) /)) 425 TYPE(ctrl_out), SAVE :: o_s_lcl = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 426 's_lcl', 'Condensation level', 'm', (/ ('', i=1, 9) /)) 427 TYPE(ctrl_out), SAVE :: o_s_therm = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 428 's_therm', 'Exces du thermique', 'K', (/ ('', i=1, 9) /)) 415 429 !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F 416 ! type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_capCL', &417 ! (/ ('', i=1, 6) /))418 ! type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_oliqCL', &419 ! (/ ('', i=1, 6) /))420 ! type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_cteiCL', &421 ! (/ ('', i=1, 6) /))422 ! type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb1', &423 ! (/ ('', i=1, 6) /))424 ! type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb2', &425 ! (/ ('', i=1, 6) /))426 ! type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'s_trmb3', &427 !(/ ('', i=1, 6) /))428 TYPE(ctrl_out), SAVE :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10, 10 /), &429 'slab_bils_oce', 'Bilan au sol sur ocean slab', 'W/m2', (/ ('', i=1, 6) /))430 TYPE(ctrl_out), SAVE :: o_ale_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &431 'ale_bl', 'ALE BL', 'm2/s2', (/ ('', i=1, 6) /))432 TYPE(ctrl_out), SAVE :: o_alp_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &433 'alp_bl', 'ALP BL', 'm2/s2', (/ ('', i=1, 6) /))434 TYPE(ctrl_out), SAVE :: o_ale_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &435 'ale_wk', 'ALE WK', 'm2/s2', (/ ('', i=1, 6) /))436 TYPE(ctrl_out), SAVE :: o_alp_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &437 'alp_wk', 'ALP WK', 'm2/s2', (/ ('', i=1, 6) /))438 TYPE(ctrl_out), SAVE :: o_ale = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &439 'ale', 'ALE', 'm2/s2', (/ ('', i=1, 6) /))440 TYPE(ctrl_out), SAVE :: o_alp = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &441 'alp', 'ALP', 'W/m2', (/ ('', i=1, 6) /))442 TYPE(ctrl_out), SAVE :: o_cin = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &443 'cin', 'Convective INhibition', 'm2/s2', (/ ('', i=1, 6) /))444 TYPE(ctrl_out), SAVE :: o_wape = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &445 'wape', '', '', (/ ('', i=1, 6) /))430 ! type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_capCL', & 431 ! (/ ('', i=1, 9) /)) 432 ! type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_oliqCL', & 433 ! (/ ('', i=1, 9) /)) 434 ! type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_cteiCL', & 435 ! (/ ('', i=1, 9) /)) 436 ! type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb1', & 437 ! (/ ('', i=1, 9) /)) 438 ! type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb2', & 439 ! (/ ('', i=1, 9) /)) 440 ! type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /),'s_trmb3', & 441 !(/ ('', i=1, 9) /)) 442 TYPE(ctrl_out), SAVE :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), & 443 'slab_bils_oce', 'Bilan au sol sur ocean slab', 'W/m2', (/ ('', i=1, 9) /)) 444 TYPE(ctrl_out), SAVE :: o_ale_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 445 'ale_bl', 'ALE BL', 'm2/s2', (/ ('', i=1, 9) /)) 446 TYPE(ctrl_out), SAVE :: o_alp_bl = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 447 'alp_bl', 'ALP BL', 'm2/s2', (/ ('', i=1, 9) /)) 448 TYPE(ctrl_out), SAVE :: o_ale_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 449 'ale_wk', 'ALE WK', 'm2/s2', (/ ('', i=1, 9) /)) 450 TYPE(ctrl_out), SAVE :: o_alp_wk = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 451 'alp_wk', 'ALP WK', 'm2/s2', (/ ('', i=1, 9) /)) 452 TYPE(ctrl_out), SAVE :: o_ale = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 453 'ale', 'ALE', 'm2/s2', (/ ('', i=1, 9) /)) 454 TYPE(ctrl_out), SAVE :: o_alp = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 455 'alp', 'ALP', 'W/m2', (/ ('', i=1, 9) /)) 456 TYPE(ctrl_out), SAVE :: o_cin = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 457 'cin', 'Convective INhibition', 'm2/s2', (/ ('', i=1, 9) /)) 458 TYPE(ctrl_out), SAVE :: o_wape = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 459 'wape', '', '', (/ ('', i=1, 9) /)) 446 460 447 461 !!! nrlmd le 10/04/2012 448 462 449 463 !-------Spectre de thermiques de type 2 au LCL 450 TYPE(ctrl_out), SAVE :: o_n2 = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &451 'n2', 'Nombre de panaches de type 2', ' ', (/ ('', i=1, 6) /))452 TYPE(ctrl_out), SAVE :: o_s2 = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &453 's2', 'Surface moyenne des panaches de type 2', 'm2', (/ ('', i=1, 6) /))464 TYPE(ctrl_out), SAVE :: o_n2 = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 465 'n2', 'Nombre de panaches de type 2', ' ', (/ ('', i=1, 9) /)) 466 TYPE(ctrl_out), SAVE :: o_s2 = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 467 's2', 'Surface moyenne des panaches de type 2', 'm2', (/ ('', i=1, 9) /)) 454 468 455 469 !-------Déclenchement stochastique 456 TYPE(ctrl_out), SAVE :: o_proba_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &457 458 'Probabilité de non-déclenchement', ' ', (/ ('', i=1, 6) /))459 TYPE(ctrl_out), SAVE :: o_random_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &460 461 'Tirage aléatoire de non-déclenchement', ' ', (/ ('', i=1, 6) /))462 TYPE(ctrl_out), SAVE :: o_ale_bl_stat = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &463 464 'ALE_BL_STAT', 'm2/s2', (/ ('', i=1, 6) /))465 TYPE(ctrl_out), SAVE :: o_ale_bl_trig = ctrl_out((/ 1, 1, 1, 6, 10, 10 /), &466 467 'ALE_BL_STAT + Condition P>Pseuil', 'm2/s2', (/ ('', i=1, 6) /))470 TYPE(ctrl_out), SAVE :: o_proba_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 471 'proba_notrig', & 472 'Probabilité de non-déclenchement', ' ', (/ ('', i=1, 9) /)) 473 TYPE(ctrl_out), SAVE :: o_random_notrig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 474 'random_notrig', & 475 'Tirage aléatoire de non-déclenchement', ' ', (/ ('', i=1, 9) /)) 476 TYPE(ctrl_out), SAVE :: o_ale_bl_stat = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 477 'ale_bl_stat', & 478 'ALE_BL_STAT', 'm2/s2', (/ ('', i=1, 9) /)) 479 TYPE(ctrl_out), SAVE :: o_ale_bl_trig = ctrl_out((/ 1, 1, 1, 6, 10, 10, 11, 11, 11 /), & 480 'ale_bl_trig', & 481 'ALE_BL_STAT + Condition P>Pseuil', 'm2/s2', (/ ('', i=1, 9) /)) 468 482 469 483 !-------Fermeture statistique 470 TYPE(ctrl_out), SAVE :: o_alp_bl_det = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &471 'alp_bl_det', 'ALP_BL_DET', 'W/m2', (/ ('', i=1, 6) /))472 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_m = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &473 'alp_bl_fluct_m', 'ALP_BL_FLUCT_M', 'W/m2', (/ ('', i=1, 6) /))474 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_tke = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &475 'alp_bl_fluct_tke', 'ALP_BL_FLUCT_TKE', 'W/m2', (/ ('', i=1, 6) /))476 TYPE(ctrl_out), SAVE :: o_alp_bl_conv = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &477 'alp_bl_conv', 'ALP_BL_CONV', 'W/m2', (/ ('', i=1, 6) /))478 TYPE(ctrl_out), SAVE :: o_alp_bl_stat = ctrl_out((/ 1, 1, 1, 10, 10, 10 /), &479 'alp_bl_stat', 'ALP_BL_STAT', 'W/m2', (/ ('', i=1, 6) /))484 TYPE(ctrl_out), SAVE :: o_alp_bl_det = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 485 'alp_bl_det', 'ALP_BL_DET', 'W/m2', (/ ('', i=1, 9) /)) 486 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_m = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 487 'alp_bl_fluct_m', 'ALP_BL_FLUCT_M', 'W/m2', (/ ('', i=1, 9) /)) 488 TYPE(ctrl_out), SAVE :: o_alp_bl_fluct_tke = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 489 'alp_bl_fluct_tke', 'ALP_BL_FLUCT_TKE', 'W/m2', (/ ('', i=1, 9) /)) 490 TYPE(ctrl_out), SAVE :: o_alp_bl_conv = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 491 'alp_bl_conv', 'ALP_BL_CONV', 'W/m2', (/ ('', i=1, 9) /)) 492 TYPE(ctrl_out), SAVE :: o_alp_bl_stat = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), & 493 'alp_bl_stat', 'ALP_BL_STAT', 'W/m2', (/ ('', i=1, 9) /)) 480 494 481 495 !!! fin nrlmd le 10/04/2012 … … 484 498 485 499 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_uSTDlevs = (/ & 486 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u850', "Zonal wind 1hPa", "m/s", &487 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &488 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u700', "Zonal wind 2hPa", "m/s", &489 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &490 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u500', "Zonal wind 3hPa", "m/s", &491 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &492 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u200', "Zonal wind 4hPa", "m/s", &493 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &494 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u100', "Zonal wind 5hPa", "m/s", &495 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &496 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u50', "Zonal wind 6hPa", "m/s", &497 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &498 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'u10', "Zonal wind 7hPa", "m/s", &499 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)500 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u850', "Zonal wind 1hPa", "m/s", & 501 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 502 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u700', "Zonal wind 2hPa", "m/s", & 503 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 504 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u500', "Zonal wind 3hPa", "m/s", & 505 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 506 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u200', "Zonal wind 4hPa", "m/s", & 507 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 508 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u100', "Zonal wind 5hPa", "m/s", & 509 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 510 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u50', "Zonal wind 6hPa", "m/s", & 511 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 512 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'u10', "Zonal wind 7hPa", "m/s", & 513 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 500 514 501 515 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_vSTDlevs = (/ & 502 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v850', "Meridional wind 1hPa", "m/s", &503 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &504 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v700', "Meridional wind 2hPa", "m/s", &505 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &506 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v500', "Meridional wind 3hPa", "m/s", &507 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &508 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v200', "Meridional wind 4hPa", "m/s", &509 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &510 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v100', "Meridional wind 5hPa", "m/s", &511 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &512 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v50', "Meridional wind 6hPa", "m/s", &513 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &514 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'v10', "Meridional wind 7hPa", "m/s", &515 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)516 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v850', "Meridional wind 1hPa", "m/s", & 517 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 518 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v700', "Meridional wind 2hPa", "m/s", & 519 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 520 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v500', "Meridional wind 3hPa", "m/s", & 521 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 522 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v200', "Meridional wind 4hPa", "m/s", & 523 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 524 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v100', "Meridional wind 5hPa", "m/s", & 525 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 526 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v50', "Meridional wind 6hPa", "m/s", & 527 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 528 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'v10', "Meridional wind 7hPa", "m/s", & 529 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 516 530 517 531 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_wSTDlevs = (/ & 518 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w850', "Vertical wind 1hPa", "Pa/s", &519 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &520 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w700', "Vertical wind 2hPa", "Pa/s", &521 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &522 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w500', "Vertical wind 3hPa", "Pa/s", &523 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &524 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w200', "Vertical wind 4hPa", "Pa/s", &525 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &526 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w100', "Vertical wind 5hPa", "Pa/s", &527 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &528 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w50', "Vertical wind 6hPa", "Pa/s", &529 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &530 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'w10', "Vertical wind 7hPa", "Pa/s", &531 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)532 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w850', "Vertical wind 1hPa", "Pa/s", & 533 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 534 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w700', "Vertical wind 2hPa", "Pa/s", & 535 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 536 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w500', "Vertical wind 3hPa", "Pa/s", & 537 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 538 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w200', "Vertical wind 4hPa", "Pa/s", & 539 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 540 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w100', "Vertical wind 5hPa", "Pa/s", & 541 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 542 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w50', "Vertical wind 6hPa", "Pa/s", & 543 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 544 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'w10', "Vertical wind 7hPa", "Pa/s", & 545 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 532 546 533 547 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_tSTDlevs = (/ & 534 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t850', "Temperature 1hPa", "K", &535 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &536 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t700', "Temperature 2hPa", "K", &537 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &538 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t500', "Temperature 3hPa", "K", &539 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &540 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t200', "Temperature 4hPa", "K", &541 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &542 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t100', "Temperature 5hPa", "K", &543 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &544 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t50', "Temperature 6hPa", "K", &545 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &546 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'t10', "Temperature 7hPa", "K", &547 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)548 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t850', "Temperature 1hPa", "K", & 549 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 550 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t700', "Temperature 2hPa", "K", & 551 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 552 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t500', "Temperature 3hPa", "K", & 553 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 554 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t200', "Temperature 4hPa", "K", & 555 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 556 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t100', "Temperature 5hPa", "K", & 557 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 558 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t50', "Temperature 6hPa", "K", & 559 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 560 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'t10', "Temperature 7hPa", "K", & 561 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 548 562 549 563 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_qSTDlevs = (/ & 550 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q850', "Specific humidity 1hPa",&551 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &552 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q700', "Specific humidity 2hPa",&553 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &554 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q500', "Specific humidity 3hPa",&555 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &556 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q200', "Specific humidity 4hPa",&557 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &558 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q100', "Specific humidity 5hPa",&559 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &560 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q50', "Specific humidity 6hPa",&561 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &562 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'q10', "Specific humidity 7hPa",&563 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)564 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q850', "Specific humidity 1hPa", & 565 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 566 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q700', "Specific humidity 2hPa", & 567 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 568 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q500', "Specific humidity 3hPa", & 569 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 570 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q200', "Specific humidity 4hPa", & 571 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 572 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q100', "Specific humidity 5hPa", & 573 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 574 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q50', "Specific humidity 6hPa", & 575 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 576 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'q10', "Specific humidity 7hPa", & 577 "kg/kg", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 564 578 565 579 TYPE(ctrl_out), SAVE, DIMENSION(7) :: o_zSTDlevs = (/ & 566 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z850', "Geopotential height 1hPa", &567 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &568 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z700', "Geopotential height 2hPa", &569 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &570 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z500', "Geopotential height 3hPa", &571 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &572 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z200', "Geopotential height 4hPa", &573 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &574 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z100', "Geopotential height 5hPa", &575 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &576 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z50', "Geopotential height 6hPa", &577 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), &578 ctrl_out((/ 1, 7, 7, 10, 10, 10 /),'z10', "Geopotential height 7hPa", &579 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /)580 581 TYPE(ctrl_out), SAVE :: o_t_oce_sic = ctrl_out((/ 1, 10, 10, 10, 10, 10 /), &582 't_oce_sic', 'Temp mixte oce-sic', 'K', (/ ('', i=1, 6) /))583 TYPE(ctrl_out), SAVE :: o_weakinv = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &584 'weakinv', 'Weak inversion', '-', (/ ('', i=1, 6) /))585 TYPE(ctrl_out), SAVE :: o_dthmin = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), &586 'dthmin', 'dTheta mini', 'K/m', (/ ('', i=1, 6) /))580 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z850', "Geopotential height 1hPa", & 581 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 582 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z700', "Geopotential height 2hPa", & 583 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 584 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z500', "Geopotential height 3hPa", & 585 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 586 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z200', "Geopotential height 4hPa", & 587 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 588 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z100', "Geopotential height 5hPa", & 589 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 590 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z50', "Geopotential height 6hPa", & 591 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)), & 592 ctrl_out((/ 1, 7, 7, 10, 10, 10, 11, 11, 11 /),'z10', "Geopotential height 7hPa", & 593 "m", (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) /) 594 595 TYPE(ctrl_out), SAVE :: o_t_oce_sic = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), & 596 't_oce_sic', 'Temp mixte oce-sic', 'K', (/ ('', i=1, 9) /)) 597 TYPE(ctrl_out), SAVE :: o_weakinv = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 598 'weakinv', 'Weak inversion', '-', (/ ('', i=1, 9) /)) 599 TYPE(ctrl_out), SAVE :: o_dthmin = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 600 'dthmin', 'dTheta mini', 'K/m', (/ ('', i=1, 9) /)) 587 601 588 602 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_u10_srf = (/ & 589 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_ter', "", "", (/ ('', i=1, 6) /)), &590 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_lic', "", "", (/ ('', i=1, 6) /)), &591 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_oce', "", "", (/ ('', i=1, 6) /)), &592 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'u10_sic', "", "", (/ ('', i=1, 6) /)) /)603 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_ter', "", "", (/ ('', i=1, 9) /)), & 604 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_lic', "", "", (/ ('', i=1, 9) /)), & 605 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_oce', "", "", (/ ('', i=1, 9) /)), & 606 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'u10_sic', "", "", (/ ('', i=1, 9) /)) /) 593 607 594 608 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_v10_srf = (/ & 595 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_ter', "", "", (/ ('', i=1, 6) /)), & 596 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_lic', "", "", (/ ('', i=1, 6) /)), & 597 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_oce', "", "", (/ ('', i=1, 6) /)), & 598 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'v10_sic', "", "", (/ ('', i=1, 6) /)) /) 599 600 TYPE(ctrl_out), SAVE :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 601 'cldtau', 'Cloud optical thickness', '1', (/ ('', i=1, 6) /)) 602 TYPE(ctrl_out), SAVE :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 603 'cldemi', 'Cloud optical emissivity', '1', (/ ('', i=1, 6) /)) 604 TYPE(ctrl_out), SAVE :: o_rh2m = ctrl_out((/ 5, 5, 10, 10, 10, 10 /), & 605 'rh2m', 'Relative humidity at 2m', '%', (/ ('', i=1, 6) /)) 606 TYPE(ctrl_out), SAVE :: o_rh2m_min = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 607 'rh2m_min', 'Min Relative humidity at 2m', '%', & 608 (/ 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)' /)) 609 TYPE(ctrl_out), SAVE :: o_rh2m_max = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 610 'rh2m_max', 'Max Relative humidity at 2m', '%', & 611 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 612 TYPE(ctrl_out), SAVE :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 613 'qsat2m', 'Saturant humidity at 2m', '%', (/ ('', i=1, 6) /)) 614 TYPE(ctrl_out), SAVE :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 615 'tpot', 'Surface air potential temperature', 'K', (/ ('', i=1, 6) /)) 616 TYPE(ctrl_out), SAVE :: o_tpote = ctrl_out((/ 10, 5, 10, 10, 10, 10 /), & 617 'tpote', & 618 'Surface air equivalent potential temperature', 'K', (/ ('', i=1, 6) /)) 619 TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 620 'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 6) /)) 621 TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 622 'tke_max', 'TKE max', 'm2/s2', & 623 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 609 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_ter', "", "", (/ ('', i=1, 9) /)), & 610 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_lic', "", "", (/ ('', i=1, 9) /)), & 611 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_oce', "", "", (/ ('', i=1, 9) /)), & 612 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'v10_sic', "", "", (/ ('', i=1, 9) /)) /) 613 614 TYPE(ctrl_out), SAVE :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 615 'cldtau', 'Cloud optical thickness', '1', (/ ('', i=1, 9) /)) 616 TYPE(ctrl_out), SAVE :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 617 'cldemi', 'Cloud optical emissivity', '1', (/ ('', i=1, 9) /)) 618 TYPE(ctrl_out), SAVE :: o_rh2m = ctrl_out((/ 5, 5, 10, 10, 10, 10, 11, 11, 11 /), & 619 'rh2m', 'Relative humidity at 2m', '%', (/ ('', i=1, 9) /)) 620 TYPE(ctrl_out), SAVE :: o_rh2m_min = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 621 'rh2m_min', 'Min Relative humidity at 2m', '%', & 622 (/ 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)', 't_min(X)' /)) 623 TYPE(ctrl_out), SAVE :: o_rh2m_max = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 624 'rh2m_max', 'Max Relative humidity at 2m', '%', & 625 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 626 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 627 TYPE(ctrl_out), SAVE :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 628 'qsat2m', 'Saturant humidity at 2m', '%', (/ ('', i=1, 9) /)) 629 TYPE(ctrl_out), SAVE :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 630 'tpot', 'Surface air potential temperature', 'K', (/ ('', i=1, 9) /)) 631 TYPE(ctrl_out), SAVE :: o_tpote = ctrl_out((/ 10, 5, 10, 10, 10, 10, 11, 11, 11 /), & 632 'tpote', & 633 'Surface air equivalent potential temperature', 'K', (/ ('', i=1, 9) /)) 634 TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 635 'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 9) /)) 636 TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 637 'tke_max', 'TKE max', 'm2/s2', & 638 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 639 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 624 640 625 641 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tke_srf = (/ & 626 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_ter', & 627 "Max Turb. Kinetic Energy "//clnsurf(1),"-", (/ ('', i=1, 6) /)), & 628 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_lic', & 629 "Max Turb. Kinetic Energy "//clnsurf(2),"-", (/ ('', i=1, 6) /)), & 630 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_oce', & 631 "Max Turb. Kinetic Energy "//clnsurf(3),"-", (/ ('', i=1, 6) /)), & 632 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_sic', & 633 "Max Turb. Kinetic Energy "//clnsurf(4),"-", (/ ('', i=1, 6) /)) /) 634 635 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tke_max_srf = (/ & 636 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_ter', & 637 "Max Turb. Kinetic Energy "//clnsurf(1),"-", & 638 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 639 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_lic', & 640 "Max Turb. Kinetic Energy "//clnsurf(2),"-", & 641 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 642 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_oce', & 643 "Max Turb. Kinetic Energy "//clnsurf(3),"-", & 644 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 645 ctrl_out((/ 10, 4, 10, 10, 10, 10 /),'tke_max_sic', & 646 "Max Turb. Kinetic Energy "//clnsurf(4),"-", & 647 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) /) 648 649 TYPE(ctrl_out), SAVE :: o_kz = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 650 'kz', 'Kz melange', 'm2/s', (/ ('', i=1, 6) /)) 651 TYPE(ctrl_out), SAVE :: o_kz_max = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 652 'kz_max', 'Kz melange max', 'm2/s', & 653 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)' /)) 654 TYPE(ctrl_out), SAVE :: o_SWnetOR = ctrl_out((/ 10, 10, 2, 10, 10, 10 /), & 655 'SWnetOR', 'Sfce net SW radiation OR', 'W/m2', (/ ('', i=1, 6) /)) 656 TYPE(ctrl_out), SAVE :: o_SWdownOR = ctrl_out((/ 10, 10, 2, 10, 10, 10 /), & 657 'SWdownOR', 'Sfce incident SW radiation OR', 'W/m2', (/ ('', i=1, 6) /)) 658 TYPE(ctrl_out), SAVE :: o_LWdownOR = ctrl_out((/ 10, 10, 2, 10, 10, 10 /), & 659 'LWdownOR', 'Sfce incident LW radiation OR', 'W/m2', (/ ('', i=1, 6) /)) 660 TYPE(ctrl_out), SAVE :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), & 661 'snowl', 'Solid Large-scale Precip.', 'kg/(m2*s)', (/ ('', i=1, 6) /)) 662 TYPE(ctrl_out), SAVE :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), & 663 'cape_max', 'CAPE max.', 'J/kg', & 664 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 665 TYPE(ctrl_out), SAVE :: o_solldown = ctrl_out((/ 10, 1, 10, 10, 10, 10 /), & 666 'solldown', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 6) /)) 667 TYPE(ctrl_out), SAVE :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 668 'dtsvdfo', 'Boundary-layer dTs(o)', 'K/s', (/ ('', i=1, 6) /)) 669 TYPE(ctrl_out), SAVE :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 670 'dtsvdft', 'Boundary-layer dTs(t)', 'K/s', (/ ('', i=1, 6) /)) 671 TYPE(ctrl_out), SAVE :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 672 'dtsvdfg', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 6) /)) 673 TYPE(ctrl_out), SAVE :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 674 'dtsvdfi', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 6) /)) 675 TYPE(ctrl_out), SAVE :: o_rugs = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), & 676 'rugs', 'rugosity', '-', (/ ('', i=1, 6) /)) 677 TYPE(ctrl_out), SAVE :: o_topswad = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 678 'topswad', 'ADE at TOA', 'W/m2', (/ ('', i=1, 6) /)) 679 TYPE(ctrl_out), SAVE :: o_topswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 680 'topswad0', 'ADE clear-sky at TOA', 'W/m2', (/ ('', i=1, 6) /)) 681 TYPE(ctrl_out), SAVE :: o_topswai = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 682 'topswai', 'AIE at TOA', 'W/m2', (/ ('', i=1, 6) /)) 683 TYPE(ctrl_out), SAVE :: o_solswad = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 684 'solswad', 'ADE at SRF', 'W/m2', (/ ('', i=1, 6) /)) 685 TYPE(ctrl_out), SAVE :: o_solswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 686 'solswad0', 'ADE clear-sky at SRF', 'W/m2', (/ ('', i=1, 6) /)) 687 TYPE(ctrl_out), SAVE :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), & 688 'solswai', 'AIE at SFR', 'W/m2', (/ ('', i=1, 6) /)) 689 690 ! type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM', & 691 ! (/ ('', i=1, 6) /)), & 642 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_ter', & 643 "Max Turb. Kinetic Energy "//clnsurf(1),"-", (/ ('', i=1, 9) /)), & 644 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_lic', & 645 "Max Turb. Kinetic Energy "//clnsurf(2),"-", (/ ('', i=1, 9) /)), & 646 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_oce', & 647 "Max Turb. Kinetic Energy "//clnsurf(3),"-", (/ ('', i=1, 9) /)), & 648 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_sic', & 649 "Max Turb. Kinetic Energy "//clnsurf(4),"-", (/ ('', i=1, 9) /)) /) 650 651 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_tke_max_srf = (/ & 652 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_ter', & 653 "Max Turb. Kinetic Energy "//clnsurf(1),"-", & 654 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 655 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 656 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_lic', & 657 "Max Turb. Kinetic Energy "//clnsurf(2),"-", & 658 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 659 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 660 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_oce', & 661 "Max Turb. Kinetic Energy "//clnsurf(3),"-", & 662 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 663 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)), & 664 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11 /),'tke_max_sic', & 665 "Max Turb. Kinetic Energy "//clnsurf(4),"-", & 666 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 667 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) /) 668 669 TYPE(ctrl_out), SAVE :: o_kz = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 670 'kz', 'Kz melange', 'm2/s', (/ ('', i=1, 9) /)) 671 TYPE(ctrl_out), SAVE :: o_kz_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 672 'kz_max', 'Kz melange max', 'm2/s', & 673 (/ 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', 't_max(X)', & 674 't_max(X)', "t_max(X)", "t_max(X)", "t_max(X)" /)) 675 TYPE(ctrl_out), SAVE :: o_SWnetOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 676 'SWnetOR', 'Sfce net SW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 677 TYPE(ctrl_out), SAVE :: o_SWdownOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 678 'SWdownOR', 'Sfce incident SW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 679 TYPE(ctrl_out), SAVE :: o_LWdownOR = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 680 'LWdownOR', 'Sfce incident LW radiation OR', 'W/m2', (/ ('', i=1, 9) /)) 681 TYPE(ctrl_out), SAVE :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 682 'snowl', 'Solid Large-scale Precip.', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 683 TYPE(ctrl_out), SAVE :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 684 'cape_max', 'CAPE max.', 'J/kg', & 685 (/ "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)", & 686 "t_max(X)", "t_max(X)", "t_max(X)", "t_max(X)" /)) 687 TYPE(ctrl_out), SAVE :: o_solldown = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11 /), & 688 'solldown', 'Down. IR rad. at surface', 'W/m2', (/ ('', i=1, 9) /)) 689 TYPE(ctrl_out), SAVE :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 690 'dtsvdfo', 'Boundary-layer dTs(o)', 'K/s', (/ ('', i=1, 9) /)) 691 TYPE(ctrl_out), SAVE :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 692 'dtsvdft', 'Boundary-layer dTs(t)', 'K/s', (/ ('', i=1, 9) /)) 693 TYPE(ctrl_out), SAVE :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 694 'dtsvdfg', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 9) /)) 695 TYPE(ctrl_out), SAVE :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 696 'dtsvdfi', 'Boundary-layer dTs(g)', 'K/s', (/ ('', i=1, 9) /)) 697 TYPE(ctrl_out), SAVE :: o_rugs = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 698 'rugs', 'rugosity', '-', (/ ('', i=1, 9) /)) 699 TYPE(ctrl_out), SAVE :: o_topswad = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 700 'topswad', 'ADE at TOA', 'W/m2', (/ ('', i=1, 9) /)) 701 TYPE(ctrl_out), SAVE :: o_topswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 702 'topswad0', 'ADE clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 703 TYPE(ctrl_out), SAVE :: o_topswai = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 704 'topswai', 'AIE at TOA', 'W/m2', (/ ('', i=1, 9) /)) 705 TYPE(ctrl_out), SAVE :: o_solswad = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 706 'solswad', 'ADE at SRF', 'W/m2', (/ ('', i=1, 9) /)) 707 TYPE(ctrl_out), SAVE :: o_solswad0 = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 708 'solswad0', 'ADE clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 709 TYPE(ctrl_out), SAVE :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 710 'solswai', 'AIE at SFR', 'W/m2', (/ ('', i=1, 9) /)) 711 712 ! type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 713 ! (/ ('', i=1, 9) /)), & 692 714 type(ctrl_out),save,dimension(11) :: o_tausumaero = & 693 (/ ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASBCM', &694 "Aerosol Optical depth at 550 nm "//name_aero(1),"1", (/ ('', i=1, 6) /)), &695 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASPOMM', &696 "Aerosol Optical depth at 550 nm "//name_aero(2),"1", (/ ('', i=1, 6) /)), &697 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSO4M', &698 "Aerosol Optical depth at 550 nm "//name_aero(3),"1", (/ ('', i=1, 6) /)), &699 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CSSO4M', &700 "Aerosol Optical depth at 550 nm "//name_aero(4),"1", (/ ('', i=1, 6) /)), &701 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_SSSSM', &702 "Aerosol Optical depth at 550 nm "//name_aero(5),"1", (/ ('', i=1, 6) /)), &703 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_ASSSM', &704 "Aerosol Optical depth at 550 nm "//name_aero(6),"1", (/ ('', i=1, 6) /)), &705 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CSSSM', &706 "Aerosol Optical depth at 550 nm "//name_aero(7),"1", (/ ('', i=1, 6) /)), &707 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_CIDUSTM', &708 "Aerosol Optical depth at 550 nm "//name_aero(8),"1", (/ ('', i=1, 6) /)), &709 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIBCM', &710 "Aerosol Optical depth at 550 nm "//name_aero(9),"1", (/ ('', i=1, 6) /)), &711 ctrl_out((/ 2, 6, 10, 10, 10, 10 /),'OD550_AIPOMM', &712 "Aerosol Optical depth at 550 nm "//name_aero(10),"1", (/ ('', i=1, 6) /)),&713 ctrl_out((/ 2, 2, 10, 10, 10, 10 /),'OD550_STRAT', &714 "Aerosol Optical depth at 550 nm "//name_aero(11),"1", (/ ('', i=1, 6) /)) /)715 TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &716 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 6) /))717 TYPE(ctrl_out), SAVE :: o_od865aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &718 'od865aer', 'Total aerosol optical depth at 870nm', '-', (/ ('', i=1, 6) /))719 TYPE(ctrl_out), SAVE :: o_absvisaer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &720 'absvisaer', 'Absorption aerosol visible optical depth', '-', (/ ('', i=1, 6) /))721 TYPE(ctrl_out), SAVE :: o_od550lt1aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &722 'od550lt1aer', 'Fine mode optical depth', '-', (/ ('', i=1, 6) /))723 TYPE(ctrl_out), SAVE :: o_sconcso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &724 'sconcso4', 'Surface Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 6) /))725 TYPE(ctrl_out), SAVE :: o_sconcoa = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &726 'sconcoa', 'Surface Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 6) /))727 TYPE(ctrl_out), SAVE :: o_sconcbc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &728 'sconcbc', 'Surface Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 6) /))729 TYPE(ctrl_out), SAVE :: o_sconcss = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &730 'sconcss', 'Surface Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 6) /))731 TYPE(ctrl_out), SAVE :: o_sconcdust = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &732 'sconcdust', 'Surface Concentration of Dust ', 'kg/m3', (/ ('', i=1, 6) /))733 TYPE(ctrl_out), SAVE :: o_concso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &734 'concso4', 'Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 6) /))735 TYPE(ctrl_out), SAVE :: o_concoa = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &736 'concoa', 'Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 6) /))737 TYPE(ctrl_out), SAVE :: o_concbc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &738 'concbc', 'Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 6) /))739 TYPE(ctrl_out), SAVE :: o_concss = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &740 'concss', 'Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 6) /))741 TYPE(ctrl_out), SAVE :: o_concdust = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &742 'concdust', 'Concentration of Dust ', 'kg/m3', (/ ('', i=1, 6) /))743 TYPE(ctrl_out), SAVE :: o_loadso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &744 'loadso4', 'Column Load of Sulfate ', 'kg/m2', (/ ('', i=1, 6) /))745 TYPE(ctrl_out), SAVE :: o_loadoa = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &746 'loadoa', 'Column Load of Organic Aerosol ', 'kg/m2', (/ ('', i=1, 6) /))747 TYPE(ctrl_out), SAVE :: o_loadbc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &748 'loadbc', 'Column Load of Black Carbon ', 'kg/m2', (/ ('', i=1, 6) /))749 TYPE(ctrl_out), SAVE :: o_loadss = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &750 'loadss', 'Column Load of Sea Salt ', 'kg/m2', (/ ('', i=1, 6) /))751 TYPE(ctrl_out), SAVE :: o_loaddust = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &752 'loaddust', 'Column Load of Dust ', 'kg/m2', (/ ('', i=1, 6) /))753 TYPE(ctrl_out), SAVE :: o_swtoaas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &754 'swtoaas_nat', 'Natural aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))755 TYPE(ctrl_out), SAVE :: o_swsrfas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &756 'swsrfas_nat', 'Natural aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))757 TYPE(ctrl_out), SAVE :: o_swtoacs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &758 'swtoacs_nat', 'Natural aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))759 TYPE(ctrl_out), SAVE :: o_swsrfcs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &760 'swsrfcs_nat', 'Natural aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))761 TYPE(ctrl_out), SAVE :: o_swtoaas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &762 'swtoaas_ant', 'Anthropogenic aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))763 TYPE(ctrl_out), SAVE :: o_swsrfas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &764 'swsrfas_ant', 'Anthropogenic aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))765 TYPE(ctrl_out), SAVE :: o_swtoacs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &766 'swtoacs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 6) /))767 TYPE(ctrl_out), SAVE :: o_swsrfcs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &768 'swsrfcs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 6) /))769 TYPE(ctrl_out), SAVE :: o_swtoacf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &770 'swtoacf_nat', 'Natural aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 6) /))771 TYPE(ctrl_out), SAVE :: o_swsrfcf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &772 'swsrfcf_nat', 'Natural aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 6) /))773 TYPE(ctrl_out), SAVE :: o_swtoacf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &774 'swtoacf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 6) /))775 TYPE(ctrl_out), SAVE :: o_swsrfcf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &776 'swsrfcf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 6) /))777 TYPE(ctrl_out), SAVE :: o_swtoacf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &778 'swtoacf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at TOA', 'W/m2', (/ ('', i=1, 6) /))779 TYPE(ctrl_out), SAVE :: o_swsrfcf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10 /), &780 'swsrfcf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at SRF', 'W/m2', (/ ('', i=1, 6) /))781 TYPE(ctrl_out), SAVE :: o_cldncl = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &782 'cldncl', 'CDNC at top of liquid water cloud', 'm-3', (/ ('', i=1, 6) /))783 TYPE(ctrl_out), SAVE :: o_reffclwtop = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &784 'reffclwtop', 'Droplet effective radius at top of liquid water cloud', 'm', (/ ('', i=1, 6) /))785 TYPE(ctrl_out), SAVE :: o_cldnvi = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &786 'cldnvi', 'Column Integrated Cloud Droplet Number', 'm-2', (/ ('', i=1, 6) /))787 TYPE(ctrl_out), SAVE :: o_lcc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &788 'lcc', 'Cloud liquid fraction at top of cloud', '1', (/ ('', i=1, 6) /))715 (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 716 "Aerosol Optical depth at 550 nm "//name_aero(1),"1", (/ ('', i=1, 9) /)), & 717 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASPOMM', & 718 "Aerosol Optical depth at 550 nm "//name_aero(2),"1", (/ ('', i=1, 9) /)), & 719 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASSO4M', & 720 "Aerosol Optical depth at 550 nm "//name_aero(3),"1", (/ ('', i=1, 9) /)), & 721 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CSSO4M', & 722 "Aerosol Optical depth at 550 nm "//name_aero(4),"1", (/ ('', i=1, 9) /)), & 723 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_SSSSM', & 724 "Aerosol Optical depth at 550 nm "//name_aero(5),"1", (/ ('', i=1, 9) /)), & 725 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASSSM', & 726 "Aerosol Optical depth at 550 nm "//name_aero(6),"1", (/ ('', i=1, 9) /)), & 727 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CSSSM', & 728 "Aerosol Optical depth at 550 nm "//name_aero(7),"1", (/ ('', i=1, 9) /)), & 729 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CIDUSTM', & 730 "Aerosol Optical depth at 550 nm "//name_aero(8),"1", (/ ('', i=1, 9) /)), & 731 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_AIBCM', & 732 "Aerosol Optical depth at 550 nm "//name_aero(9),"1", (/ ('', i=1, 9) /)), & 733 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_AIPOMM', & 734 "Aerosol Optical depth at 550 nm "//name_aero(10),"1", (/ ('', i=1, 9) /)),& 735 ctrl_out((/ 2, 2, 10, 10, 10, 10, 11, 11, 11 /),'OD550_STRAT', & 736 "Aerosol Optical depth at 550 nm "//name_aero(11),"1", (/ ('', i=1, 9) /)) /) 737 TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 738 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 9) /)) 739 TYPE(ctrl_out), SAVE :: o_od865aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 740 'od865aer', 'Total aerosol optical depth at 870nm', '-', (/ ('', i=1, 9) /)) 741 TYPE(ctrl_out), SAVE :: o_absvisaer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 742 'absvisaer', 'Absorption aerosol visible optical depth', '-', (/ ('', i=1, 9) /)) 743 TYPE(ctrl_out), SAVE :: o_od550lt1aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 744 'od550lt1aer', 'Fine mode optical depth', '-', (/ ('', i=1, 9) /)) 745 TYPE(ctrl_out), SAVE :: o_sconcso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 746 'sconcso4', 'Surface Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 9) /)) 747 TYPE(ctrl_out), SAVE :: o_sconcoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 748 'sconcoa', 'Surface Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 9) /)) 749 TYPE(ctrl_out), SAVE :: o_sconcbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 750 'sconcbc', 'Surface Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 9) /)) 751 TYPE(ctrl_out), SAVE :: o_sconcss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 752 'sconcss', 'Surface Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 9) /)) 753 TYPE(ctrl_out), SAVE :: o_sconcdust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 754 'sconcdust', 'Surface Concentration of Dust ', 'kg/m3', (/ ('', i=1, 9) /)) 755 TYPE(ctrl_out), SAVE :: o_concso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 756 'concso4', 'Concentration of Sulfate ', 'kg/m3', (/ ('', i=1, 9) /)) 757 TYPE(ctrl_out), SAVE :: o_concoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 758 'concoa', 'Concentration of Organic Aerosol ', 'kg/m3', (/ ('', i=1, 9) /)) 759 TYPE(ctrl_out), SAVE :: o_concbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 760 'concbc', 'Concentration of Black Carbon ', 'kg/m3', (/ ('', i=1, 9) /)) 761 TYPE(ctrl_out), SAVE :: o_concss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 762 'concss', 'Concentration of Sea Salt ', 'kg/m3', (/ ('', i=1, 9) /)) 763 TYPE(ctrl_out), SAVE :: o_concdust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 764 'concdust', 'Concentration of Dust ', 'kg/m3', (/ ('', i=1, 9) /)) 765 TYPE(ctrl_out), SAVE :: o_loadso4 = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 766 'loadso4', 'Column Load of Sulfate ', 'kg/m2', (/ ('', i=1, 9) /)) 767 TYPE(ctrl_out), SAVE :: o_loadoa = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 768 'loadoa', 'Column Load of Organic Aerosol ', 'kg/m2', (/ ('', i=1, 9) /)) 769 TYPE(ctrl_out), SAVE :: o_loadbc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 770 'loadbc', 'Column Load of Black Carbon ', 'kg/m2', (/ ('', i=1, 9) /)) 771 TYPE(ctrl_out), SAVE :: o_loadss = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 772 'loadss', 'Column Load of Sea Salt ', 'kg/m2', (/ ('', i=1, 9) /)) 773 TYPE(ctrl_out), SAVE :: o_loaddust = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 774 'loaddust', 'Column Load of Dust ', 'kg/m2', (/ ('', i=1, 9) /)) 775 TYPE(ctrl_out), SAVE :: o_swtoaas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 776 'swtoaas_nat', 'Natural aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 777 TYPE(ctrl_out), SAVE :: o_swsrfas_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 778 'swsrfas_nat', 'Natural aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 779 TYPE(ctrl_out), SAVE :: o_swtoacs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 780 'swtoacs_nat', 'Natural aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 781 TYPE(ctrl_out), SAVE :: o_swsrfcs_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 782 'swsrfcs_nat', 'Natural aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 783 TYPE(ctrl_out), SAVE :: o_swtoaas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 784 'swtoaas_ant', 'Anthropogenic aerosol radiative forcing all-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 785 TYPE(ctrl_out), SAVE :: o_swsrfas_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 786 'swsrfas_ant', 'Anthropogenic aerosol radiative forcing all-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 787 TYPE(ctrl_out), SAVE :: o_swtoacs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 788 'swtoacs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at TOA', 'W/m2', (/ ('', i=1, 9) /)) 789 TYPE(ctrl_out), SAVE :: o_swsrfcs_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 790 'swsrfcs_ant', 'Anthropogenic aerosol radiative forcing clear-sky at SRF', 'W/m2', (/ ('', i=1, 9) /)) 791 TYPE(ctrl_out), SAVE :: o_swtoacf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 792 'swtoacf_nat', 'Natural aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 9) /)) 793 TYPE(ctrl_out), SAVE :: o_swsrfcf_nat = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 794 'swsrfcf_nat', 'Natural aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 9) /)) 795 TYPE(ctrl_out), SAVE :: o_swtoacf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 796 'swtoacf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at TOA', 'W/m2', (/ ('', i=1, 9) /)) 797 TYPE(ctrl_out), SAVE :: o_swsrfcf_ant = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 798 'swsrfcf_ant', 'Anthropogenic aerosol impact on cloud radiative forcing at SRF', 'W/m2', (/ ('', i=1, 9) /)) 799 TYPE(ctrl_out), SAVE :: o_swtoacf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 800 'swtoacf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at TOA', 'W/m2', (/ ('', i=1, 9) /)) 801 TYPE(ctrl_out), SAVE :: o_swsrfcf_zero = ctrl_out((/ 4, 6, 10, 10, 10, 10, 11, 11, 11 /), & 802 'swsrfcf_zero', 'Cloud radiative forcing (allsky-clearsky fluxes) at SRF', 'W/m2', (/ ('', i=1, 9) /)) 803 TYPE(ctrl_out), SAVE :: o_cldncl = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 804 'cldncl', 'CDNC at top of liquid water cloud', 'm-3', (/ ('', i=1, 9) /)) 805 TYPE(ctrl_out), SAVE :: o_reffclwtop = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 806 'reffclwtop', 'Droplet effective radius at top of liquid water cloud', 'm', (/ ('', i=1, 9) /)) 807 TYPE(ctrl_out), SAVE :: o_cldnvi = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 808 'cldnvi', 'Column Integrated Cloud Droplet Number', 'm-2', (/ ('', i=1, 9) /)) 809 TYPE(ctrl_out), SAVE :: o_lcc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 810 'lcc', 'Cloud liquid fraction at top of cloud', '1', (/ ('', i=1, 9) /)) 789 811 790 812 791 813 !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 792 TYPE(ctrl_out), SAVE :: o_ec550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &793 'ec550aer', 'Extinction at 550nm', 'm^-1', (/ ('', i=1, 6) /))794 TYPE(ctrl_out), SAVE :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &795 'lwcon', 'Cloud liquid water content', 'kg/kg', (/ ('', i=1, 6) /))796 TYPE(ctrl_out), SAVE :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &797 'iwcon', 'Cloud ice water content', 'kg/kg', (/ ('', i=1, 6) /))798 TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &799 'temp', 'Air temperature', 'K', (/ ('', i=1, 6) /))800 TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &801 'theta', 'Potential air temperature', 'K', (/ ('', i=1, 6) /))802 TYPE(ctrl_out), SAVE :: o_ovap = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &803 'ovap', 'Specific humidity', 'kg/kg', (/ ('', i=1, 6) /))804 TYPE(ctrl_out), SAVE :: o_ovapinit = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &805 'ovapinit', 'Specific humidity (begin of timestep)', 'kg/kg', (/ ('', i=1, 6) /))806 TYPE(ctrl_out), SAVE :: o_oliq = ctrl_out((/ 2, 3, 4, 10, 10, 10 /), &807 'oliq', 'Condensed water', 'kg/kg', (/ ('', i=1, 6) /))808 TYPE(ctrl_out), SAVE :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &809 'wvapp', '', '', (/ ('', i=1, 6) /))810 TYPE(ctrl_out), SAVE :: o_geop = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &811 'geop', 'Geopotential height', 'm2/s2', (/ ('', i=1, 6) /))812 TYPE(ctrl_out), SAVE :: o_vitu = ctrl_out((/ 2, 3, 4, 6, 10, 10 /), &813 'vitu', 'Zonal wind', 'm/s', (/ ('', i=1, 6) /))814 TYPE(ctrl_out), SAVE :: o_vitv = ctrl_out((/ 2, 3, 4, 6, 10, 10 /), &815 'vitv', 'Meridional wind', 'm/s', (/ ('', i=1, 6) /))816 TYPE(ctrl_out), SAVE :: o_vitw = ctrl_out((/ 2, 3, 10, 6, 10, 10 /), &817 'vitw', 'Vertical wind', 'Pa/s', (/ ('', i=1, 6) /))818 TYPE(ctrl_out), SAVE :: o_pres = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &819 'pres', 'Air pressure', 'Pa', (/ ('', i=1, 6) /))820 TYPE(ctrl_out), SAVE :: o_paprs = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &821 'paprs', 'Air pressure Inter-Couches', 'Pa', (/ ('', i=1, 6) /))822 TYPE(ctrl_out), SAVE :: o_mass = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &823 'mass', 'Masse Couches', 'kg/m2', (/ ('', i=1, 6) /))824 TYPE(ctrl_out), SAVE :: o_zfull = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &825 'zfull', 'Altitude of full pressure levels', 'm', (/ ('', i=1, 6) /))826 TYPE(ctrl_out), SAVE :: o_zhalf = ctrl_out((/ 2, 3, 10, 10, 10, 10 /), &827 'zhalf', 'Altitude of half pressure levels', 'm', (/ ('', i=1, 6) /))828 TYPE(ctrl_out), SAVE :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &829 'rneb', 'Cloud fraction', '-', (/ ('', i=1, 6) /))830 TYPE(ctrl_out), SAVE :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &831 'rnebcon', 'Convective Cloud Fraction', '-', (/ ('', i=1, 6) /))832 TYPE(ctrl_out), SAVE :: o_rnebls = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &833 'rnebls', 'LS Cloud fraction', '-', (/ ('', i=1, 6) /))834 TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10 /), &835 'rhum', 'Relative humidity', '-', (/ ('', i=1, 6) /))836 TYPE(ctrl_out), SAVE :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &837 'ozone', 'Ozone mole fraction', '-', (/ ('', i=1, 6) /))838 TYPE(ctrl_out), SAVE :: o_ozone_light = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &839 'ozone_daylight', 'Daylight ozone mole fraction', '-', (/ ('', i=1, 6) /))840 TYPE(ctrl_out), SAVE :: o_upwd = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &841 'upwd', 'saturated updraft', 'kg/m2/s', (/ ('', i=1, 6) /))842 TYPE(ctrl_out), SAVE :: o_dtphy = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &843 'dtphy', 'Physics dT', 'K/s', (/ ('', i=1, 6) /))844 TYPE(ctrl_out), SAVE :: o_dqphy = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &845 'dqphy', 'Physics dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))846 TYPE(ctrl_out), SAVE :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &847 'pr_con_l', 'Convective precipitation lic', ' ', (/ ('', i=1, 6) /))848 TYPE(ctrl_out), SAVE :: o_pr_con_i = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &849 'pr_con_i', 'Convective precipitation ice', ' ', (/ ('', i=1, 6) /))850 TYPE(ctrl_out), SAVE :: o_pr_lsc_l = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &851 'pr_lsc_l', 'Large scale precipitation lic', ' ', (/ ('', i=1, 6) /))852 TYPE(ctrl_out), SAVE :: o_pr_lsc_i = ctrl_out((/ 2, 10, 10, 10, 10, 10 /), &853 'pr_lsc_i', 'Large scale precipitation ice', ' ', (/ ('', i=1, 6) /))854 TYPE(ctrl_out), SAVE :: o_re = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), &855 're', 'Cloud droplet effective radius', 'um', (/ ('', i=1, 6) /))856 TYPE(ctrl_out), SAVE :: o_fl = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), &857 'fl', 'Denominator of Cloud droplet effective radius', ' ', (/ ('', i=1, 6) /))858 TYPE(ctrl_out), SAVE :: o_scdnc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &859 'scdnc', 'Cloud droplet number concentration', 'm-3', (/ ('', i=1, 6) /))860 TYPE(ctrl_out), SAVE :: o_reffclws = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &861 'reffclws', 'Stratiform Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 6) /))862 TYPE(ctrl_out), SAVE :: o_reffclwc = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &863 'reffclwc', 'Convective Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 6) /))864 TYPE(ctrl_out), SAVE :: o_lcc3d = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &865 'lcc3d', 'Cloud liquid fraction', '1', (/ ('', i=1, 6) /))866 TYPE(ctrl_out), SAVE :: o_lcc3dcon = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &867 'lcc3dcon', 'Convective cloud liquid fraction', '1', (/ ('', i=1, 6) /))868 TYPE(ctrl_out), SAVE :: o_lcc3dstra = ctrl_out((/ 2, 6, 10, 10, 10, 10 /), &869 'lcc3dstra', 'Stratiform cloud liquid fraction', '1', (/ ('', i=1, 6) /))814 TYPE(ctrl_out), SAVE :: o_ec550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 815 'ec550aer', 'Extinction at 550nm', 'm^-1', (/ ('', i=1, 9) /)) 816 TYPE(ctrl_out), SAVE :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 817 'lwcon', 'Cloud liquid water content', 'kg/kg', (/ ('', i=1, 9) /)) 818 TYPE(ctrl_out), SAVE :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 819 'iwcon', 'Cloud ice water content', 'kg/kg', (/ ('', i=1, 9) /)) 820 TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 821 'temp', 'Air temperature', 'K', (/ ('', i=1, 9) /)) 822 TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 823 'theta', 'Potential air temperature', 'K', (/ ('', i=1, 9) /)) 824 TYPE(ctrl_out), SAVE :: o_ovap = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 825 'ovap', 'Specific humidity', 'kg/kg', (/ ('', i=1, 9) /)) 826 TYPE(ctrl_out), SAVE :: o_ovapinit = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 827 'ovapinit', 'Specific humidity (begin of timestep)', 'kg/kg', (/ ('', i=1, 9) /)) 828 TYPE(ctrl_out), SAVE :: o_oliq = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11 /), & 829 'oliq', 'Condensed water', 'kg/kg', (/ ('', i=1, 9) /)) 830 TYPE(ctrl_out), SAVE :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 831 'wvapp', '', '', (/ ('', i=1, 9) /)) 832 TYPE(ctrl_out), SAVE :: o_geop = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 833 'geop', 'Geopotential height', 'm2/s2', (/ ('', i=1, 9) /)) 834 TYPE(ctrl_out), SAVE :: o_vitu = ctrl_out((/ 2, 3, 4, 6, 10, 10, 11, 11, 11 /), & 835 'vitu', 'Zonal wind', 'm/s', (/ ('', i=1, 9) /)) 836 TYPE(ctrl_out), SAVE :: o_vitv = ctrl_out((/ 2, 3, 4, 6, 10, 10, 11, 11, 11 /), & 837 'vitv', 'Meridional wind', 'm/s', (/ ('', i=1, 9) /)) 838 TYPE(ctrl_out), SAVE :: o_vitw = ctrl_out((/ 2, 3, 10, 6, 10, 10, 11, 11, 11 /), & 839 'vitw', 'Vertical wind', 'Pa/s', (/ ('', i=1, 9) /)) 840 TYPE(ctrl_out), SAVE :: o_pres = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 841 'pres', 'Air pressure', 'Pa', (/ ('', i=1, 9) /)) 842 TYPE(ctrl_out), SAVE :: o_paprs = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 843 'paprs', 'Air pressure Inter-Couches', 'Pa', (/ ('', i=1, 9) /)) 844 TYPE(ctrl_out), SAVE :: o_mass = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 845 'mass', 'Masse Couches', 'kg/m2', (/ ('', i=1, 9) /)) 846 TYPE(ctrl_out), SAVE :: o_zfull = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 847 'zfull', 'Altitude of full pressure levels', 'm', (/ ('', i=1, 9) /)) 848 TYPE(ctrl_out), SAVE :: o_zhalf = ctrl_out((/ 2, 3, 10, 10, 10, 10, 11, 11, 11 /), & 849 'zhalf', 'Altitude of half pressure levels', 'm', (/ ('', i=1, 9) /)) 850 TYPE(ctrl_out), SAVE :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 851 'rneb', 'Cloud fraction', '-', (/ ('', i=1, 9) /)) 852 TYPE(ctrl_out), SAVE :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 853 'rnebcon', 'Convective Cloud Fraction', '-', (/ ('', i=1, 9) /)) 854 TYPE(ctrl_out), SAVE :: o_rnebls = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 855 'rnebls', 'LS Cloud fraction', '-', (/ ('', i=1, 9) /)) 856 TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11 /), & 857 'rhum', 'Relative humidity', '-', (/ ('', i=1, 9) /)) 858 TYPE(ctrl_out), SAVE :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 859 'ozone', 'Ozone mole fraction', '-', (/ ('', i=1, 9) /)) 860 TYPE(ctrl_out), SAVE :: o_ozone_light = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 861 'ozone_daylight', 'Daylight ozone mole fraction', '-', (/ ('', i=1, 9) /)) 862 TYPE(ctrl_out), SAVE :: o_upwd = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 863 'upwd', 'saturated updraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 864 TYPE(ctrl_out), SAVE :: o_dtphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 865 'dtphy', 'Physics dT', 'K/s', (/ ('', i=1, 9) /)) 866 TYPE(ctrl_out), SAVE :: o_dqphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 867 'dqphy', 'Physics dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 868 TYPE(ctrl_out), SAVE :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 869 'pr_con_l', 'Convective precipitation lic', ' ', (/ ('', i=1, 9) /)) 870 TYPE(ctrl_out), SAVE :: o_pr_con_i = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 871 'pr_con_i', 'Convective precipitation ice', ' ', (/ ('', i=1, 9) /)) 872 TYPE(ctrl_out), SAVE :: o_pr_lsc_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 873 'pr_lsc_l', 'Large scale precipitation lic', ' ', (/ ('', i=1, 9) /)) 874 TYPE(ctrl_out), SAVE :: o_pr_lsc_i = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), & 875 'pr_lsc_i', 'Large scale precipitation ice', ' ', (/ ('', i=1, 9) /)) 876 TYPE(ctrl_out), SAVE :: o_re = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 877 're', 'Cloud droplet effective radius', 'um', (/ ('', i=1, 9) /)) 878 TYPE(ctrl_out), SAVE :: o_fl = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 879 'fl', 'Denominator of Cloud droplet effective radius', ' ', (/ ('', i=1, 9) /)) 880 TYPE(ctrl_out), SAVE :: o_scdnc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 881 'scdnc', 'Cloud droplet number concentration', 'm-3', (/ ('', i=1, 9) /)) 882 TYPE(ctrl_out), SAVE :: o_reffclws = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 883 'reffclws', 'Stratiform Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 9) /)) 884 TYPE(ctrl_out), SAVE :: o_reffclwc = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 885 'reffclwc', 'Convective Cloud Droplet Effective Radius (aerosol diags.)', 'm', (/ ('', i=1, 9) /)) 886 TYPE(ctrl_out), SAVE :: o_lcc3d = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 887 'lcc3d', 'Cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 888 TYPE(ctrl_out), SAVE :: o_lcc3dcon = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 889 'lcc3dcon', 'Convective cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 890 TYPE(ctrl_out), SAVE :: o_lcc3dstra = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 891 'lcc3dstra', 'Stratiform cloud liquid fraction', '1', (/ ('', i=1, 9) /)) 870 892 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 871 893 872 894 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_albe_srf = (/ & 873 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_ter', "Albedo VIS surf. "//clnsurf(1),"-", (/ ('', i=1, 6) /)), &874 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_lic', "Albedo VIS surf. "//clnsurf(2),"-", (/ ('', i=1, 6) /)), &875 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_oce', "Albedo VIS surf. "//clnsurf(3),"-", (/ ('', i=1, 6) /)), &876 ctrl_out((/ 3, 7, 10, 7, 10, 10 /),'albe_sic', "Albedo VIS surf. "//clnsurf(4),"-", (/ ('', i=1, 6) /)) /)895 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_ter', "Albedo VIS surf. "//clnsurf(1),"-", (/ ('', i=1, 9) /)), & 896 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_lic', "Albedo VIS surf. "//clnsurf(2),"-", (/ ('', i=1, 9) /)), & 897 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_oce', "Albedo VIS surf. "//clnsurf(3),"-", (/ ('', i=1, 9) /)), & 898 ctrl_out((/ 3, 7, 10, 7, 10, 10, 11, 11, 11 /),'albe_sic', "Albedo VIS surf. "//clnsurf(4),"-", (/ ('', i=1, 9) /)) /) 877 899 878 900 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_ages_srf = (/ & 879 ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ages_ter', "Snow age", "day", (/ ('', i=1, 6) /)), &880 ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'ages_lic', "Snow age", "day", (/ ('', i=1, 6) /)), &881 ctrl_out((/ 10, 10, 10, 10, 10, 10 /),'ages_oce',"Snow age", "day", (/ ('', i=1, 6) /)), &882 ctrl_out((/ 3, 10, 10, 10, 10, 10 /),'ages_sic',"Snow age", "day", (/ ('', i=1, 6) /)) /)901 ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_ter', "Snow age", "day", (/ ('', i=1, 9) /)), & 902 ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_lic', "Snow age", "day", (/ ('', i=1, 9) /)), & 903 ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_oce',"Snow age", "day", (/ ('', i=1, 9) /)), & 904 ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /),'ages_sic',"Snow age", "day", (/ ('', i=1, 9) /)) /) 883 905 884 906 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_rugs_srf = (/ & 885 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_ter', "Surface roughness "//clnsurf(1),"m", (/ ('', i=1, 6) /)), &886 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_lic', "Surface roughness "//clnsurf(2),"m", (/ ('', i=1, 6) /)), &887 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_oce', "Surface roughness "//clnsurf(3),"m", (/ ('', i=1, 6) /)), &888 ctrl_out((/ 3, 6, 10, 10, 10, 10 /),'rugs_sic', "Surface roughness "//clnsurf(4),"m", (/ ('', i=1, 6) /)) /)889 890 TYPE(ctrl_out), SAVE :: o_alb1 = ctrl_out((/ 3, 10, 10, 10, 10, 10 /), &891 'alb1', 'Surface VIS albedo', '-', (/ ('', i=1, 6) /))892 TYPE(ctrl_out), SAVE :: o_alb2 = ctrl_out((/ 3, 10, 10, 10, 10, 10 /), &893 'alb2', 'Surface Near IR albedo', '-', (/ ('', i=1, 6) /))894 TYPE(ctrl_out), SAVE :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &895 'clwcon', 'Convective Cloud Liquid water content', 'kg/kg', (/ ('', i=1, 6) /))896 TYPE(ctrl_out), SAVE :: o_Ma = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &897 'Ma', 'undilute adiab updraft', 'kg/m2/s', (/ ('', i=1, 6) /))898 TYPE(ctrl_out), SAVE :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &899 'dnwd', 'saturated downdraft', 'kg/m2/s', (/ ('', i=1, 6) /))900 TYPE(ctrl_out), SAVE :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &901 'dnwd0', 'unsat. downdraft', 'kg/m2/s', (/ ('', i=1, 6) /))902 TYPE(ctrl_out), SAVE :: o_mc = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &903 'mc', 'Convective mass flux', 'kg/m2/s', (/ ('', i=1, 6) /))904 TYPE(ctrl_out), SAVE :: o_ftime_con = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &905 906 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /))907 TYPE(ctrl_out), SAVE :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &908 'dtdyn', 'Dynamics dT', 'K/s', (/ ('', i=1, 6) /))909 TYPE(ctrl_out), SAVE :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &910 'dqdyn', 'Dynamics dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))911 TYPE(ctrl_out), SAVE :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &912 'dudyn', 'Dynamics dU', 'm/s2', (/ ('', i=1, 6) /))913 TYPE(ctrl_out), SAVE :: o_dvdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &914 'dvdyn', 'Dynamics dV', 'm/s2', (/ ('', i=1, 6) /))915 TYPE(ctrl_out), SAVE :: o_dtcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &916 'dtcon', 'Convection dT', 'K/s', (/ ('', i=1, 6) /))917 TYPE(ctrl_out), SAVE :: o_ducon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &918 'ducon', 'Convection du', 'm/s2', (/ ('', i=1, 6) /))919 TYPE(ctrl_out), SAVE :: o_dvcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &920 'dvcon', 'Convection dv', 'm/s2', (/ ('', i=1, 6) /))921 TYPE(ctrl_out), SAVE :: o_dqcon = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &922 'dqcon', 'Convection dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))923 TYPE(ctrl_out), SAVE :: o_dtwak = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &924 'dtwak', 'Wake dT', 'K/s', (/ ('', i=1, 6) /))925 TYPE(ctrl_out), SAVE :: o_dqwak = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &926 'dqwak', 'Wake dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))927 TYPE(ctrl_out), SAVE :: o_wake_h = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &928 'wake_h', 'wake_h', '-', (/ ('', i=1, 6) /))929 TYPE(ctrl_out), SAVE :: o_wake_s = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &930 'wake_s', 'wake_s', '-', (/ ('', i=1, 6) /))931 TYPE(ctrl_out), SAVE :: o_wake_deltat = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &932 'wake_deltat', 'wake_deltat', ' ', (/ ('', i=1, 6) /))933 TYPE(ctrl_out), SAVE :: o_wake_deltaq = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &934 'wake_deltaq', 'wake_deltaq', ' ', (/ ('', i=1, 6) /))935 TYPE(ctrl_out), SAVE :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &936 'wake_omg', 'wake_omg', ' ', (/ ('', i=1, 6) /))937 TYPE(ctrl_out), SAVE :: o_wdtrainA = ctrl_out((/ 4, 1, 10, 4, 1, 10 /), &938 'wdtrainA', 'precipitation from AA', '-', (/ ('', i=1, 6) /))939 TYPE(ctrl_out), SAVE :: o_wdtrainM = ctrl_out((/ 4, 1, 10, 4, 1, 10 /), &940 'wdtrainM', 'precipitation from mixture', '-', (/ ('', i=1, 6) /))941 TYPE(ctrl_out), SAVE :: o_Vprecip = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &942 'Vprecip', 'precipitation vertical profile', '-', (/ ('', i=1, 6) /))943 TYPE(ctrl_out), SAVE :: o_ftd = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &944 'ftd', 'tend temp due aux descentes precip', '-', (/ ('', i=1, 6) /))945 TYPE(ctrl_out), SAVE :: o_fqd = ctrl_out((/ 4, 5, 10, 10, 10, 10 /), &946 'fqd', 'tend vap eau due aux descentes precip', '-', (/ ('', i=1, 6) /))947 TYPE(ctrl_out), SAVE :: o_dtlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &948 'dtlsc', 'Condensation dT', 'K/s', (/ ('', i=1, 6) /))949 TYPE(ctrl_out), SAVE :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &950 'dtlschr', 'Large-scale condensational heating rate', 'K/s', (/ ('', i=1, 6) /))951 TYPE(ctrl_out), SAVE :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &952 'dqlsc', 'Condensation dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))953 TYPE(ctrl_out), SAVE :: o_beta_prec = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &954 'beta_prec', 'LS Conversion rate to prec', '(kg/kg)/s', (/ ('', i=1, 6) /))955 TYPE(ctrl_out), SAVE :: o_dtvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &956 'dtvdf', 'Boundary-layer dT', 'K/s', (/ ('', i=1, 6) /))957 TYPE(ctrl_out), SAVE :: o_dtdis = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &958 'dtdis', 'TKE dissipation dT', 'K/s', (/ ('', i=1, 6) /))959 TYPE(ctrl_out), SAVE :: o_dqvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &960 'dqvdf', 'Boundary-layer dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))961 TYPE(ctrl_out), SAVE :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &962 'dteva', 'Reevaporation dT', 'K/s', (/ ('', i=1, 6) /))963 TYPE(ctrl_out), SAVE :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &964 'dqeva', 'Reevaporation dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))907 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_ter', "Surface roughness "//clnsurf(1),"m", (/ ('', i=1, 9) /)), & 908 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_lic', "Surface roughness "//clnsurf(2),"m", (/ ('', i=1, 9) /)), & 909 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_oce', "Surface roughness "//clnsurf(3),"m", (/ ('', i=1, 9) /)), & 910 ctrl_out((/ 3, 6, 10, 10, 10, 10, 11, 11, 11 /),'rugs_sic', "Surface roughness "//clnsurf(4),"m", (/ ('', i=1, 9) /)) /) 911 912 TYPE(ctrl_out), SAVE :: o_alb1 = ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /), & 913 'alb1', 'Surface VIS albedo', '-', (/ ('', i=1, 9) /)) 914 TYPE(ctrl_out), SAVE :: o_alb2 = ctrl_out((/ 3, 10, 10, 10, 10, 10, 11, 11, 11 /), & 915 'alb2', 'Surface Near IR albedo', '-', (/ ('', i=1, 9) /)) 916 TYPE(ctrl_out), SAVE :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 917 'clwcon', 'Convective Cloud Liquid water content', 'kg/kg', (/ ('', i=1, 9) /)) 918 TYPE(ctrl_out), SAVE :: o_Ma = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 919 'Ma', 'undilute adiab updraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 920 TYPE(ctrl_out), SAVE :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 921 'dnwd', 'saturated downdraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 922 TYPE(ctrl_out), SAVE :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 923 'dnwd0', 'unsat. downdraft', 'kg/m2/s', (/ ('', i=1, 9) /)) 924 TYPE(ctrl_out), SAVE :: o_mc = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 925 'mc', 'Convective mass flux', 'kg/m2/s', (/ ('', i=1, 9) /)) 926 TYPE(ctrl_out), SAVE :: o_ftime_con = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 927 'ftime_con', 'Fraction of time convection Occurs', ' ', & 928 (/ 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)', 'inst(X)' /)) 929 TYPE(ctrl_out), SAVE :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 930 'dtdyn', 'Dynamics dT', 'K/s', (/ ('', i=1, 9) /)) 931 TYPE(ctrl_out), SAVE :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 932 'dqdyn', 'Dynamics dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 933 TYPE(ctrl_out), SAVE :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 934 'dudyn', 'Dynamics dU', 'm/s2', (/ ('', i=1, 9) /)) 935 TYPE(ctrl_out), SAVE :: o_dvdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 936 'dvdyn', 'Dynamics dV', 'm/s2', (/ ('', i=1, 9) /)) 937 TYPE(ctrl_out), SAVE :: o_dtcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 938 'dtcon', 'Convection dT', 'K/s', (/ ('', i=1, 9) /)) 939 TYPE(ctrl_out), SAVE :: o_ducon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 940 'ducon', 'Convection du', 'm/s2', (/ ('', i=1, 9) /)) 941 TYPE(ctrl_out), SAVE :: o_dvcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 942 'dvcon', 'Convection dv', 'm/s2', (/ ('', i=1, 9) /)) 943 TYPE(ctrl_out), SAVE :: o_dqcon = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 944 'dqcon', 'Convection dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 945 TYPE(ctrl_out), SAVE :: o_dtwak = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 946 'dtwak', 'Wake dT', 'K/s', (/ ('', i=1, 9) /)) 947 TYPE(ctrl_out), SAVE :: o_dqwak = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 948 'dqwak', 'Wake dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 949 TYPE(ctrl_out), SAVE :: o_wake_h = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 950 'wake_h', 'wake_h', '-', (/ ('', i=1, 9) /)) 951 TYPE(ctrl_out), SAVE :: o_wake_s = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 952 'wake_s', 'wake_s', '-', (/ ('', i=1, 9) /)) 953 TYPE(ctrl_out), SAVE :: o_wake_deltat = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 954 'wake_deltat', 'wake_deltat', ' ', (/ ('', i=1, 9) /)) 955 TYPE(ctrl_out), SAVE :: o_wake_deltaq = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 956 'wake_deltaq', 'wake_deltaq', ' ', (/ ('', i=1, 9) /)) 957 TYPE(ctrl_out), SAVE :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 958 'wake_omg', 'wake_omg', ' ', (/ ('', i=1, 9) /)) 959 TYPE(ctrl_out), SAVE :: o_wdtrainA = ctrl_out((/ 4, 1, 10, 4, 1, 10, 11, 11, 110 /), & 960 'wdtrainA', 'precipitation from AA', '-', (/ ('', i=1, 9) /)) 961 TYPE(ctrl_out), SAVE :: o_wdtrainM = ctrl_out((/ 4, 1, 10, 4, 1, 10, 11, 11, 110 /), & 962 'wdtrainM', 'precipitation from mixture', '-', (/ ('', i=1, 9) /)) 963 TYPE(ctrl_out), SAVE :: o_Vprecip = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 964 'Vprecip', 'precipitation vertical profile', '-', (/ ('', i=1, 9) /)) 965 TYPE(ctrl_out), SAVE :: o_ftd = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 966 'ftd', 'tend temp due aux descentes precip', '-', (/ ('', i=1, 9) /)) 967 TYPE(ctrl_out), SAVE :: o_fqd = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11 /), & 968 'fqd', 'tend vap eau due aux descentes precip', '-', (/ ('', i=1, 9) /)) 969 TYPE(ctrl_out), SAVE :: o_dtlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 970 'dtlsc', 'Condensation dT', 'K/s', (/ ('', i=1, 9) /)) 971 TYPE(ctrl_out), SAVE :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 972 'dtlschr', 'Large-scale condensational heating rate', 'K/s', (/ ('', i=1, 9) /)) 973 TYPE(ctrl_out), SAVE :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 974 'dqlsc', 'Condensation dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 975 TYPE(ctrl_out), SAVE :: o_beta_prec = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 976 'beta_prec', 'LS Conversion rate to prec', '(kg/kg)/s', (/ ('', i=1, 9) /)) 977 TYPE(ctrl_out), SAVE :: o_dtvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 978 'dtvdf', 'Boundary-layer dT', 'K/s', (/ ('', i=1, 9) /)) 979 TYPE(ctrl_out), SAVE :: o_dtdis = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 980 'dtdis', 'TKE dissipation dT', 'K/s', (/ ('', i=1, 9) /)) 981 TYPE(ctrl_out), SAVE :: o_dqvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 982 'dqvdf', 'Boundary-layer dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 983 TYPE(ctrl_out), SAVE :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 984 'dteva', 'Reevaporation dT', 'K/s', (/ ('', i=1, 9) /)) 985 TYPE(ctrl_out), SAVE :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 986 'dqeva', 'Reevaporation dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 965 987 966 988 !!!!!!!!!!!!!!!! Specifique thermiques 967 TYPE(ctrl_out), SAVE :: o_dqlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &968 'dqlscth', 'dQ therm.', '(kg/kg)/s', (/ ('', i=1, 6) /))969 TYPE(ctrl_out), SAVE :: o_dqlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &970 'dqlscst', 'dQ strat.', '(kg/kg)/s', (/ ('', i=1, 6) /))971 TYPE(ctrl_out), SAVE :: o_dtlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &972 'dtlscth', 'dQ therm.', 'K/s', (/ ('', i=1, 6) /))973 TYPE(ctrl_out), SAVE :: o_dtlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &974 'dtlscst', 'dQ strat.', 'K/s', (/ ('', i=1, 6) /))975 TYPE(ctrl_out), SAVE :: o_plulth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &976 'plulth', 'Rainfall therm.', 'K/s', (/ ('', i=1, 6) /))977 TYPE(ctrl_out), SAVE :: o_plulst = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &978 'plulst', 'Rainfall strat.', 'K/s', (/ ('', i=1, 6) /))979 TYPE(ctrl_out), SAVE :: o_lmaxth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &980 'lmaxth', "Upper level thermals", "", (/ ('', i=1, 6) /))981 TYPE(ctrl_out), SAVE :: o_ptconvth = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &982 'ptconvth', 'POINTS CONVECTIFS therm.', ' ', (/ ('', i=1, 6) /))989 TYPE(ctrl_out), SAVE :: o_dqlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 990 'dqlscth', 'dQ therm.', '(kg/kg)/s', (/ ('', i=1, 9) /)) 991 TYPE(ctrl_out), SAVE :: o_dqlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 992 'dqlscst', 'dQ strat.', '(kg/kg)/s', (/ ('', i=1, 9) /)) 993 TYPE(ctrl_out), SAVE :: o_dtlscth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 994 'dtlscth', 'dQ therm.', 'K/s', (/ ('', i=1, 9) /)) 995 TYPE(ctrl_out), SAVE :: o_dtlscst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 996 'dtlscst', 'dQ strat.', 'K/s', (/ ('', i=1, 9) /)) 997 TYPE(ctrl_out), SAVE :: o_plulth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 998 'plulth', 'Rainfall therm.', 'K/s', (/ ('', i=1, 9) /)) 999 TYPE(ctrl_out), SAVE :: o_plulst = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1000 'plulst', 'Rainfall strat.', 'K/s', (/ ('', i=1, 9) /)) 1001 TYPE(ctrl_out), SAVE :: o_lmaxth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1002 'lmaxth', "Upper level thermals", "", (/ ('', i=1, 9) /)) 1003 TYPE(ctrl_out), SAVE :: o_ptconvth = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1004 'ptconvth', 'POINTS CONVECTIFS therm.', ' ', (/ ('', i=1, 9) /)) 983 1005 !!!!!!!!!!!!!!!!!!!!!!!! 984 TYPE(ctrl_out), SAVE :: o_ptconv = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &985 'ptconv', 'POINTS CONVECTIFS', ' ', (/ ('', i=1, 6) /))986 TYPE(ctrl_out), SAVE :: o_ratqs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &987 'ratqs', 'RATQS', ' ', (/ ('', i=1, 6) /))988 TYPE(ctrl_out), SAVE :: o_dtthe = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &989 'dtthe', 'Thermal dT', 'K/s', (/ ('', i=1, 6) /))990 TYPE(ctrl_out), SAVE :: o_f_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &991 'f_th', 'Thermal plume mass flux', 'kg/(m2*s)', (/ ('', i=1, 6) /))992 TYPE(ctrl_out), SAVE :: o_e_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &993 'e_th', 'Thermal plume entrainment', 'K/s', (/ ('', i=1, 6) /))994 TYPE(ctrl_out), SAVE :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &995 'w_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 6) /))996 TYPE(ctrl_out), SAVE :: o_lambda_th = ctrl_out((/ 10, 10, 10, 10, 10, 10 /), &997 'lambda_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 6) /))998 TYPE(ctrl_out), SAVE :: o_ftime_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &999 'ftime_th', 'Fraction of time Shallow convection occurs', ' ', (/ ('', i=1, 6) /))1000 TYPE(ctrl_out), SAVE :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1001 'q_th', 'Thermal plume total humidity', 'kg/kg', (/ ('', i=1, 6) /))1002 TYPE(ctrl_out), SAVE :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1003 'a_th', "Thermal plume fraction", "", (/ ('', i=1, 6) /))1004 TYPE(ctrl_out), SAVE :: o_d_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1005 'd_th', 'Thermal plume detrainment', 'K/s', (/ ('', i=1, 6) /))1006 TYPE(ctrl_out), SAVE :: o_f0_th = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1007 'f0_th', 'Thermal closure mass flux', 'K/s', (/ ('', i=1, 6) /))1008 TYPE(ctrl_out), SAVE :: o_zmax_th = ctrl_out((/ 4, 4, 4, 5, 10, 10 /), &1009 'zmax_th', 'Thermal plume height', 'K/s', (/ ('', i=1, 6) /))1010 TYPE(ctrl_out), SAVE :: o_dqthe = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1011 'dqthe', 'Thermal dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))1012 TYPE(ctrl_out), SAVE :: o_dtajs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1013 'dtajs', 'Dry adjust. dT', 'K/s', (/ ('', i=1, 6) /))1014 TYPE(ctrl_out), SAVE :: o_dqajs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1015 'dqajs', 'Dry adjust. dQ', '(kg/kg)/s', (/ ('', i=1, 6) /))1016 TYPE(ctrl_out), SAVE :: o_dtswr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1017 'dtswr', 'SW radiation dT', 'K/s', (/ ('', i=1, 6) /))1018 TYPE(ctrl_out), SAVE :: o_dtsw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1019 'dtsw0', 'CS SW radiation dT', 'K/s', (/ ('', i=1, 6) /))1020 TYPE(ctrl_out), SAVE :: o_dtlwr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1021 'dtlwr', 'LW radiation dT', 'K/s', (/ ('', i=1, 6) /))1022 TYPE(ctrl_out), SAVE :: o_dtlw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1023 'dtlw0', 'CS LW radiation dT', 'K/s', (/ ('', i=1, 6) /))1024 TYPE(ctrl_out), SAVE :: o_dtec = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1025 'dtec', 'Cinetic dissip dT', 'K/s', (/ ('', i=1, 6) /))1026 TYPE(ctrl_out), SAVE :: o_duvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1027 'duvdf', 'Boundary-layer dU', 'm/s2', (/ ('', i=1, 6) /))1028 TYPE(ctrl_out), SAVE :: o_dvvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1029 'dvvdf', 'Boundary-layer dV', 'm/s2', (/ ('', i=1, 6) /))1030 TYPE(ctrl_out), SAVE :: o_duoro = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1031 'duoro', 'Orography dU', 'm/s2', (/ ('', i=1, 6) /))1032 TYPE(ctrl_out), SAVE :: o_dvoro = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1033 'dvoro', 'Orography dV', 'm/s2', (/ ('', i=1, 6) /))1034 TYPE(ctrl_out), SAVE :: o_dulif = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1035 'dulif', 'Orography dU', 'm/s2', (/ ('', i=1, 6) /))1036 TYPE(ctrl_out), SAVE :: o_dvlif = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1037 'dvlif', 'Orography dV', 'm/s2', (/ ('', i=1, 6) /))1038 TYPE(ctrl_out), SAVE :: o_duhin = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1039 'duhin', 'Hines GWD dU', 'm/s2', (/ ('', i=1, 6) /))1040 TYPE(ctrl_out), SAVE :: o_dvhin = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1041 'dvhin', 'Hines GWD dV', 'm/s2', (/ ('', i=1, 6) /))1042 TYPE(ctrl_out), SAVE :: o_dtoro = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1043 'dtoro', 'Orography dT', 'K/s', (/ ('', i=1, 6) /))1044 TYPE(ctrl_out), SAVE :: o_dtlif = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1045 'dtlif', 'Orography dT', 'K/s', (/ ('', i=1, 6) /))1046 TYPE(ctrl_out), SAVE :: o_dthin = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), &1047 'dthin', 'Hines GWD dT', 'K/s', (/ ('', i=1, 6) /))1006 TYPE(ctrl_out), SAVE :: o_ptconv = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1007 'ptconv', 'POINTS CONVECTIFS', ' ', (/ ('', i=1, 9) /)) 1008 TYPE(ctrl_out), SAVE :: o_ratqs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1009 'ratqs', 'RATQS', ' ', (/ ('', i=1, 9) /)) 1010 TYPE(ctrl_out), SAVE :: o_dtthe = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1011 'dtthe', 'Thermal dT', 'K/s', (/ ('', i=1, 9) /)) 1012 TYPE(ctrl_out), SAVE :: o_f_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1013 'f_th', 'Thermal plume mass flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1014 TYPE(ctrl_out), SAVE :: o_e_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1015 'e_th', 'Thermal plume entrainment', 'K/s', (/ ('', i=1, 9) /)) 1016 TYPE(ctrl_out), SAVE :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1017 'w_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 9) /)) 1018 TYPE(ctrl_out), SAVE :: o_lambda_th = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1019 'lambda_th', 'Thermal plume vertical velocity', 'm/s', (/ ('', i=1, 9) /)) 1020 TYPE(ctrl_out), SAVE :: o_ftime_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1021 'ftime_th', 'Fraction of time Shallow convection occurs', ' ', (/ ('', i=1, 9) /)) 1022 TYPE(ctrl_out), SAVE :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1023 'q_th', 'Thermal plume total humidity', 'kg/kg', (/ ('', i=1, 9) /)) 1024 TYPE(ctrl_out), SAVE :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1025 'a_th', "Thermal plume fraction", "", (/ ('', i=1, 9) /)) 1026 TYPE(ctrl_out), SAVE :: o_d_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1027 'd_th', 'Thermal plume detrainment', 'K/s', (/ ('', i=1, 9) /)) 1028 TYPE(ctrl_out), SAVE :: o_f0_th = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1029 'f0_th', 'Thermal closure mass flux', 'K/s', (/ ('', i=1, 9) /)) 1030 TYPE(ctrl_out), SAVE :: o_zmax_th = ctrl_out((/ 4, 4, 4, 5, 10, 10, 11, 11, 11 /), & 1031 'zmax_th', 'Thermal plume height', 'K/s', (/ ('', i=1, 9) /)) 1032 TYPE(ctrl_out), SAVE :: o_dqthe = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1033 'dqthe', 'Thermal dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 1034 TYPE(ctrl_out), SAVE :: o_dtajs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1035 'dtajs', 'Dry adjust. dT', 'K/s', (/ ('', i=1, 9) /)) 1036 TYPE(ctrl_out), SAVE :: o_dqajs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1037 'dqajs', 'Dry adjust. dQ', '(kg/kg)/s', (/ ('', i=1, 9) /)) 1038 TYPE(ctrl_out), SAVE :: o_dtswr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1039 'dtswr', 'SW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1040 TYPE(ctrl_out), SAVE :: o_dtsw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1041 'dtsw0', 'CS SW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1042 TYPE(ctrl_out), SAVE :: o_dtlwr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1043 'dtlwr', 'LW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1044 TYPE(ctrl_out), SAVE :: o_dtlw0 = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1045 'dtlw0', 'CS LW radiation dT', 'K/s', (/ ('', i=1, 9) /)) 1046 TYPE(ctrl_out), SAVE :: o_dtec = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1047 'dtec', 'Cinetic dissip dT', 'K/s', (/ ('', i=1, 9) /)) 1048 TYPE(ctrl_out), SAVE :: o_duvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1049 'duvdf', 'Boundary-layer dU', 'm/s2', (/ ('', i=1, 9) /)) 1050 TYPE(ctrl_out), SAVE :: o_dvvdf = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1051 'dvvdf', 'Boundary-layer dV', 'm/s2', (/ ('', i=1, 9) /)) 1052 TYPE(ctrl_out), SAVE :: o_duoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1053 'duoro', 'Orography dU', 'm/s2', (/ ('', i=1, 9) /)) 1054 TYPE(ctrl_out), SAVE :: o_dvoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1055 'dvoro', 'Orography dV', 'm/s2', (/ ('', i=1, 9) /)) 1056 TYPE(ctrl_out), SAVE :: o_dulif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1057 'dulif', 'Orography dU', 'm/s2', (/ ('', i=1, 9) /)) 1058 TYPE(ctrl_out), SAVE :: o_dvlif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1059 'dvlif', 'Orography dV', 'm/s2', (/ ('', i=1, 9) /)) 1060 TYPE(ctrl_out), SAVE :: o_duhin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1061 'duhin', 'Hines GWD dU', 'm/s2', (/ ('', i=1, 9) /)) 1062 TYPE(ctrl_out), SAVE :: o_dvhin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1063 'dvhin', 'Hines GWD dV', 'm/s2', (/ ('', i=1, 9) /)) 1064 TYPE(ctrl_out), SAVE :: o_dtoro = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1065 'dtoro', 'Orography dT', 'K/s', (/ ('', i=1, 9) /)) 1066 TYPE(ctrl_out), SAVE :: o_dtlif = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1067 'dtlif', 'Orography dT', 'K/s', (/ ('', i=1, 9) /)) 1068 TYPE(ctrl_out), SAVE :: o_dthin = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1069 'dthin', 'Hines GWD dT', 'K/s', (/ ('', i=1, 9) /)) 1048 1070 1049 1071 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_trac(:) 1050 1072 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_trac_cum(:) 1051 TYPE(ctrl_out), SAVE :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1052 'rsu', 'SW upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1053 TYPE(ctrl_out), SAVE :: o_rsd = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1054 'rsd', 'SW downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1055 TYPE(ctrl_out), SAVE :: o_rlu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1056 'rlu', 'LW upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1057 TYPE(ctrl_out), SAVE :: o_rld = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1058 'rld', 'LW downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1059 TYPE(ctrl_out), SAVE :: o_rsucs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1060 'rsucs', 'SW CS upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1061 TYPE(ctrl_out), SAVE :: o_rsdcs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1062 'rsdcs', 'SW CS downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1063 TYPE(ctrl_out), SAVE :: o_rlucs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1064 'rlucs', 'LW CS upward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1065 TYPE(ctrl_out), SAVE :: o_rldcs = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1066 'rldcs', 'LW CS downward radiation', 'W m-2', (/ ('', i=1, 6) /)) 1067 TYPE(ctrl_out), SAVE :: o_tnt = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1068 'tnt', 'Tendency of air temperature', 'K s-1', (/ ('', i=1, 6) /)) 1069 TYPE(ctrl_out), SAVE :: o_tntc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1070 'tntc', 'Tendency of air temperature due to Moist Convection', 'K s-1', (/ ('', i=1, 6) /)) 1071 TYPE(ctrl_out), SAVE :: o_tntr = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1072 'tntr', 'Air temperature tendency due to Radiative heating', 'K s-1', (/ ('', i=1, 6) /)) 1073 TYPE(ctrl_out), SAVE :: o_tntscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1074 'tntscpbl', 'Air temperature tendency due to St cloud and precipitation and BL mixing', & 1075 'K s-1', (/ ('', i=1, 6) /)) 1076 TYPE(ctrl_out), SAVE :: o_tnhus = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1077 'tnhus', 'Tendency of specific humidity', 's-1', (/ ('', i=1, 6) /)) 1078 TYPE(ctrl_out), SAVE :: o_tnhusc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1079 'tnhusc', 'Tendency of specific humidity due to convection', 's-1', (/ ('', i=1, 6) /)) 1080 TYPE(ctrl_out), SAVE :: o_tnhusscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1081 'tnhusscpbl', 'Tendency of Specific humidity due to ST cl, precip and BL mixing', 's-1', (/ ('', i=1, 6) /)) 1082 TYPE(ctrl_out), SAVE :: o_evu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1083 'evu', 'Eddy viscosity coefficient for Momentum Variables', 'm2 s-1', (/ ('', i=1, 6) /)) 1084 TYPE(ctrl_out), SAVE :: o_h2o = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1085 'h2o', 'Mass Fraction of Water', '1', (/ ('', i=1, 6) /)) 1086 TYPE(ctrl_out), SAVE :: o_mcd = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1087 'mcd', 'Downdraft COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 6) /)) 1088 TYPE(ctrl_out), SAVE :: o_dmc = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1089 'dmc', 'Deep COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 6) /)) 1090 TYPE(ctrl_out), SAVE :: o_ref_liq = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1091 'ref_liq', 'Effective radius of convective cloud liquid water particle', 'm', (/ ('', i=1, 6) /)) 1092 TYPE(ctrl_out), SAVE :: o_ref_ice = ctrl_out((/ 4, 10, 10, 10, 10, 10 /), & 1093 'ref_ice', 'Effective radius of startiform cloud ice particle', 'm', (/ ('', i=1, 6) /)) 1094 TYPE(ctrl_out), SAVE :: o_rsut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1095 'rsut4co2', 'TOA Out SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1096 TYPE(ctrl_out), SAVE :: o_rlut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1097 'rlut4co2', 'TOA Out LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1098 TYPE(ctrl_out), SAVE :: o_rsutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1099 'rsutcs4co2', 'TOA Out CS SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1100 TYPE(ctrl_out), SAVE :: o_rlutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1101 'rlutcs4co2', 'TOA Out CS LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1102 TYPE(ctrl_out), SAVE :: o_rsu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1103 'rsu4co2', 'Upwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1104 TYPE(ctrl_out), SAVE :: o_rlu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1105 'rlu4co2', 'Upwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1106 TYPE(ctrl_out), SAVE :: o_rsucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1107 'rsucs4co2', 'Upwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1108 TYPE(ctrl_out), SAVE :: o_rlucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1109 'rlucs4co2', 'Upwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1110 TYPE(ctrl_out), SAVE :: o_rsd4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1111 'rsd4co2', 'Downwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1112 TYPE(ctrl_out), SAVE :: o_rld4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1113 'rld4co2', 'Downwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1114 TYPE(ctrl_out), SAVE :: o_rsdcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1115 'rsdcs4co2', 'Downwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1116 TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10 /), & 1117 'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 6) /)) 1073 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_vdf(:) 1074 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_the(:) 1075 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_con(:) 1076 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_lessi_impa(:) 1077 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_lessi_nucl(:) 1078 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_insc(:) 1079 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_bcscav(:) 1080 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_evapls(:) 1081 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_ls(:) 1082 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_trsp(:) 1083 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_sscav(:) 1084 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_sat(:) 1085 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_uscav(:) 1086 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_dry(:) 1087 1088 TYPE(ctrl_out), SAVE :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1089 'rsu', 'SW upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1090 TYPE(ctrl_out), SAVE :: o_rsd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1091 'rsd', 'SW downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1092 TYPE(ctrl_out), SAVE :: o_rlu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1093 'rlu', 'LW upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1094 TYPE(ctrl_out), SAVE :: o_rld = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1095 'rld', 'LW downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1096 TYPE(ctrl_out), SAVE :: o_rsucs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1097 'rsucs', 'SW CS upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1098 TYPE(ctrl_out), SAVE :: o_rsdcs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1099 'rsdcs', 'SW CS downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1100 TYPE(ctrl_out), SAVE :: o_rlucs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1101 'rlucs', 'LW CS upward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1102 TYPE(ctrl_out), SAVE :: o_rldcs = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1103 'rldcs', 'LW CS downward radiation', 'W m-2', (/ ('', i=1, 9) /)) 1104 TYPE(ctrl_out), SAVE :: o_tnt = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1105 'tnt', 'Tendency of air temperature', 'K s-1', (/ ('', i=1, 9) /)) 1106 TYPE(ctrl_out), SAVE :: o_tntc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1107 'tntc', 'Tendency of air temperature due to Moist Convection', 'K s-1', (/ ('', i=1, 9) /)) 1108 TYPE(ctrl_out), SAVE :: o_tntr = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1109 'tntr', 'Air temperature tendency due to Radiative heating', 'K s-1', (/ ('', i=1, 9) /)) 1110 TYPE(ctrl_out), SAVE :: o_tntscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1111 'tntscpbl', 'Air temperature tendency due to St cloud and precipitation and BL mixing', & 1112 'K s-1', (/ ('', i=1, 9) /)) 1113 TYPE(ctrl_out), SAVE :: o_tnhus = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1114 'tnhus', 'Tendency of specific humidity', 's-1', (/ ('', i=1, 9) /)) 1115 TYPE(ctrl_out), SAVE :: o_tnhusc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1116 'tnhusc', 'Tendency of specific humidity due to convection', 's-1', (/ ('', i=1, 9) /)) 1117 TYPE(ctrl_out), SAVE :: o_tnhusscpbl = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1118 'tnhusscpbl', 'Tendency of Specific humidity due to ST cl, precip and BL mixing', 's-1', (/ ('', i=1, 9) /)) 1119 TYPE(ctrl_out), SAVE :: o_evu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1120 'evu', 'Eddy viscosity coefficient for Momentum Variables', 'm2 s-1', (/ ('', i=1, 9) /)) 1121 TYPE(ctrl_out), SAVE :: o_h2o = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1122 'h2o', 'Mass Fraction of Water', '1', (/ ('', i=1, 9) /)) 1123 TYPE(ctrl_out), SAVE :: o_mcd = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1124 'mcd', 'Downdraft COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1125 TYPE(ctrl_out), SAVE :: o_dmc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1126 'dmc', 'Deep COnvective Mass Flux', 'kg/(m2*s)', (/ ('', i=1, 9) /)) 1127 TYPE(ctrl_out), SAVE :: o_ref_liq = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1128 'ref_liq', 'Effective radius of convective cloud liquid water particle', 'm', (/ ('', i=1, 9) /)) 1129 TYPE(ctrl_out), SAVE :: o_ref_ice = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1130 'ref_ice', 'Effective radius of startiform cloud ice particle', 'm', (/ ('', i=1, 9) /)) 1131 TYPE(ctrl_out), SAVE :: o_rsut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1132 'rsut4co2', 'TOA Out SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1133 TYPE(ctrl_out), SAVE :: o_rlut4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1134 'rlut4co2', 'TOA Out LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1135 TYPE(ctrl_out), SAVE :: o_rsutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1136 'rsutcs4co2', 'TOA Out CS SW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1137 TYPE(ctrl_out), SAVE :: o_rlutcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1138 'rlutcs4co2', 'TOA Out CS LW in 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1139 TYPE(ctrl_out), SAVE :: o_rsu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1140 'rsu4co2', 'Upwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1141 TYPE(ctrl_out), SAVE :: o_rlu4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1142 'rlu4co2', 'Upwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1143 TYPE(ctrl_out), SAVE :: o_rsucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1144 'rsucs4co2', 'Upwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1145 TYPE(ctrl_out), SAVE :: o_rlucs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1146 'rlucs4co2', 'Upwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1147 TYPE(ctrl_out), SAVE :: o_rsd4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1148 'rsd4co2', 'Downwelling SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1149 TYPE(ctrl_out), SAVE :: o_rld4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1150 'rld4co2', 'Downwelling LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1151 TYPE(ctrl_out), SAVE :: o_rsdcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1152 'rsdcs4co2', 'Downwelling CS SW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1153 TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), & 1154 'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /)) 1155 1156 !!!!!!!!!!!!! Sorties niveaux standards de pression NMC 1157 TYPE(ctrl_out), SAVE :: o_tnondef = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1158 'tnondef', 'Undefined value of T', 'K', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1159 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1160 TYPE(ctrl_out), SAVE :: o_ta = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1161 'ta', 'Air temperature', 'K', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1162 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1163 TYPE(ctrl_out), SAVE :: o_zg = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1164 'zg', 'Geopotential height', 'm', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1165 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1166 TYPE(ctrl_out), SAVE :: o_hus = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1167 'hus', 'Specific humidity', '1', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1168 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1169 TYPE(ctrl_out), SAVE :: o_hur = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1170 'hur', 'Relative humidity', '%', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1171 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1172 TYPE(ctrl_out), SAVE :: o_ua = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1173 'ua', 'Eastward wind', 'm s-1', (/ "inst(X)", "inst(X)", "inst(X)", "inst(X)", & 1174 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1175 TYPE(ctrl_out), SAVE :: o_va = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1176 'va', 'Northward wind', 'm s-1', (/ ('', i=1, 9)/)) 1177 TYPE(ctrl_out), SAVE :: o_wap = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1178 'wap', 'Lagrangian tendency of air pressure', 'Pa s-1', (/ "inst(X)", "inst(X)", "inst(X)", & 1179 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1180 TYPE(ctrl_out), SAVE :: o_psbg = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1181 'psbg', 'Lagrangian tendency of air pressure', 'Pa s-1', (/ "inst(X)", "inst(X)", "inst(X)", & 1182 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1183 TYPE(ctrl_out), SAVE :: o_tro3 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1184 'tro3', 'Ozone mole fraction', '1e-9', (/ "inst(X)", "inst(X)", "inst(X)", & 1185 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1186 TYPE(ctrl_out), SAVE :: o_tro3_daylight = ctrl_out((/ 11, 11, 11, 11, 11, 11, 5, 5, 5 /), & 1187 'tro3_daylight', 'Daylight ozone mole fraction', '1e-9', (/ "inst(X)", "inst(X)", "inst(X)", & 1188 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1189 TYPE(ctrl_out), SAVE :: o_uxv = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1190 'uv', 'uv', 'm2/s2', (/ "inst(X)", "inst(X)", "inst(X)", & 1191 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1192 TYPE(ctrl_out), SAVE :: o_vxq = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1193 'vq', 'vq', 'm/s * (kg/kg)', (/ "inst(X)", "inst(X)", "inst(X)", & 1194 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1195 TYPE(ctrl_out), SAVE :: o_vxT = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1196 'vT', 'vT', 'mK/s', (/ "inst(X)", "inst(X)", "inst(X)", & 1197 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1198 TYPE(ctrl_out), SAVE :: o_wxq = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1199 'wq', 'wq', '(Pa/s)*(kg/kg)', (/ "inst(X)", "inst(X)", "inst(X)", & 1200 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1201 TYPE(ctrl_out), SAVE :: o_vxphi = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1202 'vphi', 'vphi', 'm2/s', (/ "inst(X)", "inst(X)", "inst(X)", & 1203 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1204 TYPE(ctrl_out), SAVE :: o_wxT = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1205 'wT', 'wT', '"K*Pa/s', (/ "inst(X)", "inst(X)", "inst(X)", & 1206 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1207 TYPE(ctrl_out), SAVE :: o_uxu = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1208 'u2', 'u2', 'm2/s2', (/ "inst(X)", "inst(X)", "inst(X)", & 1209 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1210 TYPE(ctrl_out), SAVE :: o_vxv = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1211 'v2', 'v2', 'm2/s2', (/ "inst(X)", "inst(X)", "inst(X)", & 1212 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1213 TYPE(ctrl_out), SAVE :: o_TxT = ctrl_out((/ 11, 11, 11, 11, 11, 11, 6, 6, 6 /), & 1214 'T2', 'T2', 'K2', (/ "inst(X)", "inst(X)", "inst(X)", & 1215 "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)", "inst(X)" /)) 1118 1216 1119 1217 END MODULE phys_output_ctrlout_mod -
LMDZ5/branches/testing/libf/phylmd/phys_output_mod.F90
r1795 r1864 1 1 ! $Id$ 2 2 ! 3 4 MODULE phys_output_mod 5 USE indice_sol_mod 6 USE phys_output_var_mod 7 USE aero_mod, only : naero_spc,name_aero 8 USE phys_output_write_mod, ONLY : phys_output_write 9 3 10 ! Abderrahmane 12 2007 4 11 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 10 17 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 11 18 12 MODULE phys_output_mod13 USE indice_sol_mod14 USE phys_output_var_mod15 USE phys_output_ctrlout_mod16 USE aero_mod, only : naero_spc,name_aero17 18 IMPLICIT NONE19 20 PRIVATE histdef2d, histdef3d, conf_physoutputs21 22 REAL, PRIVATE, SAVE :: zdtime23 !$OMP THREADPRIVATE(zdtime)24 25 26 27 19 CONTAINS 28 20 … … 33 25 34 26 SUBROUTINE phys_output_open(rlon,rlat,pim,tabij,ipt,jpt,plon,plat, & 35 jjmp1,nlevSTD,clevSTD, nbteta, &27 jjmp1,nlevSTD,clevSTD,rlevSTD,nbteta, & 36 28 ctetaSTD, dtime, ok_veget, & 37 29 type_ocean, iflag_pbl,ok_mensuel,ok_journe, & 38 30 ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, read_climoz, & 39 31 phys_out_filestations, & 40 new_aod, aerosol_couple, flag_aerosol_strat) 32 new_aod, aerosol_couple, flag_aerosol_strat, & 33 pdtphys, paprs, pphis, pplay, lmax_th, ptconv, ptconvth, ivap, & 34 d_t, qx, d_qx, zmasse, ok_sync) 41 35 42 36 USE iophy … … 47 41 USE mod_phys_lmdz_para 48 42 USE aero_mod, only : naero_spc,name_aero 43 USE phys_output_ctrlout_mod 44 45 #ifdef CPP_XIOS 46 ! ug Pour les sorties XIOS 47 USE wxios 48 #endif 49 49 50 50 IMPLICIT NONE … … 56 56 include "iniprint.h" 57 57 58 real,dimension(klon),intent(in) :: rlon 59 real,dimension(klon),intent(in) :: rlat 60 INTEGER, intent(in) :: pim 58 ! ug Nouveaux arguments nécessaires au histwrite_mod: 59 INTEGER, INTENT(IN) :: ivap 60 INTEGER, DIMENSION(klon), INTENT(IN) :: lmax_th 61 LOGICAL, INTENT(IN) :: ok_sync 62 LOGICAL, DIMENSION(klon, klev), INTENT(IN) :: ptconv, ptconvth 63 REAL, INTENT(IN) :: pdtphys 64 REAL, DIMENSION(klon), INTENT(IN) :: pphis 65 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay, d_t 66 REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs 67 REAL, DIMENSION(klon,klev,nqtot), INTENT(IN):: qx, d_qx 68 REAL, DIMENSION(klon, llm), INTENT(IN) :: zmasse 69 70 71 REAL,DIMENSION(klon),INTENT(IN) :: rlon 72 REAL,DIMENSION(klon),INTENT(IN) :: rlat 73 INTEGER, INTENT(IN) :: pim 61 74 INTEGER, DIMENSION(pim) :: tabij 62 INTEGER, dimension(pim), intent(in) :: ipt, jpt63 REAL, dimension(pim), intent(in) :: plat, plon64 REAL, dimension(pim,2) :: plat_bounds, plon_bounds75 INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt 76 REAL,DIMENSION(pim), INTENT(IN) :: plat, plon 77 REAL,DIMENSION(pim,2) :: plat_bounds, plon_bounds 65 78 66 79 INTEGER :: jjmp1 … … 69 82 LOGICAL :: ok_LES,ok_ade,ok_aie,flag_aerosol_strat 70 83 LOGICAL :: new_aod, aerosol_couple 71 INTEGER, intent(in):: read_climoz ! read ozone climatology84 INTEGER, INTENT(IN):: read_climoz ! read ozone climatology 72 85 ! Allowed values are 0, 1 and 2 73 86 ! 0: do not read an ozone climatology … … 81 94 REAL, DIMENSION(klev) :: Ahyb, Bhyb, Alt 82 95 CHARACTER(LEN=4), DIMENSION(nlevSTD) :: clevSTD 96 REAL, DIMENSION(nlevSTD) :: rlevSTD 83 97 INTEGER :: nsrf, k, iq, iiq, iff, i, j, ilev 84 98 INTEGER :: naero … … 90 104 CHARACTER(LEN=3) :: ctetaSTD(nbteta) 91 105 REAL, DIMENSION(nfiles) :: ecrit_files 92 CHARACTER(LEN=20), DIMENSION(nfiles) :: phys_out_filenames93 106 INTEGER, DIMENSION(iim*jjmp1) :: ndex2d 94 107 INTEGER, DIMENSION(iim*jjmp1*klev) :: ndex3d … … 97 110 INTEGER, DIMENSION(nfiles) :: phys_out_levmin, phys_out_levmax 98 111 INTEGER, DIMENSION(nfiles) :: phys_out_filelevels 99 CHARACTER(LEN=20), DIMENSION(nfiles) :: chtimestep = (/ 'DefFreq', 'DefFreq','DefFreq', 'DefFreq', 'DefFreq', 'DefFreq' /) 112 CHARACTER(LEN=20), DIMENSION(nfiles) :: chtimestep = (/ '1mth', '1mth', '1mth', '1mth', '1mth', & 113 '1mth', '1mth', '1mth', '1mth' /) 100 114 LOGICAL, DIMENSION(nfiles) :: phys_out_filekeys 101 115 LOGICAL, DIMENSION(nfiles) :: phys_out_filestations … … 104 118 ! entre [phys_out_lonmin,phys_out_lonmax] et [phys_out_latmin,phys_out_latmax] 105 119 106 LOGICAL, DIMENSION(nfiles), SAVE :: phys_out_regfkey = (/ .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE. /) 107 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmin = (/ -180., -180., -180., -180., -180., -180. /) 108 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmax = (/ 180., 180., 180., 180., 180., 180. /) 109 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmin = (/ -90., -90., -90., -90., -90., -90. /) 110 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmax = (/ 90., 90., 90., 90., 90., 90. /) 120 LOGICAL, DIMENSION(nfiles), SAVE :: phys_out_regfkey = (/ .FALSE., .FALSE., .FALSE., .FALSE., & 121 .FALSE., .FALSE., .FALSE., .FALSE., .FALSE. /) 122 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmin = (/ -180., -180., -180., -180., & 123 -180., -180., -180., -180., -180. /) 124 REAL, DIMENSION(nfiles), SAVE :: phys_out_lonmax = (/ 180., 180., 180., 180., & 125 180., 180., 180., 180., 180. /) 126 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmin = (/ -90., -90., -90., -90., & 127 -90., -90., -90., -90., -90. /) 128 REAL, DIMENSION(nfiles), SAVE :: phys_out_latmax = (/ 90., 90., 90., 90., & 129 90., 90., 90., 90., 90. /) 130 #ifdef CPP_XIOS 131 ! ug Variables utilisées pour récupérer le calendrier pour xios 132 INTEGER :: x_an, x_mois, x_jour 133 REAL :: x_heure 134 #endif 111 135 112 136 WRITE(lunout,*) 'Debut phys_output_mod.F90' … … 115 139 IF (.NOT. ALLOCATED(o_trac)) ALLOCATE(o_trac(nqtot)) 116 140 IF (.NOT. ALLOCATED(o_trac_cum)) ALLOCATE(o_trac_cum(nqtot)) 117 118 levmax = (/ klev, klev, klev, klev, klev, klev /) 141 ALLOCATE(o_dtr_the(nqtot),o_dtr_con(nqtot),o_dtr_lessi_impa(nqtot)) 142 ALLOCATE(o_dtr_lessi_nucl(nqtot),o_dtr_insc(nqtot),o_dtr_bcscav(nqtot)) 143 ALLOCATE(o_dtr_evapls(nqtot),o_dtr_ls(nqtot),o_dtr_trsp(nqtot)) 144 ALLOCATE(o_dtr_sscav(nqtot),o_dtr_sat(nqtot),o_dtr_uscav(nqtot)) 145 ALLOCATE(o_dtr_dry(nqtot),o_dtr_vdf(nqtot)) 146 147 148 levmax = (/ klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD /) 119 149 120 150 phys_out_filenames(1) = 'histmth' … … 124 154 phys_out_filenames(5) = 'histLES' 125 155 phys_out_filenames(6) = 'histstn' 156 phys_out_filenames(7) = 'histmthNMC' 157 phys_out_filenames(8) = 'histdayNMC' 158 phys_out_filenames(9) = 'histhfNMC.nc' 126 159 127 160 type_ecri(1) = 'ave(X)' … … 131 164 type_ecri(5) = 'ave(X)' 132 165 type_ecri(6) = 'inst(X)' 166 type_ecri(7) = 'inst(X)' 167 type_ecri(8) = 'inst(X)' 168 type_ecri(9) = 'inst(X)' 133 169 134 170 clef_files(1) = ok_mensuel … … 138 174 clef_files(5) = ok_LES 139 175 clef_files(6) = ok_instan 176 clef_files(7) = ok_histNMC(1) 177 clef_files(8) = ok_histNMC(2) 178 clef_files(9) = ok_histNMC(3) 140 179 141 180 !sortir des fichiers "stations" si clef_stations(:)=.TRUE. … … 146 185 clef_stations(5) = .FALSE. 147 186 clef_stations(6) = .FALSE. 187 clef_stations(7) = .FALSE. 188 clef_stations(8) = .FALSE. 189 clef_stations(9) = .FALSE. 148 190 149 191 lev_files(1) = lev_histmth … … 153 195 lev_files(5) = lev_histLES 154 196 lev_files(6) = lev_histins 197 lev_files(7) = levout_histNMC(1) 198 lev_files(8) = levout_histNMC(2) 199 lev_files(9) = levout_histNMC(3) 155 200 156 201 ecrit_files(1) = ecrit_mth … … 160 205 ecrit_files(5) = ecrit_LES 161 206 ecrit_files(6) = ecrit_ins 207 ecrit_files(7) = freq_outNMC(1)/86400. 208 ecrit_files(8) = freq_outNMC(2)/86400. 209 ecrit_files(9) = freq_outNMC(3)/86400. 162 210 163 211 !! Lectures des parametres de sorties dans physiq.def … … 195 243 WRITE(lunout,*)'phys_out_filelevels=',lev_files 196 244 245 #ifdef CPP_XIOS 246 ! ug Réglage du calendrier xios 247 !Temps julian => an, mois, jour, heure 248 CALL ymds2ju(annee_ref, 1, day_ref, 0.0, zjulian) 249 CALL ju2ymds(zjulian, x_an, x_mois, x_jour, x_heure) 250 CALL wxios_set_cal(dtime, calend, x_an, x_mois, x_jour, x_heure) 251 #endif 252 197 253 !!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 198 254 ! Appel de histbeg et histvert pour creer le fichier et les niveaux verticaux !! … … 200 256 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 201 257 202 zdtime = dtime ! Frequence ou l on moyenne258 zdtime_moy = dtime ! Frequence ou l on moyenne 203 259 204 260 ! Calcul des Ahyb, Bhyb et Alt … … 226 282 zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit en seconde 227 283 284 285 #ifdef CPP_XIOS 286 ! ug déclaration des axes verticaux de chaque fichier: 287 CALL wxios_add_vaxis("presnivs", phys_out_filenames(iff), & 288 levmax(iff) - levmin(iff) + 1, presnivs(levmin(iff):levmax(iff))) 289 CALL wxios_add_vaxis("Ahyb", phys_out_filenames(iff), & 290 levmax(iff) - levmin(iff) + 1, Ahyb) 291 CALL wxios_add_vaxis("Bhyb", phys_out_filenames(iff), & 292 levmax(iff) - levmin(iff) + 1, Bhyb) 293 CALL wxios_add_vaxis("Ahyb", phys_out_filenames(iff), & 294 levmax(iff) - levmin(iff) + 1, Alt) 295 296 IF (clef_files(iff)) THEN 297 CALL wxios_add_file(phys_out_filenames(iff),chtimestep(iff),lev_files(iff)) 298 END IF 299 #endif 300 228 301 IF (clef_files(iff)) THEN 229 302 … … 243 316 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 244 317 IF (phys_out_regfkey(iff)) then 245 246 318 imin_ins=1 247 319 imax_ins=iim … … 283 355 itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) 284 356 else 285 CALL histbeg_phy(phys_out_filenames(iff),itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) 357 CALL histbeg_phy_all(phys_out_filenames(iff),itau_phy,zjulian,& 358 dtime,nhorim(iff),nid_files(iff)) 286 359 endif 287 360 288 CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "Pa", & 361 #ifndef CPP_NO_IOIPSL 362 if (iff.le.6) then 363 CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "Pa", & 289 364 levmax(iff) - levmin(iff) + 1, & 290 365 presnivs(levmin(iff):levmax(iff)), nvertm(iff),"down") 291 292 !!!!!!!!!!!!! Traitement des champs 3D pour histhf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 293 !!!!!!!!!!!!!!! A Revoir plus tard !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 294 ! IF (iff.eq.3.and.lev_files(iff).ge.4) THEN 295 ! CALL histbeg_phy("histhf3d",itau_phy, & 296 ! & zjulian, dtime, & 297 ! & nhorim, nid_hf3d) 298 299 ! CALL histvert(nid_hf3d, "presnivs", & 300 ! & "Vertical levels", "mb", & 301 ! & klev, presnivs/100., nvertm) 302 ! ENDIF 303 ! 304 !!!! Composentes de la coordonnee sigma-hybride 366 !!!! Composantes de la coordonnee sigma-hybride 305 367 CALL histvert(nid_files(iff), "Ahyb","Ahyb comp of Hyb Cord ", "Pa", & 306 368 levmax(iff) - levmin(iff) + 1,Ahyb,nvertap(iff)) … … 309 371 levmax(iff) - levmin(iff) + 1,Bhyb,nvertbp(iff)) 310 372 311 CALL histvert(nid_files(iff), "Alt","Height approx for scale heigh of 8km at levels", "Km", & 373 CALL histvert(nid_files(iff), "Alt","Height approx for scale heigh of 8km at levels", "Km", & 312 374 levmax(iff) - levmin(iff) + 1,Alt,nvertAlt(iff)) 313 375 314 ! CALL histvert(nid_files(iff), "preff","Reference pressure", "Pa", & 315 ! 1,preff,nvertp0(iff)) 316 !!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 317 CALL histdef2d(iff,o_aire) 318 CALL histdef2d(iff,o_contfracATM) 319 320 !!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 321 CALL histdef2d(iff,o_phis) 322 CALL histdef2d(iff,o_contfracOR) 323 CALL histdef2d(iff,o_aireTER) 324 CALL histdef2d(iff,o_flat) 325 CALL histdef2d(iff,o_slp) 326 CALL histdef2d(iff,o_tsol) 327 CALL histdef2d(iff,o_t2m) 328 CALL histdef2d(iff,o_t2m_min) 329 CALL histdef2d(iff,o_t2m_max) 330 CALL histdef2d(iff,o_wind10m) 331 CALL histdef2d(iff,o_wind10max) 332 CALL histdef2d(iff,o_sicf) 333 CALL histdef2d(iff,o_q2m) 334 CALL histdef2d(iff,o_ustar) 335 CALL histdef2d(iff,o_u10m) 336 CALL histdef2d(iff,o_v10m) 337 CALL histdef2d(iff,o_psol) 338 CALL histdef2d(iff,o_qsurf) 339 340 IF (.NOT. ok_veget) THEN 341 CALL histdef2d(iff,o_qsol) 342 ENDIF 343 CALL histdef2d(iff,o_ndayrain) 344 CALL histdef2d(iff,o_precip) 345 CALL histdef2d(iff,o_plul) 346 CALL histdef2d(iff,o_pluc) 347 CALL histdef2d(iff,o_snow) 348 CALL histdef2d(iff,o_msnow) 349 CALL histdef2d(iff,o_fsnow) 350 CALL histdef2d(iff,o_evap) 351 CALL histdef2d(iff,o_tops) 352 CALL histdef2d(iff,o_tops0) 353 CALL histdef2d(iff,o_topl) 354 CALL histdef2d(iff,o_topl0) 355 CALL histdef2d(iff,o_SWupTOA) 356 CALL histdef2d(iff,o_SWupTOAclr) 357 CALL histdef2d(iff,o_SWdnTOA) 358 CALL histdef2d(iff,o_SWdnTOAclr) 359 CALL histdef2d(iff,o_nettop) 360 CALL histdef2d(iff,o_SWup200) 361 CALL histdef2d(iff,o_SWup200clr) 362 CALL histdef2d(iff,o_SWdn200) 363 CALL histdef2d(iff,o_SWdn200clr) 364 CALL histdef2d(iff,o_LWup200) 365 CALL histdef2d(iff,o_LWup200clr) 366 CALL histdef2d(iff,o_LWdn200) 367 CALL histdef2d(iff,o_LWdn200clr) 368 CALL histdef2d(iff,o_sols) 369 CALL histdef2d(iff,o_sols0) 370 CALL histdef2d(iff,o_soll) 371 CALL histdef2d(iff,o_radsol) 372 CALL histdef2d(iff,o_soll0) 373 CALL histdef2d(iff,o_SWupSFC) 374 CALL histdef2d(iff,o_SWupSFCclr) 375 CALL histdef2d(iff,o_SWdnSFC) 376 CALL histdef2d(iff,o_SWdnSFCclr) 377 CALL histdef2d(iff,o_LWupSFC) 378 CALL histdef2d(iff,o_LWdnSFC) 379 CALL histdef2d(iff,o_LWupSFCclr) 380 CALL histdef2d(iff,o_LWdnSFCclr) 381 CALL histdef2d(iff,o_bils) 382 CALL histdef2d(iff,o_bils_ec) 383 CALL histdef2d(iff,o_bils_tke) 384 CALL histdef2d(iff,o_bils_diss) 385 CALL histdef2d(iff,o_bils_kinetic) 386 CALL histdef2d(iff,o_bils_enthalp) 387 CALL histdef2d(iff,o_bils_latent) 388 CALL histdef2d(iff,o_sens) 389 CALL histdef2d(iff,o_fder) 390 CALL histdef2d(iff,o_ffonte) 391 CALL histdef2d(iff,o_fqcalving) 392 CALL histdef2d(iff,o_fqfonte) 393 CALL histdef2d(iff,o_taux) 394 CALL histdef2d(iff,o_tauy) 395 396 DO nsrf = 1, nbsrf 397 CALL histdef2d(iff,o_pourc_srf(nsrf)) 398 CALL histdef2d(iff,o_fract_srf(nsrf)) 399 CALL histdef2d(iff, o_taux_srf(nsrf)) 400 CALL histdef2d(iff, o_tauy_srf(nsrf)) 401 CALL histdef2d(iff, o_tsol_srf(nsrf)) 402 CALL histdef2d(iff, o_evappot_srf(nsrf)) 403 CALL histdef2d(iff, o_ustar_srf(nsrf)) 404 CALL histdef2d(iff, o_u10m_srf(nsrf)) 405 CALL histdef2d(iff, o_evap_srf(nsrf)) 406 CALL histdef2d(iff, o_v10m_srf(nsrf)) 407 CALL histdef2d(iff, o_t2m_srf(nsrf)) 408 CALL histdef2d(iff, o_sens_srf(nsrf)) 409 CALL histdef2d(iff, o_lat_srf(nsrf)) 410 CALL histdef2d(iff, o_flw_srf(nsrf)) 411 CALL histdef2d(iff, o_fsw_srf(nsrf)) 412 CALL histdef2d(iff, o_wbils_srf(nsrf)) 413 CALL histdef2d(iff, o_wbilo_srf(nsrf)) 414 IF (iflag_pbl>1 ) then 415 CALL histdef2d(iff, o_tke_srf(nsrf)) 416 CALL histdef2d(iff, o_tke_max_srf(nsrf)) 417 ENDIF 418 419 CALL histdef2d(iff, o_albe_srf(nsrf)) 420 CALL histdef2d(iff, o_rugs_srf(nsrf)) 421 CALL histdef2d(iff, o_ages_srf(nsrf)) 422 END DO 423 424 IF (new_aod .AND. (.NOT. aerosol_couple)) THEN 425 IF (ok_ade.OR.ok_aie) THEN 426 CALL histdef2d(iff,o_od550aer) 427 CALL histdef2d(iff,o_od865aer) 428 CALL histdef2d(iff,o_absvisaer) 429 CALL histdef2d(iff,o_od550lt1aer) 430 CALL histdef2d(iff,o_sconcso4) 431 CALL histdef2d(iff,o_sconcoa) 432 CALL histdef2d(iff,o_sconcbc) 433 CALL histdef2d(iff,o_sconcss) 434 CALL histdef2d(iff,o_sconcdust) 435 CALL histdef3d(iff,o_concso4) 436 CALL histdef3d(iff,o_concoa) 437 CALL histdef3d(iff,o_concbc) 438 CALL histdef3d(iff,o_concss) 439 CALL histdef3d(iff,o_concdust) 440 CALL histdef2d(iff,o_loadso4) 441 CALL histdef2d(iff,o_loadoa) 442 CALL histdef2d(iff,o_loadbc) 443 CALL histdef2d(iff,o_loadss) 444 CALL histdef2d(iff,o_loaddust) 445 !--STRAT AER 446 ENDIF 447 IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN 448 DO naero = 1, naero_spc 449 CALL histdef2d(iff, o_tausumaero(naero)) 450 END DO 451 ENDIF 452 ENDIF 453 454 IF (ok_ade) THEN 455 CALL histdef2d(iff,o_topswad) 456 CALL histdef2d(iff,o_topswad0) 457 CALL histdef2d(iff,o_solswad) 458 CALL histdef2d(iff,o_solswad0) 459 CALL histdef2d(iff,o_swtoaas_nat) 460 CALL histdef2d(iff,o_swsrfas_nat) 461 CALL histdef2d(iff,o_swtoacs_nat) 462 CALL histdef2d(iff,o_swsrfcs_nat) 463 CALL histdef2d(iff,o_swtoaas_ant) 464 CALL histdef2d(iff,o_swsrfas_ant) 465 CALL histdef2d(iff,o_swtoacs_ant) 466 CALL histdef2d(iff,o_swsrfcs_ant) 467 468 IF (.NOT. aerosol_couple) THEN 469 CALL histdef2d(iff,o_swtoacf_nat) 470 CALL histdef2d(iff,o_swsrfcf_nat) 471 CALL histdef2d(iff,o_swtoacf_ant) 472 CALL histdef2d(iff,o_swsrfcf_ant) 473 CALL histdef2d(iff,o_swtoacf_zero) 474 CALL histdef2d(iff,o_swsrfcf_zero) 475 ENDIF 476 ENDIF 477 478 IF (ok_aie) THEN 479 CALL histdef2d(iff,o_topswai) 480 CALL histdef2d(iff,o_solswai) 481 !Cloud droplet number concentration 482 CALL histdef3d(iff,o_scdnc) 483 CALL histdef2d(iff,o_cldncl) 484 CALL histdef3d(iff,o_reffclws) 485 CALL histdef3d(iff,o_reffclwc) 486 CALL histdef2d(iff,o_cldnvi) 487 CALL histdef3d(iff,o_lcc3d) 488 CALL histdef3d(iff,o_lcc3dcon) 489 CALL histdef3d(iff,o_lcc3dstra) 490 CALL histdef2d(iff,o_lcc) 491 CALL histdef2d(iff,o_reffclwtop) 492 ENDIF 493 CALL histdef2d(iff,o_alb1) 494 CALL histdef2d(iff,o_alb2) 495 CALL histdef2d(iff,o_cdrm) 496 CALL histdef2d(iff,o_cdrh) 497 CALL histdef2d(iff,o_cldl) 498 CALL histdef2d(iff,o_cldm) 499 CALL histdef2d(iff,o_cldh) 500 CALL histdef2d(iff,o_cldt) 501 CALL histdef2d(iff,o_cldq) 502 CALL histdef2d(iff,o_lwp) 503 CALL histdef2d(iff,o_iwp) 504 CALL histdef2d(iff,o_ue) 505 CALL histdef2d(iff,o_ve) 506 CALL histdef2d(iff,o_uq) 507 CALL histdef2d(iff,o_vq) 508 509 IF(iflag_con.GE.3) THEN ! sb 510 CALL histdef2d(iff,o_cape) 511 CALL histdef2d(iff,o_pbase) 512 CALL histdef2d(iff,o_ptop) 513 CALL histdef2d(iff,o_fbase) 514 IF (iflag_con /= 30) THEN 515 CALL histdef2d(iff,o_plcl) 516 CALL histdef2d(iff,o_plfc) 517 CALL histdef2d(iff,o_wbeff) 518 ENDIF 519 CALL histdef2d(iff,o_cape_max) 520 CALL histdef3d(iff,o_upwd) 521 CALL histdef3d(iff,o_Ma) 522 CALL histdef3d(iff,o_dnwd) 523 CALL histdef3d(iff,o_dnwd0) 524 CALL histdef3d(iff,o_mc) 525 CALL histdef2d(iff,o_ftime_con) 526 ENDIF !iflag_con .GE. 3 527 CALL histdef2d(iff,o_prw) 528 CALL histdef2d(iff,o_s_pblh) 529 CALL histdef2d(iff,o_s_pblt) 530 CALL histdef2d(iff,o_s_lcl) 531 CALL histdef2d(iff,o_s_therm) 532 !IM : Les champs suivants (s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F 533 !CALL histdef2d(iff, & 534 !o_s_capCL%flag,o_s_capCL%name, "Conv avlbl pot enerfor ABL", "J/m2" ) 535 !CALL histdef2d(iff, & 536 !o_s_oliqCL%flag,o_s_oliqCL%name, "Liq Water in BL", "kg/m2") 537 !CALL histdef2d(iff, & 538 !o_s_cteiCL%flag,o_s_cteiCL%name, "Instability criteria(ABL)", "K") 539 !CALL histdef2d(iff, & 540 !o_s_trmb1%flag,o_s_trmb1%name, "deep_cape(HBTM2)", "J/m2") 541 !CALL histdef2d(iff, & 542 !o_s_trmb2%flag,o_s_trmb2%name, "inhibition (HBTM2)", "J/m2") 543 !CALL histdef2d(iff, & 544 !o_s_trmb3%flag,o_s_trmb3%name, "Point Omega (HBTM2)", "m") 545 546 ! Champs interpolles sur des niveaux de pression 547 548 ! Attention a reverifier 549 550 ilev=0 551 DO k=1, nlevSTD 552 bb2=clevSTD(k) 553 IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200" & 554 .OR.bb2.EQ."100".OR.bb2.EQ."50".OR.bb2.EQ."10")THEN 555 ilev=ilev+1 556 ! print*,'ilev k bb2 flag name ',ilev,k, bb2,o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name 557 CALL histdef2d(iff,o_uSTDlevs(ilev)) 558 CALL histdef2d(iff,o_vSTDlevs(ilev)) 559 CALL histdef2d(iff,o_wSTDlevs(ilev)) 560 CALL histdef2d(iff,o_zSTDlevs(ilev)) 561 CALL histdef2d(iff,o_qSTDlevs(ilev)) 562 CALL histdef2d(iff,o_tSTDlevs(ilev)) 563 ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR."500".OR.bb2.EQ."200".OR.bb2.EQ."50".OR.bb2.EQ."10") 564 ENDDO 565 566 CALL histdef2d(iff,o_t_oce_sic) 567 568 IF (type_ocean=='slab') THEN 569 CALL histdef2d(iff,o_slab_bils) 570 ENDIF 571 572 ! Couplage conv-CL 573 IF (iflag_con.GE.3) THEN 574 IF (iflag_coupl>=1) THEN 575 CALL histdef2d(iff,o_ale_bl) 576 CALL histdef2d(iff,o_alp_bl) 577 ENDIF 578 ENDIF !(iflag_con.GE.3) 579 580 CALL histdef2d(iff,o_weakinv) 581 CALL histdef2d(iff,o_dthmin) 582 583 CALL histdef2d(iff,o_rh2m) 584 CALL histdef2d(iff,o_rh2m_min) 585 CALL histdef2d(iff,o_rh2m_max) 586 587 CALL histdef2d(iff,o_qsat2m) 588 CALL histdef2d(iff,o_tpot) 589 CALL histdef2d(iff,o_tpote) 590 CALL histdef2d(iff,o_SWnetOR) 591 CALL histdef2d(iff,o_SWdownOR) 592 CALL histdef2d(iff,o_LWdownOR) 593 CALL histdef2d(iff,o_snowl) 594 CALL histdef2d(iff,o_solldown) 595 CALL histdef2d(iff,o_dtsvdfo) 596 CALL histdef2d(iff,o_dtsvdft) 597 CALL histdef2d(iff,o_dtsvdfg) 598 CALL histdef2d(iff,o_dtsvdfi) 599 CALL histdef2d(iff,o_rugs) 600 601 ! Champs 3D: 602 CALL histdef3d(iff,o_ec550aer) 603 CALL histdef3d(iff,o_lwcon) 604 CALL histdef3d(iff,o_iwcon) 605 CALL histdef3d(iff,o_temp) 606 CALL histdef3d(iff,o_theta) 607 CALL histdef3d(iff,o_ovap) 608 CALL histdef3d(iff,o_oliq) 609 CALL histdef3d(iff,o_ovapinit) 610 CALL histdef3d(iff,o_geop) 611 CALL histdef3d(iff,o_vitu) 612 CALL histdef3d(iff,o_vitv) 613 CALL histdef3d(iff,o_vitw) 614 CALL histdef3d(iff,o_pres) 615 CALL histdef3d(iff,o_paprs) 616 CALL histdef3d(iff,o_mass) 617 CALL histdef3d(iff,o_zfull) 618 CALL histdef3d(iff,o_zhalf) 619 CALL histdef3d(iff,o_rneb) 620 CALL histdef3d(iff,o_rnebcon) 621 CALL histdef3d(iff,o_rnebls) 622 CALL histdef3d(iff,o_rhum) 623 CALL histdef3d(iff,o_ozone) 624 625 IF (read_climoz == 2) THEN 626 CALL histdef3d(iff,o_ozone_light) 627 END IF 628 629 CALL histdef3d(iff,o_dtphy) 630 CALL histdef3d(iff,o_dqphy) 631 CALL histdef3d(iff,o_cldtau) 632 CALL histdef3d(iff,o_cldemi) 633 !IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl 634 CALL histdef3d(iff,o_pr_con_l) 635 CALL histdef3d(iff,o_pr_con_i) 636 CALL histdef3d(iff,o_pr_lsc_l) 637 CALL histdef3d(iff,o_pr_lsc_i) 638 !Cloud droplet effective radius 639 CALL histdef3d(iff,o_re) 640 CALL histdef3d(iff,o_fl) 641 !FH Sorties pour la couche limite 642 IF (iflag_pbl>1) THEN 643 CALL histdef3d(iff,o_tke) 644 CALL histdef3d(iff,o_tke_max) 645 ENDIF 646 CALL histdef3d(iff,o_kz) 647 CALL histdef3d(iff,o_kz_max) 648 CALL histdef3d(iff,o_clwcon) 649 CALL histdef3d(iff,o_dtdyn) 650 CALL histdef3d(iff,o_dqdyn) 651 CALL histdef3d(iff,o_dudyn) 652 CALL histdef3d(iff,o_dvdyn) 653 CALL histdef3d(iff,o_dtcon) 654 CALL histdef3d(iff,o_ducon) 655 CALL histdef3d(iff,o_dvcon) 656 CALL histdef3d(iff,o_dqcon) 657 658 ! Wakes 659 IF(iflag_con.EQ.3) THEN 660 IF (iflag_wake >= 1) THEN 661 CALL histdef2d(iff,o_ale_wk) 662 CALL histdef2d(iff,o_alp_wk) 663 CALL histdef2d(iff,o_ale) 664 CALL histdef2d(iff,o_alp) 665 CALL histdef2d(iff,o_cin) 666 CALL histdef2d(iff,o_wape) 667 CALL histdef2d(iff,o_wake_h) 668 CALL histdef2d(iff,o_wake_s) 669 CALL histdef3d(iff,o_dtwak) 670 CALL histdef3d(iff,o_dqwak) 671 CALL histdef3d(iff,o_wake_deltat) 672 CALL histdef3d(iff,o_wake_deltaq) 673 CALL histdef3d(iff,o_wake_omg) 674 ENDIF 675 !!! RomP CALL histdef3d(iff,o_Vprecip%flag,o_Vprecip%name, "precipitation vertical profile", "-") 676 CALL histdef3d(iff,o_ftd) 677 CALL histdef3d(iff,o_fqd) 678 ENDIF !(iflag_con.EQ.3) 679 680 IF(iflag_con.GE.3) THEN ! RomP >>> 681 CALL histdef3d(iff,o_wdtrainA) 682 CALL histdef3d(iff,o_wdtrainM) 683 CALL histdef3d(iff,o_Vprecip) 684 ENDIF !(iflag_con.GE.3) ! <<< RomP 685 686 !!! nrlmd le 10/04/2012 687 688 IF (iflag_trig_bl>=1) THEN 689 CALL histdef2d(iff,o_n2) 690 CALL histdef2d(iff,o_s2) 691 CALL histdef2d(iff,o_proba_notrig) 692 CALL histdef2d(iff,o_random_notrig) 693 CALL histdef2d(iff,o_ale_bl_trig) 694 CALL histdef2d(iff,o_ale_bl_stat) 695 ENDIF !(iflag_trig_bl>=1) 696 697 IF (iflag_clos_bl>=1) THEN 698 CALL histdef2d(iff,o_alp_bl_det) 699 CALL histdef2d(iff,o_alp_bl_fluct_m) 700 CALL histdef2d(iff,o_alp_bl_fluct_tke) 701 CALL histdef2d(iff,o_alp_bl_conv) 702 CALL histdef2d(iff,o_alp_bl_stat) 703 ENDIF !(iflag_clos_bl>=1) 704 705 !!! fin nrlmd le 10/04/2012 706 CALL histdef3d(iff,o_dtlsc) 707 CALL histdef3d(iff,o_dtlschr) 708 CALL histdef3d(iff,o_dqlsc) 709 CALL histdef3d(iff,o_beta_prec) 710 CALL histdef3d(iff,o_dtvdf) 711 CALL histdef3d(iff,o_dtdis) 712 CALL histdef3d(iff,o_dqvdf) 713 CALL histdef3d(iff,o_dteva) 714 CALL histdef3d(iff,o_dqeva) 715 CALL histdef3d(iff,o_ptconv) 716 CALL histdef3d(iff,o_ratqs) 717 CALL histdef3d(iff,o_dtthe) 718 719 IF (iflag_thermals.ge.1) THEN 720 CALL histdef3d(iff,o_dqlscth) 721 CALL histdef3d(iff,o_dqlscst) 722 CALL histdef3d(iff,o_dtlscth) 723 CALL histdef3d(iff,o_dtlscst) 724 CALL histdef2d(iff,o_plulth) 725 CALL histdef2d(iff,o_plulst) 726 CALL histdef2d(iff,o_lmaxth) 727 CALL histdef3d(iff,o_ptconvth) 728 CALL histdef3d(iff,o_f_th) 729 CALL histdef3d(iff,o_e_th) 730 CALL histdef3d(iff,o_w_th) 731 CALL histdef3d(iff,o_lambda_th) 732 CALL histdef2d(iff,o_ftime_th) 733 CALL histdef3d(iff,o_q_th) 734 CALL histdef3d(iff,o_a_th) 735 CALL histdef3d(iff,o_d_th) 736 CALL histdef2d(iff,o_f0_th) 737 CALL histdef2d(iff,o_zmax_th) 738 CALL histdef3d(iff,o_dqthe) 739 ENDIF !iflag_thermals.ge.1 740 741 CALL histdef3d(iff,o_dtajs) 742 CALL histdef3d(iff,o_dqajs) 743 CALL histdef3d(iff,o_dtswr) 744 CALL histdef3d(iff,o_dtsw0) 745 CALL histdef3d(iff,o_dtlwr) 746 CALL histdef3d(iff,o_dtlw0) 747 CALL histdef3d(iff,o_dtec) 748 CALL histdef3d(iff,o_duvdf) 749 CALL histdef3d(iff,o_dvvdf) 750 751 IF (ok_orodr) THEN 752 CALL histdef3d(iff,o_duoro) 753 CALL histdef3d(iff,o_dvoro) 754 CALL histdef3d(iff,o_dtoro) 755 ENDIF 756 757 IF (ok_orolf) THEN 758 CALL histdef3d(iff,o_dulif) 759 CALL histdef3d(iff,o_dvlif) 760 CALL histdef3d(iff,o_dtlif) 761 ENDIF 762 763 IF (ok_hines) then 764 CALL histdef3d(iff,o_duhin) 765 CALL histdef3d(iff,o_dvhin) 766 CALL histdef3d(iff,o_dthin) 767 ENDIF 768 769 CALL histdef3d(iff,o_rsu) 770 CALL histdef3d(iff,o_rsd) 771 CALL histdef3d(iff,o_rlu) 772 CALL histdef3d(iff,o_rld) 773 CALL histdef3d(iff,o_rsucs) 774 CALL histdef3d(iff,o_rsdcs) 775 CALL histdef3d(iff,o_rlucs) 776 CALL histdef3d(iff,o_rldcs) 777 CALL histdef3d(iff,o_tnt) 778 CALL histdef3d(iff,o_tntc) 779 CALL histdef3d(iff,o_tntr) 780 CALL histdef3d(iff,o_tntscpbl) 781 CALL histdef3d(iff,o_tnhus) 782 CALL histdef3d(iff,o_tnhusc) 783 CALL histdef3d(iff,o_tnhusscpbl) 784 CALL histdef3d(iff,o_evu) 785 CALL histdef3d(iff,o_h2o) 786 CALL histdef3d(iff,o_mcd) 787 CALL histdef3d(iff,o_dmc) 788 CALL histdef3d(iff,o_ref_liq) 789 CALL histdef3d(iff,o_ref_ice) 790 791 IF (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. & 792 RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. & 793 RCFC12_per.NE.RCFC12_act) THEN 794 CALL histdef2d(iff,o_rsut4co2) 795 CALL histdef2d(iff,o_rlut4co2) 796 CALL histdef2d(iff,o_rsutcs4co2) 797 CALL histdef2d(iff,o_rlutcs4co2) 798 CALL histdef3d(iff,o_rsu4co2) 799 CALL histdef3d(iff,o_rlu4co2) 800 CALL histdef3d(iff,o_rsucs4co2) 801 CALL histdef3d(iff,o_rlucs4co2) 802 CALL histdef3d(iff,o_rsd4co2) 803 CALL histdef3d(iff,o_rld4co2) 804 CALL histdef3d(iff,o_rsdcs4co2) 805 CALL histdef3d(iff,o_rldcs4co2) 806 807 ENDIF 808 376 else 377 CALL histvert(nid_files(iff), "plev", "pressure", "Pa", & 378 levmax(iff) - levmin(iff) + 1, & 379 rlevSTD(levmin(iff):levmax(iff)), nvertm(iff), "down") 380 endif 381 #endif 809 382 810 383 IF (nqtot>=3) THEN 811 384 DO iq=3,nqtot 812 385 iiq=niadv(iq) 813 o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10 /),tname(iiq),'Tracer '//ttext(iiq), "-",& 814 (/ '', '', '', '', '', '' /)) 815 CALL histdef3d(iff, o_trac(iq-2)) 816 o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10 /),'cum'//tname(iiq),& 817 'Cumulated tracer '//ttext(iiq), "-", (/ '', '', '', '', '', '' /)) 818 CALL histdef2d(iff, o_trac_cum(iq-2)) 386 o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10, 11, 11, 11 /), & 387 tname(iiq),'Tracer '//ttext(iiq), "-", & 388 (/ '', '', '', '', '', '', '', '', '' /)) 389 390 o_dtr_vdf(iq-2) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11 /), & 391 'd'//trim(tname(iq))//'_vdf', & 392 'Tendance tracer '//ttext(iiq), "-" , & 393 (/ '', '', '', '', '', '', '', '', '' /)) 394 395 o_dtr_the(iq-2) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11 /), & 396 'd'//trim(tname(iq))//'_the', & 397 'Tendance tracer '//ttext(iiq), "-", & 398 (/ '', '', '', '', '', '', '', '', '' /)) 399 400 o_dtr_con(iq-2) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11 /), & 401 'd'//trim(tname(iq))//'_con', & 402 'Tendance tracer '//ttext(iiq), "-", & 403 (/ '', '', '', '', '', '', '', '', '' /)) 404 405 o_dtr_lessi_impa(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 406 'd'//trim(tname(iq))//'_lessi_impa', & 407 'Tendance tracer '//ttext(iiq), "-", & 408 (/ '', '', '', '', '', '', '', '', '' /)) 409 410 o_dtr_lessi_nucl(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 411 'd'//trim(tname(iq))//'_lessi_nucl', & 412 'Tendance tracer '//ttext(iiq), "-", & 413 (/ '', '', '', '', '', '', '', '', '' /)) 414 415 o_dtr_insc(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 416 'd'//trim(tname(iq))//'_insc', & 417 'Tendance tracer '//ttext(iiq), "-", & 418 (/ '', '', '', '', '', '', '', '', '' /)) 419 420 o_dtr_bcscav(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 421 'd'//trim(tname(iq))//'_bcscav', & 422 'Tendance tracer '//ttext(iiq), "-", & 423 (/ '', '', '', '', '', '', '', '', '' /)) 424 425 o_dtr_evapls(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 426 'd'//trim(tname(iq))//'_evapls', & 427 'Tendance tracer '//ttext(iiq), "-", & 428 (/ '', '', '', '', '', '', '', '', '' /)) 429 430 o_dtr_ls(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 431 'd'//trim(tname(iq))//'_ls', & 432 'Tendance tracer '//ttext(iiq), "-", & 433 (/ '', '', '', '', '', '', '', '', '' /)) 434 435 o_dtr_trsp(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 436 'd'//trim(tname(iq))//'_trsp', & 437 'Tendance tracer '//ttext(iiq), "-", & 438 (/ '', '', '', '', '', '', '', '', '' /)) 439 440 o_dtr_sscav(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 441 'd'//trim(tname(iq))//'_sscav', & 442 'Tendance tracer '//ttext(iiq), "-", & 443 (/ '', '', '', '', '', '', '', '', '' /)) 444 445 o_dtr_sat(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 446 'd'//trim(tname(iq))//'_sat', & 447 'Tendance tracer '//ttext(iiq), "-", & 448 (/ '', '', '', '', '', '', '', '', '' /)) 449 450 o_dtr_uscav(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 451 'd'//trim(tname(iq))//'_uscav', & 452 'Tendance tracer '//ttext(iiq), "-", & 453 (/ '', '', '', '', '', '', '', '', '' /)) 454 455 o_dtr_dry(iq-2) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11 /), & 456 'cum'//'d'//trim(tname(iq))//'_dry', & 457 'tracer tendency dry deposition'//ttext(iiq), "-", & 458 (/ '', '', '', '', '', '', '', '', '' /)) 459 460 o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10, 11, 11, 11 /), & 461 'cum'//tname(iiq),& 462 'Cumulated tracer '//ttext(iiq), "-", & 463 (/ '', '', '', '', '', '', '', '', '' /)) 819 464 ENDDO 820 465 ENDIF 821 822 CALL histend(nid_files(iff))823 824 ndex2d = 0825 ndex3d = 0826 466 827 467 ENDIF ! clef_files … … 837 477 ecrit_LES = ecrit_files(5) 838 478 ecrit_ins = ecrit_files(6) 479 freq_outNMC(1) = ecrit_files(7)*86400. 480 freq_outNMC(2) = ecrit_files(8)*86400. 481 freq_outNMC(3) = ecrit_files(9)*86400. 839 482 840 483 WRITE(lunout,*)'swaero_diag=',swaero_diag … … 842 485 end SUBROUTINE phys_output_open 843 486 844 SUBROUTINE histdef2d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 845 846 USE ioipsl 847 USE dimphy 848 USE mod_phys_lmdz_para 849 USE iophy 850 851 IMPLICIT NONE 852 853 INCLUDE "dimensions.h" 854 INCLUDE "temps.h" 855 INCLUDE "clesphys.h" 856 857 INTEGER :: iff 858 LOGICAL :: lpoint 859 INTEGER, DIMENSION(nfiles) :: flag_var 860 CHARACTER(LEN=20) :: nomvar 861 CHARACTER(LEN=*) :: titrevar 862 CHARACTER(LEN=*) :: unitvar 863 864 REAL zstophym 865 866 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 867 zstophym=zoutm(iff) 868 ELSE 869 zstophym=zdtime 870 ENDIF 871 872 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 873 CALL conf_physoutputs(nomvar,flag_var) 874 875 IF(.NOT.lpoint) THEN 876 IF ( flag_var(iff)<=lev_files(iff) ) THEN 877 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 878 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 879 type_ecri(iff), zstophym,zoutm(iff)) 880 ENDIF 881 ELSE 882 IF ( flag_var(iff)<=lev_files(iff) ) THEN 883 CALL histdef (nid_files(iff),nomvar,titrevar,unitvar, & 884 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 885 type_ecri(iff), zstophym,zoutm(iff)) 886 ENDIF 887 ENDIF 888 889 ! Set swaero_diag=true if at least one of the concerned variables are defined 890 IF (nomvar=='topswad' .OR. nomvar=='topswai' .OR. nomvar=='solswad' .OR. nomvar=='solswai' ) THEN 891 IF ( flag_var(iff)<=lev_files(iff) ) THEN 892 swaero_diag=.TRUE. 893 END IF 894 END IF 895 END SUBROUTINE histdef2d_old 896 897 SUBROUTINE histdef2d (iff,var) 898 899 USE ioipsl 900 USE dimphy 901 USE mod_phys_lmdz_para 902 USE iophy 903 904 IMPLICIT NONE 905 906 INCLUDE "dimensions.h" 907 INCLUDE "temps.h" 908 INCLUDE "clesphys.h" 909 910 INTEGER :: iff 911 TYPE(ctrl_out) :: var 912 913 REAL zstophym 914 CHARACTER(LEN=20) :: typeecrit 915 916 ! ug On récupère le type écrit de la structure: 917 ! Assez moche, à refaire si meilleure méthode... 918 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 919 typeecrit = 'once' 920 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 921 typeecrit = 't_min(X)' 922 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 923 typeecrit = 't_max(X)' 924 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 925 typeecrit = 'inst(X)' 926 ELSE 927 typeecrit = type_ecri_files(iff) 928 ENDIF 929 930 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 931 zstophym=zoutm(iff) 932 ELSE 933 zstophym=zdtime 934 ENDIF 935 936 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 937 CALL conf_physoutputs(var%name, var%flag) 938 939 IF(.NOT.clef_stations(iff)) THEN 940 IF ( var%flag(iff)<=lev_files(iff) ) THEN 941 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 942 iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & 943 typeecrit, zstophym,zoutm(iff)) 944 ENDIF 945 ELSE 946 IF ( var%flag(iff)<=lev_files(iff)) THEN 947 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 948 npstn,1,nhorim(iff), 1,1,1, -99, 32, & 949 typeecrit, zstophym,zoutm(iff)) 950 ENDIF 951 ENDIF 952 953 ! Set swaero_diag=true if at least one of the concerned variables are defined 954 IF (var%name=='topswad' .OR. var%name=='topswai' .OR. var%name=='solswad' .OR. var%name=='solswai' ) THEN 955 IF ( var%flag(iff)<=lev_files(iff) ) THEN 956 swaero_diag=.TRUE. 957 END IF 958 END IF 959 END SUBROUTINE histdef2d 960 961 SUBROUTINE histdef3d_old (iff,lpoint,flag_var,nomvar,titrevar,unitvar) 962 963 USE ioipsl 964 USE dimphy 965 USE mod_phys_lmdz_para 966 USE iophy 967 968 IMPLICIT NONE 969 970 INCLUDE "dimensions.h" 971 INCLUDE "temps.h" 972 ! INCLUDE "indicesol.h" 973 INCLUDE "clesphys.h" 974 975 INTEGER :: iff 976 LOGICAL :: lpoint 977 INTEGER, DIMENSION(nfiles) :: flag_var 978 CHARACTER(LEN=20) :: nomvar 979 CHARACTER(LEN=*) :: titrevar 980 CHARACTER(LEN=*) :: unitvar 981 982 REAL zstophym 983 984 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 985 CALL conf_physoutputs(nomvar,flag_var) 986 987 IF (type_ecri(iff)=='inst(X)'.OR.type_ecri(iff)=='once') THEN 988 zstophym=zoutm(iff) 989 ELSE 990 zstophym=zdtime 991 ENDIF 992 993 IF(.NOT.lpoint) THEN 994 IF ( flag_var(iff)<=lev_files(iff) ) THEN 995 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 996 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 997 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & 998 zstophym, zoutm(iff)) 999 ENDIF 1000 ELSE 1001 IF ( flag_var(iff)<=lev_files(iff) ) THEN 1002 CALL histdef (nid_files(iff), nomvar, titrevar, unitvar, & 1003 npstn,1,nhorim(iff), klev, levmin(iff), & 1004 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 1005 type_ecri(iff), zstophym,zoutm(iff)) 1006 ENDIF 1007 ENDIF 1008 END SUBROUTINE histdef3d_old 1009 1010 SUBROUTINE histdef3d (iff,var) 1011 1012 USE ioipsl 1013 USE dimphy 1014 USE mod_phys_lmdz_para 1015 USE iophy 1016 1017 IMPLICIT NONE 1018 1019 INCLUDE "dimensions.h" 1020 INCLUDE "temps.h" 1021 INCLUDE "clesphys.h" 1022 1023 INTEGER :: iff 1024 TYPE(ctrl_out) :: var 1025 1026 REAL zstophym 1027 CHARACTER(LEN=20) :: typeecrit 1028 1029 ! ug On récupère le type écrit de la structure: 1030 ! Assez moche, à refaire si meilleure méthode... 1031 IF (INDEX(var%type_ecrit(iff), "once") > 0) THEN 1032 typeecrit = 'once' 1033 ELSE IF(INDEX(var%type_ecrit(iff), "t_min") > 0) THEN 1034 typeecrit = 't_min(X)' 1035 ELSE IF(INDEX(var%type_ecrit(iff), "t_max") > 0) THEN 1036 typeecrit = 't_max(X)' 1037 ELSE IF(INDEX(var%type_ecrit(iff), "inst") > 0) THEN 1038 typeecrit = 'inst(X)' 1039 ELSE 1040 typeecrit = type_ecri_files(iff) 1041 ENDIF 1042 1043 1044 ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def 1045 CALL conf_physoutputs(var%name,var%flag) 1046 1047 IF (typeecrit=='inst(X)'.OR.typeecrit=='once') THEN 1048 zstophym=zoutm(iff) 1049 ELSE 1050 zstophym=zdtime 1051 ENDIF 1052 1053 IF(.NOT.clef_stations(iff)) THEN 1054 IF ( var%flag(iff)<=lev_files(iff) ) THEN 1055 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 1056 iim, jj_nb, nhorim(iff), klev, levmin(iff), & 1057 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, typeecrit, & 1058 zstophym, zoutm(iff)) 1059 ENDIF 1060 ELSE 1061 IF ( var%flag(iff)<=lev_files(iff)) THEN 1062 CALL histdef (nid_files(iff), var%name, var%description, var%unit, & 1063 npstn,1,nhorim(iff), klev, levmin(iff), & 1064 levmax(iff)-levmin(iff)+1, nvertm(iff), 32, & 1065 typeecrit, zstophym,zoutm(iff)) 1066 ENDIF 1067 ENDIF 1068 END SUBROUTINE histdef3d 1069 1070 SUBROUTINE conf_physoutputs(nam_var,flag_var) 1071 !!! Lecture des noms et niveau de sortie des variables dans output.def 1072 ! en utilisant les routines getin de IOIPSL 1073 use ioipsl 1074 1075 IMPLICIT NONE 1076 1077 include 'iniprint.h' 1078 1079 CHARACTER(LEN=20) :: nam_var 1080 INTEGER, DIMENSION(nfiles) :: flag_var 1081 1082 IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) 1083 CALL getin('flag_'//nam_var,flag_var) 1084 CALL getin('name_'//nam_var,nam_var) 1085 IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) 1086 1087 END SUBROUTINE conf_physoutputs 487 1088 488 1089 489 SUBROUTINE convers_timesteps(str,dtime,timestep) -
LMDZ5/branches/testing/libf/phylmd/phys_output_var_mod.F90
r1795 r1864 25 25 26 26 ! ug Plein de variables venues de phys_output_mod 27 INTEGER, PARAMETER :: nfiles = 627 INTEGER, PARAMETER :: nfiles = 9 28 28 LOGICAL, DIMENSION(nfiles), SAVE :: clef_files 29 29 LOGICAL, DIMENSION(nfiles), SAVE :: clef_stations … … 41 41 CHARACTER(LEN=20), DIMENSION(nfiles), SAVE :: type_ecri_files, phys_out_filetypes 42 42 !$OMP THREADPRIVATE(type_ecri_files, phys_out_filetypes) 43 CHARACTER(LEN=20), DIMENSION(nfiles), SAVE :: phys_out_filenames 44 !$OMP THREADPRIVATE(phys_out_filenames) 43 45 44 46 ! swaero_diag : flag indicates if it is necessary to do calculation for some aerosol diagnostics … … 49 51 INTEGER, SAVE:: levmax(nfiles) 50 52 !$OMP THREADPRIVATE(levmin, levmax) 53 54 REAL, SAVE :: zdtime_moy 55 !$OMP THREADPRIVATE(zdtime_moy) 56 57 LOGICAL, SAVE :: vars_defined = .FALSE. ! ug PAS THREADPRIVATE ET C'EST NORMAL 51 58 52 59 TYPE ctrl_out -
LMDZ5/branches/testing/libf/phylmd/phys_state_var_mod.F90
r1795 r1864 68 68 REAL, ALLOCATABLE, SAVE :: zmax0(:), f0(:) ! 69 69 !$OMP THREADPRIVATE(zmax0,f0) 70 REAL, ALLOCATABLE, SAVE :: ema_work1(:,:), ema_work2(:,:)71 !$OMP THREADPRIVATE( ema_work1,ema_work2)70 REAL, ALLOCATABLE, SAVE :: sig1(:,:), w01(:,:) 71 !$OMP THREADPRIVATE(sig1,w01) 72 72 REAL, ALLOCATABLE, SAVE :: entr_therm(:,:), fm_therm(:,:) 73 73 !$OMP THREADPRIVATE(entr_therm,fm_therm) … … 332 332 REAL,SAVE,ALLOCATABLE :: newsst(:) 333 333 !$OMP THREADPRIVATE(newsst) 334 REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:) 335 !$OMP THREADPRIVATE(ustar,u10m,v10m )334 REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:),wstar(:,:) 335 !$OMP THREADPRIVATE(ustar,u10m,v10m,wstar) 336 336 ! 337 337 ! ok_ade=T -ADE=topswad-topsw … … 400 400 ALLOCATE(coefm(klon,klev+1,nbsrf+1)) 401 401 ALLOCATE(zmax0(klon), f0(klon)) 402 ALLOCATE( ema_work1(klon,klev), ema_work2(klon,klev))402 ALLOCATE(sig1(klon,klev), w01(klon,klev)) 403 403 ALLOCATE(entr_therm(klon,klev), fm_therm(klon,klev+1)) 404 404 ALLOCATE(detr_therm(klon,klev)) … … 508 508 ALLOCATE(rlonPOS(klon)) 509 509 ALLOCATE(newsst(klon)) 510 ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf) )510 ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf),wstar(klon,nbsrf+1)) 511 511 ALLOCATE(topswad(klon), solswad(klon)) 512 512 ALLOCATE(topswai(klon), solswai(klon)) … … 536 536 deallocate(ratqs, pbl_tke,coefh,coefm) 537 537 deallocate(zmax0, f0) 538 deallocate( ema_work1, ema_work2)538 deallocate(sig1, w01) 539 539 deallocate(entr_therm, fm_therm) 540 540 deallocate(detr_therm) … … 619 619 deallocate(rlonPOS) 620 620 deallocate(newsst) 621 deallocate(ustar,u10m, v10m )621 deallocate(ustar,u10m, v10m,wstar) 622 622 deallocate(topswad, solswad) 623 623 deallocate(topswai, solswai) -
LMDZ5/branches/testing/libf/phylmd/physiq.F
r1795 r1864 29 29 USE phys_state_var_mod ! Variables sauvegardees de la physique 30 30 USE phys_output_var_mod ! Variables pour les ecritures des sorties 31 USE phys_output_write_mod 31 32 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 32 33 USE phys_output_mod … … 44 45 use conf_phys_m, only: conf_phys 45 46 use radlwsw_m, only: radlwsw 47 use phyaqua_mod, only: zenang_an 46 48 USE control_mod 47 49 #ifdef REPROBUS … … 49 51 #endif 50 52 USE indice_sol_mod 53 USE phytrac_mod, ONLY : phytrac 51 54 52 55 !IM stations CFMIP … … 173 176 PARAMETER (ok_region=.FALSE.) 174 177 c====================================================================== 175 real weak_inversion(klon),dthmin(klon)176 178 real seuil_inversion 177 179 save seuil_inversion … … 184 186 REAL zz,znum,zden 185 187 REAL wmax_th(klon) 186 REAL zmax_th(klon)187 188 REAL tau_overturning_th(klon) 188 189 … … 220 221 REAL u(klon,klev) 221 222 REAL v(klon,klev) 222 REAL t(klon,klev),theta (klon,klev),thetal(klon,klev)223 REAL t(klon,klev),thetal(klon,klev) 223 224 c thetal: ligne suivante a decommenter si vous avez les fichiers MPL 20130625 224 225 c fth_fonctions.F90 et parkind1.F90 … … 227 228 REAL qx(klon,klev,nqtot) 228 229 REAL flxmass_w(klon,klev) 229 REAL omega(klon,klev) ! vitesse verticale en Pa/s230 230 REAL d_u(klon,klev) 231 231 REAL d_v(klon,klev) … … 242 242 real clw(klon,klev),elij(klon,klev,klev) 243 243 real epmlmMm(klon,klev,klev),eplaMm(klon,klev) 244 real wdtrainA(klon,klev),wdtrainM(klon,klev)245 244 ! RomP <<< 246 245 !IM definition dynamique o_trac dans phys_output_open … … 281 280 c 282 281 c 283 c prw: precipitable water284 real prw(klon)285 282 286 283 REAL convliq(klon,klev) ! eau liquide nuageuse convective … … 295 292 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2) 296 293 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg) 297 REAL flwp(klon), fiwp(klon)298 REAL flwc(klon,klev), fiwc(klon,klev)299 294 REAL flwp_c(klon), fiwp_c(klon) 300 295 REAL flwc_c(klon,klev), fiwc_c(klon,klev) … … 302 297 REAL flwc_s(klon,klev), fiwc_s(klon,klev) 303 298 304 REAL evap_pot(klon,nbsrf)305 299 306 300 cIM ISCCP simulator v3.4 … … 528 522 c$OMP THREADPRIVATE(itap) 529 523 c 530 real slp(klon) ! sea level pressure531 c532 REAL fevap(klon,nbsrf)533 REAL fluxlat(klon,nbsrf)534 c535 REAL qsol(klon)536 524 REAL,save :: solarlong0 537 525 c$OMP THREADPRIVATE(solarlong0) … … 544 532 c 545 533 INTEGER igwd,idx(klon),itest(klon) 546 c547 REAL agesno(klon,nbsrf)548 534 c 549 535 c REAL,allocatable,save :: run_off_lic_0(:) … … 565 551 566 552 REAL mip(klon,klev) ! mass flux shed by the adiab ascent at each level 567 REAL Vprecip(klon,klev+1) ! precipitation vertical profile568 553 c 569 554 REAL wape_prescr, fip_prescr … … 589 574 c$OMP THREADPRIVATE(wake_s_min_lsp) 590 575 591 real ale_wake(klon)592 real alp_wake(klon)593 576 594 577 real ok_wk_lsp(klon) … … 609 592 REAL wake_dtPBL(klon,klev) ! Wake : differential heating (wake - unpertubed) PBL 610 593 REAL wake_dqPBL(klon,klev) ! Wake : differential moistening (wake - unpertubed) PBL 611 REAL wake_omg(klon,klev) ! Wake : velocity difference (wake - unpertubed)612 594 REAL wake_ddeltat(klon,klev),wake_ddeltaq(klon,klev) 613 595 REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg … … 615 597 c 616 598 cpourquoi y'a pas de save?? 617 REAL wake_h(klon) ! Wake : hauteur de la poche froide618 599 c 619 600 INTEGER wake_k(klon) ! Wake sommet … … 645 626 cRR:fin declarations poches froides 646 627 c======================================================================================================= 647 648 REAL zw2(klon,klev+1) 649 REAL fraca(klon,klev+1) 628 650 629 REAL ztv(klon,klev),ztva(klon,klev) 651 630 REAL zpspsk(klon,klev) … … 665 644 real env_tke_max0(klon) ! TKE dans l'environnement au LCL 666 645 667 c---Spectre de thermiques de type 2 au LCL668 real n2(klon),s2(klon)669 real ale_bl_stat(klon)670 671 646 c---D\'eclenchement stochastique 672 647 integer :: tau_trig(klon) 673 real proba_notrig(klon)674 real random_notrig(klon)675 648 676 649 c--------Statistical Boundary Layer Closure: ALP_BL-------- … … 680 653 real env_tke_max(klon,klev) ! Profil de TKE dans l'environnement 681 654 682 c---Fermeture statistique683 real alp_bl_det(klon) ! ALP d\'terministe du thermique unique684 real alp_bl_fluct_m(klon) ! ALP li\'ee aux fluctuations de flux de masse sous-nuageux685 real alp_bl_fluct_tke(klon) ! ALP li\'ee aux fluctuations d'\'energie cin\'etique sous-nuageuse686 real alp_bl_conv(klon) ! ALP li\'ee \`a grande \'echelle687 real alp_bl_stat(klon) ! ALP totale688 655 689 656 ccc fin nrlmd le 10/04/2012 … … 697 664 c Variables locales: 698 665 c 699 REAL cdragh(klon) ! drag coefficient pour T and Q700 REAL cdragm(klon) ! drag coefficient pour vent701 666 cAA 702 667 cAA Pour phytrac 703 668 REAL u1(klon) ! vents dans la premiere couche U 704 669 REAL v1(klon) ! vents dans la premiere couche V 705 706 REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)707 670 708 671 c@$$ LOGICAL offline ! Controle du stockage ds "physique" … … 713 676 ! RomP >>> 714 677 REAL beta_prec_fisrt(klon,klev) ! taux de conv de l'eau cond (fisrt) 715 REAL beta_prec(klon,klev) ! taux de conv de l'eau cond (utilise)716 678 ! RomP <<< 717 679 INTEGER :: iii … … 722 684 c 723 685 cIM 050204 END 724 REAL evap(klon), devap(klon) ! evaporation et sa derivee 725 REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee 726 727 REAL bils(klon) ! bilan de chaleur au sol 728 729 REAL wfbilo(klon,nbsrf) ! bilan d'eau, pour chaque 730 C ! type de sous-surface et pondere par la fraction 731 REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque 732 C ! type de sous-surface et pondere par la fraction 733 REAL slab_wfbils(klon) ! bilan de chaleur au sol pour le cas de slab, sur les points d'ocean 734 735 REAL fder(klon) 736 REAL ve(klon) ! integr. verticale du transport meri. de l'energie 737 REAL vq(klon) ! integr. verticale du transport meri. de l'eau 738 REAL ue(klon) ! integr. verticale du transport zonal de l'energie 739 REAL uq(klon) ! integr. verticale du transport zonal de l'eau 740 c 741 REAL frugs(klon,nbsrf) 742 REAL zxrugs(klon) ! longueur de rugosite 686 REAL devap(klon) ! evaporation et sa derivee 687 REAL dsens(klon) ! chaleur sensible et sa derivee 688 743 689 c 744 690 c Conditions aux limites … … 804 750 REAL diafra(klon,klev) ! fraction nuageuse 805 751 REAL cldliq(klon,klev) ! eau liquide nuageuse 806 REAL cldfra(klon,klev) ! fraction nuageuse807 REAL cldtau(klon,klev) ! epaisseur optique808 REAL cldemi(klon,klev) ! emissivite infrarouge809 752 c 810 753 CXXX PB 811 754 REAL fluxq(klon,klev, nbsrf) ! flux turbulent d'humidite 812 REAL fluxt(klon,klev, nbsrf) ! flux turbulent de chaleur813 REAL fluxu(klon,klev, nbsrf) ! flux turbulent de vitesse u814 REAL fluxv(klon,klev, nbsrf) ! flux turbulent de vitesse v815 755 c 816 756 REAL zxfluxt(klon, klev) … … 818 758 REAL zxfluxu(klon, klev) 819 759 REAL zxfluxv(klon, klev) 820 CXXX 821 c 822 REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface 823 REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface 760 824 761 c Le rayonnement n'est pas calcule tous les pas, il faut donc 825 762 c sauvegarder les sorties du rayonnement … … 834 771 REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s) 835 772 REAL conv_t(klon,klev) ! convergence de la temperature(K/s) 836 c 837 REAL cldl(klon),cldm(klon),cldh(klon) !nuages bas, moyen et haut 838 REAL cldt(klon),cldq(klon) !nuage total, eau liquide integree 839 c 840 REAL zxtsol(klon), zxqsurf(klon), zxsnow(klon), zxfluxlat(klon) 773 774 c 775 REAL zxsnow(klon) 841 776 REAL zxsnow_dummy(klon) 842 777 c … … 857 792 REAL t_coup 858 793 PARAMETER (t_coup=234.0) 859 c 860 REAL zphi(klon,klev) 794 861 795 cym A voir plus tard !! 862 796 cym REAL zx_relief(iim,jjmp1) … … 864 798 c 865 799 c Grandeurs de sorties 866 REAL s_ pblh(klon), s_lcl(klon), s_capCL(klon)867 REAL s_oliqCL(klon), s_cteiCL(klon) , s_pblt(klon)868 REAL s_t herm(klon), s_trmb1(klon), s_trmb2(klon)800 REAL s_capCL(klon) 801 REAL s_oliqCL(klon), s_cteiCL(klon) 802 REAL s_trmb1(klon), s_trmb2(klon) 869 803 REAL s_trmb3(klon) 870 804 cKE43 871 805 c Variables locales pour la convection de K. Emanuel (sb): 872 c 873 REAL upwd(klon,klev) ! saturated updraft mass flux 874 REAL dnwd(klon,klev) ! saturated downdraft mass flux 875 REAL dnwd0(klon,klev) ! unsaturated downdraft mass flux 806 876 807 REAL tvp(klon,klev) ! virtual temp of lifted parcel 877 REAL plcl(klon) ! Lifting Condensation Level878 REAL plfc(klon) ! Level of Free Convection879 REAL wbeff(klon) ! saturated updraft velocity at LFC880 808 CHARACTER*40 capemaxcels !max(CAPE) 881 809 … … 902 830 c eva: evaporation de l'eau liquide nuageuse 903 831 c vdf: couche limite (Vertical DiFfusion) 904 REAL rneb(klon,klev)905 832 906 833 ! tendance nulles … … 914 841 cIM 081204 END 915 842 c 916 REAL pmfu(klon,klev), pmfd(klon,klev)917 843 REAL pen_u(klon,klev), pen_d(klon,klev) 918 844 REAL pde_u(klon,klev), pde_d(klon,klev) 919 845 INTEGER kcbot(klon), kctop(klon), kdtop(klon) 920 REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)921 REAL prfl(klon,klev+1), psfl(klon,klev+1)922 c923 REAL rain_lsc(klon)924 REAL snow_lsc(klon)925 846 c 926 847 REAL ratqsc(klon,klev) … … 935 856 logical ok_newmicro 936 857 save ok_newmicro 937 real ref_liq(klon,klev), ref_ice(klon,klev)938 858 c$OMP THREADPRIVATE(ok_newmicro) 939 859 save fact_cldcon,facttemps … … 973 893 c Variables locales pour effectuer les appels en serie 974 894 c 975 REAL zx_rh(klon,klev)976 895 cIM RH a 2m (la surface) 977 REAL rh2m(klon), qsat2m(klon)978 REAL tpot(klon), tpote(klon)979 896 REAL Lheat 980 897 … … 1091 1008 REAL ZRCPD 1092 1009 c-jld ec_conser 1093 REAL t2m(klon,nbsrf) ! temperature a 2m1094 1010 REAL q2m(klon,nbsrf) ! humidite a 2m 1095 1011 1096 1012 cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels 1097 REAL zt2m(klon), zq2m(klon) !temp., hum. 2m moyenne s/ 1 maille1098 REAL zustar(klon),zu10m(klon), zv10m(klon) ! u* et vents a 10m moyennes s/1 maille1099 1013 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max 1100 1014 CHARACTER*40 tinst, tave, typeval 1101 1015 REAL cldtaupi(klon,klev) ! Cloud optical thickness for pre-industrial (pi) aerosols 1102 1016 1103 REAL re(klon, klev) ! Cloud droplet effective radius1104 REAL fl(klon, klev) ! denominator of re1105 1017 1106 1018 REAL re_top(klon), fl_top(klon) ! CDR at top of liquid water clouds … … 1228 1140 ! Utilise notamment en 1D mais peut etre active egalement en 3D 1229 1141 ! en imposant la valeur de igout. 1230 c====================================================================== 1231 1142 c======================================================================d 1232 1143 if (prt_level.ge.1) then 1233 1144 igout=klon/2+1/klon … … 1250 1161 1251 1162 c====================================================================== 1252 1253 cym => necessaire pour iflag_con != 21254 pmfd(:,:) = 0.1255 pen_u(:,:) = 0.1256 pen_d(:,:) = 0.1257 pde_d(:,:) = 0.1258 pde_u(:,:) = 0.1259 aam=0.1260 1261 torsfc=0.1262 forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg1263 1163 1264 1164 if (first) then … … 1301 1201 1302 1202 endif ! first 1203 1204 cym => necessaire pour iflag_con != 2 1205 pmfd(:,:) = 0. 1206 pen_u(:,:) = 0. 1207 pen_d(:,:) = 0. 1208 pde_d(:,:) = 0. 1209 pde_u(:,:) = 0. 1210 aam=0. 1211 1212 torsfc=0. 1213 forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg 1214 1215 1303 1216 1304 1217 modname = 'physiq' … … 1600 1513 call phys_output_open(rlon,rlat,nCFMIP,tabijGCM, 1601 1514 & iGCM,jGCM,lonGCM,latGCM, 1602 & jjmp1,nlevSTD,clevSTD, 1515 & jjmp1,nlevSTD,clevSTD,rlevSTD, 1603 1516 & nbteta, ctetaSTD, dtime,ok_veget, 1604 1517 & type_ocean,iflag_pbl,ok_mensuel,ok_journe, … … 1606 1519 & read_climoz, phys_out_filestations, 1607 1520 & new_aod, aerosol_couple, 1608 & flag_aerosol_strat ) 1521 & flag_aerosol_strat, pdtphys, paprs, pphis, 1522 & pplay, lmax_th, ptconv, ptconvth, ivap, 1523 & d_t, qx, d_qx, zmasse, ok_sync) 1609 1524 c$OMP END MASTER 1610 1525 c$OMP BARRIER 1611 1526 1527 #undef histISCCP 1612 1528 #ifdef histISCCP 1613 1529 #include "ini_histISCCP.h" 1614 #endif1615 1616 #ifdef histNMC1617 #include "ini_histhfNMC.h"1618 #include "ini_histdayNMC.h"1619 #include "ini_histmthNMC.h"1620 1530 #endif 1621 1531 … … 1969 1879 DO i = 1, klon 1970 1880 zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1971 c zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1972 zlsdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1881 cjyg< 1882 c Attention : Arnaud a propose des formules completement differentes 1883 c A verifier !!! 1884 zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k)) 1885 IF (iflag_ice_thermo .EQ. 0) THEN 1886 zlsdcp=zlvdcp 1887 ENDIF 1888 c>jyg 1889 1973 1890 zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k))) 1974 1891 zb = MAX(0.0,ql_seri(i,k)) … … 2083 2000 e t_seri, q_seri, u_seri, v_seri, 2084 2001 e pplay, paprs, pctsrf, 2085 + ftsol, falb1, falb2, ustar, u10m, v10m,2002 + ftsol,falb1,falb2,ustar,u10m,v10m,wstar, 2086 2003 s sollwdown, cdragh, cdragm, u1, v1, 2087 2004 s albsol1, albsol2, sens, evap, … … 2354 2271 nbtr_tmp=nbtr 2355 2272 END IF 2356 CALL concvl (iflag_con,iflag_clos, 2273 cjyg iflag_con est dans clesphys 2274 cc CALL concvl (iflag_con,iflag_clos, 2275 CALL concvl (iflag_clos, 2357 2276 . dtime,paprs,pplay,t_undi,q_undi, 2358 2277 . t_wake,q_wake,wake_s, 2359 2278 . u_seri,v_seri,tr_seri,nbtr_tmp, 2360 2279 . ALE,ALP, 2361 . ema_work1,ema_work2,2280 . sig1,w01, 2362 2281 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr, 2363 2282 . rain_con, snow_con, ibas_con, itop_con, sigd, … … 2392 2311 . paprs,pplay,t_seri,q_seri, 2393 2312 . u_seri,v_seri,tr_seri,ntra, 2394 . ema_work1,ema_work2,2313 . sig1,w01, 2395 2314 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr, 2396 2315 . rain_con, snow_con, ibas_con, itop_con, … … 2856 2775 . frac_impa, frac_nucl, beta_prec_fisrt, 2857 2776 . prfl, psfl, rhcl, 2858 . zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cldcon ) 2777 . zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cldcon, 2778 . iflag_ice_thermo) 2859 2779 2860 2780 WHERE (rain_lsc < 0) rain_lsc = 0. … … 3729 3649 I paprs, pplay, pmfu, pmfd, 3730 3650 I pen_u, pde_u, pen_d, pde_d, 3731 I cdragh, coefh(:,:,is_ave), 3651 I cdragh, coefh(:,:,is_ave), fm_therm, entr_therm, 3732 3652 I u1, v1, ftsol, pctsrf, 3733 I ustar, u10m, v10m, 3653 I zustar, zu10m, zv10m, 3654 I wstar(:,is_ave), ale_bl, ale_wake, 3734 3655 I rlat, rlon, 3735 3656 I frac_impa,frac_nucl, beta_prec_fisrt,beta_prec, … … 4031 3952 endif 4032 3953 4033 #include "phys_output_write_new.h" 3954 3955 !On effectue les sorties: 3956 3957 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 3958 & pplay, lmax_th, aerosol_couple, & 3959 & ok_ade, ok_aie, ivap, new_aod, ok_sync, & 3960 & ptconv, read_climoz, clevSTD, freq_moyNMC, & 3961 & ptconvth, d_t, qx, d_qx, zmasse, & 3962 & flag_aerosol_strat) 4034 3963 4035 3964 … … 4038 3967 #ifdef histISCCP 4039 3968 #include "write_histISCCP.h" 4040 #endif4041 4042 #ifdef histNMC4043 #include "write_histhfNMC.h"4044 #include "write_histdayNMC.h"4045 #include "write_histmthNMC.h"4046 3969 #endif 4047 3970 -
LMDZ5/branches/testing/libf/phylmd/radlwsw_m.F90
r1795 r1864 334 334 !===== iflag_rrtm ================================================ 335 335 ! 336 print*,'iflag_rrtm = ', iflag_rrtm 336 337 IF (iflag_rrtm == 0) THEN 337 338 ! Old radiation scheme, used for AR4 runs -
LMDZ5/branches/testing/libf/phylmd/readaerosolstrato.F90
r1795 r1864 33 33 integer i, k, band, wave 34 34 integer, save :: mth_pre 35 !$OMP THREADPRIVATE(mth_pre) 35 36 36 37 real, allocatable, dimension(:,:), save :: tau_aer_strat … … 41 42 real, allocatable:: tauaerstrat_mois(:, :, :) 42 43 real, allocatable:: tauaerstrat_mois_glo(:, :) 43 real, allocatable:: tauaerstrat_mois_glo_bands(:,:,:)44 44 45 45 ! For NetCDF: … … 61 61 IF (.not.ALLOCATED(tau_aer_strat)) ALLOCATE(tau_aer_strat(klon,klev)) 62 62 63 !--only read file if beginning of run or start of new month 64 IF (debut.OR.mth_cur.NE.mth_pre) THEN 65 63 66 IF (is_mpi_root) THEN 64 65 IF (debut.OR.mth_cur.NE.mth_pre) THEN66 67 67 68 IF (nbands.NE.2) THEN … … 107 108 ENDIF 108 109 109 ALLOCATE(tauaerstrat(n_lon, n_lat, n_lev, n_month)) 110 ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev)) 111 ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev)) 112 ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands)) 110 IF (.not.ALLOCATED(tauaerstrat)) ALLOCATE(tauaerstrat(n_lon, n_lat, n_lev, n_month)) 111 IF (.not.ALLOCATED(tauaerstrat_mois)) ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev)) 112 IF (.not.ALLOCATED(tauaerstrat_mois_glo)) ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev)) 113 113 114 114 !--reading stratospheric AOD at 550 nm … … 128 128 CALL grid2dTo1d_glo(tauaerstrat_mois,tauaerstrat_mois_glo) 129 129 130 ! DEALLOCATE(tauaerstrat) 131 ! DEALLOCATE(tauaerstrat_mois) 132 ! DEALLOCATE(tauaerstrat_mois_glo) 133 134 ENDIF !--is_mpi_root 135 130 136 !--scatter on all proc 131 137 CALL scatter(tauaerstrat_mois_glo,tau_aer_strat) 132 138 133 DEALLOCATE(tauaerstrat) 134 DEALLOCATE(tauaerstrat_mois) 135 DEALLOCATE(tauaerstrat_mois_glo) 136 139 !--keep memory of previous month 137 140 mth_pre=mth_cur 138 141 139 142 ENDIF !--debut ou nouveau mois 140 143 141 ENDIF !--is_mpi_root142 143 144 !--total vertical aod at the 5 wavelengths 144 145 DO wave=1, nwave 145 146 DO k=1, klev 146 tausum_aero(:,wave,id_strat)=tausum_aero(:,wave,id_strat)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2) 147 tausum_aero(:,wave,id_STRAT)=tausum_aero(:,wave,id_STRAT)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2) 148 ! tausum_aero(:,wave,id_ASBCM)=tausum_aero(:,wave,id_ASBCM)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2) 147 149 ENDDO 148 150 ENDDO -
LMDZ5/branches/testing/libf/phylmd/traclmdz_mod.F90
r1795 r1864 337 337 SUBROUTINE traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & 338 338 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon, couchelimite, sh, & 339 rh, pphi, ustar, zu10m, zv10m, &339 rh, pphi, ustar, wstar, ale_bl, ale_wake, zu10m, zv10m, & 340 340 !! tr_seri, source, solsym, d_tr_cl, zmasse) !RomP 341 341 tr_seri, source, solsym, d_tr_cl,d_tr_dec, zmasse) !RomP … … 385 385 REAL,DIMENSION(klon,klev),INTENT(IN) :: pphi ! geopotentie 386 386 REAL,DIMENSION(klon),INTENT(IN) :: ustar ! ustar (m/s) 387 REAL,DIMENSION(klon),INTENT(IN) :: wstar,ale_bl,ale_wake ! wstar (m/s) and Avail. Lifti. Energ. 387 388 REAL,DIMENSION(klon),INTENT(IN) :: zu10m ! vent zonal 10m (m/s) 388 389 REAL,DIMENSION(klon),INTENT(IN) :: zv10m ! vent zonal 10m (m/s) -
LMDZ5/branches/testing/libf/phylmd/write_histrac.h
r1750 r1864 45 45 46 46 ! TD COUCHE-LIMITE 47 IF ( couchelimite) THEN47 IF (iflag_vdf_trac>=0) THEN 48 48 CALL histwrite_phy(nid_tra,.FALSE.,"d_tr_cl_"//tname(iiq),itau_w,d_tr_cl(:,:,it)) 49 49 CALL histwrite_phy(nid_tra,.FALSE.,"d_tr_dry_"//tname(iiq),itau_w,d_tr_dry(:,it))
Note: See TracChangeset
for help on using the changeset viewer.