Changeset 2241 for LMDZ5/trunk/libf/phylmd
- Timestamp:
- Mar 23, 2015, 10:02:32 PM (10 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90
r2240 r2241 182 182 !!! 183 183 pplay, paprs, pctsrf, & 184 !albedo SB >>>185 ! ts, alb1, alb2,ustar, u10m, v10m,wstar, &186 184 ts,SFRWL, alb_dir, alb_dif,ustar, u10m, v10m,wstar, & 187 !albedo SB <<<188 185 cdragh, cdragm, zu1, zv1, & 189 !albedo SB >>>190 ! alb1_m, alb2_m, zxsens, zxevap, &191 186 alb_dir_m, alb_dif_m, zxsens, zxevap, & 192 !albedo SB <<<193 187 alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 194 188 zxtsol, zxfluxlat, zt2m, qsat2m, & … … 359 353 !wake and off-wake regions 360 354 !albedo SB >>> 361 ! REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: alb1 ! albedo in visible SW interval362 ! REAL, DIMENSION(klon, nbsrf), INTENT(INOUT) :: alb2 ! albedo in near infra-red SW interval363 355 REAL, DIMENSIOn(6),intent(in) :: SFRWL 364 356 REAL, DIMENSION(klon, nsw, nbsrf), INTENT(INOUT) :: alb_dir,alb_dif … … 385 377 REAL, DIMENSION(klon), INTENT(OUT) :: zv1 ! v wind speed in first layer 386 378 !albedo SB >>> 387 ! REAL, DIMENSION(klon), INTENT(OUT) :: alb1_m ! mean albedo388 ! in visible SW interval389 ! REAL, DIMENSION(klon), INTENT(OUT) :: alb2_m ! mean albedo390 ! in near IR SW interval391 379 REAL, DIMENSION(klon, nsw), INTENT(OUT) :: alb_dir_m,alb_dif_m 392 380 !albedo SB <<< … … 524 512 REAL, DIMENSION(klon) :: yts, yrugos, ypct, yz0_new 525 513 !albedo SB >>> 526 ! REAL, DIMENSION(klon) :: yalb, yalb1, yalb2527 514 REAL, DIMENSION(klon) :: yalb,yalb_vis 528 515 !albedo SB <<< … … 562 549 REAL, DIMENSION(klon) :: AcoefU, AcoefV, BcoefU, BcoefV 563 550 REAL, DIMENSION(klon) :: ypsref 564 REAL, DIMENSION(klon) :: yevap, ytsurf_new, yalb 1_new, yalb2_new, yalb3_new551 REAL, DIMENSION(klon) :: yevap, ytsurf_new, yalb3_new 565 552 !albedo SB >>> 566 553 REAL, DIMENSION(klon,nsw) :: yalb_dir_new, yalb_dif_new … … 882 869 zu1(:)=0. ; zv1(:)=0. 883 870 !albedo SB >>> 884 ! alb1_m(:)=0. ; alb2_m(:)=0. ; alb3_lic(:)=0.885 871 alb_dir_m=0. ; alb_dif_m=0. ; alb3_lic(:)=0. 886 872 !albedo SB <<< … … 948 934 !! cdragh = 0.0 ; cdragm = 0.0 ; dflux_t = 0.0 ; dflux_q = 0.0 949 935 ypct = 0.0 ; yts = 0.0 ; ysnow = 0.0 950 !! zv1 = 0.0 ; yqsurf = 0.0 ; yalb1 = 0.0 ; yalb2 = 0.0936 !! zv1 = 0.0 ; yqsurf = 0.0 951 937 !albedo SB >>> 952 ! yqsurf = 0.0 ; yalb1 = 0.0 ; yalb2 = 0.0953 938 yqsurf = 0.0 ; yalb = 0.0 ; yalb_vis = 0.0 954 939 !albedo SB <<< … … 1092 1077 ! Mean calculations of albedo 1093 1078 ! 1094 ! Albedo at sub-surface1095 ! * alb1 : albedo in visible SW interval1096 ! * alb2 : albedo in near infrared SW interval1097 1079 ! * alb : mean albedo for whole SW interval 1098 1080 ! 1099 1081 ! Mean albedo for grid point 1100 ! * alb1_m : albedo in visible SW interval1101 ! * alb2_m : albedo in near infrared SW interval1102 1082 ! * alb_m : mean albedo at whole SW interval 1103 1104 !albedo SB >>>1105 ! alb1_m(:) = 0.01106 ! alb2_m(:) = 0.01107 ! DO nsrf = 1, nbsrf1108 ! DO i = 1, klon1109 ! alb1_m(i) = alb1_m(i) + alb1(i,nsrf) * pctsrf(i,nsrf)1110 ! alb2_m(i) = alb2_m(i) + alb2(i,nsrf) * pctsrf(i,nsrf)1111 ! ENDDO1112 ! ENDDO1113 1083 1114 1084 alb_dir_m(:,:) = 0.0 … … 1127 1097 f1 = 0.5 1128 1098 ! f1 = 1 ! put f1=1 to recreate old calculations 1129 1130 ! DO nsrf = 1, nbsrf1131 ! DO i = 1, klon1132 ! alb(i,nsrf) = f1*alb1(i,nsrf) + (1-f1)*alb2(i,nsrf)1133 ! ENDDO1134 ! ENDDO1135 !1136 ! DO i = 1, klon1137 ! alb_m(i) = f1*alb1_m(i) + (1-f1)*alb2_m(i)1138 ! END DO1139 1140 1099 1141 1100 !f1 is already included with SFRWL values in each surf files … … 1235 1194 yalb(j) = alb(i,nsrf) 1236 1195 !albedo SB >>> 1237 ! yalb1(j) = alb1(i,nsrf)1238 ! yalb2(j) = alb2(i,nsrf)1239 1196 yalb_vis(j) = alb_dir(i,1,nsrf) 1240 1197 if(nsw==6)then … … 1809 1766 ylwdown, yq2m, yt2m, & 1810 1767 ysnow, yqsol, yagesno, ytsoil, & 1811 !albedo SB >>>1812 ! yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &1813 1768 yz0_new, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,& 1814 !albedo SB <<<1815 1769 yqsurf, ytsurf_new, y_dflux_t, y_dflux_q, & 1816 1770 y_flux_u1, y_flux_v1 ) … … 1823 1777 ! ytsoil(:,:)=300. 1824 1778 ! yz0_new(:)=0.001 1825 ! yalb1_new(:)=0.221826 ! yalb2_new(:)=0.221827 1779 ! yevap(:)=flat/RLVTT 1828 1780 ! yfluxlat(:)=-flat … … 1849 1801 ysnow, yqsurf, yqsol, yagesno, & 1850 1802 !albedo SB >>> 1851 ! ytsoil, yz0_new, y alb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &1803 ! ytsoil, yz0_new, yevap, yfluxsens, yfluxlat, & 1852 1804 ytsoil, yz0_new, SFRWL, yalb_dir_new, yalb_dif_new, yevap,yfluxsens,yfluxlat, & 1853 1805 !albedo SB <<< … … 1857 1809 yalb3_new, yrunoff, & 1858 1810 y_flux_u1, y_flux_v1) 1859 !CALL surf_landice(itap, dtime, knon, ni, &1860 ! ysolsw, ysollw, yts, ypplay(:,1), &1861 ! ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&1862 ! AcoefH, AcoefQ, BcoefH, BcoefQ, &1863 ! AcoefU, AcoefV, BcoefU, BcoefV, &1864 ! ypsref, yu1, yv1, yrugoro, pctsrf, &1865 ! ysnow, yqsurf, yqsol, yagesno, &1866 ! ytsoil, yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &1867 ! ytsurf_new, y_dflux_t, y_dflux_q, &1868 ! y_flux_u1, y_flux_v1)1869 1811 1870 1812 !jyg< … … 1884 1826 CASE(is_oce) 1885 1827 !albedo SB >>> 1886 ! CALL surf_ocean(rlon, rlat, ysolsw, ysollw, yalb1, &1887 1828 CALL surf_ocean(rlon, rlat, ysolsw, ysollw, yalb_vis, & 1888 1829 !albedo SB <<< … … 1895 1836 ysnow, yqsurf, yagesno, & 1896 1837 !albedo SB >>> 1897 ! yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &1898 1838 yz0_new, SFRWL,yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,& 1899 1839 !albedo SB <<< … … 1919 1859 CALL surf_seaice( & 1920 1860 !albedo SB >>> 1921 ! rlon, rlat, ysolsw, ysollw, yalb1, yfder, &1922 1861 rlon, rlat, ysolsw, ysollw, yalb_vis, yfder, & 1923 1862 !albedo SB <<< … … 1930 1869 ysnow, yqsurf, yqsol, yagesno, ytsoil, & 1931 1870 !albedo SB >>> 1932 ! yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &1933 1871 yz0_new, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,& 1934 1872 !albedo SB <<< … … 2303 2241 d_ts(i,nsrf) = y_d_ts(j) 2304 2242 !albedo SB >>> 2305 ! alb1(i,nsrf) = yalb1_new(j)2306 ! alb2(i,nsrf) = yalb2_new(j)2307 2243 do k=1,nsw 2308 2244 alb_dir(i,k,nsrf) = yalb_dir_new(j,k) … … 3055 2991 3056 2992 !albedo SB >>> 3057 ! SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, tsurf, alb1, alb2, ustar, u10m, v10m, tke)3058 2993 SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, tsurf,alb_dir,alb_dif, ustar, u10m, v10m, tke) 3059 2994 !albedo SB <<< … … 3075 3010 REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: tsurf 3076 3011 !albedo SB >>> 3077 ! REAL, DIMENSION(klon,nbsrf), INTENT(INOUT) :: alb1, alb23078 3012 REAL, DIMENSION(klon,nsw,nbsrf), INTENT(INOUT) :: alb_dir, alb_dif 3079 3013 INTEGER :: k … … 3124 3058 tsurf(i,nsrf) = tsurf(i,nsrf_comp1) 3125 3059 !albedo SB >>> 3126 ! alb1(i,nsrf) = alb1(i,nsrf_comp1)3127 ! alb2(i,nsrf) = alb2(i,nsrf_comp1)3128 3060 DO k=1,nsw 3129 3061 alb_dir(i,k,nsrf)=alb_dir(i,k,nsrf_comp1) … … 3145 3077 tsurf(i,nsrf) = tsurf(i,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) + tsurf(i,nsrf_comp3)*pctsrf_old(i,nsrf_comp3) 3146 3078 !albedo SB >>> 3147 ! alb1(i,nsrf) = alb1(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + alb1(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)3148 ! alb2(i,nsrf) = alb2(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + alb2(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)3149 3079 DO k=1,nsw 3150 3080 alb_dir(i,k,nsrf)=alb_dir(i,k,nsrf_comp2)*pctsrf_old(i,nsrf_comp2)+& -
LMDZ5/trunk/libf/phylmd/phyetat0.F90
r2237 r2241 10 10 USE surface_data, ONLY : type_ocean, version_ocean 11 11 USE phys_state_var_mod, ONLY : ancien_ok, clwcon, detr_therm, dtime, & 12 du_gwd_rando, dv_gwd_rando, entr_therm, f0, f alb1, falb2, fm_therm, &12 du_gwd_rando, dv_gwd_rando, entr_therm, f0, fm_therm, & 13 13 falb_dir, falb_dif, & 14 14 ftsol, pbl_tke, pctsrf, q_ancien, radpas, radsol, rain_fall, ratqs, & … … 386 386 DO i = 1, klon 387 387 snow(i, nsrf) = snow(i, 1) 388 ENDDO389 ENDDO390 ENDIF391 392 ! Lecture de albedo de l'interval visible au sol:393 394 CALL get_field("ALBE", falb1(:, 1), found)395 IF (.NOT. found) THEN396 PRINT*, 'phyetat0: Le champ <ALBE> est absent'397 PRINT*, ' Mais je vais essayer de lire ALBE**'398 DO nsrf = 1, nbsrf399 IF (nsrf.GT.99) THEN400 PRINT*, "Trop de sous-mailles"401 call abort_gcm("phyetat0", "", 1)402 ENDIF403 WRITE(str2, '(i2.2)') nsrf404 CALL get_field("ALBE"//str2, falb1(:, nsrf))405 xmin = 1.0E+20406 xmax = -1.0E+20407 DO i = 1, klon408 xmin = MIN(falb1(i, nsrf), xmin)409 xmax = MAX(falb1(i, nsrf), xmax)410 ENDDO411 PRINT*, 'Albedo du sol ALBE**:', nsrf, xmin, xmax412 ENDDO413 ELSE414 PRINT*, 'phyetat0: Le champ <ALBE> est present'415 PRINT*, ' J ignore donc les autres ALBE**'416 xmin = 1.0E+20417 xmax = -1.0E+20418 DO i = 1, klon419 xmin = MIN(falb1(i, 1), xmin)420 xmax = MAX(falb1(i, 1), xmax)421 ENDDO422 PRINT*, 'Neige du sol <ALBE>', xmin, xmax423 DO nsrf = 2, nbsrf424 DO i = 1, klon425 falb1(i, nsrf) = falb1(i, 1)426 ENDDO427 ENDDO428 ENDIF429 430 ! Lecture de albedo au sol dans l'interval proche infra-rouge:431 432 CALL get_field("ALBLW", falb2(:, 1), found)433 IF (.NOT. found) THEN434 PRINT*, 'phyetat0: Le champ <ALBLW> est absent'435 PRINT*, ' Mais je vais prendre ALBE**'436 DO nsrf = 1, nbsrf437 DO i = 1, klon438 falb2(i, nsrf) = falb1(i, nsrf)439 ENDDO440 ENDDO441 ELSE442 PRINT*, 'phyetat0: Le champ <ALBLW> est present'443 PRINT*, ' J ignore donc les autres ALBLW**'444 xmin = 1.0E+20445 xmax = -1.0E+20446 DO i = 1, klon447 xmin = MIN(falb2(i, 1), xmin)448 xmax = MAX(falb2(i, 1), xmax)449 ENDDO450 PRINT*, 'Neige du sol <ALBLW>', xmin, xmax451 DO nsrf = 2, nbsrf452 DO i = 1, klon453 falb2(i, nsrf) = falb2(i, 1)454 388 ENDDO 455 389 ENDDO -
LMDZ5/trunk/libf/phylmd/phyredem.F90
r2237 r2241 186 186 187 187 CALL put_field("QSOL", "Eau dans le sol (mm)", qsol) 188 189 DO nsrf = 1, nbsrf190 IF (nsrf.LE.99) THEN191 WRITE(str2, '(i2.2)') nsrf192 CALL put_field("ALBE"//str2, "albedo de surface No."//str2, &193 falb1(:, nsrf))194 ELSE195 PRINT*, "Trop de sous-mailles"196 call abort_gcm("phyredem", "", 1)197 ENDIF198 ENDDO199 200 DO nsrf = 1, nbsrf201 IF (nsrf.LE.99) THEN202 WRITE(str2, '(i2.2)') nsrf203 CALL put_field("ALBLW"//str2, "albedo LW de surface No."//str2, &204 falb2(:, nsrf))205 ELSE206 PRINT*, "Trop de sous-mailles"207 call abort_gcm("phyredem", "", 1)208 ENDIF209 ENDDO210 188 211 189 DO nsrf = 1, nbsrf -
LMDZ5/trunk/libf/phylmd/physiq.F90
r2240 r2241 1413 1413 ! 1414 1414 CALL change_srf_frac(itap, dtime, days_elapsed+1, & 1415 !albedo SB >>>1416 ! pctsrf, falb1, falb2, ftsol, ustar, u10m, v10m, pbl_tke)1417 1415 pctsrf, falb_dir, falb_dif, ftsol, ustar, u10m, v10m, pbl_tke) 1418 !albedo SB <<<1419 1416 1420 1417 ! Update time and other variables in Reprobus … … 1858 1855 !>nrlmd+jyg 1859 1856 pplay, paprs, pctsrf, & 1860 !albedo SB >>>1861 ! ftsol,falb1,falb2,ustar,u10m,v10m,wstar, &1862 1857 ftsol,SFRWL,falb_dir,falb_dif,ustar,u10m,v10m,wstar, & 1863 1858 !albedo SB <<< … … 3392 3387 !albedo SB <<< 3393 3388 3394 !albedo SB >>>3395 ! DO i = 1, klon3396 ! albsol1(i) = falb1(i,is_oce) * pctsrf(i,is_oce) &3397 ! + falb1(i,is_lic) * pctsrf(i,is_lic) &3398 ! + falb1(i,is_ter) * pctsrf(i,is_ter) &3399 ! + falb1(i,is_sic) * pctsrf(i,is_sic)3400 ! albsol2(i) = falb2(i,is_oce) * pctsrf(i,is_oce) &3401 ! + falb2(i,is_lic) * pctsrf(i,is_lic) &3402 ! + falb2(i,is_ter) * pctsrf(i,is_ter) &3403 ! + falb2(i,is_sic) * pctsrf(i,is_sic)3404 ! ENDDO3405 !albedo SB <<<3406 3389 3407 3390 if (mydebug) then -
LMDZ5/trunk/libf/phylmd/surf_land_mod.F90
r2240 r2241 17 17 lwdown_m, q2m, t2m, & 18 18 snow, qsol, agesno, tsoil, & 19 !albedo SB >>>20 ! z0_new, alb1_new, alb2_new, evap, fluxsens, fluxlat, &21 19 z0_new, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, & 22 !albedo SB <<<23 20 qsurf, tsurf_new, dflux_s, dflux_l, & 24 21 flux_u1, flux_v1 ) -
LMDZ5/trunk/libf/phylmd/surf_landice_mod.F90
r2240 r2241 17 17 ps, u1, v1, gustiness, rugoro, pctsrf, & 18 18 snow, qsurf, qsol, agesno, & 19 !albedo SB >>>20 ! tsoil, z0_new, alb1, alb2, evap, fluxsens, fluxlat, &21 19 tsoil, z0_new, SFRWL, alb_dir, alb_dif, evap, fluxsens, fluxlat, & 22 !albedo SB <<<23 20 tsurf_new, dflux_s, dflux_l, & 24 21 slope, cloudf, &
Note: See TracChangeset
for help on using the changeset viewer.