diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index 4bc63afa0f..55e35ee78d 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -2358,6 +2358,7 @@ rconfig integer imomentum namelist,physics 1 0 rconfig integer ishallow namelist,physics 1 0 rh "ishallow" "shallow convection in G3 scheme" "" rconfig real convtrans_avglen_m namelist,physics 1 30 rh "convtrans_avglen_m" "averaging time for convective transport output variables (minutes)" "" rconfig integer num_land_cat namelist,physics 1 21 - "num_land_cat" "" "" +rconfig integer use_wudapt_lcz namelist,physics 1 0 - "use_wudapt_lcz" "" "" rconfig integer num_soil_cat namelist,physics 1 16 - "num_soil_cat" "" "" rconfig integer mp_zero_out namelist,physics 1 0 - "mp_zero_out" "microphysics fields set to zero 0=no action taken, 1=all fields but Qv, 2=all fields including Qv" "flag" rconfig real mp_zero_out_thresh namelist,physics 1 1.e-8 - "mp_zero_out_thresh" "minimum threshold for non-Qv moist fields, below are set to zero" "kg/kg" diff --git a/Registry/Registry.NMM b/Registry/Registry.NMM index 873c119ff1..e5868095b6 100644 --- a/Registry/Registry.NMM +++ b/Registry/Registry.NMM @@ -1507,6 +1507,7 @@ rconfig integer maxens3 namelist,physics 1 16 rconfig integer ensdim namelist,physics 1 144 irh "ensdim" "" "" rconfig integer chem_opt namelist,physics max_domains 0 rh "chem_opt" "" "" rconfig integer num_land_cat namelist,physics 1 24 - "num_land_cat" "" "" +rconfig integer use_wudapt_lcz namelist,physics 1 0 - "use_wudapt_lcz" "" "" rconfig integer num_soil_cat namelist,physics 1 16 - "num_soil_cat" "" "" rconfig integer topo_wind namelist,physics max_domains 0 - "topo_wind" "2: Use Mass sfc drag scheme, 1: improve effects topography over surface wind, 0:not" "" rconfig integer mp_zero_out namelist,physics 1 0 - "mp_zero_out" "microphysics fields set to zero 0=no action taken, 1=all fields but Qv, 2=all fields including Qv" "flag" diff --git a/dyn_em/module_initialize_real.F b/dyn_em/module_initialize_real.F index c289221fb2..8ec2ca87f3 100644 --- a/dyn_em/module_initialize_real.F +++ b/dyn_em/module_initialize_real.F @@ -2994,7 +2994,7 @@ SUBROUTINE init_domain_rk ( grid & DO i = its , MIN(ide-1,ite) IF ( MMINLU == 'NLCD40' .OR. MMINLU == 'MODIFIED_IGBP_MODIS_NOAH') THEN IF ( grid%FRC_URB2D(i,j) .GE. 0.5 .AND. & - (grid%ivgtyp(i,j).NE.13 .AND. grid%ivgtyp(i,j).NE.24 .AND. grid%ivgtyp(i,j).NE.25 .AND. grid%ivgtyp(i,j).NE.26)) grid%ivgtyp(i,j)=13 + (grid%ivgtyp(i,j).NE.13 .AND. grid%ivgtyp(i,j).NE.24 .AND. grid%ivgtyp(i,j).NE.25 .AND. grid%ivgtyp(i,j).NE.26 .AND. grid%ivgtyp(i,j).LT.30)) grid%ivgtyp(i,j)=13 ELSE IF ( MMINLU == "USGS" ) THEN IF ( grid%FRC_URB2D(i,j) .GE. 0.5 .AND. & grid%ivgtyp(i,j).NE.1 ) grid%ivgtyp(i,j)=1 diff --git a/main/depend.common b/main/depend.common index e5a58206c4..9bf40ba791 100644 --- a/main/depend.common +++ b/main/depend.common @@ -475,9 +475,9 @@ module_sf_noahmplsm.o: ../share/module_model_constants.o \ module_sf_noahmp_groundwater.o: module_sf_noahmplsm.o -module_sf_bep.o: ../share/module_model_constants.o module_sf_urban.o +module_sf_bep.o: ../share/module_model_constants.o module_sf_urban.o module_bep_bem_helper.o -module_sf_bep_bem.o: ../share/module_model_constants.o module_sf_bem.o module_sf_urban.o +module_sf_bep_bem.o: ../share/module_model_constants.o module_sf_bem.o module_sf_urban.o module_bep_bem_helper.o module_sf_bem.o: ../share/module_model_constants.o @@ -1028,7 +1028,8 @@ module_soil_pre.o: module_date_time.o ../frame/module_state_description.o module_check_a_mundo.o: ../frame/module_configure.o ../frame/module_wrf_error.o \ ../frame/module_state_description.o \ - ../share/module_model_constants.o + ../share/module_model_constants.o \ + ../phys/module_bep_bem_helper.o dfi.o : ../frame/module_wrf_error.o ../frame/module_configure.o \ ../frame/module_state_description.o \ diff --git a/phys/Makefile b/phys/Makefile index 9b06561793..ed35b7bc06 100644 --- a/phys/Makefile +++ b/phys/Makefile @@ -6,6 +6,7 @@ RM = rm -f MODULES = \ + module_bep_bem_helper.o \ module_cam_shr_kind_mod.o \ module_cam_support.o \ module_cam_shr_const_mod.o \ diff --git a/phys/module_bep_bem_helper.F b/phys/module_bep_bem_helper.F new file mode 100644 index 0000000000..ac29b7bf9a --- /dev/null +++ b/phys/module_bep_bem_helper.F @@ -0,0 +1,4 @@ +MODULE module_bep_bem_helper + integer, save :: nurbm ! Maximum number of urban classes +CONTAINS +END MODULE module_bep_bem_helper diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index a7fcaa4a07..9de3601f10 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -13,6 +13,10 @@ MODULE module_physics_init USE module_state_description USE module_model_constants USE module_configure, ONLY : grid_config_rec_type +#if ( defined( DM_PARALLEL ) && ( ! defined( STUBMPI ) ) ) + USE module_dm, ONLY : wrf_dm_max_real +#endif + ! USE module_ssib_veg , ONLY : init_module_ssib_veg !fds (SSiB constants) !Local data for CAM's MG MP scheme integer :: ixcldliq, ixcldice, ixnumliq, ixnumice @@ -2525,9 +2529,9 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & USE module_sf_myjsfc USE module_sf_qnsesfc USE module_sf_noahdrv - USE module_sf_noahlsm, only : LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL + USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 USE module_sf_noahmpdrv - USE noahmp_tables, ONLY: LOW_DENSITY_RESIDENTIAL_TABLE, HIGH_DENSITY_RESIDENTIAL_TABLE, HIGH_INTENSITY_INDUSTRIAL_TABLE + USE noahmp_tables, ONLY: LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE,LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE,LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE #ifdef WRF_USE_CLM USE module_sf_clm, only : clminit #endif @@ -2940,7 +2944,9 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & ! IRRIGATION INTEGER,OPTIONAL,INTENT(OUT), DIMENSION( ims:ime,jms:jme):: irr_rand_field - INTEGER,OPTIONAL :: irr_ph,irr_freq + INTEGER,OPTIONAL :: irr_ph,irr_freq + REAL :: max_utype_urb2d + #if ( EM_CORE == 1 ) !local mynn INTEGER :: mynn_closure_level @@ -3132,16 +3138,14 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & IF ( PRESENT( FRC_URB2D ) .AND. PRESENT( UTYPE_URB2D )) THEN CALL urban_param_init(DZR,DZB,DZG,num_soil_layers, & !urban - sf_urban_physics) + sf_urban_physics,config_flags%use_wudapt_lcz) !urban) ! num_roof_layers,num_wall_layers,road_soil_layers) !urban CALL urban_var_init(ISURBAN,TSK,TSLB,TMN,IVGTYP, & !urban ims,ime,jms,jme,kms,kme,num_soil_layers, & !urban -! num_roof_layers,num_wall_layers,num_road_layers, & !urban - LOW_DENSITY_RESIDENTIAL, & - HIGH_DENSITY_RESIDENTIAL, & - HIGH_INTENSITY_INDUSTRIAL, & + LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5, & + LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11, & restart,sf_urban_physics, & !urban XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D, & !urban TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D, & !urban @@ -3176,12 +3180,27 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & A_E_BEP,B_U_BEP,B_V_BEP, & !multi-layer urban B_T_BEP,B_Q_BEP,B_E_BEP,DLG_BEP, & !multi-layer urban DL_U_BEP,SF_BEP,VL_BEP, & !multi-layer urban - FRC_URB2D, UTYPE_URB2D) !urban + FRC_URB2D, UTYPE_URB2D,config_flags%use_wudapt_lcz) !urban + + + max_utype_urb2d = maxval(UTYPE_URB2D)*1.0 +#if ( defined( DM_PARALLEL ) && ( ! defined( STUBMPI ) ) ) + max_utype_urb2d = wrf_dm_max_real(max_utype_urb2d) +#endif + IF (config_flags%use_wudapt_lcz.eq.0 .and. max_utype_urb2d.gt.3.0) THEN !new LCZ + CALL wrf_error_fatal & + ('USING 10 WUDAPT LCZ WITHOUT URBPARM_LCZ.TBL. SET USE_WUDAPT_LCZ=1') + ENDIF + IF (config_flags%use_wudapt_lcz.eq.1 .and. max_utype_urb2d.le.3.0) THEN ! new LCZ + CALL wrf_error_fatal & + ('USING URBPARM_LCZ.TBL WITH OLD 3 URBAN CLASSES. SET USE_WUDAPT_LCZ=0') + ENDIF + ELSE CALL wrf_error_fatal ( 'arguments not present for calling urban model' ) ENDIF ENDIF - + !danli mosaic IF (SF_surface_mosaic.eq.1) THEN @@ -3256,12 +3275,12 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & IF ((SF_URBAN_PHYSICS.eq.1).OR.(SF_URBAN_PHYSICS.EQ.2).OR.(SF_URBAN_PHYSICS.EQ.3)) THEN IF ( PRESENT( FRC_URB2D ) .AND. PRESENT( UTYPE_URB2D )) THEN CALL urban_param_init(DZR,DZB,DZG,num_soil_layers, & !urban - sf_urban_physics) + sf_urban_physics,config_flags%use_wudapt_lcz) CALL urban_var_init(ISURBAN,TSK,TSLB,TMN,IVGTYP, & !urban ims,ime,jms,jme,kms,kme,num_soil_layers, & !urban - LOW_DENSITY_RESIDENTIAL_TABLE, & - HIGH_DENSITY_RESIDENTIAL_TABLE, & - HIGH_INTENSITY_INDUSTRIAL_TABLE, & + LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE, & + LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE, & + LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE, & restart,sf_urban_physics, & !urban XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D, & !urban TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D, & !urban @@ -3296,7 +3315,19 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, & A_E_BEP,B_U_BEP,B_V_BEP, & !multi-layer urban B_T_BEP,B_Q_BEP,B_E_BEP,DLG_BEP, & !multi-layer urban DL_U_BEP,SF_BEP,VL_BEP, & !multi-layer urban - FRC_URB2D, UTYPE_URB2D) !urban + FRC_URB2D, UTYPE_URB2D,config_flags%use_wudapt_lcz) !urban + max_utype_urb2d = maxval(UTYPE_URB2D)*1.0 +#if ( defined( DM_PARALLEL ) && ( ! defined( STUBMPI ) ) ) + max_utype_urb2d = wrf_dm_max_real(max_utype_urb2d) +#endif + IF (config_flags%use_wudapt_lcz.eq.0 .and. max_utype_urb2d.gt.3.0) THEN !new LCZ + CALL wrf_error_fatal & + ('USING 10 WUDAPT LCZ WITHOUT URBPARM_LCZ.TBL. SET USE_WUDAPT_LCZ=1') + ENDIF + IF (config_flags%use_wudapt_lcz.eq.1 .and. max_utype_urb2d.le.3.0) THEN ! new LCZ + CALL wrf_error_fatal & + ('USING URBPARM_LCZ.TBL WITH OLD 3 URBAN CLASSES. SET USE_WUDAPT_LCZ=0') + ENDIF ELSE CALL wrf_error_fatal ( 'arguments not present for calling urban model' ) ENDIF diff --git a/phys/module_sf_bep.F b/phys/module_sf_bep.F index 35b6bfcc42..41b0213511 100644 --- a/phys/module_sf_bep.F +++ b/phys/module_sf_bep.F @@ -8,6 +8,7 @@ MODULE module_sf_bep !USE module_model_constants #endif USE module_sf_urban + USE module_bep_bem_helper, ONLY: nurbm ! SGClarke 09/11/2008 ! Access urban_param.tbl values through calling urban_param_init in module_physics_init @@ -16,9 +17,8 @@ MODULE module_sf_bep ! ----------------------------------------------------------------------- ! Dimension for the array used in the BEP module ! ----------------------------------------------------------------------- - - integer nurbm ! Maximum number of urban classes - parameter (nurbm=3) + integer nurbmax ! Maximum number of urban classes + parameter (nurbmax=11) integer ndm ! Maximum number of street directions parameter (ndm=2) @@ -176,19 +176,19 @@ subroutine BEP(FRC_URB2D,UTYPE_URB2D,itimestep,dz8w,dt,u_phy,v_phy, & real hb_u(nz_um) ! Bulding's heights real ss_urb(nz_um) ! Probability that a building has an height equal to z real pb_urb(nz_um) ! Probability that a building has an height greater or equal to z - integer nz_urb(nurbm) ! Number of layer in the urban grid - integer nzurban(nurbm) + integer nz_urb(nurbmax) ! Number of layer in the urban grid + integer nzurban(nurbmax) ! Building parameters - real alag_u(nurbm) ! Ground thermal diffusivity [m^2 s^-1] - real alaw_u(nurbm) ! Wall thermal diffusivity [m^2 s^-1] - real alar_u(nurbm) ! Roof thermal diffusivity [m^2 s^-1] - real csg_u(nurbm) ! Specific heat of the ground material [J m^3 K^-1] - real csw_u(nurbm) ! Specific heat of the wall material [J m^3 K^-1] - real csr_u(nurbm) ! Specific heat of the roof material [J m^3 K^-1] - real twini_u(nurbm) ! Initial temperature inside the building's wall [K] - real trini_u(nurbm) ! Initial temperature inside the building's roof [K] - real tgini_u(nurbm) ! Initial road temperature + real alag_u(nurbmax) ! Ground thermal diffusivity [m^2 s^-1] + real alaw_u(nurbmax) ! Wall thermal diffusivity [m^2 s^-1] + real alar_u(nurbmax) ! Roof thermal diffusivity [m^2 s^-1] + real csg_u(nurbmax) ! Specific heat of the ground material [J m^3 K^-1] + real csw_u(nurbmax) ! Specific heat of the wall material [J m^3 K^-1] + real csr_u(nurbmax) ! Specific heat of the roof material [J m^3 K^-1] + real twini_u(nurbmax) ! Initial temperature inside the building's wall [K] + real trini_u(nurbmax) ! Initial temperature inside the building's roof [K] + real tgini_u(nurbmax) ! Initial road temperature ! ! Building materials ! @@ -202,39 +202,39 @@ subroutine BEP(FRC_URB2D,UTYPE_URB2D,itimestep,dz8w,dt,u_phy,v_phy, & ! for twini_u, and trini_u the initial value at the deepest level is kept constant during the simulation ! ! Radiation parameters - real albg_u(nurbm) ! Albedo of the ground - real albw_u(nurbm) ! Albedo of the wall - real albr_u(nurbm) ! Albedo of the roof - real emg_u(nurbm) ! Emissivity of ground - real emw_u(nurbm) ! Emissivity of wall - real emr_u(nurbm) ! Emissivity of roof + real albg_u(nurbmax) ! Albedo of the ground + real albw_u(nurbmax) ! Albedo of the wall + real albr_u(nurbmax) ! Albedo of the roof + real emg_u(nurbmax) ! Emissivity of ground + real emw_u(nurbmax) ! Emissivity of wall + real emr_u(nurbmax) ! Emissivity of roof ! fww_u,fwg_u,fgw_u,fsw_u,fsg_u are the view factors used to compute the long wave ! and the short wave radation. - real fww_u(nz_um,nz_um,ndm,nurbm) ! from wall to wall - real fwg_u(nz_um,ndm,nurbm) ! from wall to ground - real fgw_u(nz_um,ndm,nurbm) ! from ground to wall - real fsw_u(nz_um,ndm,nurbm) ! from sky to wall - real fws_u(nz_um,ndm,nurbm) ! from sky to wall - real fsg_u(ndm,nurbm) ! from sky to ground + real fww_u(nz_um,nz_um,ndm,nurbmax) ! from wall to wall + real fwg_u(nz_um,ndm,nurbmax) ! from wall to ground + real fgw_u(nz_um,ndm,nurbmax) ! from ground to wall + real fsw_u(nz_um,ndm,nurbmax) ! from sky to wall + real fws_u(nz_um,ndm,nurbmax) ! from sky to wall + real fsg_u(ndm,nurbmax) ! from sky to ground ! Roughness parameters - real z0g_u(nurbm) ! The ground's roughness length - real z0r_u(nurbm) ! The roof's roughness length + real z0g_u(nurbmax) ! The ground's roughness length + real z0r_u(nurbmax) ! The roof's roughness length ! Roughness parameters real z0(ndm,nz_um) ! Roughness lengths "profiles" ! Street parameters - integer nd_u(nurbm) ! Number of street direction for each urban class - real strd_u(ndm,nurbm) ! Street length (fix to greater value to the horizontal length of the cells) - real drst_u(ndm,nurbm) ! Street direction - real ws_u(ndm,nurbm) ! Street width - real bs_u(ndm,nurbm) ! Building width - real h_b(nz_um,nurbm) ! Bulding's heights - real d_b(nz_um,nurbm) ! Probability that a building has an height h_b - real ss_u(nz_um,nurbm) ! Probability that a building has an height equal to z - real pb_u(nz_um,nurbm) ! Probability that a building has an height greater or equal to z + integer nd_u(nurbmax) ! Number of street direction for each urban class + real strd_u(ndm,nurbmax) ! Street length (fix to greater value to the horizontal length of the cells) + real drst_u(ndm,nurbmax) ! Street direction + real ws_u(ndm,nurbmax) ! Street width + real bs_u(ndm,nurbmax) ! Building width + real h_b(nz_um,nurbmax) ! Bulding's heights + real d_b(nz_um,nurbmax) ! Probability that a building has an height h_b + real ss_u(nz_um,nurbmax) ! Probability that a building has an height equal to z + real pb_u(nz_um,nurbmax) ! Probability that a building has an height greater or equal to z ! ! Street parameters ! @@ -247,7 +247,7 @@ subroutine BEP(FRC_URB2D,UTYPE_URB2D,itimestep,dz8w,dt,u_phy,v_phy, & ! Grid parameters - integer nz_u(nurbm) ! Number of layer in the urban grid + integer nz_u(nurbmax) ! Number of layer in the urban grid real z_u(nz_um) ! Height of the urban grid levels diff --git a/phys/module_sf_bep_bem.F b/phys/module_sf_bep_bem.F index 8d0d7ed560..9a7299b5ca 100644 --- a/phys/module_sf_bep_bem.F +++ b/phys/module_sf_bep_bem.F @@ -9,6 +9,7 @@ MODULE module_sf_bep_bem #endif USE module_sf_urban USE module_sf_bem + USE module_bep_bem_helper, ONLY: nurbm ! SGClarke 09/11/2008 ! Access urban_param.tbl values through calling urban_param_init in module_physics_init @@ -18,8 +19,8 @@ MODULE module_sf_bep_bem ! Dimension for the array used in the BEP module ! ----------------------------------------------------------------------- - integer nurbm ! Maximum number of urban classes - parameter (nurbm=3) + integer nurbmax ! Maximum number of urban classes + parameter (nurbmax=11) integer ndm ! Maximum number of street directions parameter (ndm=2) @@ -209,22 +210,22 @@ subroutine BEP_BEM(FRC_URB2D,UTYPE_URB2D,itimestep,dz8w,dt,u_phy,v_phy, & !------------------------------------------------------------------------ real hi_urb(its:ite,1:nz_um,jts:jte) ! Height histograms of buildings real hi_urb1D(nz_um) ! Height histograms of buildings - real ss_urb(nz_um,nurbm) ! Probability that a building has an height equal to z + real ss_urb(nz_um,nurbmax) ! Probability that a building has an height equal to z real pb_urb(nz_um) ! Probability that a building has an height greater or equal to z real hb_u(nz_um) ! Bulding's heights - integer nz_urb(nurbm) ! Number of layer in the urban grid - integer nzurban(nurbm) + integer nz_urb(nurbmax) ! Number of layer in the urban grid + integer nzurban(nurbmax) ! Building parameters - real alag_u(nurbm) ! Ground thermal diffusivity [m^2 s^-1] - real alaw_u(nurbm) ! Wall thermal diffusivity [m^2 s^-1] - real alar_u(nurbm) ! Roof thermal diffusivity [m^2 s^-1] - real csg_u(nurbm) ! Specific heat of the ground material [J m^3 K^-1] - real csw_u(nurbm) ! Specific heat of the wall material [J m^3 K^-1] - real csr_u(nurbm) ! Specific heat of the roof material [J m^3 K^-1] - real twini_u(nurbm) ! Initial temperature inside the building's wall [K] - real trini_u(nurbm) ! Initial temperature inside the building's roof [K] - real tgini_u(nurbm) ! Initial road temperature + real alag_u(nurbmax) ! Ground thermal diffusivity [m^2 s^-1] + real alaw_u(nurbmax) ! Wall thermal diffusivity [m^2 s^-1] + real alar_u(nurbmax) ! Roof thermal diffusivity [m^2 s^-1] + real csg_u(nurbmax) ! Specific heat of the ground material [J m^3 K^-1] + real csw_u(nurbmax) ! Specific heat of the wall material [J m^3 K^-1] + real csr_u(nurbmax) ! Specific heat of the roof material [J m^3 K^-1] + real twini_u(nurbmax) ! Initial temperature inside the building's wall [K] + real trini_u(nurbmax) ! Initial temperature inside the building's roof [K] + real tgini_u(nurbmax) ! Initial road temperature ! ! Building materials @@ -259,67 +260,67 @@ subroutine BEP_BEM(FRC_URB2D,UTYPE_URB2D,itimestep,dz8w,dt,u_phy,v_phy, & !New roughness and buildings parameters ! real z0(ndm,nz_um) ! Roughness lengths "profiles" - real bs_urb(ndm,nurbm) ! Building width - real ws_urb(ndm,nurbm) ! Street width + real bs_urb(ndm,nurbmax) ! Building width + real ws_urb(ndm,nurbmax) ! Street width ! ! for twini_u, and trini_u the initial value at the deepest level is kept constant during the simulation ! ! Radiation paramters - real albg_u(nurbm) ! Albedo of the ground - real albw_u(nurbm) ! Albedo of the wall - real albr_u(nurbm) ! Albedo of the roof - real albwin_u(nurbm) ! Albedo of the windows - real emwind_u(nurbm) ! Emissivity of windows - real emg_u(nurbm) ! Emissivity of ground - real emw_u(nurbm) ! Emissivity of wall - real emr_u(nurbm) ! Emissivity of roof + real albg_u(nurbmax) ! Albedo of the ground + real albw_u(nurbmax) ! Albedo of the wall + real albr_u(nurbmax) ! Albedo of the roof + real albwin_u(nurbmax) ! Albedo of the windows + real emwind_u(nurbmax) ! Emissivity of windows + real emg_u(nurbmax) ! Emissivity of ground + real emw_u(nurbmax) ! Emissivity of wall + real emr_u(nurbmax) ! Emissivity of roof ! fww_u,fwg_u,fgw_u,fsw_u,fsg_u are the view factors used to compute the long wave ! and the short wave radiation. - real fww_u(nz_um,nz_um,ndm,nurbm) ! from wall to wall - real fwg_u(nz_um,ndm,nurbm) ! from wall to ground - real fgw_u(nz_um,ndm,nurbm) ! from ground to wall - real fsw_u(nz_um,ndm,nurbm) ! from sky to wall - real fws_u(nz_um,ndm,nurbm) ! from sky to wall - real fsg_u(ndm,nurbm) ! from sky to ground + real fww_u(nz_um,nz_um,ndm,nurbmax) ! from wall to wall + real fwg_u(nz_um,ndm,nurbmax) ! from wall to ground + real fgw_u(nz_um,ndm,nurbmax) ! from ground to wall + real fsw_u(nz_um,ndm,nurbmax) ! from sky to wall + real fws_u(nz_um,ndm,nurbmax) ! from sky to wall + real fsg_u(ndm,nurbmax) ! from sky to ground ! Roughness parameters - real z0g_u(nurbm) ! The ground's roughness length - real z0r_u(nurbm) ! The roof's roughness length + real z0g_u(nurbmax) ! The ground's roughness length + real z0r_u(nurbmax) ! The roof's roughness length ! Street parameters - integer nd_u(nurbm) ! Number of street direction for each urban class - real strd_u(ndm,nurbm) ! Street length (fix to greater value to the horizontal length of the cells) - real drst_u(ndm,nurbm) ! Street direction - real ws_u(ndm,nurbm) ! Street width - real bs_u(ndm,nurbm) ! Building width - real h_b(nz_um,nurbm) ! Bulding's heights - real d_b(nz_um,nurbm) ! Probability that a building has an height h_b - real ss_u(nz_um,nurbm) ! Probability that a building has an height equal to z - real pb_u(nz_um,nurbm) ! Probability that a building has an height greater or equal to z + integer nd_u(nurbmax) ! Number of street direction for each urban class + real strd_u(ndm,nurbmax) ! Street length (fix to greater value to the horizontal length of the cells) + real drst_u(ndm,nurbmax) ! Street direction + real ws_u(ndm,nurbmax) ! Street width + real bs_u(ndm,nurbmax) ! Building width + real h_b(nz_um,nurbmax) ! Bulding's heights + real d_b(nz_um,nurbmax) ! Probability that a building has an height h_b + real ss_u(nz_um,nurbmax)! Probability that a building has an height equal to z + real pb_u(nz_um,nurbmax)! Probability that a building has an height greater or equal to z ! Grid parameters - integer nz_u(nurbm) ! Number of layer in the urban grid + integer nz_u(nurbmax) ! Number of layer in the urban grid real z_u(nz_um) ! Height of the urban grid levels !FS - real cop_u(nurbm) - real bldac_frc_u(nurbm) - real cooled_frc_u(nurbm) - real pwin_u(nurbm) - real beta_u(nurbm) - integer sw_cond_u(nurbm) - real time_on_u(nurbm) - real time_off_u(nurbm) - real targtemp_u(nurbm) - real gaptemp_u(nurbm) - real targhum_u(nurbm) - real gaphum_u(nurbm) - real perflo_u(nurbm) - real hsesf_u(nurbm) + real cop_u(nurbmax) + real bldac_frc_u(nurbmax) + real cooled_frc_u(nurbmax) + real pwin_u(nurbmax) + real beta_u(nurbmax) + integer sw_cond_u(nurbmax) + real time_on_u(nurbmax) + real time_off_u(nurbmax) + real targtemp_u(nurbmax) + real gaptemp_u(nurbmax) + real targhum_u(nurbmax) + real gaphum_u(nurbmax) + real perflo_u(nurbmax) + real hsesf_u(nurbmax) real hsequip(24) ! 1D array used for the input and output of the routine "urban" diff --git a/phys/module_sf_clm.F b/phys/module_sf_clm.F index f9445fbc1d..5224c4b358 100644 --- a/phys/module_sf_clm.F +++ b/phys/module_sf_clm.F @@ -3915,7 +3915,7 @@ subroutine clmdrv(zgcmxy ,forc_qxy ,ps ,forc_txy ,tsxy & USE module_date_time USE module_sf_urban, only: urban - USE module_sf_noahlsm, only: low_density_residential, high_density_residential, high_intensity_industrial + USE module_sf_noahlsm, only: LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 USE module_ra_gfdleta, only: cal_mon_day USE module_configure @@ -5120,9 +5120,10 @@ subroutine clmdrv(zgcmxy ,forc_qxy ,ps ,forc_txy ,tsxy & ! URBAN CANOPY MODEL START - urban !-------------------------------------- ! Input variables lsm --> urban - - IF( IVGTYP(I,J) == 1 .or. IVGTYP(I,J) == low_density_residential .or. & - IVGTYP(I,J) == high_density_residential .or. IVGTYP(I,J) == high_intensity_industrial ) THEN + IF( IVGTYP(I,J) == 1 .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3.or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6.or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9.or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN ! Call urban forc_sols_buf = swd_buf*0.35 diff --git a/phys/module_sf_noahdrv.F b/phys/module_sf_noahdrv.F index e74d2d3739..45e1d1d1dc 100644 --- a/phys/module_sf_noahdrv.F +++ b/phys/module_sf_noahdrv.F @@ -10,8 +10,7 @@ MODULE module_sf_noahdrv & SALP_DATA, REFDK_DATA, REFKDT_DATA, FRZK_DATA, ZBOT_DATA, CZIL_DATA, & & SMLOW_DATA, SMHIGH_DATA, LVCOEF_DATA, NSLOPE, & & FRH2O,ZTOPVTBL,ZBOTVTBL, & - & LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL - + & LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 USE module_sf_urban, only: urban, oasis, IRI_SCHEME USE module_sf_noahlsm_glacial_only, only: sflx_glacial USE module_sf_bep, only: bep @@ -925,10 +924,12 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & !Fei: urban. for urban surface, if calling UCM, redefine the natural surface in cities as ! the "NATURAL" category in the VEGPARM.TBL + IF(SF_URBAN_PHYSICS == 1.OR. SF_URBAN_PHYSICS==2.OR.SF_URBAN_PHYSICS==3 ) THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN - IF(SF_URBAN_PHYSICS == 1.OR. SF_URBAN_PHYSICS==2.OR.SF_URBAN_PHYSICS==3 ) THEN - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN VEGTYP = NATURAL SHDFAC = SHDTBL(NATURAL) ALBEDOK =0.2 ! 0.2 @@ -945,10 +946,13 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & ENDIF ENDIF ELSE - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN VEGTYP = ISURBAN - ENDIF + ENDIF + ENDIF !===Yang, 2014/10/08, hydrological processes for urban vegetation in single layer UCM=== @@ -962,9 +966,11 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & if (tloc.lt.0) tloc=tloc+24 if (tloc==0) tloc=24 CALL cal_mon_day(julian,julyr,jmonth,jday) - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN - AOASIS = oasis ! urban oasis effect + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + AOASIS = oasis ! urban oasis effect IF (IRIOPTION ==1) THEN IF (tloc==21 .or. tloc==22) THEN !irrigation on vegetaion in urban area, MAY-SEP, 9-10pm IF (jmonth==5 .or. jmonth==6 .or. jmonth==7 .or. jmonth==8 .or. jmonth==9) THEN @@ -1261,9 +1267,11 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & !-------------------------------------- ! Input variables lsm --> urban + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL ) THEN ! Call urban @@ -1699,19 +1707,9 @@ SUBROUTINE lsm(DZ8W,QV3D,P8W3D,T3D,TSK, & G_URB2D(I,J) = 0. RN_URB2D(I,J) = 0. endif -! IF( IVGTYP(I,J) == 1 .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & -! IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN -! print*,'ivgtyp, qfx, hfx',ivgtyp(i,j),hfx_rural(i,j),qfx_rural(i,j) -! print*,'ivgtyp,hfx,hfx_urb,hfx_rural',hfx(i,j),hfx_urb(i,j),hfx_rural(i,j) -! print*,'lh,lh_rural',lh(i,j),lh_rural(i,j) -! print*,'qfx',qfx(i,j) -! print*,'ts_urb2d',ts_urb2d(i,j) -! print*,'ust',ust(i,j) -! endif enddo enddo - endif !Bep end !------------------------------------------------------ @@ -2062,14 +2060,29 @@ SUBROUTINE SOIL_VEG_GEN_PARM( MMINLU, MMINSL) IF ( a_string(1:21) .EQ. 'Vegetation Parameters' ) THEN CALL wrf_message ("Expected low and high density residential, and high density industrial information in VEGPARM.TBL") CALL wrf_error_fatal ("This could be caused by using an older VEGPARM.TBL file with a newer WRF source code.") - ENDIF - READ (19,*)LOW_DENSITY_RESIDENTIAL + ENDIF + READ (19,*)LCZ_1 + READ (19,*) + READ (19,*)LCZ_2 + READ (19,*) + READ (19,*)LCZ_3 + READ (19,*) + READ (19,*)LCZ_4 + READ (19,*) + READ (19,*)LCZ_5 READ (19,*) - READ (19,*)HIGH_DENSITY_RESIDENTIAL + READ (19,*)LCZ_6 READ (19,*) - READ (19,*)HIGH_INTENSITY_INDUSTRIAL + READ (19,*)LCZ_7 + READ (19,*) + READ (19,*)LCZ_8 + READ (19,*) + READ (19,*)LCZ_9 + READ (19,*) + READ (19,*)LCZ_10 + READ (19,*) + READ (19,*)LCZ_11 ENDIF -! 2002 CONTINUE CLOSE (19) @@ -2105,9 +2118,17 @@ SUBROUTINE SOIL_VEG_GEN_PARM( MMINLU, MMINSL) CALL wrf_dm_bcast_real ( RSMAX_DATA , 1 ) CALL wrf_dm_bcast_integer ( BARE , 1 ) CALL wrf_dm_bcast_integer ( NATURAL , 1 ) - CALL wrf_dm_bcast_integer ( LOW_DENSITY_RESIDENTIAL , 1 ) - CALL wrf_dm_bcast_integer ( HIGH_DENSITY_RESIDENTIAL , 1 ) - CALL wrf_dm_bcast_integer ( HIGH_INTENSITY_INDUSTRIAL , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_1 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_2 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_3 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_4 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_5 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_6 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_7 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_8 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_9 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_10 , 1 ) + CALL wrf_dm_bcast_integer ( LCZ_11 , 1 ) ! !-----READ IN SOIL PROPERTIES FROM SOILPARM.TBL @@ -3313,9 +3334,11 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & Noah_call=.TRUE. If ( SF_URBAN_PHYSICS == 0 ) THEN ! ONLY NOAH - - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + Noah_call = .TRUE. VEGTYP = ISURBAN ENDIF @@ -3324,9 +3347,10 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & IF(SF_URBAN_PHYSICS == 1) THEN - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN - + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN Noah_call = .TRUE. VEGTYP = NATURAL SHDFAC = SHDTBL(NATURAL) @@ -3351,9 +3375,12 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & if (tloc==0) tloc=24 CALL cal_mon_day(julian,julyr,jmonth,jday) IF(SF_URBAN_PHYSICS == 1) THEN - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN - AOASIS = oasis ! urban oasis effect + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + + AOASIS = oasis ! urban oasis effect IF (IRIOPTION ==1) THEN IF (tloc==21 .or. tloc==22) THEN !irrigation on vegetaion in urban area, MAY-SEP, 9-10pm IF (jmonth==5 .or. jmonth==6 .or. jmonth==7 .or. jmonth==8 .or. jmonth==9) THEN @@ -3594,22 +3621,40 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & ! URBAN CANOPY MODEL START - urban !-------------------------------------- ! Input variables lsm --> urban - - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL ) THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + ! UTYPE_URB = UTYPE_URB2D(I,J) !urban type (low, high or industrial) ! this need to be changed in the mosaic danli - - IF(IVGTYP(I,J)==ISURBAN) UTYPE_URB=2 - IF(IVGTYP(I,J)==LOW_DENSITY_RESIDENTIAL) UTYPE_URB=1 - IF(IVGTYP(I,J)==HIGH_DENSITY_RESIDENTIAL) UTYPE_URB=2 - IF(IVGTYP(I,J)==HIGH_INTENSITY_INDUSTRIAL) UTYPE_URB=3 + IF(IVGTYP(I,J)==ISURBAN) UTYPE_URB=5 + IF(IVGTYP(I,J)==LCZ_1) UTYPE_URB=1 + IF(IVGTYP(I,J)==LCZ_2) UTYPE_URB=2 + IF(IVGTYP(I,J)==LCZ_3) UTYPE_URB=3 + IF(IVGTYP(I,J)==LCZ_4) UTYPE_URB=4 + IF(IVGTYP(I,J)==LCZ_5) UTYPE_URB=5 + IF(IVGTYP(I,J)==LCZ_6) UTYPE_URB=6 + IF(IVGTYP(I,J)==LCZ_7) UTYPE_URB=7 + IF(IVGTYP(I,J)==LCZ_8) UTYPE_URB=8 + IF(IVGTYP(I,J)==LCZ_9) UTYPE_URB=9 + IF(IVGTYP(I,J)==LCZ_10) UTYPE_URB=10 + IF(IVGTYP(I,J)==LCZ_11) UTYPE_URB=11 + - IF(UTYPE_URB==1) FRC_URB2D(I,J)=0.5 - IF(UTYPE_URB==2) FRC_URB2D(I,J)=0.9 - IF(UTYPE_URB==3) FRC_URB2D(I,J)=0.95 - + IF(UTYPE_URB==1) FRC_URB2D(I,J)=1. + IF(UTYPE_URB==2) FRC_URB2D(I,J)=0.99 + IF(UTYPE_URB==3) FRC_URB2D(I,J)=1.00 + IF(UTYPE_URB==4) FRC_URB2D(I,J)=0.65 + IF(UTYPE_URB==5) FRC_URB2D(I,J)=0.7 + IF(UTYPE_URB==6) FRC_URB2D(I,J)=0.65 + IF(UTYPE_URB==7) FRC_URB2D(I,J)=0.3 + IF(UTYPE_URB==8) FRC_URB2D(I,J)=0.85 + IF(UTYPE_URB==9) FRC_URB2D(I,J)=0.3 + IF(UTYPE_URB==10) FRC_URB2D(I,J)=0.55 + IF(UTYPE_URB==11) FRC_URB2D(I,J)=1. + TA_URB = SFCTMP ! [K] QA_URB = Q2K ! [kg/kg] UA_URB = SQRT(U_PHY(I,1,J)**2.+V_PHY(I,1,J)**2.) @@ -4204,10 +4249,13 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & !Fei: urban. for urban surface, if calling UCM, redefine the natural surface in cities as ! the "NATURAL" category in the VEGPARM.TBL - - IF(SF_URBAN_PHYSICS == 1.OR. SF_URBAN_PHYSICS==2.OR.SF_URBAN_PHYSICS==3 ) THEN - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN + IF(SF_URBAN_PHYSICS == 1.OR. SF_URBAN_PHYSICS==2.OR.SF_URBAN_PHYSICS==3 ) THEN + + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + VEGTYP = NATURAL SHDFAC = SHDTBL(NATURAL) ALBEDOK =0.2 ! 0.2 @@ -4224,8 +4272,10 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & ENDIF ENDIF ELSE - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN VEGTYP = ISURBAN ENDIF ENDIF @@ -4242,9 +4292,12 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & if (tloc==0) tloc=24 CALL cal_mon_day(julian,julyr,jmonth,jday) IF(SF_URBAN_PHYSICS == 1) THEN - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN - AOASIS = oasis ! urban oasis effect + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + + AOASIS = oasis ! urban oasis effect IF (IRIOPTION ==1) THEN IF (tloc==21 .or. tloc==22) THEN !irrigation on vegetaion in urban area, MAY-SEP, 9-10pm IF (jmonth==5 .or. jmonth==6 .or. jmonth==7 .or. jmonth==8 .or. jmonth==9) THEN @@ -4478,9 +4531,11 @@ SUBROUTINE lsm_mosaic(DZ8W,QV3D,P8W3D,T3D,TSK, & ! URBAN CANOPY MODEL START - urban !-------------------------------------- ! Input variables lsm --> urban - - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 ) THEN + ! Call urban ! diff --git a/phys/module_sf_noahlsm.F b/phys/module_sf_noahlsm.F index 5f52d1fc86..055198db51 100644 --- a/phys/module_sf_noahlsm.F +++ b/phys/module_sf_noahlsm.F @@ -29,7 +29,7 @@ MODULE module_sf_noahlsm ! VEGETATION PARAMETERS INTEGER :: LUCATS , BARE INTEGER :: NATURAL - INTEGER :: LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL + INTEGER :: LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 integer, PARAMETER :: NLUS=50 CHARACTER(LEN=256) LUTYPE INTEGER, DIMENSION(1:NLUS) :: NROTBL diff --git a/phys/module_sf_noahmpdrv.F b/phys/module_sf_noahmpdrv.F index b6b14fd300..c2bb46e5d3 100644 --- a/phys/module_sf_noahmpdrv.F +++ b/phys/module_sf_noahmpdrv.F @@ -62,7 +62,9 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN ! USE MODULE_SF_NOAHMPLSM, only: noahmp_options, NOAHMP_SFLX, noahmp_parameters USE module_sf_noahmp_glacier USE NOAHMP_TABLES, ONLY: ISICE_TABLE, CO2_TABLE, O2_TABLE, DEFAULT_CROP_TABLE, ISCROP_TABLE, ISURBAN_TABLE, NATURAL_TABLE, & - LOW_DENSITY_RESIDENTIAL_TABLE, HIGH_DENSITY_RESIDENTIAL_TABLE, HIGH_INTENSITY_INDUSTRIAL_TABLE + LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE,LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE, & + LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE + USE module_sf_urban, only: IRI_SCHEME USE module_ra_gfdleta, only: cal_mon_day !---------------------------------------------------------------- @@ -744,9 +746,11 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN IF(IPRINT) PRINT *, i,j,'RESET SOIL in surfce.F' SOILTYP = 7 ENDIF + IF( IVGTYP(I,J) == ISURBAN_TABLE .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & + IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & + IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & + IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE ) THEN - IF( IVGTYP(I,J) == ISURBAN_TABLE .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL_TABLE .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL_TABLE .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL_TABLE ) THEN IF(SF_URBAN_PHYSICS == 0 ) THEN VEGTYP = ISURBAN_TABLE @@ -810,8 +814,10 @@ SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN !=== hydrological processes for vegetation in urban model === !=== irrigate vegetaion only in urban area, MAY-SEP, 9-11pm - IF( IVGTYP(I,J) == ISURBAN_TABLE .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL_TABLE .or. & - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL_TABLE .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL_TABLE ) THEN + IF( IVGTYP(I,J) == ISURBAN_TABLE .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & + IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & + IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & + IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE ) THEN IF(SF_URBAN_PHYSICS > 0 .AND. IRI_SCHEME == 1 ) THEN SOLAR_TIME = (JULIAN - INT(JULIAN))*24 + XLONG(I,J)/15.0 @@ -1173,9 +1179,12 @@ SUBROUTINE TRANSFER_MP_PARAMETERS(VEGTYPE,SOILTYPE,SLOPETYPE,SOILCOLOR,CROPTYPE, parameters%EBLFOREST = EBLFOREST_TABLE parameters%URBAN_FLAG = .FALSE. - IF( VEGTYPE == ISURBAN_TABLE .or. VEGTYPE == LOW_DENSITY_RESIDENTIAL_TABLE .or. & - VEGTYPE == HIGH_DENSITY_RESIDENTIAL_TABLE .or. VEGTYPE == HIGH_INTENSITY_INDUSTRIAL_TABLE ) THEN - parameters%URBAN_FLAG = .TRUE. + IF( VEGTYPE == ISURBAN_TABLE .or. VEGTYPE == LCZ_1_TABLE .or. VEGTYPE == LCZ_2_TABLE .or. & + VEGTYPE == LCZ_3_TABLE .or. VEGTYPE == LCZ_4_TABLE .or. VEGTYPE == LCZ_5_TABLE .or. & + VEGTYPE == LCZ_6_TABLE .or. VEGTYPE == LCZ_7_TABLE .or. VEGTYPE == LCZ_8_TABLE .or. & + VEGTYPE == LCZ_9_TABLE .or. VEGTYPE == LCZ_10_TABLE .or. VEGTYPE == LCZ_11_TABLE ) THEN + + parameters%URBAN_FLAG = .TRUE. ENDIF !------------------------------------------------------------------------------------------! diff --git a/phys/module_sf_noahmplsm.F b/phys/module_sf_noahmplsm.F index dfbae466f1..8333aa87e0 100644 --- a/phys/module_sf_noahmplsm.F +++ b/phys/module_sf_noahmplsm.F @@ -9718,9 +9718,17 @@ MODULE NOAHMP_TABLES INTEGER :: ISCROP_TABLE INTEGER :: EBLFOREST_TABLE INTEGER :: NATURAL_TABLE - INTEGER :: LOW_DENSITY_RESIDENTIAL_TABLE - INTEGER :: HIGH_DENSITY_RESIDENTIAL_TABLE - INTEGER :: HIGH_INTENSITY_INDUSTRIAL_TABLE + INTEGER :: LCZ_1_TABLE + INTEGER :: LCZ_2_TABLE + INTEGER :: LCZ_3_TABLE + INTEGER :: LCZ_4_TABLE + INTEGER :: LCZ_5_TABLE + INTEGER :: LCZ_6_TABLE + INTEGER :: LCZ_7_TABLE + INTEGER :: LCZ_8_TABLE + INTEGER :: LCZ_9_TABLE + INTEGER :: LCZ_10_TABLE + INTEGER :: LCZ_11_TABLE REAL :: CH2OP_TABLE(MVT) !maximum intercepted h2o per unit lai+sai (mm) REAL :: DLEAF_TABLE(MVT) !characteristic leaf dimension (m) @@ -9984,9 +9992,17 @@ subroutine read_mp_veg_parameters(DATASET_IDENTIFIER) INTEGER :: ISCROP INTEGER :: EBLFOREST INTEGER :: NATURAL - INTEGER :: LOW_DENSITY_RESIDENTIAL - INTEGER :: HIGH_DENSITY_RESIDENTIAL - INTEGER :: HIGH_INTENSITY_INDUSTRIAL + INTEGER :: LCZ_1 + INTEGER :: LCZ_2 + INTEGER :: LCZ_3 + INTEGER :: LCZ_4 + INTEGER :: LCZ_5 + INTEGER :: LCZ_6 + INTEGER :: LCZ_7 + INTEGER :: LCZ_8 + INTEGER :: LCZ_9 + INTEGER :: LCZ_10 + INTEGER :: LCZ_11 REAL, DIMENSION(MVT) :: SAI_JAN,SAI_FEB,SAI_MAR,SAI_APR,SAI_MAY,SAI_JUN, & SAI_JUL,SAI_AUG,SAI_SEP,SAI_OCT,SAI_NOV,SAI_DEC @@ -10001,7 +10017,7 @@ subroutine read_mp_veg_parameters(DATASET_IDENTIFIER) NAMELIST / noahmp_usgs_veg_categories / VEG_DATASET_DESCRIPTION, NVEG NAMELIST / noahmp_usgs_parameters / ISURBAN, ISWATER, ISBARREN, ISICE, ISCROP, EBLFOREST, NATURAL, & - LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL, & + LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11,& CH2OP, DLEAF, Z0MVT, HVT, HVB, DEN, RC, MFSNO, SCFFAC, XL, CWPVT, C3PSN, KC25, AKC, KO25, AKO, AVCMX, AQE, & LTOVRC, DILEFC, DILEFW, RMF25 , SLA , FRAGR , TMIN , VCMX25, TDLEF , BP, MP, QE25, RMS25, RMR25, ARM, & FOLNMX, WDPOOL, WRRAT, MRP, NROOT, RGL, RS, HS, TOPT, RSMAX, & @@ -10011,7 +10027,7 @@ subroutine read_mp_veg_parameters(DATASET_IDENTIFIER) NAMELIST / noahmp_modis_veg_categories / VEG_DATASET_DESCRIPTION, NVEG NAMELIST / noahmp_modis_parameters / ISURBAN, ISWATER, ISBARREN, ISICE, ISCROP, EBLFOREST, NATURAL, & - LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL, & + LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11, & CH2OP, DLEAF, Z0MVT, HVT, HVB, DEN, RC, MFSNO, SCFFAC, XL, CWPVT, C3PSN, KC25, AKC, KO25, AKO, AVCMX, AQE, & LTOVRC, DILEFC, DILEFW, RMF25 , SLA , FRAGR , TMIN , VCMX25, TDLEF , BP, MP, QE25, RMS25, RMR25, ARM, & FOLNMX, WDPOOL, WRRAT, MRP, NROOT, RGL, RS, HS, TOPT, RSMAX, & @@ -10076,9 +10092,17 @@ subroutine read_mp_veg_parameters(DATASET_IDENTIFIER) ISCROP_TABLE = -99999 EBLFOREST_TABLE = -99999 NATURAL_TABLE = -99999 - LOW_DENSITY_RESIDENTIAL_TABLE = -99999 - HIGH_DENSITY_RESIDENTIAL_TABLE = -99999 - HIGH_INTENSITY_INDUSTRIAL_TABLE = -99999 + LCZ_1_TABLE = -99999 + LCZ_2_TABLE = -99999 + LCZ_3_TABLE = -99999 + LCZ_4_TABLE = -99999 + LCZ_5_TABLE = -99999 + LCZ_6_TABLE = -99999 + LCZ_7_TABLE = -99999 + LCZ_8_TABLE = -99999 + LCZ_9_TABLE = -99999 + LCZ_10_TABLE = -99999 + LCZ_11_TABLE = -99999 inquire( file='MPTABLE.TBL', exist=file_named ) if ( file_named ) then @@ -10112,9 +10136,17 @@ subroutine read_mp_veg_parameters(DATASET_IDENTIFIER) ISCROP_TABLE = ISCROP EBLFOREST_TABLE = EBLFOREST NATURAL_TABLE = NATURAL - LOW_DENSITY_RESIDENTIAL_TABLE = LOW_DENSITY_RESIDENTIAL - HIGH_DENSITY_RESIDENTIAL_TABLE = HIGH_DENSITY_RESIDENTIAL - HIGH_INTENSITY_INDUSTRIAL_TABLE = HIGH_INTENSITY_INDUSTRIAL + LCZ_1_TABLE = LCZ_1 + LCZ_2_TABLE = LCZ_2 + LCZ_3_TABLE = LCZ_3 + LCZ_4_TABLE = LCZ_4 + LCZ_5_TABLE = LCZ_5 + LCZ_6_TABLE = LCZ_6 + LCZ_7_TABLE = LCZ_7 + LCZ_8_TABLE = LCZ_8 + LCZ_9_TABLE = LCZ_9 + LCZ_10_TABLE = LCZ_10 + LCZ_11_TABLE = LCZ_11 CH2OP_TABLE(1:NVEG) = CH2OP(1:NVEG) DLEAF_TABLE(1:NVEG) = DLEAF(1:NVEG) diff --git a/phys/module_sf_urban.F b/phys/module_sf_urban.F index 78d84fdbd0..7cb2256c9d 100644 --- a/phys/module_sf_urban.F +++ b/phys/module_sf_urban.F @@ -1942,7 +1942,7 @@ END SUBROUTINE read_param ! !=============================================================================== SUBROUTINE urban_param_init(DZR,DZB,DZG,num_soil_layers, & - sf_urban_physics) + sf_urban_physics,use_wudapt_lcz) ! num_roof_layers,num_wall_layers,num_road_layers) IMPLICIT NONE @@ -1956,6 +1956,7 @@ SUBROUTINE urban_param_init(DZR,DZB,DZG,num_soil_layers, & REAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZB REAL, DIMENSION(1:num_soil_layers), INTENT(INOUT) :: DZG INTEGER, INTENT(IN) :: SF_URBAN_PHYSICS + INTEGER, INTENT(IN) :: USE_WUDAPT_LCZ !AndreaLCZ INTEGER :: LC, K INTEGER :: IOSTATUS, ALLOCATE_STATUS @@ -1991,8 +1992,10 @@ SUBROUTINE urban_param_init(DZR,DZB,DZG,num_soil_layers, & num_road_layers = num_soil_layers - ICATE=0 + ICATE=0 + + if(USE_WUDAPT_LCZ.eq.0)then !AndreaLCZ OPEN (UNIT=11, & FILE='URBPARM.TBL', & ACCESS='SEQUENTIAL', & @@ -2000,6 +2003,16 @@ SUBROUTINE urban_param_init(DZR,DZB,DZG,num_soil_layers, & ACTION='READ', & POSITION='REWIND', & IOSTAT=IOSTATUS) + else + OPEN (UNIT=11, & + FILE='URBPARM_LCZ.TBL', & + ACCESS='SEQUENTIAL', & + STATUS='OLD', & + ACTION='READ', & + POSITION='REWIND', & + IOSTAT=IOSTATUS) + endif + IF (IOSTATUS > 0) THEN FATAL_ERROR('ERROR OPEN URBPARM.TBL') @@ -2420,11 +2433,8 @@ END SUBROUTINE urban_param_init !=========================================================================== SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, & ! in ims,ime,jms,jme,kms,kme,num_soil_layers, & ! in -! num_roof_layers,num_wall_layers,num_road_layers, & ! in -! num_roof_layers,num_wall_layers,num_road_layers, & !urban - LOW_DENSITY_RESIDENTIAL, & - HIGH_DENSITY_RESIDENTIAL, & - HIGH_INTENSITY_INDUSTRIAL, & + LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5, & + LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11, & restart,sf_urban_physics, & !in XXXR_URB2D,XXXB_URB2D,XXXG_URB2D,XXXC_URB2D, & ! inout TR_URB2D,TB_URB2D,TG_URB2D,TC_URB2D,QC_URB2D, & ! inout @@ -2460,11 +2470,11 @@ SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, A_E_BEP,B_U_BEP,B_V_BEP, & ! inout multi-layer urban B_T_BEP,B_Q_BEP,B_E_BEP,DLG_BEP, & ! inout multi-layer urban DL_U_BEP,SF_BEP,VL_BEP, & ! inout multi-layer urban - FRC_URB2D, UTYPE_URB2D) ! inout + FRC_URB2D, UTYPE_URB2D,USE_WUDAPT_LCZ) ! inout IMPLICIT NONE - INTEGER, INTENT(IN) :: ISURBAN, sf_urban_physics - INTEGER, INTENT(IN) :: LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL + INTEGER, INTENT(IN) :: ISURBAN, sf_urban_physics,use_wudapt_lcz + INTEGER, INTENT(IN) :: LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 INTEGER, INTENT(IN) :: ims,ime,jms,jme,kms,kme,num_soil_layers INTEGER, INTENT(IN) :: num_urban_ndm INTEGER, INTENT(IN) :: urban_map_zrd @@ -2592,8 +2602,12 @@ SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, SWITCH_URB=0 IF( IVGTYP(I,J) == ISURBAN) THEN - UTYPE_URB2D(I,J) = 2 ! for default. high-intensity - UTYPE_URB = UTYPE_URB2D(I,J) ! for default. high-intensity + IF(use_wudapt_lcz==0) THEN + UTYPE_URB2D(I,J) = 2 ! for default. high-intensity + ELSE + UTYPE_URB2D(I,J) = 5 ! for default. high-intensity + ENDIF + UTYPE_URB = UTYPE_URB2D(I,J) ! for default. high-intensity IF (HGT_URB2D(I,J)>0.) THEN CONTINUE ELSE @@ -2625,11 +2639,12 @@ SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, ENDIF SWITCH_URB=1 ENDIF - - IF( IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL) THEN - UTYPE_URB2D(I,J) = 1 ! low-intensity residential - UTYPE_URB = UTYPE_URB2D(I,J) ! low-intensity residential - IF (HGT_URB2D(I,J)>0.) THEN + +!!!!! + IF( IVGTYP(I,J) == LCZ_1) THEN + UTYPE_URB2D(I,J) = 1 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN CONTINUE ELSE WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' @@ -2657,11 +2672,12 @@ SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' WRITE_MESSAGE(mesg) FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) - ENDIF + ENDIF SWITCH_URB=1 ENDIF - - IF( IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL) THEN +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_2) THEN UTYPE_URB2D(I,J) = 2 ! high-intensity UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity IF (HGT_URB2D(I,J)>0.) THEN @@ -2695,10 +2711,85 @@ SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, ENDIF SWITCH_URB=1 ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_3) THEN + UTYPE_URB2D(I,J) = 3 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_4) THEN + UTYPE_URB2D(I,J) = 4 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! + - IF( IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN - UTYPE_URB2D(I,J) = 3 ! Commercial/Industrial/Transportation - UTYPE_URB = UTYPE_URB2D(I,J) ! Commercial/Industrial/Transportation + + IF( IVGTYP(I,J) == LCZ_5) THEN + UTYPE_URB2D(I,J) = 5 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity IF (HGT_URB2D(I,J)>0.) THEN CONTINUE ELSE @@ -2728,10 +2819,227 @@ SUBROUTINE urban_var_init(ISURBAN, TSURFACE0_URB,TLAYER0_URB,TDEEP0_URB,IVGTYP, WRITE_MESSAGE(mesg) FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) ENDIF - SWITCH_URB=1 + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_6) THEN + UTYPE_URB2D(I,J) = 6 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_7) THEN + UTYPE_URB2D(I,J) = 7 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_8) THEN + UTYPE_URB2D(I,J) = 8 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_9) THEN + UTYPE_URB2D(I,J) = 9 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_10) THEN + UTYPE_URB2D(I,J) = 10 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 + ENDIF +!!!!! +!!!!! + IF( IVGTYP(I,J) == LCZ_11) THEN + UTYPE_URB2D(I,J) = 11 ! high-intensity + UTYPE_URB = UTYPE_URB2D(I,J) ! high-intensity + IF (HGT_URB2D(I,J)>0.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'USING DEFAULT URBAN MORPHOLOGY' + WRITE_MESSAGE(mesg) + LP_URB2D(I,J)=0. + LB_URB2D(I,J)=0. + HGT_URB2D(I,J)=0. + IF ( sf_urban_physics == 1 ) THEN + MH_URB2D(I,J)=0. + STDH_URB2D(I,J)=0. + DO K=1,4 + LF_URB2D(I,K,J)=0. + ENDDO + ELSE IF ( ( sf_urban_physics == 2 ) .or. ( sf_urban_physics == 3 ) ) THEN + DO K=1,num_urban_hi + HI_URB2D(I,K,J)=0. + ENDDO + ENDIF + ENDIF + IF (FRC_URB2D(I,J)>0.and.FRC_URB2D(I,J)<=1.) THEN + CONTINUE + ELSE + WRITE(mesg,*) 'WARNING, FRC_URB2D = 0 BUT IVGTYP IS URBAN' + WRITE_MESSAGE(mesg) + WRITE(mesg,*) 'WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL' + WRITE_MESSAGE(mesg) + FRC_URB2D(I,J) = FRC_URB_TBL(UTYPE_URB) + ENDIF + SWITCH_URB=1 ENDIF +!!!!! - IF (SWITCH_URB==1) THEN +IF (SWITCH_URB==1) THEN CONTINUE ELSE FRC_URB2D(I,J)=0. diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index fcde6c4734..75f65a2039 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -355,7 +355,7 @@ SUBROUTINE surface_driver( & USE module_sf_qnsesfc USE module_sf_gfs USE module_sf_noahdrv ! danli mosaic, the " ,only : lsm " needs to be deleted - USE module_sf_noahlsm, only : LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL + USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 USE module_sf_noahmpdrv, only : noahmplsm, noahmp_urban USE module_sf_noahmp_groundwater USE module_sf_noah_seaice_drv @@ -2968,10 +2968,10 @@ SUBROUTINE surface_driver( & IF(SF_URBAN_PHYSICS.eq.1) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. & - IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & !urban - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or.& - IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN !urban + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 )THEN U10(I,J) = U10_URB2D(I,J) !urban V10(I,J) = V10_URB2D(I,J) !urban PSIM(I,J) = PSIM_URB2D(I,J) !urban @@ -2988,10 +2988,10 @@ SUBROUTINE surface_driver( & IF((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.eq.3)) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. & - IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & !urban - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. & - IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL) THEN !urban + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 )THEN T2(I,J) = TH_PHY(i,1,j)/((1.E5/PSFC(I,J))**RCP) !urban TH2(I,J) = TH_PHY(i,1,j) !urban Q2(I,J) = qv_curr(i,1,j) !urban @@ -3305,12 +3305,12 @@ SUBROUTINE surface_driver( & T2(I,J) = TSK(I,J) - HFX(I,J)/(PSFC(I,J)/(R_d * TSK(I,J))*CP*CHS2(I,J)) ENDIF TH2(I,J) = T2(I,J)*(1.E5/PSFC(I,J))**RCP -! ELSEIF (IVGTYP(I,J) == ISURBAN .OR. IVGTYP(I,J) == ISICE .OR. FVEGXY(I,J) == 0.0 ) THEN - ELSEIF (IVGTYP(I,J) == ISURBAN .or. & - IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & !urban - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. & !urban - IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL .or. & !urban - (IVGTYP(I,J) == ISICE .AND. XICE(I,J) .LT. XICE_THRESHOLD)) THEN + ELSEIF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 .or. & + (IVGTYP(I,J) == ISICE .AND. XICE(I,J) .LT. XICE_THRESHOLD)) THEN + Q2(I,J) = Q2MBXY(I,J) T2(I,J) = T2MBXY(I,J) TH2(I,J) = T2(i,j)*(1.E5/PSFC(i,j))**RCP @@ -3333,8 +3333,10 @@ SUBROUTINE surface_driver( & IF(SF_URBAN_PHYSICS.eq.1) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & !urban - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL ) THEN !urban + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 )THEN Q2(I,J) = (FVEGXY(I,J)*Q2MVXY(I,J) + (1.-FVEGXY(I,J))*Q2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & Q2_URB2D(I,J)*FRC_URB2D(I,J) T2(I,J) = (FVEGXY(I,J)*T2MVXY(I,J) + (1.-FVEGXY(I,J))*T2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & @@ -3355,8 +3357,10 @@ SUBROUTINE surface_driver( & IF((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.eq.3)) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LOW_DENSITY_RESIDENTIAL .or. & !urban - IVGTYP(I,J) == HIGH_DENSITY_RESIDENTIAL .or. IVGTYP(I,J) == HIGH_INTENSITY_INDUSTRIAL ) THEN !urban + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & + IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & + IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & + IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 )THEN T2(I,J) = TH_PHY(i,1,j)/((1.E5/PSFC(I,J))**RCP) !urban TH2(I,J) = TH_PHY(i,1,j) !urban Q2(I,J) = qv_curr(i,1,j) !urban diff --git a/run/LANDUSE.TBL b/run/LANDUSE.TBL index ab49b87939..7c7aadf4d8 100644 --- a/run/LANDUSE.TBL +++ b/run/LANDUSE.TBL @@ -29,7 +29,7 @@ WINTER 12, 12., .50, .95, 50., 5., 1.66, 29.2e5,'Tropical or subtropical forest' 13, 20., .15, .92, 15., 3., 2.00, 25.0e5,'Savannah' USGS -33,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' +41,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' SUMMER 1, 15., .10, .88, 80., 3., 1.67, 18.9e5,'Urban and Built-Up Land' 2, 17., .30, .985, 15., 4., 2.71, 25.0e5,'Dryland Cropland and Pasture' @@ -61,9 +61,17 @@ SUMMER 28, 15., .02, .88, 80., 3., 1.67, 18.9e5,'Unassigned' 29, 15., .02, .88, 80., 3., 1.67, 18.9e5,'Unassigned' 30, 15., .10, .88, 80., 3., 1.67, 18.9e5,'Unassigned' -31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'Low Intensity Residential ' -32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'High Intensity Residential' -33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'Industrial or Commercial' +31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_1' +32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_2' +33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_3' +34, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_4' +35, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_5' +36, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_6' +37, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_7' +38, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_8' +39, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_9' +40, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_10' +41, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_11' WINTER 1, 15., .10, .88, 80., 3., 1.67, 18.9e5,'Urban and Built-Up Land' 2, 20., .60, .92, 5., 4., 2.00, 25.0e5,'Dryland Cropland and Pasture' @@ -95,11 +103,19 @@ WINTER 28, 15., .02, .88, 80., 3., 1.67, 18.9e5,'Unassigned' 29, 15., .02, .88, 80., 3., 1.67, 18.9e5,'Unassigned' 30, 15., .10, .88, 80., 3., 1.67, 18.9e5,'Unassigned' -31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'Low Intensity Residential ' -32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'High Intensity Residential' -33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'Industrial or Commercial' +31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_1' +32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_2' +33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_3' +34, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_4' +35, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_5' +36, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_6' +37, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_7' +38, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_8' +39, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_9' +40, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_10' +41, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_11' MODIFIED_IGBP_MODIS_NOAH -33,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' +41,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' SUMMER 1, 12., .30, .95, 50., 4., 3.33, 29.2e5, 'Evergreen Needleleaf Forest' 2, 12., .50, .95, 50., 5., 1.67, 29.2e5, 'Evergreen Broadleaf Forest' @@ -131,9 +147,17 @@ SUMMER 28, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 29, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 30, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' -31, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Low Intensity Residential ' -32, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'High Intensity Residential' -33, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Industrial or Commercial' +31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_1' +32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_2' +33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_3' +34, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_4' +35, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_5' +36, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_6' +37, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_7' +38, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_8' +39, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_9' +40, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_10' +41, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_11' WINTER 1, 12., .60, .95, 50., 5., 3.00, 29.2e5, 'Evergreen Needleleaf Forest' 2, 12., .50, .95, 50., 5., 1.67, 29.2e5, 'Evergreen Broadleaf Forest' @@ -165,9 +189,17 @@ WINTER 28, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 29, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 30, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' -31, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Low Intensity Residential ' -32, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'High Intensity Residential' -33, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Industrial or Commercial' +31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_1' +32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_2' +33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_3' +34, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_4' +35, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_5' +36, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_6' +37, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_7' +38, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_8' +39, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_9' +40, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_10' +41, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_11' SiB 16,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' SUMMER @@ -211,7 +243,7 @@ ALL-SEASON 2, 8., 1.0, .98, 0.01, 6., 0., 9.0e25,'Water' 3, 70., .95, .95, 5., 5., 0., 9.0e25,'Snow or Ice' MODIS -33,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' +41,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' SUMMER 1, 12., .30, .95, 50., 4., 3.33, 29.2e5, 'Evergreen Needleleaf Forest' 2, 12., .50, .95, 50., 5., 1.67, 29.2e5, 'Evergreen Broadleaf Forest' @@ -243,9 +275,17 @@ SUMMER 28, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 29, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 30, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' -31, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Low Intensity Residential ' -32, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'High Intensity Residential' -33, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Industrial or Commercial' +31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_1' +32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_2' +33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_3' +34, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_4' +35, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_5' +36, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_6' +37, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_7' +38, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_8' +39, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_9' +40, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_10' +41, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_11' WINTER 1, 12., .60, .95, 50., 5., 3.00, 29.2e5, 'Evergreen Needleleaf Forest' 2, 12., .50, .95, 50., 5., 1.67, 29.2e5, 'Evergreen Broadleaf Forest' @@ -277,9 +317,17 @@ WINTER 28, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 29, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' 30, 15., .02, .88, 80., 3., 1.67, 18.9e5, 'Unassigned' -31, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Low Intensity Residential ' -32, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'High Intensity Residential' -33, 10., .10, .97, 80., 3., 1.67, 18.9e5, 'Industrial or Commercial' +31, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_1' +32, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_2' +33, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_3' +34, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_4' +35, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_5' +36, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_6' +37, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_7' +38, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_8' +39, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_9' +40, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_10' +41, 10., .10, .97, 80., 3., 1.67, 18.9e5,'LCZ_11' SSIB 24,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC ' SUMMER diff --git a/run/MPTABLE.TBL b/run/MPTABLE.TBL index 9fbac39db9..8653f8bc87 100644 --- a/run/MPTABLE.TBL +++ b/run/MPTABLE.TBL @@ -39,9 +39,17 @@ ISCROP = 2 EBLFOREST = 13 NATURAL = 5 - LOW_DENSITY_RESIDENTIAL = 31 - HIGH_DENSITY_RESIDENTIAL = 32 - HIGH_INTENSITY_INDUSTRIAL = 33 + LCZ_1 = 31 + LCZ_2 = 32 + LCZ_3 = 33 + LCZ_4 = 34 + LCZ_5 = 35 + LCZ_6 = 36 + LCZ_7 = 37 + LCZ_8 = 38 + LCZ_9 = 39 + LCZ_10 = 40 + LCZ_11 = 41 !--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 @@ -187,10 +195,17 @@ ISCROP = 12 EBLFOREST = 2 NATURAL = 14 - LOW_DENSITY_RESIDENTIAL = 31 - HIGH_DENSITY_RESIDENTIAL = 32 - HIGH_INTENSITY_INDUSTRIAL = 33 - + LCZ_1 = 31 + LCZ_2 = 32 + LCZ_3 = 33 + LCZ_4 = 34 + LCZ_5 = 35 + LCZ_6 = 36 + LCZ_7 = 37 + LCZ_8 = 38 + LCZ_9 = 39 + LCZ_10 = 40 + LCZ_11 = 41 !--------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 !--------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/run/URBPARM.TBL b/run/URBPARM.TBL index 3ea29a1634..5995747e90 100644 --- a/run/URBPARM.TBL +++ b/run/URBPARM.TBL @@ -467,6 +467,10 @@ HSEQUIP: 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 HSEQUIP_SCALE_FACTOR: 16.00, 20.00, 36.00 + + + + STREET PARAMETERS: # (sf_urban_physics=2,3) diff --git a/run/URBPARM_LCZ.TBL b/run/URBPARM_LCZ.TBL new file mode 100644 index 0000000000..a9afbaf2db --- /dev/null +++ b/run/URBPARM_LCZ.TBL @@ -0,0 +1,613 @@ +# The parameters in this table may vary greatly from city to city. +# The default values are probably not appropriate for any given city. +# Users should adapt these values based on the city they are working +# with. + +# Urban Parameters depending on Urban type +# USGS + +Number of urban categories: 11 + +# +# Where there are multiple columns of values, the values refer, in +# order, to: 1) Commercial, 2) High intensity residential, and 3) Low +# intensity residential: I.e.: +# +# Index: 1 2 3 4 5 6 7 8 9 10 11 +# Type: Comp High-Rise, Comp Mid-Rise, Comp Low-Rise, Op H-Rise, Op M-Rise, Op L-Rise, Lightweight L-Rise, Large L-Rise, Sparsely Built, Heavy Indus Asphalt + +# +# ZR: Roof level (building height) [ m ] +# (sf_urban_physics=1) + +ZR: 37.5, 17.5, 6.5, 37.5, 17.5, 6.5, 3., 6.5, 6.5, 10., 10. + +# +# SIGMA_ZED: Standard Deviation of roof height [ m ] +# (sf_urban_physics=1) + +SIGMA_ZED: 4.0, 3.0, 1.0, 1., 1., 1., 1., 1., 1., 1., 1. + +# +# ROOF_WIDTH: Roof (i.e., building) width [ m ] +# (sf_urban_physics=1) + +ROOF_WIDTH: 31.7, 25.7, 17.6, 17.6, 17.6, 17.6, 17.6, 17.6, 17.6, 17.6, 10. + +# +# ROAD_WIDTH: road width [ m ] +# (sf_urban_physics=1) +# + +ROAD_WIDTH: 98.9, 39.2, 108.0, 108.0, 108.0, 108.0, 108.0, 108.0, 108.0, 108.0, 108.0 + +# +# AH: Anthropogenic heat [ W m{-2} ] +# (sf_urban_physics=1) +# + +AH: 175.0, 37.5, 37.5, 25.0, 12.5, 12.5, 17.5, 25.0, 5.0, 350.0, 350.0 + + +# +# ALH: Anthropogenic latent heat [ W m{-2} ] +# (sf_urban_physics=1) +# + +ALH: 20.0, 25.0, 40.0,20.0, 25.0, 40.0,20.0, 25.0, 40.0,20.0, 25.0 + +# +# AKANDA_URBAN: Coefficient modifying the Kanda approach to computing +# surface layer exchange coefficients. +# (sf_urban_physics=1) + +AKANDA_URBAN: 1.29 1.29 1.29 1.29 1.29 1.29 1.29 1.29 1.29 1.29 1.29 + +# +# DDZR: Thickness of each roof layer [ m ] +# This is currently NOT a function urban type, but a function +# of the number of layers. Number of layers must be 4, for now. +# (sf_urban_physics=1) + + +DDZR: 0.05, 0.05, 0.05, 0.05 + +# +# DDZB: Thickness of each building wall layer [ m ] +# This is currently NOT a function urban type, but a function +# of the number of layers. Number of layers must be 4, for now. +# (sf_urban_physics=1) +# + +DDZB: 0.05, 0.05, 0.05, 0.05 + +# +# DDZG: Thickness of each ground (road) layer [ m ] +# This is currently NOT a function urban type, but a function +# of the number of layers. Number of layers must be 4, for now. +# (sf_urban_physics=1) +# + +DDZG: 0.05, 0.25, 0.50, 0.75 + +# +# BOUNDR: Lower boundary condition for roof layer temperature [ 1: Zero-Flux, 2: T = Constant ] +# (sf_urban_physics=1) +# + +BOUNDR: 1 + +# +# BOUNDB: Lower boundary condition for wall layer temperature [ 1: Zero-Flux, 2: T = Constant ] +# (sf_urban_physics=1) +# + +BOUNDB: 1 + +# +# BOUNDG: Lower boundary condition for ground (road) layer temperature [ 1: Zero-Flux, 2: T = Constant ] +# (sf_urban_physics=1) +# + +BOUNDG: 1 + +# +# Ch of Wall and Road [ 1: M-O Similarity Theory, 2: Empirical Form of Narita et al., 1997 (recommended) ] +# (sf_urban_physics=1) +# + +CH_SCHEME: 2 + +# +# Surface and Layer Temperatures [ 1: 4-layer model, 2: Force-Restore method ] +# (sf_urban_physics=1) +# + +TS_SCHEME: 1 + +# +# AHOPTION [ 0: No anthropogenic heating, 1: Anthropogenic heating will be added to sensible heat flux term ] +# (sf_urban_physics=1) +# + +AHOPTION: 0 + +# +# Anthropogenic Heating diurnal profile. +# Multiplication factor applied to AH (as defined in the table above) +# Hourly values ( 24 of them ), starting at 01 hours Local Time. +# For sub-hourly model time steps, value changes on the hour and is +# held constant until the next hour. +# (sf_urban_physics=1) +# + +AHDIUPRF: 0.16 0.13 0.08 0.07 0.08 0.26 0.67 0.99 0.89 0.79 0.74 0.73 0.75 0.76 0.82 0.90 1.00 0.95 0.68 0.61 0.53 0.35 0.21 0.18 + +# +# ALHOPTION [ 0: No anthropogenic latent heat, 1: Anthropogenic heating will be added to latent heat flux term ] +# (sf_urban_physics=1) +# + +ALHOPTION: 0 + +# +# Anthropogenic latent heat: seasonal coefficient of daily maximum values +# From left to right in order: Spring (MAM), Summer(JJA), Fall(SON), Winter(DJF) +# (sf_urban_physics=1) +# + +ALHSEASON: 0.43 1.00 0.54 0.40 + +# +# Anthropogenic latent heat diurnal profile. +# Multiplication factor applied to seasonal ALH (as defined above) +# Half-hourly values ( 48 of them ), starting at 00:30 hours Local Time. +# (sf_urban_physics=1) +# + +ALHDIUPRF: 0.436 0.421 0.391 0.356 0.311 0.301 0.306 0.295 0.253 0.205 0.177 0.162 0.148 0.121 0.118 0.146 0.210 0.250 0.227 0.162 0.127 0.184 0.306 0.413 0.487 0.559 0.639 0.728 0.754 0.812 0.867 0.969 1.000 0.949 0.840 0.775 0.758 0.756 0.706 0.658 0.637 0.632 0.636 0.633 0.639 0.615 0.553 0.485 + +# Oasis effect +# Multiplication factor applied to potential ET of vegetation in urban areas +# Value should be larger than 1 when actived +# (sf_urban_physics=1) + +OASIS: 1.0 + +# Evaporation scheme for impervious surfaces (for roof, wall, and road) +# [1: Hypothesized evaporation during large rainfall events (Original) +# [2: Water-holding scheme over impervious surface, Yang et al., 2014 +# (sf_urban_physics=1) + +IMP_SCHEME: 1 + +# Porosity of pavement materials on impervious surface +# For calculating latent heat flux over impervious surface +# From left to right in order: roof, wall, road +# (sf_urban_physics=1,IMP_SCHEME=2) +# + +PORIMP: 0.45 0.45 0.45 + +# Maximum water-holding depth of pavement materials on impervious surface [m] +# For calculating latent heat flux over impervious surface +# From left to right in order: roof, wall, road +# (sf_urban_physics=1,IMP_SCHEME=2) +# + +DENGIMP: 0.001 0.0002 0.001 + +# Urban irrigation scheme, for vegetation in urban area and green roof +# [0: No irrigation +# [1: Summertime (May-Sep) irrigation everyday at 9pm +# (sf_urban_physics=1) + +IRI_SCHEME: 0 + +# +# GROPTION [ 0: No green roof, 1: Enable green roof simulation] +# (sf_urban_physics=1) +# + +GROPTION: 0 + +# Surface fraction of green roof over urban rooftop (0-1) +# (sf_urban_physics=1) +# + +FGR: 0.0 + +# +# DZGR: Thickness of each layer on green roof [ m ] +# Green roof structure: 4-layers +# 1: Top Soil layer 2:Soil layer 3: Growing Medium layer +# 4: concrete roof (depth depends on DDZR defined earlier in this table) +# (sf_urban_physics=1) + +DZGR: 0.05 0.10 0.15 0.20 + +# +# FRC_URB: Fraction of the urban landscape which does not have natural +# vegetation. [ Fraction ] +# (sf_urban_physics=1,2,3) +# + +FRC_URB: 1.00, 0.99, 1.00, 0.65, 0.7, 0.65, 0.3, 0.85, 0.3, 0.55, 1.00 +# +# CAPR: Heat capacity of roof [ J m{-3} K{-1} ] +# (sf_urban_physics=1,2,3) +# + +CAPR: 1.32E6,1.32E6,1.32E6, 1.8E6, 1.32E6, 1.32E6, 2.0E6, 2.11E6, 1.32E6, 2.0E6, 1.94E6 + +# +# CAPB: Heat capacity of building wall [ J m{-3} K{-1} ] +# (sf_urban_physics=1,2,3) +# + +CAPB: 1.54E6,1.54E6,1.54E6, 2.0E6, 1.54E6, 1.54E6, 2.0E6, 2.11E6, 1.54E6, 1.59E6, 1.94E6 + +# +# CAPG: Heat capacity of ground (road) [ J m{-3} K{-1} ] +# (sf_urban_physics=1,2,3) +# + +CAPG: 1.74E6,1.74E6,1.74E6, 1.54E6, 1.94E6, 1.94E6, 1.74E6, 1.94E6, 1.47E6, 1.49E6, 1.94E6 + +# +# AKSR: Thermal conductivity of roof [ J m{-1} s{-1} K{-1} ] +# (sf_urban_physics=1,2,3) +# + +AKSR: 1.54,1.54,1.54, 1.25, 1.54, 1.54, 0.35, 1.51, 1.00, 2.00, 0.75 + +# +# AKSB: Thermal conductivity of building wall [ J m{-1} s{-1} K{-1} ] +# (sf_urban_physics=1,2,3) +# + +AKSB: 1.51,1.51,1.51, 1.45, 1.51, 1.51,0.35,1.51,1.51, 1.33, 0.75 + +# +# AKSG: Thermal conductivity of ground (road) [ J m{-1} s{-1} K{-1} ] +# (sf_urban_physics=1,2,3) +# + +AKSG: 0.82, 0.82, 0.82, 0.64, 0.82, 0.82, 0.82, 0.82, 0.60, 0.75, 0.75 + +# +# ALBR: Surface albedo of roof [ fraction ] +# (sf_urban_physics=1,2,3) +# + +ALBR: 0.30, 0.30, 0.30, 0.30, 0.30, 0.30, 0.70, 0.30, 0.30, 0.30, 0.12 + +# +# ALBB: Surface albedo of building wall [ fraction ] +# (sf_urban_physics=1,2,3) +# + +ALBB: 0.35, 0.35, 0.35, 0.35, 0.35, 0.35, 0.70, 0.35, 0.35, 0.35, 0.12 + +# +# ALBG: Surface albedo of ground (road) [ fraction ] +# (sf_urban_physics=1,2,3) +# + +ALBG: 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15 + +# +# EPSR: Surface emissivity of roof [ - ] +# (sf_urban_physics=1,2,3) +# + +EPSR: 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.93 + +# +# EPSB: Surface emissivity of building wall [-] +# (sf_urban_physics=1,2,3) +# + +EPSB: 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.93, 0.90, 0.90, 0.93 + +# +# EPSG: Surface emissivity of ground (road) [ - ] +# (sf_urban_physics=1,2,3) +# + +EPSG: 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95 + +# +# Z0B: Roughness length for momentum, over building wall [ m ] +# Only active for CH_SCHEME == 1 +# (sf_urban_physics=1) +# + +Z0B: 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001 + + +# +# Z0G: Roughness length for momentum, over ground (road) [ m ] +# Only active for CH_SCHEME == 1 +# (sf_urban_physics=1,2,3) +# + +Z0G: 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 + + +# +# Z0R: Roughness length for momentum over roof [ m ] +# (sf_urban_physics=2,3) +# + +Z0R: 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 + + +# +# TRLEND: Lower boundary condition for roof temperature [ K ] +# (sf_urban_physics=1,2,3) +# + +TRLEND: 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00 + +# +# TBLEND: Lower boundary temperature for building wall temperature [ K ] +# (sf_urban_physics=1,2,3) +# + +TBLEND: 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00, 299.00 + +# +# TGLEND: Lower boundary temperature for ground (road) temperature [ K ] +# (sf_urban_physics=1,2,3) +# + +TGLEND: 293.00, 293.00, 293.00, 293.00, 293.00, 293.00, 293.00, 293.00, 293.00, 293.00, 293.00 +# +# COP: Coefficient of performance of the A/C systems [ - ] +# (sf_urban_physics=3) +# + +COP: 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 +# +# BLDAC_FRC: fraction of buildings installed with A/C systems [ - ] +# (sf_urban_physics=3) +# + +BLDAC_FRC: 1.0, 1.0, 1.0,1.0, 1.0, 1.0,1.0, 1.0, 1.0,1.0, 1.0 + +# +# COOLED_FRC: fraction of cooled floor area in buildings [ - ] +# (sf_urban_physics=3) +# +COOLED_FRC: 1.0, 1.0, 1.0,1.0, 1.0, 1.0,1.0, 1.0, 1.0,1.0, 1.0 + + +# +# PWIN: Coverage area fraction of windows in the walls of the building [ - ] +# (sf_urban_physics=3) +# + +PWIN: 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.9, 0.2, 0.2, 0.2, 0.0 + +# +# BETA: Thermal efficiency of heat exchanger +# (sf_urban_physics=3) +# + +BETA: 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75 + +# +# SW_COND: Air conditioning switch, 1=ON +# (sf_urban_physics=3) +# + +SW_COND: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 + +# +# TIME_ON: Initial local time of A/C systems, [ h ] +# (sf_urban_physics=3) +# + +TIME_ON: 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. + +# +# TIME_OFF: End local time of A/C systems, [ h ] +# (sf_urban_physics=3) +# + +TIME_OFF: 24., 24., 24., 24., 24., 24., 24., 24., 24., 24., 24. + +# +# TARGTEMP: Target Temperature of the A/C systems, [ K ] +# (sf_urban_physics=3) +# + +TARGTEMP: 294.15, 294.15, 294.15, 294.15, 294.15, 294.15, 294.15, 294.15, 294.15, 294.15, 294.15 + +# +# GAPTEMP: Comfort Range of the indoor Temperature, [ K ] +# (sf_urban_physics=3) +# + +GAPTEMP: 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 + +# +# TARGHUM: Target humidity of the A/C systems, [ Kg/Kg ] +# (sf_urban_physics=3) +# + +TARGHUM: 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 + +# +# GAPHUM: Comfort Range of the specific humidity, [ Kg/Kg ] +# (sf_urban_physics=3) +# + +GAPHUM: 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 +# +# PERFLO: Peak number of occupants per unit floor area, [ person/m^2 ] +# (sf_urban_physics=3) +# + +PERFLO: 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.00 + + +# +# HSEQUIP: Diurnal heating profile of heat generated by equipments +# (sf_urban_physics=3) +# + +HSEQUIP: 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.5 0.25 0.25 0.25 0.25 0.25 + +# +# HSEQUIP_SCALE_FACTOR: Peak heat generated by equipments, [ W/m^2 ] +# (sf_urban_physics=3) +# + +HSEQUIP_SCALE_FACTOR: 36.00, 20.00, 20.00, 36.00, 20.00, 20.00, 20.00, 36.00, 20.00, 20.00, 20.00 + + + + + +STREET PARAMETERS: + +# (sf_urban_physics=2,3) + +# urban street street building +# category direction width width +# [index] [deg from N] [m] [m] + + 1 0.0 15. 12. + 1 90.0 15. 12. + 2 0.0 10. 20. + 2 90.0 10. 20. + 3 0.0 5.7 9. + 3 90.0 5.7 9. + 4 0.0 30.0 20. + 4 90.0 30.0 20. + 5 0.0 20.0 20. + 5 90.0 20.0 20. + 6 0.0 12.4 10.5 + 6 90.0 12.4 10.5 + 7 0.0 10. 20. + 7 90.0 10. 20. + 8 0.0 32.5 28.8 + 8 90.0 32.5 28.8 + 9 0.0 10. 10. + 9 90.0 10. 10. + 10 0.0 28.5 23.8 + 10 90.0 28.5 23.8 + 11 0.0 100. 5. + 11 90.0 100. 5. + +END STREET PARAMETERS + +BUILDING HEIGHTS: 1 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 21.0 100.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 2 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 9.0 25.0 + 15.0 45.0 + 18.0 20.0 + 21.0 10.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 3 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 6.0 55.0 + 9.0 45.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 4 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 24.0 100.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 5 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 9.0 10.0 + 15.0 25.0 + 21.0 40.0 + 24.0 25.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 6 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 6.0 30.0 + 9.0 40.0 + 15.0 30.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 7 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 5.0 100.0 + 9.0 0.0 + 15.0 0.0 + 21.0 0.0 + 24.0 0.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 8 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 6.0 35.0 + 9.0 65.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 9 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 6.0 75.0 + 9.0 25.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 10 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 3.0 10.0 + 9.0 60.0 + 15.0 30.0 +END BUILDING HEIGHTS + +BUILDING HEIGHTS: 11 +# (sf_urban_physics=2,3) + +# height Percentage +# [m] [%] + 6.0 100.0 + +END BUILDING HEIGHTS + + diff --git a/run/VEGPARM.TBL b/run/VEGPARM.TBL index f623c8083d..930f5d0267 100644 --- a/run/VEGPARM.TBL +++ b/run/VEGPARM.TBL @@ -42,12 +42,28 @@ NATURAL 5 CROP 3 -LOW_DENSITY_RESIDENTIAL +LCZ_1 31 -HIGH_DENSITY_RESIDENTIAL +LCZ_2 32 -HIGH_INTENSITY_INDUSTRIAL +LCZ_3 33 +LCZ_4 +34 +LCZ_5 +35 +LCZ_6 +36 +LCZ_7 +37 +LCZ_8 +38 +LCZ_9 +39 +LCZ_10 +40 +LCZ_11 +41 Vegetation Parameters MODIFIED_IGBP_MODIS_NOAH 20,1, 'SHDFAC NROOT RS RGL HS SNUP MAXALB LAIMIN LAIMAX EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX Z0MIN Z0MAX ZTOPV ZBOTV' @@ -85,12 +101,28 @@ NATURAL 14 CROP 12 -LOW_DENSITY_RESIDENTIAL +LCZ_1 31 -HIGH_DENSITY_RESIDENTIAL +LCZ_2 32 -HIGH_INTENSITY_INDUSTRIAL +LCZ_3 33 +LCZ_4 +34 +LCZ_5 +35 +LCZ_6 +36 +LCZ_7 +37 +LCZ_8 +38 +LCZ_9 +39 +LCZ_10 +40 +LCZ_11 +41 Vegetation Parameters NLCD40 40,1, 'SHDFAC NROOT RS RGL HS SNUP MAXALB LAIMIN LAIMAX EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX Z0MIN Z0MAX ZTOPV ZBOTV' @@ -148,11 +180,11 @@ NATURAL 14 CROP 12 -LOW_DENSITY_RESIDENTIAL +LCZ_1 24 -HIGH_DENSITY_RESIDENTIAL +LCZ_2 26 -HIGH_INTENSITY_INDUSTRIAL +LCZ_3 99 Vegetation Parameters USGS-RUC diff --git a/share/module_check_a_mundo.F b/share/module_check_a_mundo.F index 602e0eef4b..642216eaf7 100644 --- a/share/module_check_a_mundo.F +++ b/share/module_check_a_mundo.F @@ -48,6 +48,8 @@ SUBROUTINE check_nml_consistency ! ! + USE module_bep_bem_helper, ONLY: nurbm + IMPLICIT NONE LOGICAL :: exists, vnest @@ -107,7 +109,6 @@ INTEGER FUNCTION bep_bem_nbui_max() END FUNCTION bep_bem_nbui_max END INTERFACE - !----------------------------------------------------------------------- ! Set up the WRF Hydro namelist option to allow dynamic allocation of ! variables. @@ -387,6 +388,19 @@ END FUNCTION bep_bem_nbui_max END IF ENDDO +!----------------------------------------------------------------------- +! Urban physics set up. If the run-time option for use_wudapt_lcz = 0, +! then the number of urban classes is 3. Else, if the use_wudapt_lcz = 1, +! then the number increases to 11. The seemingly local variable +! assignment, "nurbm", is actually USE associated from the BEP BEM +! helper module. +!----------------------------------------------------------------------- + IF ( model_config_rec%use_wudapt_lcz .EQ. 0 ) THEN + nurbm = 3 + ELSE IF ( model_config_rec%use_wudapt_lcz .EQ. 1 ) THEN + nurbm = 11 + END IF + !----------------------------------------------------------------------- ! Assign the dimensions for the urban options to the values defined in ! each of those respective modules.