Changeset 1670 for LMDZ5/trunk
- Timestamp:
- Oct 17, 2012, 10:42:04 AM (12 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/change_srf_frac_mod.F90
r1454 r1670 12 12 13 13 SUBROUTINE change_srf_frac(itime, dtime, jour, & 14 pctsrf, alb1, alb2, tsurf, u 10m, v10m, pbl_tke)14 pctsrf, alb1, alb2, tsurf, ustar, u10m, v10m, pbl_tke) 15 15 ! 16 16 ! This subroutine is called from physiq.F at each timestep. … … 46 46 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: alb2 ! albedo second interval in SW spektrum 47 47 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: tsurf 48 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: ustar 48 49 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: u10m 49 50 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: v10m … … 150 151 ! 151 152 !**************************************************************************************** 152 CALL pbl_surface_newfrac(itime, pctsrf, pctsrf_old, tsurf, alb1, alb2, u 10m, v10m, pbl_tke)153 CALL pbl_surface_newfrac(itime, pctsrf, pctsrf_old, tsurf, alb1, alb2, ustar, u10m, v10m, pbl_tke) 153 154 154 155 ELSE -
LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90
r1555 r1670 172 172 t, q, u, v, & 173 173 pplay, paprs, pctsrf, & 174 ts, alb1, alb2, u10m,v10m, &174 ts, alb1, alb2,ustar, u10m, v10m, & 175 175 lwdown_m, cdragh, cdragm, zu1, zv1, & 176 176 alb1_m, alb2_m, zxsens, zxevap, & … … 181 181 s_capCL, s_oliqCL, s_cteiCL, s_pblT, & 182 182 s_therm, s_trmb1, s_trmb2, s_trmb3, & 183 zxrugs, zu10m,zv10m, fder_print, &183 zxrugs,zustar,zu10m, zv10m, fder_print, & 184 184 zxqsurf, rh2m, zxfluxu, zxfluxv, & 185 185 rugos_d, agesno_d, sollw, solsw, & … … 288 288 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: alb1 ! albedo in visible SW interval 289 289 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: alb2 ! albedo in near infra-red SW interval 290 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: ustar ! u* (m/s) 290 291 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: u10m ! u speed at 10m 291 292 REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: v10m ! v speed at 10m … … 330 331 REAL, DIMENSION(klon), INTENT(OUT) :: s_trmb3 ! point Omega, mean for each grid point 331 332 REAL, DIMENSION(klon), INTENT(OUT) :: zxrugs ! rugosity at surface (m), mean for each grid point 333 REAL, DIMENSION(klon), INTENT(OUT) :: zustar ! u* 332 334 REAL, DIMENSION(klon), INTENT(OUT) :: zu10m ! u speed at 10m, mean for each grid point 333 335 REAL, DIMENSION(klon), INTENT(OUT) :: zv10m ! v speed at 10m, mean for each grid point … … 1019 1021 t2m(:,nsrf) = 0. 1020 1022 q2m(:,nsrf) = 0. 1023 ustar(:,nsrf) = 0. 1021 1024 u10m(:,nsrf) = 0. 1022 1025 v10m(:,nsrf) = 0. 1023 1024 1026 pblh(:,nsrf) = 0. ! Hauteur de couche limite 1025 1027 plcl(:,nsrf) = 0. ! Niveau de condensation de la CLA … … 1069 1071 1070 1072 ! u10m, v10m : composantes du vent a 10m sans spirale de Ekman 1073 ustar(i,nsrf)=yustar(j) 1071 1074 u10m(i,nsrf)=(yu10m(j) * uzon(j))/SQRT(uzon(j)**2+vmer(j)**2) 1072 1075 v10m(i,nsrf)=(yu10m(j) * vmer(j))/SQRT(uzon(j)**2+vmer(j)**2) 1076 1073 1077 END DO 1074 1078 … … 1150 1154 zxtsol(:) = 0.0 ; zxfluxlat(:) = 0.0 1151 1155 zt2m(:) = 0.0 ; zq2m(:) = 0.0 1152 zu 10m(:) = 0.0 ; zv10m(:) = 0.01156 zustar(:)=0.0 ; zu10m(:) = 0.0 ; zv10m(:) = 0.0 1153 1157 s_pblh(:) = 0.0 ; s_plcl(:) = 0.0 1154 1158 s_capCL(:) = 0.0 ; s_oliqCL(:) = 0.0 … … 1172 1176 zt2m(i) = zt2m(i) + t2m(i,nsrf) * pctsrf(i,nsrf) 1173 1177 zq2m(i) = zq2m(i) + q2m(i,nsrf) * pctsrf(i,nsrf) 1178 zustar(i) = zustar(i) + ustar(i,nsrf) * pctsrf(i,nsrf) 1174 1179 zu10m(i) = zu10m(i) + u10m(i,nsrf) * pctsrf(i,nsrf) 1175 1180 zv10m(i) = zv10m(i) + v10m(i,nsrf) * pctsrf(i,nsrf) … … 1305 1310 !**************************************************************************************** 1306 1311 ! 1307 SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, tsurf, alb1, alb2, u 10m, v10m, tke)1312 SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, tsurf, alb1, alb2, ustar, u10m, v10m, tke) 1308 1313 1309 1314 ! Give default values where new fraction has appread … … 1323 1328 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: tsurf 1324 1329 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: alb1, alb2 1325 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: u 10m, v10m1330 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: ustar,u10m, v10m 1326 1331 REAL, DIMENSION(klon,klev+1,nbsrf), INTENT(INOUT) :: tke 1327 1332 … … 1369 1374 alb1(i,nsrf) = alb1(i,nsrf_comp1) 1370 1375 alb2(i,nsrf) = alb2(i,nsrf_comp1) 1376 ustar(i,nsrf) = ustar(i,nsrf_comp1) 1371 1377 u10m(i,nsrf) = u10m(i,nsrf_comp1) 1372 1378 v10m(i,nsrf) = v10m(i,nsrf_comp1) … … 1383 1389 alb1(i,nsrf) = alb1(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + alb1(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3) 1384 1390 alb2(i,nsrf) = alb2(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + alb2(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3) 1391 ustar(i,nsrf) = ustar(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + ustar(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3) 1385 1392 u10m(i,nsrf) = u10m(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + u10m(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3) 1386 1393 v10m(i,nsrf) = v10m(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + v10m(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3) -
LMDZ5/trunk/libf/phylmd/phys_output_mod.F90
r1653 r1670 81 81 type(ctrl_out),save :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10, 10 /),'sicf') 82 82 type(ctrl_out),save :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'q2m') 83 type(ctrl_out),save :: o_ustar = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'ustar') 83 84 type(ctrl_out),save :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'u10m') 84 85 type(ctrl_out),save :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 10, 10 /),'v10m') … … 86 87 type(ctrl_out),save :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10, 10 /),'qsurf') 87 88 89 type(ctrl_out),save,dimension(4) :: o_ustar_srf = (/ ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_ter'), & 90 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_lic'), & 91 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_oce'), & 92 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'ustar_sic') /) 88 93 type(ctrl_out),save,dimension(4) :: o_u10m_srf = (/ ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_ter'), & 89 94 ctrl_out((/ 10, 6, 10, 10, 10, 10 /),'u10m_lic'), & … … 585 590 586 591 type(ctrl_out),save,allocatable :: o_trac(:) 592 type(ctrl_out),save,allocatable :: o_trac_cum(:) 587 593 588 594 type(ctrl_out),save :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10 /),'rsu') … … 719 725 720 726 if (.not. allocated(o_trac)) ALLOCATE(o_trac(nqtot)) 727 if (.not. allocated(o_trac_cum)) ALLOCATE(o_trac_cum(nqtot)) 721 728 722 729 levmax = (/ klev, klev, klev, klev, klev, klev /) … … 960 967 CALL histdef2d(iff,clef_stations(iff),o_sicf%flag,o_sicf%name, "Sea-ice fraction", "-" ) 961 968 CALL histdef2d(iff,clef_stations(iff),o_q2m%flag,o_q2m%name, "Specific humidity 2m", "kg/kg") 969 CALL histdef2d(iff,clef_stations(iff),o_ustar%flag,o_ustar%name, "Friction velocity", "m/s" ) 962 970 CALL histdef2d(iff,clef_stations(iff),o_u10m%flag,o_u10m%name, "Vent zonal 10m", "m/s" ) 963 971 CALL histdef2d(iff,clef_stations(iff),o_v10m%flag,o_v10m%name, "Vent meridien 10m", "m/s") … … 1027 1035 o_tsol_srf(nsrf)%flag,o_tsol_srf(nsrf)%name,"Temperature "//clnsurf(nsrf),"K") 1028 1036 CALL histdef2d(iff,clef_stations(iff), & 1037 o_ustar_srf(nsrf)%flag,o_ustar_srf(nsrf)%name,"Friction velocity "//clnsurf(nsrf),"m/s") 1038 CALL histdef2d(iff,clef_stations(iff), & 1029 1039 o_u10m_srf(nsrf)%flag,o_u10m_srf(nsrf)%name,"Vent Zonal 10m "//clnsurf(nsrf),"m/s") 1030 1040 CALL histdef2d(iff,clef_stations(iff), & … … 1756 1766 o_trac(iq-2) = ctrl_out((/ 4, 5, 1, 1, 1, 10 /),tname(iiq)) 1757 1767 CALL histdef3d (iff,clef_stations(iff), & 1758 o_trac(iq-2)%flag,o_trac(iq-2)%name,'Tracer '//ttext(iiq), "-" ) 1768 o_trac(iq-2)%flag,o_trac(iq-2)%name,'Tracer '//ttext(iiq), "-" ) 1769 o_trac_cum(iq-2) = ctrl_out((/ 3, 4, 10, 10, 10, 10 /),'cum'//tname(iiq)) 1770 CALL histdef2d (iff,clef_stations(iff), & 1771 o_trac_cum(iq-2)%flag,o_trac_cum(iq-2)%name,'Cumulated tracer '//ttext(iiq), "-" ) 1759 1772 ENDDO 1760 1773 ENDIF -
LMDZ5/trunk/libf/phylmd/phys_output_write.h
r1653 r1670 101 101 CALL histwrite_phy(nid_files(iff),clef_stations(iff), 102 102 $o_q2m%name,itau_w,zq2m) 103 ENDIF 104 105 IF (o_ustar%flag(iff)<=lev_files(iff)) THEN 106 CALL histwrite_phy(nid_files(iff),clef_stations(iff), 107 $o_ustar%name,itau_w,zustar) 103 108 ENDIF 104 109 … … 437 442 $ zx_tmp_fi2d) 438 443 ENDIF 444 445 IF (o_ustar_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN 446 zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf) 447 CALL histwrite_phy(nid_files(iff),clef_stations(iff), 448 $o_ustar_srf(nsrf)%name, 449 $ itau_w,zx_tmp_fi2d) 450 ENDIF 439 451 440 452 IF (o_u10m_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN … … 2248 2260 ENDIF 2249 2261 ENDDO 2262 DO iq=3,nqtot 2263 IF (o_trac_cum(iq-2)%flag(iff)<=lev_files(iff)) THEN 2264 zx_tmp_fi2d=0. 2265 do k=1,klev 2266 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*qx(:,k,iq) 2267 enddo 2268 CALL histwrite_phy(nid_files(iff),clef_stations(iff), 2269 s o_trac_cum(iq-2)%name,itau_w,zx_tmp_fi2d) 2270 2271 ENDIF 2272 ENDDO 2250 2273 endif 2251 2274 -
LMDZ5/trunk/libf/phylmd/phys_state_var_mod.F90
r1638 r1670 326 326 REAL,SAVE,ALLOCATABLE :: newsst(:) 327 327 !$OMP THREADPRIVATE(newsst) 328 REAL,SAVE,ALLOCATABLE :: u 10m(:,:), v10m(:,:)329 !$OMP THREADPRIVATE(u 10m,v10m)328 REAL,SAVE,ALLOCATABLE :: ustar(:,:),u10m(:,:), v10m(:,:) 329 !$OMP THREADPRIVATE(ustar,u10m,v10m) 330 330 ! 331 331 ! ok_ade=T -ADE=topswad-topsw … … 496 496 ALLOCATE(rlonPOS(klon)) 497 497 ALLOCATE(newsst(klon)) 498 ALLOCATE(u 10m(klon,nbsrf), v10m(klon,nbsrf))498 ALLOCATE(ustar(klon,nbsrf),u10m(klon,nbsrf), v10m(klon,nbsrf)) 499 499 ALLOCATE(topswad(klon), solswad(klon)) 500 500 ALLOCATE(topswai(klon), solswai(klon)) … … 606 606 deallocate(rlonPOS) 607 607 deallocate(newsst) 608 deallocate(u 10m, v10m)608 deallocate(ustar,u10m, v10m) 609 609 deallocate(topswad, solswad) 610 610 deallocate(topswai, solswai) -
LMDZ5/trunk/libf/phylmd/physiq.F
r1667 r1670 1137 1137 REAL q2m(klon,nbsrf) ! humidite a 2m 1138 1138 1139 cIM: t2m, q2m, u 10m, v10m et t2mincels, t2maxcels1139 cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels 1140 1140 REAL zt2m(klon), zq2m(klon) !temp., hum. 2m moyenne s/ 1 maille 1141 REAL zu 10m(klon), zv10m(klon) !vents a 10m moyennes s/1 maille1141 REAL zustar(klon),zu10m(klon), zv10m(klon) ! u* et vents a 10m moyennes s/1 maille 1142 1142 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max 1143 1143 CHARACTER*40 tinst, tave, typeval … … 1381 1381 lalim_conv(:)=1 1382 1382 cRC 1383 ustar(:,:)=0. 1383 1384 u10m(:,:)=0. 1384 1385 v10m(:,:)=0. … … 1768 1769 ! 1769 1770 CALL change_srf_frac(itap, dtime, days_elapsed+1, 1770 * pctsrf, falb1, falb2, ftsol, u 10m, v10m, pbl_tke)1771 * pctsrf, falb1, falb2, ftsol, ustar, u10m, v10m, pbl_tke) 1771 1772 1772 1773 … … 2078 2079 e t_seri, q_seri, u_seri, v_seri, 2079 2080 e pplay, paprs, pctsrf, 2080 + ftsol, falb1, falb2, u 10m, v10m,2081 + ftsol, falb1, falb2, ustar, u10m, v10m, 2081 2082 s sollwdown, cdragh, cdragm, u1, v1, 2082 2083 s albsol1, albsol2, sens, evap, … … 2087 2088 d s_capCL, s_oliqCL, s_cteiCL,s_pblT, 2088 2089 d s_therm, s_trmb1, s_trmb2, s_trmb3, 2089 d zxrugs, zu 10m, zv10m, fder,2090 d zxrugs, zustar, zu10m, zv10m, fder, 2090 2091 d zxqsurf, rh2m, zxfluxu, zxfluxv, 2091 2092 d frugs, agesno, fsollw, fsolsw, … … 3843 3844 I cdragh, coefh, fm_therm, entr_therm, 3844 3845 I u1, v1, ftsol, pctsrf, 3846 I ustar, u10m, v10m, 3845 3847 I rlat, frac_impa, frac_nucl,rlon, 3846 3848 I presnivs, pphis, pphi, albsol1, -
LMDZ5/trunk/libf/phylmd/phytrac.F90
r1579 r1670 8 8 cdragh, coefh, fm_therm, entr_therm,& 9 9 yu1, yv1, ftsol, pctsrf, & 10 ustar, u10m, v10m, & 10 11 xlat, frac_impa,frac_nucl,xlon, & 11 12 presnivs, pphis, pphi, albsol, & … … 119 120 !-------------- 120 121 ! 121 REAL,DIMENSION(klon),INTENT(IN) :: cdragh ! coeff drag pour T et Q 122 REAL,DIMENSION(klon,klev),INTENT(IN) :: coefh ! coeff melange CL (m**2/s) 123 REAL,DIMENSION(klon),INTENT(IN) :: yu1 ! vents au premier niveau 124 REAL,DIMENSION(klon),INTENT(IN) :: yv1 ! vents au premier niveau 122 REAL,DIMENSION(klon),INTENT(IN) :: cdragh ! coeff drag pour T et Q 123 REAL,DIMENSION(klon,klev),INTENT(IN):: coefh ! coeff melange CL (m**2/s) 124 REAL,DIMENSION(klon),INTENT(IN) :: ustar,u10m,v10m ! u* & vent a 10m (m/s) 125 REAL,DIMENSION(klon),INTENT(IN) :: yu1 ! vents au premier niveau 126 REAL,DIMENSION(klon),INTENT(IN) :: yv1 ! vents au premier niveau 125 127 ! 126 128 !Lessivage: … … 244 246 ! -- Traitement des traceurs avec traclmdz 245 247 CALL traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & 246 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon, couchelimite, & 247 sh, tr_seri, source, solsym, d_tr_cl, zmasse) 248 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon,couchelimite,sh,& 249 rh, pphi, ustar, u10m, v10m, & 250 tr_seri, source, solsym, d_tr_cl, zmasse) 248 251 CASE('inca') 249 252 ! -- CHIMIE INCA config_inca = aero or chem -- -
LMDZ5/trunk/libf/phylmd/traclmdz_mod.F90
r1579 r1670 279 279 SUBROUTINE traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & 280 280 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon, couchelimite, sh, & 281 rh, pphi, ustar, zu10m, zv10m, & 281 282 tr_seri, source, solsym, d_tr_cl, zmasse) 282 283 … … 315 316 !-------------- 316 317 ! 317 REAL,DIMENSION(klon),INTENT(IN) :: cdragh 318 REAL,DIMENSION(klon,klev),INTENT(IN) :: coefh ! coeff melange CL(m**2/s)319 REAL,DIMENSION(klon),INTENT(IN) :: yu1 320 REAL,DIMENSION(klon),INTENT(IN) :: yv1 318 REAL,DIMENSION(klon),INTENT(IN) :: cdragh ! coeff drag pour T et Q 319 REAL,DIMENSION(klon,klev),INTENT(IN) :: coefh ! diffusivite turb (m**2/s) 320 REAL,DIMENSION(klon),INTENT(IN) :: yu1 ! vents au premier niveau 321 REAL,DIMENSION(klon),INTENT(IN) :: yv1 ! vents au premier niveau 321 322 LOGICAL,INTENT(IN) :: couchelimite 322 REAL,DIMENSION(klon,klev),INTENT(IN) :: sh ! humidite specifique 323 REAL,DIMENSION(klon,klev),INTENT(IN) :: sh ! humidite specifique 324 REAL,DIMENSION(klon,klev),INTENT(IN) :: rh ! Humidite relative 325 REAL,DIMENSION(klon,klev),INTENT(IN) :: pphi ! geopotentie 326 REAL,DIMENSION(klon),INTENT(IN) :: ustar ! ustar (m/s) 327 REAL,DIMENSION(klon),INTENT(IN) :: zu10m ! vent zonal 10m (m/s) 328 REAL,DIMENSION(klon),INTENT(IN) :: zv10m ! vent zonal 10m (m/s) 323 329 324 330 ! Arguments necessaires pour les sources et puits de traceur:
Note: See TracChangeset
for help on using the changeset viewer.