Changeset 2307
- Timestamp:
- Jun 23, 2015, 1:09:31 PM (9 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/dyn1d/1D_interp_cases.h
r2239 r2307 1 ! 2 ! $Id$ 3 ! 1 4 !--------------------------------------------------------------------- 2 5 ! Interpolation forcing in time and onto model levels … … 615 618 & ,vitw_cas,du_cas,hu_cas,vu_cas & 616 619 & ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 617 & ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas 620 & ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas & 618 621 & ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas,u_prof_cas,v_prof_cas & 619 622 & ,ug_prof_cas,vg_prof_cas,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas & 620 623 & ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas,ht_prof_cas,vt_prof_cas & 621 624 & ,dtrad_prof_cas,dq_prof_cas,hq_prof_cas,vq_prof_cas,lat_prof_cas & 622 & ,sens_prof_cas )625 & ,sens_prof_cas,ustar_prof_cas) 623 626 624 627 ts_cur = ts_prof_cas … … 746 749 if (tend_rayo.eq.1) then 747 750 dt_cooling(l) = dtrad_mod_cas(l) 751 ! print *,'dt_cooling=',dt_cooling(l) 748 752 else 749 753 dt_cooling(l) = 0.0 -
LMDZ5/trunk/libf/phylmd/dyn1d/1D_read_forc_cases.h
r2239 r2307 1 ! 2 ! $Id$ 3 ! 1 4 !---------------------------------------------------------------------- 2 5 ! forcing_les = .T. : Impose a constant cooling … … 738 741 & ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas & 739 742 & ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 740 & ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas 743 & ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas & 741 744 & ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas,u_prof_cas,v_prof_cas & 742 745 & ,ug_prof_cas,vg_prof_cas,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas & 743 746 & ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas,ht_prof_cas,vt_prof_cas,dtrad_prof_cas & 744 & ,dq_prof_cas,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas )747 & ,dq_prof_cas,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas,ustar_prof_cas) 745 748 746 749 ! vertical interpolation using TOGA interpolation routine: … … 778 781 d_u_adv(l) = (hv_mod_cas(l)+vv_mod_cas(l)) 779 782 enddo 780 783 784 ! In case fluxes are imposed 785 IF (ok_flux_surf) THEN 786 fsens=sens_prof_cas 787 flat=lat_prof_cas 788 ENDIF 789 IF (ok_prescr_ust) THEN 790 ust=ustar_prof_cas 791 print *,'ust=',ust 792 ENDIF 793 781 794 endif !forcing_case 782 795 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -
LMDZ5/trunk/libf/phylmd/mod_1D_cases_read.F90
r2191 r2307 1 ! 2 ! $Id$ 3 ! 1 4 MODULE mod_1D_cases_read 2 5 … … 11 14 real heure_ini_cas 12 15 real day_ju_ini_cas ! Julian day of case first day 13 parameter (year_ini_cas=2011) 14 parameter (mth_ini_cas=10) 15 parameter (day_ini_cas=1) ! 10 = 10Juil2006 16 ! parameter (year_ini_cas=2011) 17 parameter (year_ini_cas=1969) 18 ! parameter (mth_ini_cas=10) 19 parameter (mth_ini_cas=6) 20 ! parameter (day_ini_cas=1) ! 10 = 10Juil2006 21 parameter (day_ini_cas=24) ! 24 = 24 juin 1969 16 22 parameter (heure_ini_cas=0.) !0h en secondes 17 23 real pdt_cas … … 43 49 real, allocatable:: vitw_cas(:,:) 44 50 real, allocatable:: ug_cas(:,:),vg_cas(:,:) 45 real, allocatable:: lat_cas(:),sens_cas(:),ts_cas(:) 51 real, allocatable:: lat_cas(:),sens_cas(:),ts_cas(:),ustar_cas(:) 46 52 47 53 !champs interpoles … … 70 76 71 77 72 real lat_prof_cas,sens_prof_cas,ts_prof_cas 78 real lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 73 79 74 80 … … 143 149 allocate(ug_cas(nlev_cas,nt_cas)) 144 150 allocate(vg_cas(nlev_cas,nt_cas)) 145 allocate(lat_cas(nt_cas),sens_cas(nt_cas),ts_cas(nt_cas) )151 allocate(lat_cas(nt_cas),sens_cas(nt_cas),ts_cas(nt_cas),ustar_cas(nt_cas)) 146 152 147 153 … … 175 181 & ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas,dv_cas,hv_cas,vv_cas & 176 182 & ,dt_cas,dtrad_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas & 177 & ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas )183 & ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas,ustar_cas) 178 184 179 185 … … 203 209 deallocate(ug_cas) 204 210 deallocate(vg_cas) 205 deallocate(lat_cas,sens_cas,ts_cas )211 deallocate(lat_cas,sens_cas,ts_cas,ustar_cas) 206 212 207 213 !champs interpoles … … 241 247 & ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, & 242 248 & du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq, & 243 & dth,hth,vth,dr,hr,vr,sens,flat,ts )249 & dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar) 244 250 245 251 !program reading forcing of the case study … … 265 271 real dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime) 266 272 real dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime) 267 real flat(ntime),sens(ntime),ts(ntime) 273 real flat(ntime),sens(ntime),ts(ntime),ustar(ntime) 268 274 269 275 270 276 integer nid, ierr,rid 271 277 integer nbvar3d 272 parameter(nbvar3d=3 4)278 parameter(nbvar3d=39) 273 279 integer var3didin(nbvar3d) 274 280 … … 478 484 stop 'ts' 479 485 endif 486 487 ierr=NF_INQ_VARID(nid,"ustar",var3didin(35)) 488 if(ierr/=NF_NOERR) then 489 write(*,*) NF_STRERROR(ierr) 490 stop 'ustar' 491 endif 480 492 481 493 #ifdef NC_DOUBLE … … 853 865 endif 854 866 ! write(*,*)'lecture ts ok',ts 867 868 #ifdef NC_DOUBLE 869 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(35),ustar) 870 #else 871 ierr = NF_GET_VAR_REAL(nid,var3didin(35),ustar) 872 #endif 873 if(ierr/=NF_NOERR) then 874 write(*,*) NF_STRERROR(ierr) 875 stop "getvarup" 876 endif 877 ! write(*,*)'lecture ustar ok',ustar 878 855 879 856 880 return … … 862 886 & ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas & 863 887 & ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 864 & ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas 888 & ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas & 865 889 & ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas & 866 890 & ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas & … … 868 892 & ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas & 869 893 & ,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas & 870 & ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas )894 & ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas,ustar_prof_cas) 871 895 872 896 … … 903 927 real lat_cas(nt_cas) 904 928 real sens_cas(nt_cas) 929 real ustar_cas(nt_cas) 905 930 906 931 ! outputs: … … 915 940 real dtrad_prof_cas(nlev_cas) 916 941 real dq_prof_cas(nlev_cas),hq_prof_cas(nlev_cas),vq_prof_cas(nlev_cas) 917 real lat_prof_cas,sens_prof_cas,ts_prof_cas 942 real lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 918 943 ! local: 919 944 integer it_cas1, it_cas2,k … … 921 946 922 947 923 print*,'Check time',day1,day_ini_cas,day_ini_cas+ 90948 print*,'Check time',day1,day_ini_cas,day_ini_cas+1 924 949 925 950 if ((forcing_type.eq.10).and.(1.eq.1)) then 926 951 ! Check that initial day of the simulation consistent with the case: 927 if (annee_ref.ne.2011) then 928 print*,'Pour CINDY, annee_ref doit etre 2011' 952 if (annee_ref.ne.1969) then 953 ! print*,'Pour CINDY, annee_ref doit etre 2011' 954 print*,'Pour BOMEX, annee_ref doit etre 1969' 929 955 print*,'Changer annee_ref dans run.def' 930 956 stop 931 957 endif 932 if (annee_ref.eq.2011 .and. day1.lt.day_ini_cas) then 933 print*,'CINDY a débuté le 1 octobre 2011',day1,day_ini_cas 958 if (annee_ref.eq.1969 .and. day1.lt.day_ini_cas) then 959 ! print*,'CINDY a debute le 1 octobre 2011',day1,day_ini_cas 960 print*,'BOMEX a debute le 24 juin 1969',day1,day_ini_cas 934 961 print*,'Changer dayref dans run.def' 935 962 stop 936 963 endif 937 if (annee_ref.eq.2011 .and. day1.gt.day_ini_cas+90) then 938 print*,'CINDY a fini le 31 decembre' 964 if (annee_ref.eq.1969 .and. day1.gt.day_ini_cas+1) then 965 ! print*,'CINDY a fini le 31 decembre' 966 print*,'BOMEX a fini le 24 juin' 939 967 print*,'Changer dayref ou nday dans run.def',day1,day_ini_cas+90 940 968 stop … … 950 978 endif 951 979 if (annee_ref.eq.2006 .and. day1.lt.day_ini_cas) then 952 print*,'AMMA a d ébutéle 10 juillet 2006',day1,day_ini_cas980 print*,'AMMA a debute le 10 juillet 2006',day1,day_ini_cas 953 981 print*,'Changer dayref dans run.def' 954 982 stop … … 999 1027 sens_prof_cas = sens_cas(it_cas2) & 1000 1028 & -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) 1001 ts_prof_cas = ts_cas(it_cas2) &1029 ts_prof_cas = ts_cas(it_cas2) & 1002 1030 & -frac*(ts_cas(it_cas2)-ts_cas(it_cas1)) 1031 ustar_prof_cas = ustar_cas(it_cas2) & 1032 & -frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1)) 1003 1033 1004 1034 do k=1,nlev_cas -
LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90
r2255 r2307 1318 1318 ! *sqrt(yu(i,1)*yu(i,1)+yv(i,1)*yv(i,1))) 1319 1319 ycdragm(i) = ust*ust/(1.+vent)/vent 1320 1320 ! print *,'ycdragm ust yu yv apres=',ycdragm(i),ust,yu(i,1),yv(i,1) 1321 1321 ENDDO 1322 1322 ENDIF … … 1343 1343 IF (ok_prescr_ust) then 1344 1344 DO i = 1, knon 1345 1345 ! print *,'ycdragm_x avant=',ycdragm_x(i) 1346 1346 vent= sqrt(yu_x(i,1)*yu_x(i,1)+yv_x(i,1)*yv_x(i,1)) 1347 1347 ycdragm_x(i) = ust*ust/(1.+vent)/vent 1348 1348 ! print *,'ycdragm_x ust yu yv apres=',ycdragm_x(i),ust,yu_x(i,1),yv_x(i,1) 1349 1349 ENDDO 1350 1350 ENDIF … … 1367 1367 ycdragm_w, ycdragh_w, zri1_w, pref_w ) 1368 1368 1369 ! --- special Dice. JYG+MPL 25112013 1369 ! --- special Dice. JYG+MPL 25112013 puis BOMEX 1370 1370 IF (ok_prescr_ust) then 1371 1371 DO i = 1, knon 1372 1372 ! print *,'ycdragm_w avant=',ycdragm_w(i) 1373 1373 vent= sqrt(yu_w(i,1)*yu_w(i,1)+yv_w(i,1)*yv_w(i,1)) 1374 1374 ycdragm_w(i) = ust*ust/(1.+vent)/vent 1375 1375 ! print *,'ycdragm_w ust yu yv apres=',ycdragm_w(i),ust,yu_w(i,1),yv_w(i,1) 1376 1376 ENDDO 1377 1377 ENDIF … … 1747 1747 y_flux_u1, y_flux_v1 ) 1748 1748 1749 ! Special DICE MPL 05082013 1749 ! Special DICE MPL 05082013 puis BOMEX 1750 1750 IF (ok_prescr_ust) THEN 1751 do j=1,knon 1751 1752 ! ysnow(:)=0. 1752 1753 ! yqsol(:)=0. … … 1761 1762 ! y_dflux_t(:)=0. 1762 1763 ! y_dflux_q(:)=0. 1763 y_flux_u1(:)=ycdragm(:)*(1.+sqrt(yu(:,1)*yu(:,1)+yv(:,1)*yv(:,1)))*yu(:,1)*ypplay(:,1)/RD/yt(:,1) 1764 y_flux_v1(:)=ycdragm(:)*(1.+sqrt(yu(:,1)*yu(:,1)+yv(:,1)*yv(:,1)))*yv(:,1)*ypplay(:,1)/RD/yt(:,1) 1764 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1) 1765 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1) 1766 enddo 1765 1767 ENDIF 1766 1768 … … 1797 1799 END DO 1798 1800 ! Martin 1801 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 1802 IF (ok_prescr_ust) THEN 1803 DO j=1,knon 1804 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1) 1805 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1) 1806 ENDDO 1807 ENDIF 1799 1808 1800 1809 CASE(is_oce) … … 1825 1834 print *,'arg de surf_ocean: ytsurf_new ',ytsurf_new 1826 1835 ENDIF 1836 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 1837 IF (ok_prescr_ust) THEN 1838 DO j=1,knon 1839 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1) 1840 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1) 1841 ENDDO 1842 ENDIF 1827 1843 1828 1844 CASE(is_sic) … … 1844 1860 y_flux_u1, y_flux_v1) 1845 1861 1862 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 1863 IF (ok_prescr_ust) THEN 1864 DO j=1,knon 1865 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1) 1866 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1) 1867 ENDDO 1868 ENDIF 1846 1869 1847 1870 CASE DEFAULT … … 1886 1909 ! 1887 1910 IF (iflag_split .eq.0) THEN 1888 Kech_h(:) = ycdragh(:) * (1.0+SQRT(yu(:,1)**2+yv(:,1)**2)) * & 1889 ypplay(:,1)/(RD*yt(:,1)) 1911 do j=1,knon 1912 Kech_h(j) = ycdragh(j) * (1.0+SQRT(yu(j,1)**2+yv(j,1)**2)) * & 1913 ypplay(j,1)/(RD*yt(j,1)) 1914 enddo 1890 1915 ENDIF ! (iflag_split .eq.0) 1891 1916 … … 1895 1920 ENDDO 1896 1921 1897 y_d_ts(:) = ytsurf_new(:) - yts(:) 1922 do j=1,knon 1923 y_d_ts(j) = ytsurf_new(j) - yts(j) 1924 enddo 1898 1925 1899 1926 ELSE ! (ok_flux_surf) 1900 y_flux_t1(:) = yfluxsens(:) 1901 y_flux_q1(:) = -yevap(:) 1927 do j=1,knon 1928 y_flux_t1(j) = yfluxsens(j) 1929 y_flux_q1(j) = -yevap(j) 1930 enddo 1902 1931 ENDIF 1903 1932
Note: See TracChangeset
for help on using the changeset viewer.