- Timestamp:
- Feb 14, 2012, 11:39:54 AM (13 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/physiq.F
r523 r528 340 340 341 341 REAL lmax_th_out(ngridmx),zmax_th(ngridmx) 342 REAL, SAVE :: w max_th(ngridmx)343 REAL hfmax_th(ngridmx)342 REAL, SAVE :: wstar(ngridmx) 343 REAL, SAVE :: hfmax_th(ngridmx) 344 344 REAL pdu_th(ngridmx,nlayermx),pdv_th(ngridmx,nlayermx) 345 345 REAL pdt_th(ngridmx,nlayermx),pdq_th(ngridmx,nlayermx,nqmx) … … 350 350 REAL z_out ! height of interpolation between z0 and z1 [meters] 351 351 REAL ustar(ngridmx),tstar(ngridmx) ! friction velocity and friction potential temp 352 REAL L_mo(ngridmx) 352 REAL L_mo(ngridmx),wstarpbl(ngridmx),vhf(ngridmx),vvv(ngridmx) 353 353 REAL zu2(ngridmx) 354 354 c======================================================================= … … 367 367 fluxrad(:)=0 368 368 369 w max_th(:)=0.369 wstar(:)=0. 370 370 371 371 c read startfi … … 577 577 enddo 578 578 endif 579 else 580 zdtnlte(:,:)=0. 579 581 endif 580 582 … … 754 756 DO ig=1, ngridmx 755 757 IF (zh(ig,1) .lt. tsurf(ig)) THEN 756 wmax_th(ig)=1. 757 ENDIF 758 wstar(ig)=1. 759 hfmax_th(ig)=0.2 760 ELSE 761 wstar(ig)=0. 762 hfmax_th(ig)=0. 763 ENDIF 758 764 ENDDO 759 765 ENDIF … … 771 777 $ zdum1,zdum2,zdh,pdq,zflubid, 772 778 $ zdudif,zdvdif,zdhdif,zdtsdif,q2, 773 & zdqdif,zdqsdif,w max_th,zcdv,zcdh)779 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th) 774 780 775 781 #ifdef MESOSCALE … … 832 838 $ pplay,pplev,pphi,zpopsk, 833 839 $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,zmax_th, 834 $ dtke_th,hfmax_th,w max_th)840 $ dtke_th,hfmax_th,wstar) 835 841 836 842 DO l=1,nlayer … … 861 867 else !of if calltherm 862 868 lmax_th(:)=0 863 wmax_th(:)=0. 869 wstar(:)=0. 870 hfmax_th(:)=0. 864 871 lmax_th_out(:)=0. 865 872 end if … … 913 920 c ------------------------------------------- 914 921 915 #ifdef MESOSCALE 916 !!! get the actual co2 seasonal cap from Titus observations917 CALL geticecover( ngrid, 180.*zls/pi,922 IF (tituscap) THEN 923 !!! get the actual co2 seasonal cap from Titus observations 924 CALL geticecover( ngrid, 180.*zls/pi, 918 925 . 180.*long/pi, 180.*lati/pi, co2ice ) 919 co2ice = co2ice * 10000.920 #endif 926 co2ice = co2ice * 10000. 927 ENDIF 921 928 922 929 IF (callcond) THEN … … 964 971 c ---------------------------------------- 965 972 IF (water) THEN 966 967 973 968 974 call watercloud(ngrid,nlayer,ptimestep, … … 979 985 ENDDO 980 986 endif 981 987 982 988 ! increment water vapour and ice atmospheric tracers tendencies 983 989 IF (water) THEN … … 1170 1176 ENDDO ! (iq) 1171 1177 1172 1173 1178 endif ! of if (tracer) 1174 1179 … … 1244 1249 ENDIF ! of IF (tracer.AND.water.AND.(ngridmx.NE.1)) 1245 1250 1246 1251 c 1247 1252 c 9.2 Compute soil temperatures and subsurface heat flux: 1248 1253 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 1303 1308 DO ig=1,ngridmx 1304 1309 DO l=1,nlayermx 1305 zh(ig,l) = zt(ig,l)*(zpl ay(ig,l)/zplev(ig,1))**rcp1310 zh(ig,l) = zt(ig,l)*(zplev(ig,1)/zplay(ig,l))**rcp 1306 1311 ENDDO 1307 1312 ENDDO … … 1595 1600 #include "fill_save.inc" 1596 1601 #else 1602 #ifndef MESOINI 1597 1603 1598 1604 c ========================================================== … … 1647 1653 endif 1648 1654 1649 #ifdef MESOINI 1655 #else 1656 !!! this is to ensure correct initialisation of mesoscale model 1657 call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2, 1658 & tsurf) 1659 call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",2,ps) 1660 call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness","kg.m-2",2, 1661 & co2ice) 1662 call WRITEDIAGFI(ngrid,"temp","temperature","K",3,zt) 1663 call WRITEDIAGFI(ngrid,"u","Zonal wind","m.s-1",3,zu) 1664 call WRITEDIAGFI(ngrid,"v","Meridional wind","m.s-1",3,zv) 1650 1665 call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2, 1651 1666 & emis) 1652 call WRITEDIAGFI(ngrid,"rho","density","none",3,rho)1653 1667 call WRITEDIAGFI(ngrid,"tsoil","Soil temperature", 1654 1668 & "K",3,tsoil) … … 1833 1847 z_out=0. 1834 1848 if (calltherm .and. (z_out .gt. 0.)) then 1835 call surflayer_interpol(ngrid,nlayer,z0,g,zzlay,zu,zv,wmax_th 1836 & ,tsurf,zh,z_out,Teta_out,u_out,ustar,tstar,L_mo) 1837 1838 zu2(:)=sqrt(zu(:,1)*zu(:,1)+zv(:,1)*zv(:,1)) 1839 call WRITEDIAGFI(ngridmx,'sqrt(zu2)', 1840 & 'horizontal velocity norm','m/s', 1841 & 2,zu2) 1842 1843 call WRITEDIAGFI(ngridmx,'Teta_out', 1844 & 'potential temperature at z_out','K', 1845 & 2,Teta_out) 1846 call WRITEDIAGFI(ngridmx,'u_out', 1847 & 'horizontal velocity norm at z_out','m/s', 1848 & 2,u_out) 1849 call WRITEDIAGFI(ngridmx,'u*', 1850 & 'friction velocity','m/s', 1851 & 2,ustar) 1852 call WRITEDIAGFI(ngridmx,'teta*', 1853 & 'friction potential temperature','K', 1854 & 2,tstar) 1855 call WRITEDIAGFI(ngrid,'L', 1856 & 'Monin Obukhov length','m', 1857 & 2,L_mo) 1849 1850 call pbl_parameters(ngrid,nlayer,z0, 1851 & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out, 1852 & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv) 1853 1858 1854 else 1859 1855 if((.not. calltherm).and.(z_out .gt. 0.)) then … … 1892 1888 & 'maximum TH heat flux','K.m/s', 1893 1889 & 2,hfmax_th) 1894 call WRITEDIAGFI(ngridmx,'w max_th',1890 call WRITEDIAGFI(ngridmx,'wstar', 1895 1891 & 'maximum TH vertical velocity','m/s', 1896 & 2,w max_th)1892 & 2,wstar) 1897 1893 1898 1894 endif … … 1944 1940 z_out=0. 1945 1941 if (calltherm .and. (z_out .gt. 0.)) then 1946 call surflayer_interpol(ngrid,nlayer,z0,g,zzlay,zu,zv,wmax_th 1947 & ,tsurf,zh,z_out,Teta_out,u_out,ustar,tstar,L_mo) 1948 1949 zu2(:)=sqrt(zu(:,1)*zu(:,1)+zv(:,1)*zv(:,1)) 1950 call WRITEDIAGFI(ngridmx,'sqrt(zu2)', 1951 & 'horizontal velocity norm','m/s', 1952 & 0,zu2) 1953 1954 call WRITEDIAGFI(ngridmx,'Teta_out', 1955 & 'potential temperature at z_out','K', 1956 & 0,Teta_out) 1957 call WRITEDIAGFI(ngridmx,'u_out', 1958 & 'horizontal velocity norm at z_out','m/s', 1959 & 0,u_out) 1960 call WRITEDIAGFI(ngridmx,'u*', 1961 & 'friction velocity','m/s', 1962 & 0,ustar) 1963 call WRITEDIAGFI(ngridmx,'teta*', 1964 & 'friction potential temperature','K', 1965 & 0,tstar) 1942 1943 call pbl_parameters(ngrid,nlayer,z0, 1944 & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out, 1945 & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv) 1946 1966 1947 else 1967 1948 if((.not. calltherm).and.(z_out .gt. 0.)) then … … 1977 1958 & 'hauteur du thermique','point', 1978 1959 & 0,lmax_th_out) 1960 call WRITEDIAGFI(ngridmx,'zmax_th', 1961 & 'hauteur du thermique','m', 1962 & 0,zmax_th) 1979 1963 call WRITEDIAGFI(ngridmx,'hfmax_th', 1980 1964 & 'maximum TH heat flux','K.m/s', 1981 1965 & 0,hfmax_th) 1982 call WRITEDIAGFI(ngridmx,'w max_th',1966 call WRITEDIAGFI(ngridmx,'wstar', 1983 1967 & 'maximum TH vertical velocity','m/s', 1984 & 0,w max_th)1968 & 0,wstar) 1985 1969 1986 1970 co2col(:)=0. -
trunk/LMDZ.MARS/libf/phymars/surfini.F
r520 r528 64 64 65 65 #ifdef MESOSCALE 66 67 66 do ig=1,ngridmx 68 69 67 !write(*,*) "all qsurf to zero. dirty." 70 68 do iq=1,nqmx … … 83 81 watercaptag(ig) = .false. 84 82 dryness(ig) = 1. 85 endif 86 87 endif 83 endif 84 enddo 88 85 #else 89 86 ! print*,'ngridmx',ngridmx
Note: See TracChangeset
for help on using the changeset viewer.