Changeset 2952 for LMDZ5/trunk
- Timestamp:
- Jul 14, 2017, 10:23:40 PM (7 years ago)
- Location:
- LMDZ5/trunk
- Files:
-
- 22 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk
- Property svn:mergeinfo changed
/LMDZ5/branches/LMDZ_tree_FC (added) merged: 2924-2925,2927,2934-2940
- Property svn:mergeinfo changed
-
LMDZ5/trunk/DefLists/field_def_lmdz.xml
r2945 r2952 475 475 <field id="l_mix_oce" long_name="PBL mixing length oce" unit="m" /> 476 476 <field id="l_mix_sic" long_name="PBL mixing length sic" unit="m" /> 477 <field id="treedrg_ter" long_name="tree drag profile ter " unit="-" /> 478 <field id="treedrg_lic" long_name="tree drag profile ter " unit="-" /> 479 <field id="treedrg_oce" long_name="tree drag profile ter " unit="-" /> 480 <field id="treedrg_sic" long_name="tree drag profile ter " unit="-" /> 477 481 <field id="l_mixmin_ter" long_name="min PBL mixing length ter" unit="m" /> 478 482 <field id="l_mixmin_lic" long_name="min PBL mixing length lic" unit="m" /> -
LMDZ5/trunk/DefLists/file_def_histday_lmdz.xml
r2945 r2952 28 28 <field field_ref="t2m_oce" level="6" /> 29 29 <field field_ref="t2m_sic" level="6" /> 30 <field field_ref="treedrg_ter" level="6" /> 31 <field field_ref="treedrg_lic" level="6" /> 32 <field field_ref="treedrg_oce" level="6" /> 33 <field field_ref="treedrg_sic" level="6" /> 30 34 <field field_ref="gusts" level="1" /> 31 35 <field field_ref="wind10m" level="1" /> -
LMDZ5/trunk/DefLists/file_def_histhf_lmdz.xml
r2945 r2952 16 16 <field field_ref="contfracATM" level="10" operation="once" /> 17 17 <field field_ref="contfracOR" level="10" /> 18 <field field_ref="flat" level=" 10" />18 <field field_ref="flat" level="5" /> 19 19 <field field_ref="slp" level="10" /> 20 20 <field field_ref="ptstar" level="10" /> … … 28 28 <field field_ref="t2m_oce" level="10" /> 29 29 <field field_ref="t2m_sic" level="10" /> 30 <field field_ref="treedrg_ter" level="5" /> 31 <field field_ref="treedrg_lic" level="5" /> 32 <field field_ref="treedrg_oce" level="5" /> 33 <field field_ref="treedrg_sic" level="5" /> 30 34 <field field_ref="gusts" level="10" /> 31 35 <field field_ref="wind10m" level="10" /> … … 106 110 <field field_ref="bils_enthalp" level="5" /> 107 111 <field field_ref="bils_latent" level="5" /> 108 <field field_ref="sens" level=" 10" />112 <field field_ref="sens" level="5" /> 109 113 <field field_ref="sens_x" level="11" /> 110 114 <field field_ref="sens_w" level="11" /> … … 297 301 <field field_ref="tpot" level="10" /> 298 302 <field field_ref="tpote" level="10" /> 299 <field field_ref="tke" level=" 10" />303 <field field_ref="tke" level="5" /> 300 304 <field field_ref="tke_ter" level="10" /> 301 305 <field field_ref="tke_lic" level="10" /> … … 487 491 <field field_ref="iwcon" level="10" /> 488 492 <field field_ref="temp" level="10" /> 489 <field field_ref="theta" level=" 10" />493 <field field_ref="theta" level="5" /> 490 494 <field field_ref="ovap" level="10" /> 491 495 <field field_ref="ovapinit" level="10" /> … … 493 497 <field field_ref="ocond" level="10" /> 494 498 <field field_ref="geop" level="10" /> 495 <field field_ref="vitu" level=" 6" />496 <field field_ref="vitv" level=" 6" />499 <field field_ref="vitu" level="5" /> 500 <field field_ref="vitv" level="5" /> 497 501 <field field_ref="vitw" level="6" /> 498 502 <field field_ref="pres" level="10" /> … … 546 550 <field field_ref="wake_deltaq" level="10" /> 547 551 <field field_ref="wake_omg" level="10" /> 548 <field field_ref="wdtrainA" level=" 4" />549 <field field_ref="wdtrainM" level=" 4" />552 <field field_ref="wdtrainA" level="10" /> 553 <field field_ref="wdtrainM" level="10" /> 550 554 <field field_ref="Vprecip" level="10" /> 551 555 <field field_ref="ftd" level="10" /> … … 587 591 <field field_ref="dtlw0" level="10" /> 588 592 <field field_ref="dtec" level="10" /> 589 <field field_ref="duvdf" level=" 10" />590 <field field_ref="dvvdf" level=" 10" />593 <field field_ref="duvdf" level="5" /> 594 <field field_ref="dvvdf" level="5" /> 591 595 <field field_ref="duoro" level="10" /> 592 596 <field field_ref="dvoro" level="10" /> -
LMDZ5/trunk/DefLists/file_def_histmth_lmdz.xml
r2945 r2952 48 48 <field field_ref="t2m_oce" level="10" /> 49 49 <field field_ref="t2m_sic" level="10" /> 50 <field field_ref="treedrg_ter" level="10" /> 51 <field field_ref="treedrg_lic" level="10" /> 52 <field field_ref="treedrg_oce" level="10" /> 53 <field field_ref="treedrg_sic" level="10" /> 50 54 <field field_ref="gusts" level="1" /> 51 55 <field field_ref="wind10m" level="1" /> -
LMDZ5/trunk/libf/phylmd/clesphys.h
r2946 r2952 1 2 !3 1 ! $Id$ 4 2 ! … … 15 13 INTEGER nbapp_rad, iflag_con, nbapp_cv, nbapp_wk, iflag_ener_conserv 16 14 REAL co2_ppm, co2_ppm0, solaire 15 !FC 16 REAL Cd_frein 17 17 LOGICAL ok_suntime_rrtm 18 18 REAL(kind=8) RCO2, RCH4, RN2O, RCFC11, RCFC12 … … 111 111 & , qsol0,albsno0,evap0 & 112 112 & , co2_ppm0 & 113 !FC 114 & , Cd_frein & 113 115 & , ecrit_LES & 114 116 & , ecrit_ins, ecrit_hf, ecrit_day & -
LMDZ5/trunk/libf/phylmd/coef_diff_turb_mod.F90
r2561 r2952 14 14 SUBROUTINE coef_diff_turb(dtime, nsrf, knon, ni, & 15 15 ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, & 16 ycoefm, ycoefh ,yq2 )16 ycoefm, ycoefh ,yq2, ydrgpro) 17 17 18 18 USE dimphy … … 37 37 REAL, DIMENSION(klon), INTENT(IN) :: yts, yqsurf 38 38 REAL, DIMENSION(klon), INTENT(IN) :: ycdragm 39 !FC 40 REAL, DIMENSION(klon,klev), INTENT(IN) :: ydrgpro 41 39 42 40 43 ! InOutput arguments … … 167 170 yzlev,yzlay,yu,yv,yteta, & 168 171 ycdragm,yq2,ykmm,ykmn,ykmq,yustar, & 169 iflag_pbl) 172 iflag_pbl,ydrgpro) 173 !FC 170 174 ENDIF 171 175 -
LMDZ5/trunk/libf/phylmd/compbl.h
r2455 r2952 5 5 !! integer iflag_pbl,iflag_pbl_split 6 6 !! common/compbl/iflag_pbl,iflag_pbl_split 7 integer iflag_pbl, iflag_pbl_split, iflag_order2_sollw 8 common/compbl/iflag_pbl, iflag_pbl_split, iflag_order2_sollw 7 !!FC integer iflag_pbl, iflag_pbl_split, iflag_order2_sollw 8 !FC common/compbl/iflag_pbl, iflag_pbl_split, iflag_order2_sollw 9 integer iflag_pbl, iflag_pbl_split, iflag_order2_sollw, ifl_pbltree 10 common/compbl/iflag_pbl, iflag_pbl_split, iflag_order2_sollw, ifl_pbltree 9 11 !>jyg+al1 10 12 !$OMP THREADPRIVATE(/compbl/) -
LMDZ5/trunk/libf/phylmd/conf_phys_m.F90
r2946 r2952 189 189 INTEGER,SAVE :: iflag_pbl_omp,lev_histhf_omp,lev_histday_omp,lev_histmth_omp 190 190 INTEGER,SAVE :: iflag_pbl_split_omp 191 !FC 192 INTEGER,SAVE :: ifl_pbltree_omp 193 REAL,SAVE :: Cd_frein_omp 194 !FC 191 195 INTEGER,SAVE :: iflag_order2_sollw_omp 192 196 INTEGER, SAVE :: lev_histins_omp, lev_histLES_omp … … 1404 1408 iflag_pbl_omp = 1 1405 1409 CALL getin('iflag_pbl',iflag_pbl_omp) 1410 1411 !FC 1412 !Config Key = ifl_pbltree 1413 !Config Desc = drag from trees 0 no activated 1414 !Config Def = 0 1415 !Config Help = 1416 ! 1417 ifl_pbltree_omp = 0 1418 CALL getin('ifl_pbltree',ifl_pbltree_omp) 1419 !FC 1420 !Config Key = Cd_frein 1421 !Config Desc = drag from trees 1422 !Config Def = 7.5E-02 (valeur Masson mais fait planter avec des LAI eleves) 1423 !Config Help = 1424 ! 1425 Cd_frein_omp = 7.5E-02 1426 CALL getin('Cd_frein',Cd_frein_omp) 1427 1406 1428 ! 1407 1429 !Config Key = iflag_pbl_split … … 2199 2221 iflag_pbl = iflag_pbl_omp 2200 2222 iflag_pbl_split = iflag_pbl_split_omp 2223 !FC 2224 ifl_pbltree = ifl_pbltree_omp 2225 Cd_frein =Cd_frein_omp 2201 2226 iflag_order2_sollw = iflag_order2_sollw_omp 2202 2227 lev_histhf = lev_histhf_omp … … 2440 2465 CALL abort_physic('conf_phys', 'flag_bc_internal_mixture can only be activated with flag_aerosol=6',1) 2441 2466 ENDIF 2467 2468 ! ORCHIDEE must be activated for ifl_pbltree=1 2469 IF (.NOT. ok_veget .AND. ifl_pbltree==1) THEN 2470 WRITE(lunout,*)' ORCHIDEE must be activated for ifl_pbltree=1' 2471 CALL abort_physic('conf_phys','ok_veget and ifl_pbltree not coherent',1) 2472 END IF 2442 2473 2443 2474 !$OMP MASTER … … 2566 2597 write(lunout,*)' freq_calNMC = ',freq_calNMC 2567 2598 write(lunout,*)' iflag_pbl = ', iflag_pbl 2599 !FC 2600 write(lunout,*)' ifl_pbltree = ', ifl_pbltree 2601 write(lunout,*)' Cd_frein = ', Cd_frein 2568 2602 write(lunout,*)' iflag_pbl_split = ', iflag_pbl_split 2569 2603 write(lunout,*)' iflag_order2_sollw = ', iflag_order2_sollw -
LMDZ5/trunk/libf/phylmd/dimpft.h
-
Property
copyright
set to
Name of program: LMDZ
Creation date: 1984
Version: LMDZ5
License: CeCILL version 2
Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
See the license file in the root directory
r2946 r2952 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 INTEGER nvm_lmdz -
Property
copyright
set to
-
LMDZ5/trunk/libf/phylmd/freinage.F90
-
Property
copyright
set to
Name of program: LMDZ
Creation date: 1984
Version: LMDZ5
License: CeCILL version 2
Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
See the license file in the root directory
r2946 r2952 1 ! 2 ! $Id$ 3 ! 1 4 SUBROUTINE freinage(knon, uu, vv, & 2 5 tt,veget,lai, height,ypaprs,ypplay,drag_pro,d_u,d_v) -
Property
copyright
set to
-
LMDZ5/trunk/libf/phylmd/indice_sol_mod.F90
r1918 r2952 8 8 9 9 CHARACTER(len=3), DIMENSION(nbsrf), PARAMETER :: clnsurf = (/'ter', 'lic', 'oce', 'sic'/) 10 !FC 11 INTEGER, SAVE :: nvm_orch ! Nombre de type de vegetation ds ORCHIDEE 10 12 11 13 END MODULE indice_sol_mod -
LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90
r2898 r2952 39 39 integer, save :: iflag_pbl_surface_t2m_bug 40 40 !$OMP THREADPRIVATE(iflag_pbl_surface_t2m_bug) 41 !FC 42 ! integer, save :: iflag_frein 43 ! !$OMP THREADPRIVATE(iflag_frein) 41 44 42 45 CONTAINS … … 138 141 iflag_pbl_surface_t2m_bug=0 139 142 CALL getin_p('iflag_pbl_surface_t2m_bug',iflag_pbl_surface_t2m_bug) 140 143 !FC 144 ! iflag_frein = 0 145 ! CALL getin_p('iflag_frein',iflag_frein) 146 ! 141 147 END SUBROUTINE pbl_surface_init 142 148 ! … … 196 202 !! tke_x, tke_w & 197 203 wake_dltke & 204 , treedrg & 205 !FC 198 206 !!! 199 207 ) … … 281 289 INCLUDE "compbl.h" 282 290 INCLUDE "flux_arp.h" 291 !FC 292 INCLUDE "dimpft.h" 293 283 294 !**************************************************************************************** 284 295 REAL, INTENT(IN) :: dtime ! time interval (s) … … 447 458 REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_u ! u wind tension (kg m/s)/(m**2 s) or Pascal 448 459 REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_v ! v wind tension (kg m/s)/(m**2 s) or Pascal 460 !FC 461 REAL, DIMENSION(klon, klev, nbsrf), INTENT(INOUT) :: treedrg ! tree drag (m) 462 449 463 450 464 ! Output not needed … … 548 562 REAL, DIMENSION(klon,klev+1) :: ytke 549 563 REAL, DIMENSION(klon,nsoilmx) :: ytsoil 564 !FC 565 REAL, DIMENSION(klon,nvm_lmdz) :: yveget 566 REAL, DIMENSION(klon,nvm_lmdz) :: ylai 567 REAL, DIMENSION(klon,nvm_lmdz) :: yheight 568 REAL, DIMENSION(klon,klev) :: y_d_u_frein 569 REAL, DIMENSION(klon,klev) :: y_d_v_frein 570 REAL, DIMENSION(klon,klev) :: y_treedrg 571 !FC 572 573 550 574 CHARACTER(len=80) :: abort_message 551 575 CHARACTER(len=20) :: modname = 'pbl_surface' … … 929 953 yqsol = 0.0 930 954 ytherm = 0.0 ; ytke=0. 955 !FC 956 y_treedrg=0. 957 931 958 ! Martin 932 959 ysnowhgt = 0.0; yqsnow = 0.0 ; yrunoff = 0.0 ; ytoice =0.0 … … 952 979 !!! 953 980 ytsoil = 999999. 981 !FC 982 y_d_u_frein(:,:)=0. 983 y_d_v_frein(:,:)=0. 984 !FC 985 986 954 987 955 988 … … 1240 1273 ytke(j,k) = tke_x(i,k,nsrf) 1241 1274 !>jyg 1275 !FC 1276 y_treedrg(j,k) = treedrg(i,k,nsrf) 1277 ! print*,nsrf, "treedrg ",y_treedrg(j,k),j,k 1278 !FC 1279 1242 1280 yu(j,k) = u(i,k) 1243 1281 yv(j,k) = v(i,k) … … 1435 1473 CALL coef_diff_turb(dtime, nsrf, knon, ni, & 1436 1474 ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, & 1437 ycoefm, ycoefh, ytke) 1475 ycoefm, ycoefh, ytke, y_treedrg) 1476 ! ycoefm, ycoefh, ytke) 1477 !FC y_treedrg ajouté 1438 1478 IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN 1439 1479 ! In this case, coef_diff_turb is called for the Cd only … … 1462 1502 CALL coef_diff_turb(dtime, nsrf, knon, ni, & 1463 1503 ypaprs, ypplay, yu_x, yv_x, yq_x, yt_x, yts_x, yqsurf, ycdragm_x, & 1464 ycoefm_x, ycoefh_x, ytke_x) 1504 ycoefm_x, ycoefh_x, ytke_x,y_treedrg) 1505 ! ycoefm_x, ycoefh_x, ytke_x) 1506 !FC doit on le mettre ( on ne l utilise pas si il y a du spliting) 1465 1507 IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN 1466 1508 ! In this case, coef_diff_turb is called for the Cd only … … 1488 1530 CALL coef_diff_turb(dtime, nsrf, knon, ni, & 1489 1531 ypaprs, ypplay, yu_w, yv_w, yq_w, yt_w, yts_w, yqsurf, ycdragm_w, & 1490 ycoefm_w, ycoefh_w, ytke_w) 1532 ycoefm_w, ycoefh_w, ytke_w,y_treedrg) 1533 ! ycoefm_w, ycoefh_w, ytke_w) 1491 1534 IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN 1492 1535 ! In this case, coef_diff_turb is called for the Cd only … … 1775 1818 yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,& 1776 1819 yqsurf, ytsurf_new, y_dflux_t, y_dflux_q, & 1777 y_flux_u1, y_flux_v1 ) 1820 y_flux_u1, y_flux_v1, & 1821 yveget,ylai,yheight ) 1822 !FC quid qd yveget ylai yheight ne sont pas definit 1823 !FC yveget,ylai,yheight, & 1824 if (ifl_pbltree .ge. 1) then 1825 CALL freinage(knon, yu, yv, yt, & 1826 ! yveget,ylai, yheight,ypaprs,ypplay,y_d_u_frein,y_d_v_frein) 1827 yveget,ylai, yheight,ypaprs,ypplay,y_treedrg, y_d_u_frein,y_d_v_frein) 1828 endif 1829 1778 1830 1779 1831 ! Special DICE MPL 05082013 puis BOMEX … … 2182 2234 y_d_u(j,k) = y_d_u(j,k) * ypct(j) 2183 2235 y_d_v(j,k) = y_d_v(j,k) * ypct(j) 2236 !FC 2237 if (nsrf .EQ. is_ter .and. ifl_pbltree .ge. 1 ) then 2238 ! if (y_d_u_frein(j,k).ne.0. ) then 2239 ! print*, nsrf,'IS_TER ++', y_d_u_frein(j,k)*ypct(j),y_d_u(j,k),j,k 2240 ! endif 2241 y_d_u(j,k) =y_d_u(j,k) + y_d_u_frein(j,k)*ypct(j) 2242 y_d_v(j,k) =y_d_v(j,k) + y_d_v_frein(j,k)*ypct(j) 2243 treedrg(i,k,nsrf)=y_treedrg(j,k) 2244 else 2245 treedrg(i,k,nsrf)=0. 2246 endif 2247 !FC 2184 2248 2185 2249 flux_t(i,k,nsrf) = y_flux_t(j,k) -
LMDZ5/trunk/libf/phylmd/phyetat0.F90
r2656 r2952 18 18 wake_deltat, wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, & 19 19 wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, & 20 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m 20 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg 21 !FC 21 22 USE geometry_mod, ONLY : longitude_deg, latitude_deg 22 23 USE iostart, ONLY : close_startphy, get_field, get_var, open_startphy … … 52 53 REAL trs(klon, nbtr) 53 54 REAL zts(klon) 55 ! pour drag arbres FC 56 REAL drg_ter(klon,klev) 54 57 55 58 CHARACTER*6 ocean_in … … 319 322 found=phyetat0_srf(1,z0h,"Z0h","Roughness length, enthalpy ",0.001) 320 323 ENDIF 324 !FC 325 IF (ifl_pbltree>0) then 326 !CALL get_field("FTER", pctsrf(:, is_ter), found) 327 treedrg(:,1:klev,1:nbsrf)= 0.0 328 CALL get_field("treedrg_ter", drg_ter(:,:), found) 329 ! found=phyetat0_srf(1,treedrg,"treedrg","drag from vegetation" , 0.) 330 !lecture du profile de freinage des arbres 331 IF (.not. found ) then 332 treedrg(:,1:klev,1:nbsrf)= 0.0 333 else 334 treedrg(:,1:klev,is_ter)= drg_ter(:,:) 335 ! found=phyetat0_srf(klev,treedrg,"treedrg","freinage arbres",0.) 336 ENDIF 337 endif 338 321 339 322 340 ! Lecture de l'age de la neige: -
LMDZ5/trunk/libf/phylmd/phyredem.F90
r2656 r2952 22 22 wake_pe, wake_fip, fm_therm, entr_therm, & 23 23 detr_therm, Ale_bl, Ale_bl_trig, Alp_bl, & 24 du_gwd_rando, du_gwd_front, u10m, v10m 24 du_gwd_rando, du_gwd_front, u10m, v10m, & 25 treedrg 25 26 USE geometry_mod, ONLY : longitude_deg, latitude_deg 26 27 USE iostart, ONLY: open_restartphy, close_restartphy, put_field, put_var … … 160 161 ! ================== Tsoil ========================================= 161 162 CALL put_field_srf2("Tsoil","Temperature",tsoil(:,:,:)) 163 !FC 164 ! CALL put_field_srf2("treedrg","freinage arbres",treedrg(:,:,:)) 165 CALL put_field("treedrg_ter","freinage arbres",treedrg(:,:,is_ter)) 166 162 167 163 168 CALL put_field_srf1("QS" , "Humidite",qsurf(:,:)) -
LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r2945 r2952 961 961 ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11, 11/),'tke_sic', & 962 962 "Max Turb. Kinetic Energy "//clnsurf(4),"m2/s2", (/ ('', i=1, 10) /)) /) 963 !FC 964 ! TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_treedrg_srf = (/ & 965 ! ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11, 11/),'treedrg_ter', & 966 ! "Drag from trees "//clnsurf(1),"-", (/ ('', i=1, 10) /)), & 967 ! ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11, 11/),'treedrg_lic', & 968 ! "Drag from trees "//clnsurf(2),"-", (/ ('', i=1, 10) /)), & 969 ! ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11, 11/),'treedrg_oce', & 970 ! "Drag from trees "//clnsurf(3),"-", (/ ('', i=1, 10) /)), & 971 ! ctrl_out((/ 10, 4, 10, 10, 10, 10, 11, 11, 11, 11/),'treedrg_sic', & 972 ! "Drag from trees "//clnsurf(4),"-", (/ ('', i=1, 10) /)) /) 973 !FC 974 963 975 964 976 TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_l_mixmin = (/ & -
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r2945 r2952 99 99 o_SWdownOR, o_LWdownOR, o_snowl, & 100 100 o_solldown, o_dtsvdfo, o_dtsvdft, & 101 o_dtsvdfg, o_dtsvdfi, o_z0m, o_z0h, o_od443aer, o_od550aer, &101 o_dtsvdfg, o_dtsvdfi, o_z0m, o_z0h, o_od443aer, o_od550aer, & 102 102 o_dryod550aer, o_od865aer, o_abs550aer, o_od550lt1aer, & 103 103 o_sconcso4, o_sconcno3, o_sconcoa, o_sconcbc, & … … 834 834 ENDIF 835 835 !>jyg 836 ! IF (iflag_pbl > 1 .AND. ifl_pbltree >=1 ) THEN 837 ! CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf)) 838 ! ENDIF 839 836 840 837 841 ENDDO … … 1165 1169 CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1)) 1166 1170 CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1)) 1171 1167 1172 ! od550 per species 1168 1173 !--OLIVIER -
LMDZ5/trunk/libf/phylmd/phys_state_var_mod.F90
r2825 r2952 32 32 REAL,ALLOCATABLE,SAVE :: qsol(:),fevap(:,:),z0m(:,:),z0h(:,:),agesno(:,:) 33 33 !$OMP THREADPRIVATE(qsol,fevap,z0m,z0h,agesno) 34 !FC drag des arbres 35 REAL, ALLOCATABLE, SAVE :: treedrg(:,:,:) 36 !$OMP THREADPRIVATE(treedrg) 37 34 38 ! character(len=6), SAVE :: ocean 35 39 !!!!!!$OMP THREADPRIVATE(ocean) … … 430 434 ALLOCATE(qsol(klon),fevap(klon,nbsrf)) 431 435 ALLOCATE(z0m(klon,nbsrf+1),z0h(klon,nbsrf+1),agesno(klon,nbsrf)) 436 !FC 437 ALLOCATE(treedrg(klon,klev,nbsrf)) 432 438 ALLOCATE(falb1(klon,nbsrf)) 433 439 ALLOCATE(falb2(klon,nbsrf)) … … 603 609 deallocate(pctsrf, ftsol, falb1, falb2) 604 610 deallocate(qsol,fevap,z0m,z0h,agesno) 611 !FC 612 deallocate(treedrg) 605 613 deallocate(rain_fall, snow_fall, solsw, sollw, radsol, swradcorr) 606 614 deallocate(zmea, zstd, zsig, zgam) -
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2906 r2952 2243 2243 zxfluxt, zxfluxq, q2m, fluxq, pbl_tke, & 2244 2244 !nrlmd+jyg< 2245 wake_delta_pbl_TKE &2245 wake_delta_pbl_TKE, & 2246 2246 !>nrlmd+jyg 2247 ) 2247 treedrg ) 2248 !FC 2248 2249 ! 2249 2250 ! Add turbulent diffusion tendency to the wake difference variables -
LMDZ5/trunk/libf/phylmd/surf_land_mod.F90
r2571 r2952 1 1 ! 2 2 MODULE surf_land_mod 3 3 4 4 IMPLICIT NONE 5 5 … … 19 19 z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, & 20 20 qsurf, tsurf_new, dflux_s, dflux_l, & 21 flux_u1, flux_v1 ) 21 flux_u1, flux_v1 , & 22 veget,lai,height) 22 23 23 24 USE dimphy … … 33 34 USE surf_land_orchidee_noz0h_mod 34 35 #else 35 ! Compilation with default interface 36 #if ORCHIDEE_NOFREIN 37 ! Compilation with cpp key ORCHIDEE_NOFREIN 38 USE surf_land_orchidee_nofrein_mod 39 #else 36 40 USE surf_land_orchidee_mod 37 41 #endif 38 42 #endif 43 #endif 39 44 40 45 USE surf_land_bucket_mod … … 44 49 INCLUDE "dimsoil.h" 45 50 INCLUDE "YOMCST.h" 46 !albedo SB >>>47 51 INCLUDE "clesphys.h" 48 !albedo SB <<< 52 INCLUDE "dimpft.h" 53 49 54 50 55 ! Input variables … … 96 101 REAL, DIMENSION(klon), INTENT(OUT) :: dflux_s, dflux_l 97 102 REAL, DIMENSION(klon), INTENT(OUT) :: flux_u1, flux_v1 ! flux for U and V at first model level 103 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: veget,lai 104 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: height 98 105 99 106 ! Local variables … … 150 157 evap, fluxsens, fluxlat, & 151 158 tsol_rad, tsurf_new, alb1_new, alb2_new, & 152 emis_new, z0m, z0h, qsurf) 159 emis_new, z0m, z0h, qsurf, & 160 veget, lai, height) 161 153 162 154 163 ! -
LMDZ5/trunk/libf/phylmd/surf_land_orchidee_mod.F90
r2912 r2952 3 3 #ifndef ORCHIDEE_NOOPENMP 4 4 #ifndef ORCHIDEE_NOZ0H 5 #ifndef ORCHIDEE_NOFREIN 5 6 ! 6 7 ! This module controles the interface towards the model ORCHIDEE. 7 8 ! 8 9 ! Compatibility with ORCHIDIEE : 9 ! The current version can be used with ORCHIDEE/trunk from revision 3525. 10 ! This interface is used if none of the cpp keys ORCHIDEE_NOOPENMP or ORCHIDEE_NOZ0H is set. 10 ! The current version can be used with ORCHIDEE/trunk from revision 4465. 11 ! This interface is used if none of the cpp keys ORCHIDEE_NOOPENMP, 12 ! ORCHIDEE_NOZ0H or ORCHIDEE_NOFREIN is set. 11 13 ! 12 14 ! Subroutines in this module : surf_land_orchidee … … 43 45 evap, fluxsens, fluxlat, & 44 46 tsol_rad, tsurf_new, alb1_new, alb2_new, & 45 emis_new, z0m_new, z0h_new, qsurf) 47 emis_new, z0m_new, z0h_new, qsurf, & 48 veget, lai, height ) 49 46 50 47 51 USE mod_surf_para … … 108 112 ! 109 113 INCLUDE "YOMCST.h" 114 INCLUDE "dimpft.h" 115 116 110 117 111 118 ! … … 138 145 REAL, DIMENSION(klon), INTENT(OUT) :: alb1_new, alb2_new 139 146 REAL, DIMENSION(klon), INTENT(OUT) :: emis_new, z0m_new, z0h_new 147 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: veget 148 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: lai 149 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: height 150 140 151 141 152 ! Local … … 409 420 precip_rain, precip_snow, lwdown, swnet, swdown, ps, & 410 421 evap, fluxsens, fluxlat, coastalflow, riverflow, & 411 tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0m_new, & 412 lon_scat, lat_scat, q2m, t2m, z0h_new )422 tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0m_new, & 423 lon_scat, lat_scat, q2m, t2m, z0h_new, nvm_orch) 413 424 #endif 414 425 ENDIF … … 426 437 IF (knon > 0) THEN 427 438 #ifdef CPP_VEGET 439 IF (nvm_orch .NE. nvm_lmdz ) THEN 440 abort_message='Pb de dimensiosn PFT: nvm_orch et nvm_lmdz differents.' 441 CALL abort_physic(modname,abort_message,1) 442 ENDIF 443 428 444 CALL intersurf_main_gathered (itime+itau_phy, nbp_lon, nbp_lat, knon, ktindex, dtime, & 429 445 lrestart_read, lrestart_write, lalo, & … … 434 450 evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), & 435 451 tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0m_new(1:knon), & 436 lon_scat, lat_scat, q2m, t2m, z0h_new(1:knon), coszang=yrmu0(1:knon)) 452 lon_scat, lat_scat, q2m, t2m, z0h_new(1:knon),& 453 veget(1:knon,:),lai(1:knon,:),height(1:knon,:),& 454 coszang=yrmu0(1:knon)) 437 455 #endif 438 456 ENDIF … … 664 682 #endif 665 683 #endif 684 #endif 666 685 END MODULE surf_land_orchidee_mod -
LMDZ5/trunk/libf/phylmd/surf_land_orchidee_nofrein_mod.F90
r2946 r2952 1 ! 2 ! $Id$ 3 ! 1 4 ! 2 5 MODULE surf_land_orchidee_nofrein_mod -
LMDZ5/trunk/libf/phylmd/surf_land_orchidee_noopenmp_mod.F90
r2912 r2952 44 44 evap, fluxsens, fluxlat, & 45 45 tsol_rad, tsurf_new, alb1_new, alb2_new, & 46 emis_new, z0_new, z0h_new, qsurf) 46 emis_new, z0_new, z0h_new, qsurf, & 47 veget, lai, height) 47 48 ! 48 49 ! Cette routine sert d'interface entre le modele atmospherique et le … … 108 109 109 110 INCLUDE "YOMCST.h" 110 111 INCLUDE "dimpft.h" 111 112 ! 112 113 ! Parametres d'entree … … 138 139 REAL, DIMENSION(klon), INTENT(OUT) :: alb1_new, alb2_new 139 140 REAL, DIMENSION(klon), INTENT(OUT) :: emis_new, z0_new, z0h_new 141 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: veget ! dummy variables 142 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: lai ! dummy variables 143 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: height! dummy variables 140 144 141 145 ! Local -
LMDZ5/trunk/libf/phylmd/surf_land_orchidee_noz0h_mod.F90
r2912 r2952 46 46 evap, fluxsens, fluxlat, & 47 47 tsol_rad, tsurf_new, alb1_new, alb2_new, & 48 emis_new, z0_new, z0h_new, qsurf) 48 emis_new, z0_new, z0h_new, qsurf, & 49 veget, lai, height) 49 50 50 51 USE mod_surf_para … … 111 112 ! 112 113 INCLUDE "YOMCST.h" 113 114 INCLUDE "dimpft.h" 114 115 ! 115 116 ! Parametres d'entree … … 141 142 REAL, DIMENSION(klon), INTENT(OUT) :: alb1_new, alb2_new 142 143 REAL, DIMENSION(klon), INTENT(OUT) :: emis_new, z0_new, z0h_new 144 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: veget ! dummy variables 145 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: lai ! dummy variables 146 REAL, DIMENSION(klon,nvm_lmdz), INTENT(OUT) :: height! dummy variables 143 147 144 148 ! Local … … 213 217 214 218 IF (check) WRITE(lunout,*)'Entree ', modname 219 220 IF (ifl_pbltree == 1) THEN 221 abort_message='Pb de coherence: cette interface vers ORCHIDEE ne peut pas etre utilise avec ifl_pbltree' 222 CALL abort_physic(modname,abort_message,1) 223 END IF 215 224 216 225 ! Initialisation -
LMDZ5/trunk/libf/phylmd/yamada4.F90
r2891 r2952 2 2 3 3 SUBROUTINE yamada4(ni, nsrf, ngrid, dt, g, rconst, plev, temp, zlev, zlay, u, v, teta, & 4 cd, tke, km, kn, kq, ustar, iflag_pbl )4 cd, tke, km, kn, kq, ustar, iflag_pbl, drgpro) 5 5 6 6 USE dimphy … … 101 101 INTEGER ni(klon) 102 102 103 !FC 104 REAL drgpro(klon,klev) 105 REAL winds(klon,klev) 103 106 104 107 ! Local … … 479 482 DO ig=1,ngrid 480 483 tkeprov=q2(ig,k)/ydeux 481 disseff=dissip(ig,k)-min(0.,buoy(ig,k)) 484 485 ! if(ifl_pbltree .eq. 0) then 486 ! disseff=dissip(ig,k)-min(0.,buoy(ig,k)) 487 ! tkeexp=exp(-dt*disseff/tkeprov) 488 ! tkeprov= shear(ig,k)*tkeprov/disseff*(1.-tkeexp)+tkeprov*tkeexp 489 ! else 490 !FC on ajoute la dissipation due aux arbres 491 disseff=dissip(ig,k)-min(0.,buoy(ig,k)) + drgpro(ig,k)*tkeprov 482 492 tkeexp=exp(-dt*disseff/tkeprov) 483 tkeprov= shear(ig,k)*tkeprov/disseff*(1.-tkeexp)+tkeprov*tkeexp 493 ! on prend en compte la tke cree par les arbres 494 winds(ig,k)=sqrt(u(ig,k)**2+v(ig,k)**2) 495 tkeprov= (shear(ig,k)+ & 496 & drgpro(ig,k)*(winds(ig,k))**3)*tkeprov/disseff*(1.-tkeexp)+tkeprov*tkeexp 497 ! endif 498 484 499 q2(ig,k)=tkeprov*ydeux 500 485 501 ! En cas stable, on traite la flotabilite comme la 486 502 ! dissipation, en supposant que buoy/q2^3 est constant.
Note: See TracChangeset
for help on using the changeset viewer.