Changeset 2963
- Timestamp:
- Apr 12, 2018 2:47:44 PM (7 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/Makefile
r2955 r2963 25 25 # ----------------- 26 26 # $Id$ 27 # Introduce index for vegetation/wall, pavement/green-wall and water/window 28 # surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 29 # 30 # 2955 2018-04-09 15:14:01Z suehring 27 31 # Add log-points to measure CPU time of NetCDF data input. 28 32 # … … 1174 1178 cpulog_mod.o \ 1175 1179 mod_kinds.o \ 1176 modules.o 1180 modules.o \ 1181 surface_mod.o 1177 1182 netcdf_interface_mod.o: \ 1178 1183 chemistry_model_mod.o \ -
palm/trunk/SOURCE/data_output_2d.f90
r2817 r2963 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Introduce index for vegetation/wall, pavement/green-wall and water/window 28 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 29 ! 30 ! 2817 2018-02-19 16:32:21Z knoop 27 31 ! Preliminary gust module interface implemented 28 32 ! … … 263 267 264 268 USE surface_mod, & 265 ONLY: surf_def_h, surf_lsm_h, surf_usm_h 269 ONLY: ind_pav_green, ind_veg_wall, ind_wat_win, surf_def_h, & 270 surf_lsm_h, surf_usm_h 266 271 267 272 USE turbulence_closure_mod, & … … 568 573 i = surf_usm_h%i(m) 569 574 j = surf_usm_h%j(m) 570 local_pf(i,j,nzb+1) = surf_usm_h%frac( 0,m) *&575 local_pf(i,j,nzb+1) = surf_usm_h%frac(ind_veg_wall,m) * & 571 576 surf_usm_h%wghf_eb(m) + & 572 surf_usm_h%frac( 1,m) *&577 surf_usm_h%frac(ind_pav_green,m) * & 573 578 surf_usm_h%wghf_eb_green(m) + & 574 surf_usm_h%frac( 2,m) *&579 surf_usm_h%frac(ind_wat_win,m) * & 575 580 surf_usm_h%wghf_eb_window(m) 576 581 ENDDO … … 915 920 j = surf_usm_h%j(m) 916 921 local_pf(i,j,nzb+1) = & 917 ( surf_usm_h%frac(0,m) * surf_usm_h%r_a(m) + & 918 surf_usm_h%frac(1,m) * surf_usm_h%r_a_green(m) + & 919 surf_usm_h%frac(2,m) * surf_usm_h%r_a_window(m) ) 922 ( surf_usm_h%frac(ind_veg_wall,m) * & 923 surf_usm_h%r_a(m) + & 924 surf_usm_h%frac(ind_pav_green,m) * & 925 surf_usm_h%r_a_green(m) + & 926 surf_usm_h%frac(ind_wat_win,m) * & 927 surf_usm_h%r_a_window(m) ) 920 928 ENDDO 921 929 ELSE -
palm/trunk/SOURCE/land_surface_model_mod.f90
r2938 r2963 25 25 ! ----------------- 26 26 ! $Id$ 27 ! - In initialization of surface types, consider the case that surface_fractions 28 ! is not given in static input file. 29 ! - Introduce index for vegetation/wall, pavement/green-wall and water/window 30 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 31 ! 32 ! 2938 2018-03-27 15:52:42Z suehring 27 33 ! Initialization of soil moisture and temperature via Inifor-provided data also 28 34 ! in nested child domains, even if no dynamic input file is available for … … 416 422 417 423 USE surface_mod, & 418 ONLY : surf_lsm_h, surf_lsm_v, surf_type, surface_restore_elements 424 ONLY : ind_pav_green, ind_veg_wall, ind_wat_win, surf_lsm_h, & 425 surf_lsm_v, surf_type, surface_restore_elements 419 426 420 427 IMPLICIT NONE … … 711 718 'pond ', & ! 4 712 719 'fountain ' & ! 5 713 /) 714 ! 715 !-- IDs for vegetation, pavement and water surfaces 716 INTEGER(iwp) :: ind_veg = 0 !< index for vegetation surfaces, used to assess surface-fraction, albedo, etc. 717 INTEGER(iwp) :: ind_pav = 1 !< index for pavement surfaces, used to assess surface-fraction, albedo, etc. 718 INTEGER(iwp) :: ind_wat = 2 !< index for vegetation surfaces, used to assess surface-fraction, albedo, etc. 720 /) 719 721 720 722 ! … … 2560 2562 2561 2563 surf_lsm_h%vegetation_surface = .TRUE. 2562 surf_lsm_h%frac(ind_veg ,:) = 1.0_wp2564 surf_lsm_h%frac(ind_veg_wall,:) = 1.0_wp 2563 2565 DO l = 0, 3 2564 2566 surf_lsm_v(l)%vegetation_surface = .TRUE. 2565 surf_lsm_v(l)%frac(ind_veg ,:) = 1.0_wp2567 surf_lsm_v(l)%frac(ind_veg_wall,:) = 1.0_wp 2566 2568 ENDDO 2567 2569 … … 2569 2571 2570 2572 surf_lsm_h%water_surface = .TRUE. 2571 surf_lsm_h%frac(ind_wat ,:) = 1.0_wp2573 surf_lsm_h%frac(ind_wat_win,:) = 1.0_wp 2572 2574 ! 2573 2575 !-- Note, vertical water surface does not really make sense. 2574 2576 DO l = 0, 3 2575 2577 surf_lsm_v(l)%water_surface = .TRUE. 2576 surf_lsm_v(l)%frac(ind_wat ,:) = 1.0_wp2578 surf_lsm_v(l)%frac(ind_wat_win,:) = 1.0_wp 2577 2579 ENDDO 2578 2580 … … 2580 2582 2581 2583 surf_lsm_h%pavement_surface = .TRUE. 2582 surf_lsm_h%frac(ind_pav ,:) = 1.0_wp2584 surf_lsm_h%frac(ind_pav_green,:) = 1.0_wp 2583 2585 DO l = 0, 3 2584 2586 surf_lsm_v(l)%pavement_surface = .TRUE. 2585 surf_lsm_v(l)%frac(ind_pav ,:) = 1.0_wp2587 surf_lsm_v(l)%frac(ind_pav_green,:) = 1.0_wp 2586 2588 ENDDO 2587 2589 … … 2631 2633 !-- In case of netcdf input file, further initialize surface fractions. 2632 2634 !-- At the moment only 1 surface is given at a location, so that the fraction 2633 !-- is either 0 or 1. This will be revised later. 2634 IF ( input_pids_static ) THEN 2635 !-- is either 0 or 1. This will be revised later. If surface fraction 2636 !-- is not given in static input file, relative fractions will be derived 2637 !-- from given surface type. In this case, only 1 type is given at a certain 2638 !-- location (already checked). 2639 IF ( input_pids_static .AND. surface_fraction_f%from_file ) THEN 2635 2640 DO m = 1, surf_lsm_h%ns 2636 2641 i = surf_lsm_h%i(m) … … 2638 2643 ! 2639 2644 !-- 0 - vegetation fraction, 1 - pavement fraction, 2 - water fraction 2640 surf_lsm_h%frac(ind_veg,m) = surface_fraction_f%frac(ind_veg,j,i) 2641 surf_lsm_h%frac(ind_pav,m) = surface_fraction_f%frac(ind_pav,j,i) 2642 surf_lsm_h%frac(ind_wat,m) = surface_fraction_f%frac(ind_wat,j,i) 2645 surf_lsm_h%frac(ind_veg_wall,m) = & 2646 surface_fraction_f%frac(ind_veg_wall,j,i) 2647 surf_lsm_h%frac(ind_pav_green,m) = & 2648 surface_fraction_f%frac(ind_pav_green,j,i) 2649 surf_lsm_h%frac(ind_wat_win,m) = & 2650 surface_fraction_f%frac(ind_wat_win,j,i) 2643 2651 2644 2652 ENDDO … … 2651 2659 ! 2652 2660 !-- 0 - vegetation fraction, 1 - pavement fraction, 2 - water fraction 2653 surf_lsm_v(l)%frac(ind_veg,m) = surface_fraction_f%frac(ind_veg,j,i) 2654 surf_lsm_v(l)%frac(ind_pav,m) = surface_fraction_f%frac(ind_pav,j,i) 2655 surf_lsm_v(l)%frac(ind_wat,m) = surface_fraction_f%frac(ind_wat,j,i) 2656 2661 surf_lsm_v(l)%frac(ind_veg_wall,m) = & 2662 surface_fraction_f%frac(ind_veg_wall,j,i) 2663 surf_lsm_v(l)%frac(ind_pav_green,m) = & 2664 surface_fraction_f%frac(ind_pav_green,j,i) 2665 surf_lsm_v(l)%frac(ind_wat_win,m) = & 2666 surface_fraction_f%frac(ind_wat_win,j,i) 2667 2668 ENDDO 2669 ENDDO 2670 ELSEIF ( input_pids_static .AND. .NOT. surface_fraction_f%from_file ) & 2671 THEN 2672 DO m = 1, surf_lsm_h%ns 2673 i = surf_lsm_h%i(m) 2674 j = surf_lsm_h%j(m) 2675 2676 IF ( vegetation_type_f%var(j,i) /= vegetation_type_f%fill ) & 2677 surf_lsm_h%frac(ind_veg_wall,m) = 1.0_wp 2678 IF ( pavement_type_f%var(j,i) /= pavement_type_f%fill ) & 2679 surf_lsm_h%frac(ind_pav_green,m) = 1.0_wp 2680 IF ( water_type_f%var(j,i) /= water_type_f%fill ) & 2681 surf_lsm_h%frac(ind_wat_win,m) = 1.0_wp 2682 ENDDO 2683 DO l = 0, 3 2684 DO m = 1, surf_lsm_v(l)%ns 2685 i = surf_lsm_v(l)%i(m) + MERGE( 0, surf_lsm_v(l)%ioff, & 2686 surf_lsm_v(l)%building_covered(m) ) 2687 j = surf_lsm_v(l)%j(m) + MERGE( 0, surf_lsm_v(l)%joff, & 2688 surf_lsm_v(l)%building_covered(m) ) 2689 2690 IF ( vegetation_type_f%var(j,i) /= vegetation_type_f%fill ) & 2691 surf_lsm_v(l)%frac(ind_veg_wall,m) = 1.0_wp 2692 IF ( pavement_type_f%var(j,i) /= pavement_type_f%fill ) & 2693 surf_lsm_v(l)%frac(ind_pav_green,m) = 1.0_wp 2694 IF ( water_type_f%var(j,i) /= water_type_f%fill ) & 2695 surf_lsm_v(l)%frac(ind_wat_win,m) = 1.0_wp 2657 2696 ENDDO 2658 2697 ENDDO … … 3016 3055 surf_lsm_h%f_sw_in(m) = f_shortwave_incoming 3017 3056 surf_lsm_h%c_surface(m) = c_surface 3018 surf_lsm_h%albedo_type(ind_veg ,m) = albedo_type3019 surf_lsm_h%emissivity(ind_veg ,m) = emissivity3057 surf_lsm_h%albedo_type(ind_veg_wall,m) = albedo_type 3058 surf_lsm_h%emissivity(ind_veg_wall,m) = emissivity 3020 3059 ELSE 3021 3060 surf_lsm_h%lai(m) = 0.0_wp … … 3042 3081 surf_lsm_v(l)%f_sw_in(m) = f_shortwave_incoming 3043 3082 surf_lsm_v(l)%c_surface(m) = c_surface 3044 surf_lsm_v(l)%albedo_type(ind_veg ,m) = albedo_type3045 surf_lsm_v(l)%emissivity(ind_veg ,m) = emissivity3083 surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = albedo_type 3084 surf_lsm_v(l)%emissivity(ind_veg_wall,m) = emissivity 3046 3085 ELSE 3047 3086 surf_lsm_v(l)%lai(m) = 0.0_wp … … 3077 3116 surf_lsm_h%f_sw_in(m) = vegetation_pars(ind_v_f_sw_in,st) 3078 3117 surf_lsm_h%c_surface(m) = vegetation_pars(ind_v_c_surf,st) 3079 surf_lsm_h%albedo_type(ind_veg ,m) = INT( vegetation_pars(ind_v_at,st) )3080 surf_lsm_h%emissivity(ind_veg ,m) = vegetation_pars(ind_v_emis,st)3118 surf_lsm_h%albedo_type(ind_veg_wall,m) = INT( vegetation_pars(ind_v_at,st) ) 3119 surf_lsm_h%emissivity(ind_veg_wall,m) = vegetation_pars(ind_v_emis,st) 3081 3120 ENDIF 3082 3121 ENDDO … … 3103 3142 surf_lsm_v(l)%f_sw_in(m) = vegetation_pars(ind_v_f_sw_in,st) 3104 3143 surf_lsm_v(l)%c_surface(m) = vegetation_pars(ind_v_c_surf,st) 3105 surf_lsm_v(l)%albedo_type(ind_veg ,m) = INT( vegetation_pars(ind_v_at,st) )3106 surf_lsm_v(l)%emissivity(ind_veg ,m) = vegetation_pars(ind_v_emis,st)3144 surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = INT( vegetation_pars(ind_v_at,st) ) 3145 surf_lsm_v(l)%emissivity(ind_veg_wall,m) = vegetation_pars(ind_v_emis,st) 3107 3146 ENDIF 3108 3147 ENDDO … … 3179 3218 IF ( vegetation_pars_f%pars_xy(ind_v_at,j,i) /= & 3180 3219 vegetation_pars_f%fill ) & 3181 surf_lsm_h%albedo_type(ind_veg ,m) =&3220 surf_lsm_h%albedo_type(ind_veg_wall,m) = & 3182 3221 INT( vegetation_pars_f%pars_xy(ind_v_at,j,i) ) 3183 3222 IF ( vegetation_pars_f%pars_xy(ind_v_emis,j,i) /= & 3184 3223 vegetation_pars_f%fill ) & 3185 surf_lsm_h%emissivity(ind_veg ,m) =&3224 surf_lsm_h%emissivity(ind_veg_wall,m) = & 3186 3225 vegetation_pars_f%pars_xy(ind_v_emis,j,i) 3187 3226 ENDIF … … 3255 3294 IF ( vegetation_pars_f%pars_xy(ind_v_at,j,i) /= & 3256 3295 vegetation_pars_f%fill ) & 3257 surf_lsm_v(l)%albedo_type(ind_veg ,m) =&3296 surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = & 3258 3297 INT( vegetation_pars_f%pars_xy(ind_v_at,j,i) ) 3259 3298 IF ( vegetation_pars_f%pars_xy(ind_v_emis,j,i) /= & 3260 3299 vegetation_pars_f%fill ) & 3261 surf_lsm_v(l)%emissivity(ind_veg ,m) =&3300 surf_lsm_v(l)%emissivity(ind_veg_wall,m) = & 3262 3301 vegetation_pars_f%pars_xy(ind_v_emis,j,i) 3263 3302 ENDIF … … 3305 3344 surf_lsm_h%lambda_surface_u(m) = 1.0E10_wp 3306 3345 surf_lsm_h%c_surface(m) = 0.0_wp 3307 surf_lsm_h%albedo_type(ind_wat ,m) = albedo_type3308 surf_lsm_h%emissivity(ind_wat ,m) = emissivity3346 surf_lsm_h%albedo_type(ind_wat_win,m) = albedo_type 3347 surf_lsm_h%emissivity(ind_wat_win,m) = emissivity 3309 3348 ENDIF 3310 3349 ENDDO … … 3323 3362 surf_lsm_v(l)%lambda_surface_u(m) = 1.0E10_wp 3324 3363 surf_lsm_v(l)%c_surface(m) = 0.0_wp 3325 surf_lsm_v(l)%albedo_type(ind_wat ,m) = albedo_type3326 surf_lsm_v(l)%emissivity(ind_wat ,m) = emissivity3364 surf_lsm_v(l)%albedo_type(ind_wat_win,m) = albedo_type 3365 surf_lsm_v(l)%emissivity(ind_wat_win,m) = emissivity 3327 3366 ENDIF 3328 3367 ENDDO … … 3353 3392 surf_lsm_h%lambda_surface_u(m) = water_pars(ind_w_lambda_u,st) 3354 3393 surf_lsm_h%c_surface(m) = 0.0_wp 3355 surf_lsm_h%albedo_type(ind_wat ,m) = INT( water_pars(ind_w_at,st) )3356 surf_lsm_h%emissivity(ind_wat ,m) = water_pars(ind_w_emis,st)3394 surf_lsm_h%albedo_type(ind_wat_win,m) = INT( water_pars(ind_w_at,st) ) 3395 surf_lsm_h%emissivity(ind_wat_win,m) = water_pars(ind_w_emis,st) 3357 3396 ENDIF 3358 3397 ENDDO … … 3378 3417 water_pars(ind_w_lambda_u,st) 3379 3418 surf_lsm_v(l)%c_surface(m) = 0.0_wp 3380 surf_lsm_v(l)%albedo_type(ind_wat ,m) =&3419 surf_lsm_v(l)%albedo_type(ind_wat_win,m) = & 3381 3420 INT( water_pars(ind_w_at,st) ) 3382 surf_lsm_v(l)%emissivity(ind_wat ,m) =&3421 surf_lsm_v(l)%emissivity(ind_wat_win,m) = & 3383 3422 water_pars(ind_w_emis,st) 3384 3423 ENDIF … … 3434 3473 IF ( water_pars_f%pars_xy(ind_w_at,j,i) /= & 3435 3474 water_pars_f%fill ) & 3436 surf_lsm_h%albedo_type(ind_wat ,m) =&3475 surf_lsm_h%albedo_type(ind_wat_win,m) = & 3437 3476 INT( water_pars_f%pars_xy(ind_w_at,j,i) ) 3438 3477 3439 3478 IF ( water_pars_f%pars_xy(ind_w_emis,j,i) /= & 3440 3479 water_pars_f%fill ) & 3441 surf_lsm_h%emissivity(ind_wat ,m) =&3480 surf_lsm_h%emissivity(ind_wat_win,m) = & 3442 3481 water_pars_f%pars_xy(ind_w_emis,j,i) 3443 3482 ENDIF … … 3494 3533 IF ( water_pars_f%pars_xy(ind_w_at,j,i) /= & 3495 3534 water_pars_f%fill ) & 3496 surf_lsm_v(l)%albedo_type(ind_wat ,m) =&3535 surf_lsm_v(l)%albedo_type(ind_wat_win,m) = & 3497 3536 INT( water_pars_f%pars_xy(ind_w_at,j,i) ) 3498 3537 3499 3538 IF ( water_pars_f%pars_xy(ind_w_emis,j,i) /= & 3500 3539 water_pars_f%fill ) & 3501 surf_lsm_v(l)%emissivity(ind_wat ,m) =&3540 surf_lsm_v(l)%emissivity(ind_wat_win,m) = & 3502 3541 water_pars_f%pars_xy(ind_w_emis,j,i) 3503 3542 ENDIF … … 3576 3615 * 0.25_wp 3577 3616 3578 surf_lsm_h%albedo_type(ind_pav ,m) = albedo_type3579 surf_lsm_h%emissivity(ind_pav ,m) = emissivity3617 surf_lsm_h%albedo_type(ind_pav_green,m) = albedo_type 3618 surf_lsm_h%emissivity(ind_pav_green,m) = emissivity 3580 3619 3581 3620 IF ( pavement_type /= 0 ) THEN … … 3611 3650 * 0.25_wp 3612 3651 3613 surf_lsm_v(l)%albedo_type(ind_pav ,m) = albedo_type3614 surf_lsm_v(l)%emissivity(ind_pav ,m) = emissivity3652 surf_lsm_v(l)%albedo_type(ind_pav_green,m) = albedo_type 3653 surf_lsm_v(l)%emissivity(ind_pav_green,m) = emissivity 3615 3654 3616 3655 IF ( pavement_type /= 0 ) THEN … … 3668 3707 * dz_soil(nzb_soil) & 3669 3708 * 0.25_wp 3670 surf_lsm_h%albedo_type(ind_pav ,m) = INT( pavement_pars(ind_p_at,st) )3671 surf_lsm_h%emissivity(ind_pav ,m) = pavement_pars(ind_p_emis,st)3709 surf_lsm_h%albedo_type(ind_pav_green,m) = INT( pavement_pars(ind_p_at,st) ) 3710 surf_lsm_h%emissivity(ind_pav_green,m) = pavement_pars(ind_p_emis,st) 3672 3711 3673 3712 DO k = nzb_soil, surf_lsm_h%nzt_pavement(m) … … 3718 3757 * dz_soil(nzb_soil) & 3719 3758 * 0.25_wp 3720 surf_lsm_v(l)%albedo_type(ind_pav ,m) =&3759 surf_lsm_v(l)%albedo_type(ind_pav_green,m) = & 3721 3760 INT( pavement_pars(ind_p_at,st) ) 3722 surf_lsm_v(l)%emissivity(ind_pav ,m) =&3761 surf_lsm_v(l)%emissivity(ind_pav_green,m) = & 3723 3762 pavement_pars(ind_p_emis,st) 3724 3763 3725 3764 DO k = nzb_soil, surf_lsm_h%nzt_pavement(m) 3726 surf_lsm_v(l)%lambda_h_def(k,m) = &3765 surf_lsm_v(l)%lambda_h_def(k,m) = & 3727 3766 pavement_subsurface_pars_1(k,pavement_type) 3728 surf_lsm_v(l)%rho_c_total_def(k,m) = &3767 surf_lsm_v(l)%rho_c_total_def(k,m) = & 3729 3768 pavement_subsurface_pars_2(k,pavement_type) 3730 3769 ENDDO … … 3784 3823 IF ( pavement_pars_f%pars_xy(ind_p_at,j,i) /= & 3785 3824 pavement_pars_f%fill ) & 3786 surf_lsm_h%albedo_type(ind_pav ,m) =&3825 surf_lsm_h%albedo_type(ind_pav_green,m) = & 3787 3826 INT( pavement_pars(ind_p_at,st) ) 3788 3827 IF ( pavement_pars_f%pars_xy(ind_p_emis,j,i) /= & 3789 3828 pavement_pars_f%fill ) & 3790 surf_lsm_h%emissivity(ind_pav ,m) =&3829 surf_lsm_h%emissivity(ind_pav_green,m) = & 3791 3830 pavement_pars(ind_p_emis,st) 3792 3831 ENDIF … … 3844 3883 IF ( pavement_pars_f%pars_xy(ind_p_at,j,i) /= & 3845 3884 pavement_pars_f%fill ) & 3846 surf_lsm_v(l)%albedo_type(ind_pav ,m) =&3885 surf_lsm_v(l)%albedo_type(ind_pav_green,m) = & 3847 3886 INT( pavement_pars(ind_p_at,st) ) 3848 3887 3849 3888 IF ( pavement_pars_f%pars_xy(ind_p_emis,j,i) /= & 3850 3889 pavement_pars_f%fill ) & 3851 surf_lsm_v(l)%emissivity(ind_pav ,m) =&3890 surf_lsm_v(l)%emissivity(ind_pav_green,m) = & 3852 3891 pavement_pars(ind_p_emis,st) 3853 3892 ENDIF -
palm/trunk/SOURCE/netcdf_data_input_mod.f90
r2958 r2963 25 25 ! ----------------- 26 26 ! $Id$ 27 ! - Revise checks for static input variables. 28 ! - Introduce index for vegetation/wall, pavement/green-wall and water/window 29 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 30 ! 31 ! 2958 2018-04-11 15:38:13Z suehring 27 32 ! Synchronize longitude and latitude between nested model domains, values are 28 33 ! taken from the root model. … … 126 131 127 132 USE pegrid 133 134 USE surface_mod, & 135 ONLY: ind_pav_green, ind_veg_wall, ind_wat_win 128 136 ! 129 137 !-- Define type for dimensions. … … 2980 2988 !-- More advanced methods, e.g. a nearest neighbor algorithm as used in GIS 2981 2989 !-- systems might be implemented later. 2990 !-- Please note, if no terrain height is provided, it is set to 0. 2982 2991 IF ( ANY( terrain_height_f%var == terrain_height_f%fill ) ) THEN 2983 2992 message_string = 'NetCDF variable orography_2D is not ' // & … … 3012 3021 !-- Check for minimum requirement of surface-classification data in case 3013 3022 !-- static input file is used. 3014 IF ( .NOT. vegetation_type_f%from_file .OR.&3015 .NOT. pavement_type_f%from_file .OR.&3016 .NOT. building_type_f%from_file .OR.&3017 .NOT. water_type_f%from_file .OR.&3018 .NOT. soil_type_f%from_file) THEN3023 IF ( ( .NOT. vegetation_type_f%from_file .OR. & 3024 .NOT. pavement_type_f%from_file .OR. & 3025 .NOT. water_type_f%from_file .OR. & 3026 .NOT. soil_type_f%from_file ) .OR. & 3027 ( urban_surface .AND. .NOT. building_type_f%from_file ) ) THEN 3019 3028 message_string = 'Minimum requirement for surface classification ' //& 3020 3029 'is not fulfilled. At least ' // & 3021 3030 'vegetation_type, pavement_type, ' // & 3022 'building_type, soil_type and water_type are '// & 3023 'required.' 3031 'soil_type and water_type are '// & 3032 'required. If urban-surface model is applied, ' // & 3033 'also building_type ist required' 3024 3034 CALL message( 'netcdf_data_input_mod', 'NDI016', 1, 2, 0, 6, 0 ) 3025 3035 ENDIF … … 3129 3139 building_type_f%var(j,i) == building_type_f%fill .AND. & 3130 3140 water_type_f%var(j,i) == water_type_f%fill ) THEN 3131 message_string = 'At least one of the paramters ' //&3141 WRITE( message_string, * ) 'At least one of the parameters '// & 3132 3142 'vegetation_type, pavement_type, ' // & 3133 3143 'building_type, or water_type must be set '// & 3134 'to a non-missing value '3144 'to a non-missing value. Grid point: ', j, i 3135 3145 CALL message( 'netcdf_data_input_mod', 'NDI025', 2, 2, 0, 6, 0 ) 3136 3146 ENDIF … … 3188 3198 !-- surface vegetation fraction is zero. 3189 3199 IF ( ( vegetation_type_f%var(j,i) /= vegetation_type_f%fill .AND.& 3190 ( surface_fraction_f%frac(0,j,i) == 0.0_wp .OR. & 3191 surface_fraction_f%frac(0,j,i) == surface_fraction_f%fill ) & 3200 ( surface_fraction_f%frac(ind_veg_wall,j,i) == 0.0_wp .OR. & 3201 surface_fraction_f%frac(ind_veg_wall,j,i) == & 3202 surface_fraction_f%fill ) & 3192 3203 ) .OR. & 3193 3204 ( pavement_type_f%var(j,i) /= pavement_type_f%fill .AND. & 3194 ( surface_fraction_f%frac(1,j,i) == 0.0_wp .OR. & 3195 surface_fraction_f%frac(1,j,i) == surface_fraction_f%fill ) & 3205 ( surface_fraction_f%frac(ind_pav_green,j,i) == 0.0_wp .OR. & 3206 surface_fraction_f%frac(ind_pav_green,j,i) == & 3207 surface_fraction_f%fill ) & 3196 3208 ) .OR. & 3197 3209 ( water_type_f%var(j,i) /= water_type_f%fill .AND. & 3198 ( surface_fraction_f%frac(2,j,i) == 0.0_wp .OR. & 3199 surface_fraction_f%frac(2,j,i) == surface_fraction_f%fill ) & 3210 ( surface_fraction_f%frac(ind_wat_win,j,i) == 0.0_wp .OR. & 3211 surface_fraction_f%frac(ind_wat_win,j,i) == & 3212 surface_fraction_f%fill ) & 3200 3213 ) ) THEN 3201 3214 WRITE( message_string, * ) 'Mismatch in setting of ' // & … … 3210 3223 !-- surface vegetation fraction is non-zero. 3211 3224 IF ( ( vegetation_type_f%var(j,i) == vegetation_type_f%fill .AND.& 3212 ( surface_fraction_f%frac(0,j,i) /= 0.0_wp .AND. & 3213 surface_fraction_f%frac(0,j,i) /= surface_fraction_f%fill ) & 3225 ( surface_fraction_f%frac(ind_veg_wall,j,i) /= 0.0_wp .AND. & 3226 surface_fraction_f%frac(ind_veg_wall,j,i) /= & 3227 surface_fraction_f%fill ) & 3214 3228 ) .OR. & 3215 3229 ( pavement_type_f%var(j,i) == pavement_type_f%fill .AND. & 3216 ( surface_fraction_f%frac(1,j,i) /= 0.0_wp .AND. & 3217 surface_fraction_f%frac(1,j,i) /= surface_fraction_f%fill ) & 3230 ( surface_fraction_f%frac(ind_pav_green,j,i) /= 0.0_wp .AND. & 3231 surface_fraction_f%frac(ind_pav_green,j,i) /= & 3232 surface_fraction_f%fill ) & 3218 3233 ) .OR. & 3219 3234 ( water_type_f%var(j,i) == water_type_f%fill .AND. & 3220 ( surface_fraction_f%frac(2,j,i) /= 0.0_wp .AND. & 3221 surface_fraction_f%frac(2,j,i) /= surface_fraction_f%fill ) & 3235 ( surface_fraction_f%frac(ind_wat_win,j,i) /= 0.0_wp .AND. & 3236 surface_fraction_f%frac(ind_wat_win,j,i) /= & 3237 surface_fraction_f%fill ) & 3222 3238 ) ) THEN 3223 3239 WRITE( message_string, * ) 'Mismatch in setting of ' // & -
palm/trunk/SOURCE/radiation_model_mod.f90
r2944 r2963 28 28 ! ----------------- 29 29 ! $Id$ 30 ! - Introduce index for vegetation/wall, pavement/green-wall and water/window 31 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 32 ! - Minor bugfix in initialization of albedo for window surfaces 33 ! 34 ! 2944 2018-04-03 16:20:18Z suehring 30 35 ! Fixed bad commit 31 36 ! … … 361 366 USE surface_mod, & 362 367 ONLY: get_topography_top_index, get_topography_top_index_ji, & 368 ind_pav_green, ind_veg_wall, ind_wat_win, & 363 369 surf_lsm_h, surf_lsm_v, surf_type, surf_usm_h, surf_usm_v 364 370 … … 1524 1530 !-- Only if albedo_type is non-zero 1525 1531 DO m = 1, surf_lsm_h%ns 1526 IF ( surf_lsm_h%albedo_type( 0,m) /= 0 )&1527 surf_lsm_h%albedo( 0,m) =&1528 albedo_pars(2,surf_lsm_h%albedo_type(0,m))1529 IF ( surf_lsm_h%albedo_type( 1,m) /= 0 )&1530 surf_lsm_h%albedo( 1,m) =&1531 albedo_pars(2,surf_lsm_h%albedo_type(1,m))1532 IF ( surf_lsm_h%albedo_type( 2,m) /= 0 )&1533 surf_lsm_h%albedo( 2,m) =&1534 albedo_pars(2,surf_lsm_h%albedo_type(2,m))1532 IF ( surf_lsm_h%albedo_type(ind_veg_wall,m) /= 0 ) & 1533 surf_lsm_h%albedo(ind_veg_wall,m) = & 1534 albedo_pars(2,surf_lsm_h%albedo_type(ind_veg_wall,m)) 1535 IF ( surf_lsm_h%albedo_type(ind_pav_green,m) /= 0 ) & 1536 surf_lsm_h%albedo(ind_pav_green,m) = & 1537 albedo_pars(2,surf_lsm_h%albedo_type(ind_pav_green,m)) 1538 IF ( surf_lsm_h%albedo_type(ind_wat_win,m) /= 0 ) & 1539 surf_lsm_h%albedo(ind_wat_win,m) = & 1540 albedo_pars(2,surf_lsm_h%albedo_type(ind_wat_win,m)) 1535 1541 ENDDO 1536 1542 DO m = 1, surf_usm_h%ns 1537 IF ( surf_usm_h%albedo_type( 0,m) /= 0 )&1538 surf_usm_h%albedo( 0,m) =&1539 albedo_pars(2,surf_usm_h%albedo_type(0,m))1540 IF ( surf_usm_h%albedo_type( 1,m) /= 0 )&1541 surf_usm_h%albedo( 1,m) =&1542 albedo_pars(2,surf_usm_h%albedo_type(1,m))1543 IF ( surf_usm_h%albedo_type( 2,m) /= 0 )&1544 surf_usm_h%albedo( 2,m) =&1545 albedo_pars(2,surf_usm_h%albedo_type(2,m))1543 IF ( surf_usm_h%albedo_type(ind_veg_wall,m) /= 0 ) & 1544 surf_usm_h%albedo(ind_veg_wall,m) = & 1545 albedo_pars(2,surf_usm_h%albedo_type(ind_veg_wall,m)) 1546 IF ( surf_usm_h%albedo_type(ind_pav_green,m) /= 0 ) & 1547 surf_usm_h%albedo(ind_pav_green,m) = & 1548 albedo_pars(2,surf_usm_h%albedo_type(ind_pav_green,m)) 1549 IF ( surf_usm_h%albedo_type(ind_wat_win,m) /= 0 ) & 1550 surf_usm_h%albedo(ind_wat_win,m) = & 1551 albedo_pars(2,surf_usm_h%albedo_type(ind_wat_win,m)) 1546 1552 ENDDO 1547 1553 1548 1554 DO l = 0, 3 1549 1555 DO m = 1, surf_lsm_v(l)%ns 1550 IF ( surf_lsm_v(l)%albedo_type( 0,m) /= 0 )&1551 surf_lsm_v(l)%albedo( 0,m) =&1552 albedo_pars(2,surf_lsm_v(l)%albedo_type(0,m))1553 IF ( surf_lsm_v(l)%albedo_type( 1,m) /= 0 )&1554 surf_lsm_v(l)%albedo( 1,m) =&1555 albedo_pars(2,surf_lsm_v(l)%albedo_type(1,m))1556 IF ( surf_lsm_v(l)%albedo_type( 2,m) /= 0 )&1557 surf_lsm_v(l)%albedo( 2,m) =&1558 albedo_pars(2,surf_lsm_v(l)%albedo_type(2,m))1556 IF ( surf_lsm_v(l)%albedo_type(ind_veg_wall,m) /= 0 ) & 1557 surf_lsm_v(l)%albedo(ind_veg_wall,m) = & 1558 albedo_pars(2,surf_lsm_v(l)%albedo_type(ind_veg_wall,m)) 1559 IF ( surf_lsm_v(l)%albedo_type(ind_pav_green,m) /= 0 ) & 1560 surf_lsm_v(l)%albedo(ind_pav_green,m) = & 1561 albedo_pars(2,surf_lsm_v(l)%albedo_type(ind_pav_green,m)) 1562 IF ( surf_lsm_v(l)%albedo_type(ind_wat_win,m) /= 0 ) & 1563 surf_lsm_v(l)%albedo(ind_wat_win,m) = & 1564 albedo_pars(2,surf_lsm_v(l)%albedo_type(ind_wat_win,m)) 1559 1565 ENDDO 1560 1566 DO m = 1, surf_usm_v(l)%ns 1561 IF ( surf_usm_v(l)%albedo_type( 0,m) /= 0 )&1562 surf_usm_v(l)%albedo( 0,m) =&1563 albedo_pars(2,surf_usm_v(l)%albedo_type(0,m))1564 IF ( surf_usm_v(l)%albedo_type( 1,m) /= 0 )&1565 surf_usm_v(l)%albedo( 1,m) =&1566 albedo_pars(2,surf_usm_v(l)%albedo_type(1,m))1567 IF ( surf_usm_v(l)%albedo_type( 2,m) /= 0 )&1568 surf_usm_v(l)%albedo( 2,m) =&1569 albedo_pars(2,surf_usm_v(l)%albedo_type(2,m))1567 IF ( surf_usm_v(l)%albedo_type(ind_veg_wall,m) /= 0 ) & 1568 surf_usm_v(l)%albedo(ind_veg_wall,m) = & 1569 albedo_pars(2,surf_usm_v(l)%albedo_type(ind_veg_wall,m)) 1570 IF ( surf_usm_v(l)%albedo_type(ind_pav_green,m) /= 0 ) & 1571 surf_usm_v(l)%albedo(ind_pav_green,m) = & 1572 albedo_pars(2,surf_usm_v(l)%albedo_type(ind_pav_green,m)) 1573 IF ( surf_usm_v(l)%albedo_type(ind_wat_win,m) /= 0 ) & 1574 surf_usm_v(l)%albedo(ind_wat_win,m) = & 1575 albedo_pars(2,surf_usm_v(l)%albedo_type(ind_wat_win,m)) 1570 1576 ENDDO 1571 1577 ENDDO … … 1582 1588 j = surf_lsm_h%j(m) 1583 1589 IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill ) THEN 1584 IF ( surf_lsm_h%albedo_type( 0,m) == 0 )&1585 surf_lsm_h%albedo( 0,m) = albedo_pars_f%pars_xy(0,j,i)1586 IF ( surf_lsm_h%albedo_type( 1,m) == 0 )&1587 surf_lsm_h%albedo( 1,m) = albedo_pars_f%pars_xy(0,j,i)1588 IF ( surf_lsm_h%albedo_type( 2,m) == 0 )&1589 surf_lsm_h%albedo( 2,m) = albedo_pars_f%pars_xy(0,j,i)1590 IF ( surf_lsm_h%albedo_type(ind_veg_wall,m) == 0 ) & 1591 surf_lsm_h%albedo(ind_veg_wall,m) = albedo_pars_f%pars_xy(0,j,i) 1592 IF ( surf_lsm_h%albedo_type(ind_pav_green,m) == 0 ) & 1593 surf_lsm_h%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i) 1594 IF ( surf_lsm_h%albedo_type(ind_wat_win,m) == 0 ) & 1595 surf_lsm_h%albedo(ind_wat_win,m) = albedo_pars_f%pars_xy(0,j,i) 1590 1596 ENDIF 1591 1597 ENDDO … … 1594 1600 j = surf_usm_h%j(m) 1595 1601 IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill ) THEN 1596 IF ( surf_usm_h%albedo_type( 0,m) == 0 )&1597 surf_usm_h%albedo( 0,m) = albedo_pars_f%pars_xy(0,j,i)1598 IF ( surf_usm_h%albedo_type( 1,m) == 0 )&1599 surf_usm_h%albedo( 1,m) = albedo_pars_f%pars_xy(0,j,i)1600 IF ( surf_usm_h%albedo_type( 2,m) == 0 )&1601 surf_usm_h%albedo( 2,m) = albedo_pars_f%pars_xy(0,j,i)1602 IF ( surf_usm_h%albedo_type(ind_veg_wall,m) == 0 ) & 1603 surf_usm_h%albedo(ind_veg_wall,m) = albedo_pars_f%pars_xy(0,j,i) 1604 IF ( surf_usm_h%albedo_type(ind_pav_green,m) == 0 ) & 1605 surf_usm_h%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i) 1606 IF ( surf_usm_h%albedo_type(ind_wat_win,m) == 0 ) & 1607 surf_usm_h%albedo(ind_wat_win,m) = albedo_pars_f%pars_xy(0,j,i) 1602 1608 ENDIF 1603 1609 ENDDO … … 1612 1618 j = surf_lsm_v(l)%j(m) + joff 1613 1619 IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill ) THEN 1614 IF ( surf_lsm_v(l)%albedo_type( 0,m) == 0 )&1615 surf_lsm_v(l)%albedo( 1,m) = albedo_pars_f%pars_xy(0,j,i)1616 IF ( surf_lsm_v(l)%albedo_type( 1,m) == 0 )&1617 surf_lsm_v(l)%albedo( 1,m) = albedo_pars_f%pars_xy(0,j,i)1618 IF ( surf_lsm_v(l)%albedo_type( 2,m) == 0 )&1619 surf_lsm_v(l)%albedo( 2,m) = albedo_pars_f%pars_xy(0,j,i)1620 IF ( surf_lsm_v(l)%albedo_type(ind_veg_wall,m) == 0 ) & 1621 surf_lsm_v(l)%albedo(ind_veg_wall,m) = albedo_pars_f%pars_xy(0,j,i) 1622 IF ( surf_lsm_v(l)%albedo_type(ind_pav_green,m) == 0 ) & 1623 surf_lsm_v(l)%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i) 1624 IF ( surf_lsm_v(l)%albedo_type(ind_wat_win,m) == 0 ) & 1625 surf_lsm_v(l)%albedo(ind_wat_win,m) = albedo_pars_f%pars_xy(0,j,i) 1620 1626 ENDIF 1621 1627 ENDDO … … 1627 1633 j = surf_usm_h%j(m) + joff 1628 1634 IF ( albedo_pars_f%pars_xy(0,j,i) /= albedo_pars_f%fill ) THEN 1629 IF ( surf_usm_v(l)%albedo_type( 0,m) == 0 )&1630 surf_usm_v(l)%albedo( 1,m) = albedo_pars_f%pars_xy(0,j,i)1631 IF ( surf_usm_v(l)%albedo_type( 1,m) == 0 )&1632 surf_usm_v(l)%albedo( 1,m) = albedo_pars_f%pars_xy(0,j,i)1633 IF ( surf_usm_v(l)%albedo_type( 2,m) == 0 )&1634 surf_lsm_v(l)%albedo( 2,m) = albedo_pars_f%pars_xy(0,j,i)1635 IF ( surf_usm_v(l)%albedo_type(ind_veg_wall,m) == 0 ) & 1636 surf_usm_v(l)%albedo(ind_veg_wall,m) = albedo_pars_f%pars_xy(0,j,i) 1637 IF ( surf_usm_v(l)%albedo_type(ind_pav_green,m) == 0 ) & 1638 surf_usm_v(l)%albedo(ind_pav_green,m) = albedo_pars_f%pars_xy(0,j,i) 1639 IF ( surf_usm_v(l)%albedo_type(ind_wat_win,m) == 0 ) & 1640 surf_lsm_v(l)%albedo(ind_wat_win,m) = albedo_pars_f%pars_xy(0,j,i) 1635 1641 ENDIF 1636 1642 ENDDO … … 2288 2294 !-- calculated fluxes below are not actually used as they are 2289 2295 !-- overwritten in radiation_interaction. 2290 surf%rad_sw_out(m) = ( surf%frac(0,m) * surf%albedo(0,m) & 2291 + surf%frac(1,m) * surf%albedo(1,m) & 2292 + surf%frac(2,m) * surf%albedo(2,m) ) & 2296 surf%rad_sw_out(m) = ( surf%frac(ind_veg_wall,m) * & 2297 surf%albedo(ind_veg_wall,m) & 2298 + surf%frac(ind_pav_green,m) * & 2299 surf%albedo(ind_pav_green,m) & 2300 + surf%frac(ind_wat_win,m) * & 2301 surf%albedo(ind_wat_win,m) ) & 2293 2302 * surf%rad_sw_in(m) 2294 2303 2295 surf%rad_lw_out(m) = ( surf%frac(0,m) * surf%emissivity(0,m)& 2296 + surf%frac(1,m) * surf%emissivity(1,m)& 2297 + surf%frac(2,m) * surf%emissivity(2,m)& 2304 surf%rad_lw_out(m) = ( surf%frac(ind_veg_wall,m) * & 2305 surf%emissivity(ind_veg_wall,m) & 2306 + surf%frac(ind_pav_green,m) * & 2307 surf%emissivity(ind_pav_green,m) & 2308 + surf%frac(ind_wat_win,m) * & 2309 surf%emissivity(ind_wat_win,m) & 2298 2310 ) & 2299 2311 * sigma_sb & … … 2301 2313 2302 2314 surf%rad_lw_out_change_0(m) = & 2303 ( surf%frac(0,m) * surf%emissivity(0,m) & 2304 + surf%frac(1,m) * surf%emissivity(1,m) & 2305 + surf%frac(2,m) * surf%emissivity(2,m) & 2315 ( surf%frac(ind_veg_wall,m) * & 2316 surf%emissivity(ind_veg_wall,m) & 2317 + surf%frac(ind_pav_green,m) * & 2318 surf%emissivity(ind_pav_green,m) & 2319 + surf%frac(ind_wat_win,m) * & 2320 surf%emissivity(ind_wat_win,m) & 2306 2321 ) * 3.0_wp * sigma_sb & 2307 2322 * ( surf%pt_surface(m) * exn )** 3 … … 2474 2489 ! 2475 2490 !-- Weighted average according to surface fraction. 2476 surf%rad_lw_out(m) = ( surf%frac(0,m) * surf%emissivity(0,m)& 2477 + surf%frac(1,m) * surf%emissivity(1,m)& 2478 + surf%frac(2,m) * surf%emissivity(2,m)& 2491 surf%rad_lw_out(m) = ( surf%frac(ind_veg_wall,m) * & 2492 surf%emissivity(ind_veg_wall,m) & 2493 + surf%frac(ind_pav_green,m) * & 2494 surf%emissivity(ind_pav_green,m) & 2495 + surf%frac(ind_wat_win,m) * & 2496 surf%emissivity(ind_wat_win,m) & 2479 2497 ) & 2480 2498 * sigma_sb & … … 2484 2502 + surf%rad_lw_out(m) ) & 2485 2503 / ( 1.0_wp - & 2486 ( surf%frac(0,m) * surf%albedo(0,m) +& 2487 surf%frac(1,m) * surf%albedo(1,m) +& 2488 surf%frac(1,m) * surf%albedo(1,m) )& 2504 ( surf%frac(ind_veg_wall,m) * & 2505 surf%albedo(ind_veg_wall,m) & 2506 + surf%frac(ind_pav_green,m) * & 2507 surf%albedo(ind_pav_green,m) & 2508 + surf%frac(ind_wat_win,m) * & 2509 surf%albedo(ind_wat_win,m) ) & 2489 2510 ) 2490 2511 2491 surf%rad_sw_out(m) = ( surf%frac(0,m) * surf%albedo(0,m) & 2492 + surf%frac(1,m) * surf%albedo(1,m) & 2493 + surf%frac(2,m) * surf%albedo(2,m) ) & 2512 surf%rad_sw_out(m) = ( surf%frac(ind_veg_wall,m) * & 2513 surf%albedo(ind_veg_wall,m) & 2514 + surf%frac(ind_pav_green,m) * & 2515 surf%albedo(ind_pav_green,m) & 2516 + surf%frac(ind_wat_win,m) * & 2517 surf%albedo(ind_wat_win,m) ) & 2494 2518 * surf%rad_sw_in(m) 2495 2519 … … 3099 3123 !-- surfaces. 3100 3124 DO m = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i) 3101 rrtm_emis = surf_lsm_h%frac(0,m) * surf_lsm_h%emissivity(0,m) +& 3102 surf_lsm_h%frac(1,m) * surf_lsm_h%emissivity(1,m) +& 3103 surf_lsm_h%frac(2,m) * surf_lsm_h%emissivity(2,m) 3104 rrtm_tsfc = pt(surf_lsm_h%k(m)+surf_lsm_h%koff,j,i) * & 3125 rrtm_emis = surf_lsm_h%frac(ind_veg_wall,m) * & 3126 surf_lsm_h%emissivity(ind_veg_wall,m) + & 3127 surf_lsm_h%frac(ind_pav_green,m) * & 3128 surf_lsm_h%emissivity(ind_pav_green,m) + & 3129 surf_lsm_h%frac(ind_wat_win,m) * & 3130 surf_lsm_h%emissivity(ind_wat_win,m) 3131 rrtm_tsfc = pt(surf_lsm_h%k(m)+surf_lsm_h%koff,j,i) * & 3105 3132 (surface_pressure / 1000.0_wp )**0.286_wp 3106 3133 ENDDO 3107 3134 DO m = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i) 3108 rrtm_emis = surf_usm_h%frac(0,m) * surf_usm_h%emissivity(0,m) +& 3109 surf_usm_h%frac(1,m) * surf_usm_h%emissivity(1,m) +& 3110 surf_usm_h%frac(2,m) * surf_usm_h%emissivity(2,m) 3111 rrtm_tsfc = pt(surf_usm_h%k(m)+surf_usm_h%koff,j,i) * & 3135 rrtm_emis = surf_usm_h%frac(ind_veg_wall,m) * & 3136 surf_usm_h%emissivity(ind_veg_wall,m) + & 3137 surf_usm_h%frac(ind_pav_green,m) * & 3138 surf_usm_h%emissivity(ind_pav_green,m) + & 3139 surf_usm_h%frac(ind_wat_win,m) * & 3140 surf_usm_h%emissivity(ind_wat_win,m) 3141 rrtm_tsfc = pt(surf_usm_h%k(m)+surf_usm_h%koff,j,i) * & 3112 3142 (surface_pressure / 1000.0_wp )**0.286_wp 3113 3143 ENDDO -
palm/trunk/SOURCE/sum_up_3d_data.f90
r2894 r2963 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Introduce index for vegetation/wall, pavement/green-wall and water/window 28 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 29 ! 30 ! 2894 2018-03-15 09:17:58Z Giersch 27 31 ! Changed comment 28 32 ! … … 223 227 224 228 USE surface_mod, & 225 ONLY: surf_def_h, surf_lsm_h, surf_usm_h 229 ONLY: ind_pav_green, ind_veg_wall, ind_wat_win, & 230 surf_def_h, surf_lsm_h, surf_usm_h 226 231 227 232 USE turbulence_closure_mod, & … … 577 582 i = surf_usm_h%i(m) 578 583 j = surf_usm_h%j(m) 579 ghf_av(j,i) = ghf_av(j,i) + surf_usm_h%frac( 0,m) *&580 surf_usm_h%wghf_eb(m) + 581 surf_usm_h%frac( 1,m) *&582 surf_usm_h%wghf_eb_green(m) + 583 surf_usm_h%frac( 2,m) *&584 ghf_av(j,i) = ghf_av(j,i) + surf_usm_h%frac(ind_veg_wall,m) * & 585 surf_usm_h%wghf_eb(m) + & 586 surf_usm_h%frac(ind_pav_green,m) * & 587 surf_usm_h%wghf_eb_green(m) + & 588 surf_usm_h%frac(ind_wat_win,m) * & 584 589 surf_usm_h%wghf_eb_window(m) 585 590 ENDDO … … 841 846 j = surf_usm_h%j(m) 842 847 r_a_av(j,i) = r_a_av(j,i) + & 843 ( surf_usm_h%frac(0,m) * surf_usm_h%r_a(m) + & 844 surf_usm_h%frac(1,m) * surf_usm_h%r_a_green(m) + & 845 surf_usm_h%frac(2,m) * surf_usm_h%r_a_window(m) ) 848 ( surf_usm_h%frac(ind_veg_wall,m) * & 849 surf_usm_h%r_a(m) + & 850 surf_usm_h%frac(ind_pav_green,m) * & 851 surf_usm_h%r_a_green(m) + & 852 surf_usm_h%frac(ind_wat_win,m) * & 853 surf_usm_h%r_a_window(m) ) 846 854 ENDDO 847 855 -
palm/trunk/SOURCE/surface_mod.f90
r2942 r2963 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Introduce index for vegetation/wall, pavement/green-wall and water/window 29 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 30 ! 31 ! 2942 2018-04-03 13:51:09Z suehring 28 32 ! Bugfix in assigning surface element data after restart 29 33 ! … … 435 439 TYPE (surf_type), DIMENSION(0:3), TARGET :: surf_usm_v !< vertical urban surfaces (North, South, East, West) 436 440 441 INTEGER(iwp), PARAMETER :: ind_veg_wall = 0 !< index for vegetation / wall-surface fraction, used for access of albedo, emissivity, etc., for each surface type 442 INTEGER(iwp), PARAMETER :: ind_pav_green = 1 !< index for pavement / green-wall surface fraction, used for access of albedo, emissivity, etc., for each surface type 443 INTEGER(iwp), PARAMETER :: ind_wat_win = 2 !< index for water / window-surface fraction, used for access of albedo, emissivity, etc., for each surface type 444 437 445 INTEGER(iwp) :: ns_h_on_file(0:2) !< total number of horizontal surfaces with the same facing, required for writing restart data 438 446 INTEGER(iwp) :: ns_v_on_file(0:3) !< total number of vertical surfaces with the same facing, required for writing restart data … … 474 482 ! 475 483 !-- Public variables 476 PUBLIC bc_h, ns_h_on_file, ns_v_on_file, surf_def_h, surf_def_v, & 477 surf_lsm_h, surf_lsm_v, surf_usm_h, surf_usm_v, surf_type 484 PUBLIC bc_h, ind_pav_green, ind_veg_wall, ind_wat_win, ns_h_on_file, & 485 ns_v_on_file, surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v, & 486 surf_usm_h, surf_usm_v, surf_type 478 487 ! 479 488 !-- Public subroutines and functions -
palm/trunk/SOURCE/urban_surface_mod.f90
r2943 r2963 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Introduce index for vegetation/wall, pavement/green-wall and water/window 31 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . 32 ! 33 ! 2943 2018-04-03 16:17:10Z suehring 30 34 ! Calculate exner function at all height levels and remove some un-used 31 35 ! variables. … … 322 326 ONLY: hom, statistic_regions 323 327 324 USE surface_mod 328 USE surface_mod, & 329 ONLY: get_topography_top_index_ji, get_topography_top_index, & 330 ind_pav_green, ind_veg_wall, ind_wat_win, surf_usm_h, & 331 surf_usm_v, surface_restore_elements 325 332 326 333 … … 2458 2465 j = surf_usm_h%j(m) 2459 2466 k = surf_usm_h%k(m) 2460 temp_pf(k,j,i) = surf_usm_h%frac( 0,m) *&2461 surf_usm_h%albedo( 0,m) +&2462 surf_usm_h%frac( 1,m) *&2463 surf_usm_h%albedo( 1,m) +&2464 surf_usm_h%frac( 2,m) *&2465 surf_usm_h%albedo( 2,m)2467 temp_pf(k,j,i) = surf_usm_h%frac(ind_veg_wall,m) * & 2468 surf_usm_h%albedo(ind_veg_wall,m) + & 2469 surf_usm_h%frac(ind_pav_green,m) * & 2470 surf_usm_h%albedo(ind_pav_green,m) + & 2471 surf_usm_h%frac(ind_wat_win,m) * & 2472 surf_usm_h%albedo(ind_wat_win,m) 2466 2473 ENDDO 2467 2474 ELSE … … 2471 2478 j = surf_usm_v(l)%j(m) 2472 2479 k = surf_usm_v(l)%k(m) 2473 temp_pf(k,j,i) = surf_usm_v(l)%frac( 0,m) *&2474 surf_usm_v(l)%albedo( 0,m) +&2475 surf_usm_v(l)%frac( 1,m) *&2476 surf_usm_v(l)%albedo( 1,m) +&2477 surf_usm_v(l)%frac( 2,m) *&2478 surf_usm_v(l)%albedo( 2,m)2480 temp_pf(k,j,i) = surf_usm_v(l)%frac(ind_veg_wall,m) * & 2481 surf_usm_v(l)%albedo(ind_veg_wall,m) + & 2482 surf_usm_v(l)%frac(ind_pav_green,m) * & 2483 surf_usm_v(l)%albedo(ind_pav_green,m) + & 2484 surf_usm_v(l)%frac(ind_wat_win,m) * & 2485 surf_usm_v(l)%albedo(ind_wat_win,m) 2479 2486 ENDDO 2480 2487 ENDIF … … 2487 2494 j = surf_usm_h%j(m) 2488 2495 k = surf_usm_h%k(m) 2489 temp_pf(k,j,i) = surf_usm_h%frac( 0,m) *&2490 surf_usm_h%emissivity( 0,m) +&2491 surf_usm_h%frac( 1,m) *&2492 surf_usm_h%emissivity( 1,m) +&2493 surf_usm_h%frac( 2,m) *&2494 surf_usm_h%emissivity( 2,m)2496 temp_pf(k,j,i) = surf_usm_h%frac(ind_veg_wall,m) * & 2497 surf_usm_h%emissivity(ind_veg_wall,m) + & 2498 surf_usm_h%frac(ind_pav_green,m) * & 2499 surf_usm_h%emissivity(ind_pav_green,m) + & 2500 surf_usm_h%frac(ind_wat_win,m) * & 2501 surf_usm_h%emissivity(ind_wat_win,m) 2495 2502 ENDDO 2496 2503 ELSE … … 2500 2507 j = surf_usm_v(l)%j(m) 2501 2508 k = surf_usm_v(l)%k(m) 2502 temp_pf(k,j,i) = surf_usm_v(l)%frac( 0,m) *&2503 surf_usm_v(l)%emissivity( 0,m) +&2504 surf_usm_v(l)%frac( 1,m) *&2505 surf_usm_v(l)%emissivity( 1,m) +&2506 surf_usm_v(l)%frac( 2,m) *&2507 surf_usm_v(l)%emissivity( 2,m)2509 temp_pf(k,j,i) = surf_usm_v(l)%frac(ind_veg_wall,m) *& 2510 surf_usm_v(l)%emissivity(ind_veg_wall,m) +& 2511 surf_usm_v(l)%frac(ind_pav_green,m) *& 2512 surf_usm_v(l)%emissivity(ind_pav_green,m)+& 2513 surf_usm_v(l)%frac(ind_wat_win,m) *& 2514 surf_usm_v(l)%emissivity(ind_wat_win,m) 2508 2515 ENDDO 2509 2516 ENDIF … … 3677 3684 ! 3678 3685 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 3679 surf_usm_h%frac( 0,m) = building_pars(ind_wall_frac,building_type)3680 surf_usm_h%frac( 1,m)= building_pars(ind_green_frac_r,building_type)3681 surf_usm_h%frac( 2,m)= building_pars(ind_win_frac,building_type)3682 surf_usm_h%lai(m) = building_pars(ind_green_frac_r,building_type)3686 surf_usm_h%frac(ind_veg_wall,m) = building_pars(ind_wall_frac,building_type) 3687 surf_usm_h%frac(ind_pav_green,m) = building_pars(ind_green_frac_r,building_type) 3688 surf_usm_h%frac(ind_wat_win,m) = building_pars(ind_win_frac,building_type) 3689 surf_usm_h%lai(m) = building_pars(ind_green_frac_r,building_type) 3683 3690 3684 3691 surf_usm_h%rho_c_wall(nzb_wall,m) = building_pars(ind_hc1,building_type) … … 3711 3718 ! 3712 3719 !-- emissivity of wall-, green- and window fraction 3713 surf_usm_h%emissivity( 0,m)= building_pars(ind_emis_wall,building_type)3714 surf_usm_h%emissivity( 1,m)= building_pars(ind_emis_green,building_type)3715 surf_usm_h%emissivity( 2,m)= building_pars(ind_emis_win,building_type)3720 surf_usm_h%emissivity(ind_veg_wall,m) = building_pars(ind_emis_wall,building_type) 3721 surf_usm_h%emissivity(ind_pav_green,m) = building_pars(ind_emis_green,building_type) 3722 surf_usm_h%emissivity(ind_wat_win,m) = building_pars(ind_emis_win,building_type) 3716 3723 3717 3724 surf_usm_h%transmissivity(m) = building_pars(ind_trans,building_type) … … 3722 3729 ! 3723 3730 !-- albedo type for wall fraction, green fraction, window fraction 3724 surf_usm_h%albedo_type( 0,m)= INT( building_pars(ind_alb_wall,building_type) )3725 surf_usm_h%albedo_type( 1,m)= INT( building_pars(ind_alb_green,building_type) )3726 surf_usm_h%albedo_type( 2,m)= INT( building_pars(ind_alb_win,building_type) )3731 surf_usm_h%albedo_type(ind_veg_wall,m) = INT( building_pars(ind_alb_wall,building_type) ) 3732 surf_usm_h%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green,building_type) ) 3733 surf_usm_h%albedo_type(ind_wat_win,m) = INT( building_pars(ind_alb_win,building_type) ) 3727 3734 3728 3735 surf_usm_h%zw(nzb_wall,m) = building_pars(ind_thick_1,building_type) … … 3796 3803 ! 3797 3804 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 3798 surf_usm_v(l)%frac( 0,m)= building_pars(ind_wall_frac,building_type)3799 surf_usm_v(l)%frac( 1,m)= building_pars(ind_green_frac_w,building_type)3800 surf_usm_v(l)%frac( 2,m)= building_pars(ind_win_frac,building_type)3805 surf_usm_v(l)%frac(ind_veg_wall,m) = building_pars(ind_wall_frac,building_type) 3806 surf_usm_v(l)%frac(ind_pav_green,m) = building_pars(ind_green_frac_w,building_type) 3807 surf_usm_v(l)%frac(ind_wat_win,m) = building_pars(ind_win_frac,building_type) 3801 3808 surf_usm_v(l)%lai(m) = building_pars(ind_lai_w,building_type) 3802 3809 … … 3835 3842 ! 3836 3843 !-- emissivity of wall-, green- and window fraction 3837 surf_usm_v(l)%emissivity( 0,m)= building_pars(ind_emis_wall,building_type)3838 surf_usm_v(l)%emissivity( 1,m)= building_pars(ind_emis_green,building_type)3839 surf_usm_v(l)%emissivity( 2,m)= building_pars(ind_emis_win,building_type)3844 surf_usm_v(l)%emissivity(ind_veg_wall,m) = building_pars(ind_emis_wall,building_type) 3845 surf_usm_v(l)%emissivity(ind_pav_green,m) = building_pars(ind_emis_green,building_type) 3846 surf_usm_v(l)%emissivity(ind_wat_win,m) = building_pars(ind_emis_win,building_type) 3840 3847 3841 3848 surf_usm_v(l)%transmissivity(m) = building_pars(ind_trans,building_type) … … 3845 3852 surf_usm_v(l)%z0q(m) = building_pars(ind_z0qh,building_type) 3846 3853 3847 surf_usm_v(l)%albedo_type( 0,m)= INT( building_pars(ind_alb_wall,building_type) )3848 surf_usm_v(l)%albedo_type( 1,m)= INT( building_pars(ind_alb_green,building_type) )3849 surf_usm_v(l)%albedo_type( 2,m)= INT( building_pars(ind_alb_win,building_type) )3854 surf_usm_v(l)%albedo_type(ind_veg_wall,m) = INT( building_pars(ind_alb_wall,building_type) ) 3855 surf_usm_v(l)%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green,building_type) ) 3856 surf_usm_v(l)%albedo_type(ind_wat_win,m) = INT( building_pars(ind_alb_win,building_type) ) 3850 3857 3851 3858 surf_usm_v(l)%zw(nzb_wall,m) = building_pars(ind_thick_1,building_type) … … 3926 3933 ! 3927 3934 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 3928 surf_usm_h%frac( 0,m)= building_pars(ind_wall_frac,st)3929 surf_usm_h%frac( 1,m)= building_pars(ind_green_frac_r,st)3930 surf_usm_h%frac( 2,m) = building_pars(ind_win_frac,st)3931 surf_usm_h%lai(m) = building_pars(ind_green_frac_r,st)3935 surf_usm_h%frac(ind_veg_wall,m) = building_pars(ind_wall_frac,st) 3936 surf_usm_h%frac(ind_pav_green,m) = building_pars(ind_green_frac_r,st) 3937 surf_usm_h%frac(ind_wat_win,m) = building_pars(ind_win_frac,st) 3938 surf_usm_h%lai(m) = building_pars(ind_green_frac_r,st) 3932 3939 3933 3940 surf_usm_h%rho_c_wall(nzb_wall,m) = building_pars(ind_hc1,st) … … 3962 3969 ! 3963 3970 !-- emissivity of wall-, green- and window fraction 3964 surf_usm_h%emissivity( 0,m)= building_pars(ind_emis_wall,st)3965 surf_usm_h%emissivity( 1,m)= building_pars(ind_emis_green,st)3966 surf_usm_h%emissivity( 2,m)= building_pars(ind_emis_win,st)3971 surf_usm_h%emissivity(ind_veg_wall,m) = building_pars(ind_emis_wall,st) 3972 surf_usm_h%emissivity(ind_pav_green,m) = building_pars(ind_emis_green,st) 3973 surf_usm_h%emissivity(ind_wat_win,m) = building_pars(ind_emis_win,st) 3967 3974 3968 3975 surf_usm_h%transmissivity(m) = building_pars(ind_trans,st) … … 3973 3980 ! 3974 3981 !-- albedo type for wall fraction, green fraction, window fraction 3975 surf_usm_h%albedo_type( 0,m)= INT( building_pars(ind_alb_wall,st) )3976 surf_usm_h%albedo_type( 1,m)= INT( building_pars(ind_alb_green,st) )3977 surf_usm_h%albedo_type( 2,m)= INT( building_pars(ind_alb_win,st) )3982 surf_usm_h%albedo_type(ind_veg_wall,m) = INT( building_pars(ind_alb_wall,st) ) 3983 surf_usm_h%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green,st) ) 3984 surf_usm_h%albedo_type(ind_wat_win,m) = INT( building_pars(ind_alb_win,st) ) 3978 3985 3979 3986 surf_usm_h%zw(nzb_wall,m) = building_pars(ind_thick_1,st) … … 4054 4061 ! 4055 4062 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 4056 surf_usm_v(l)%frac( 0,m)= building_pars(ind_wall_frac,st)4057 surf_usm_v(l)%frac( 1,m) = building_pars(ind_green_frac_w,st)4058 surf_usm_v(l)%frac( 2,m)= building_pars(ind_win_frac,st)4059 surf_usm_v(l)%lai(m) = building_pars(ind_lai_w,st)4063 surf_usm_v(l)%frac(ind_veg_wall,m) = building_pars(ind_wall_frac,st) 4064 surf_usm_v(l)%frac(ind_pav_green,m) = building_pars(ind_green_frac_w,st) 4065 surf_usm_v(l)%frac(ind_wat_win,m) = building_pars(ind_win_frac,st) 4066 surf_usm_v(l)%lai(m) = building_pars(ind_lai_w,st) 4060 4067 4061 4068 surf_usm_v(l)%rho_c_wall(nzb_wall,m) = building_pars(ind_hc1,st) … … 4093 4100 ! 4094 4101 !-- emissivity of wall-, green- and window fraction 4095 surf_usm_v(l)%emissivity( 0,m)= building_pars(ind_emis_wall,st)4096 surf_usm_v(l)%emissivity( 1,m)= building_pars(ind_emis_green,st)4097 surf_usm_v(l)%emissivity( 2,m)= building_pars(ind_emis_win,st)4102 surf_usm_v(l)%emissivity(ind_veg_wall,m) = building_pars(ind_emis_wall,st) 4103 surf_usm_v(l)%emissivity(ind_pav_green,m) = building_pars(ind_emis_green,st) 4104 surf_usm_v(l)%emissivity(ind_wat_win,m) = building_pars(ind_emis_win,st) 4098 4105 4099 4106 surf_usm_v(l)%transmissivity(m) = building_pars(ind_trans,st) … … 4103 4110 surf_usm_v(l)%z0q(m) = building_pars(ind_z0qh,st) 4104 4111 4105 surf_usm_v(l)%albedo_type( 0,m)= INT( building_pars(ind_alb_wall,st) )4106 surf_usm_v(l)%albedo_type( 1,m)= INT( building_pars(ind_alb_green,st) )4107 surf_usm_v(l)%albedo_type( 2,m)= INT( building_pars(ind_alb_win,st) )4112 surf_usm_v(l)%albedo_type(ind_veg_wall,m) = INT( building_pars(ind_alb_wall,st) ) 4113 surf_usm_v(l)%albedo_type(ind_pav_green,m) = INT( building_pars(ind_alb_green,st) ) 4114 surf_usm_v(l)%albedo_type(ind_wat_win,m) = INT( building_pars(ind_alb_win,st) ) 4108 4115 4109 4116 surf_usm_v(l)%zw(nzb_wall,m) = building_pars(ind_thick_1,st) … … 4185 4192 !-- Initialize relatvie wall- (0), green- (1) and window (2) fractions 4186 4193 IF ( building_pars_f%pars_xy(ind_wall_frac,j,i) /= building_pars_f%fill ) & 4187 surf_usm_h%frac( 0,m) = building_pars_f%pars_xy(ind_wall_frac,j,i)4194 surf_usm_h%frac(ind_veg_wall,m) = building_pars_f%pars_xy(ind_wall_frac,j,i) 4188 4195 IF ( building_pars_f%pars_xy(ind_green_frac_r,j,i) /= building_pars_f%fill ) & 4189 surf_usm_h%frac( 1,m)= building_pars_f%pars_xy(ind_green_frac_r,j,i)4196 surf_usm_h%frac(ind_pav_green,m) = building_pars_f%pars_xy(ind_green_frac_r,j,i) 4190 4197 IF ( building_pars_f%pars_xy(ind_win_frac,j,i) /= building_pars_f%fill ) & 4191 surf_usm_h%frac( 2,m)= building_pars_f%pars_xy(ind_win_frac,j,i)4198 surf_usm_h%frac(ind_wat_win,m) = building_pars_f%pars_xy(ind_win_frac,j,i) 4192 4199 4193 4200 … … 4251 4258 4252 4259 IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill ) & 4253 surf_usm_h%emissivity( 0,m)= building_pars_f%pars_xy(ind_emis_wall,j,i)4260 surf_usm_h%emissivity(ind_veg_wall,m) = building_pars_f%pars_xy(ind_emis_wall,j,i) 4254 4261 IF ( building_pars_f%pars_xy(ind_emis_green,j,i) /= building_pars_f%fill )& 4255 surf_usm_h%emissivity( 1,m)= building_pars_f%pars_xy(ind_emis_green,j,i)4262 surf_usm_h%emissivity(ind_pav_green,m) = building_pars_f%pars_xy(ind_emis_green,j,i) 4256 4263 IF ( building_pars_f%pars_xy(ind_emis_win,j,i) /= building_pars_f%fill ) & 4257 surf_usm_h%emissivity( 2,m)= building_pars_f%pars_xy(ind_emis_win,j,i)4264 surf_usm_h%emissivity(ind_wat_win,m) = building_pars_f%pars_xy(ind_emis_win,j,i) 4258 4265 4259 4266 IF ( building_pars_f%pars_xy(ind_trans,j,i) /= building_pars_f%fill ) & … … 4268 4275 4269 4276 IF ( building_pars_f%pars_xy(ind_alb_wall,j,i) /= building_pars_f%fill ) & 4270 surf_usm_h%albedo_type( 0,m)= building_pars_f%pars_xy(ind_alb_wall,j,i)4277 surf_usm_h%albedo_type(ind_veg_wall,m) = building_pars_f%pars_xy(ind_alb_wall,j,i) 4271 4278 IF ( building_pars_f%pars_xy(ind_alb_green,j,i) /= building_pars_f%fill ) & 4272 surf_usm_h%albedo_type( 1,m)= building_pars_f%pars_xy(ind_alb_green,j,i)4279 surf_usm_h%albedo_type(ind_pav_green,m) = building_pars_f%pars_xy(ind_alb_green,j,i) 4273 4280 IF ( building_pars_f%pars_xy(ind_alb_win,j,i) /= building_pars_f%fill ) & 4274 surf_usm_h%albedo_type( 2,m)= building_pars_f%pars_xy(ind_alb_win,j,i)4281 surf_usm_h%albedo_type(ind_wat_win,m) = building_pars_f%pars_xy(ind_alb_win,j,i) 4275 4282 4276 4283 IF ( building_pars_f%pars_xy(ind_thick_1,j,i) /= building_pars_f%fill ) & … … 4364 4371 IF ( building_pars_f%pars_xy(ind_wall_frac,j,i) /= & 4365 4372 building_pars_f%fill ) & 4366 surf_usm_v(l)%frac(0,m) = building_pars_f%pars_xy(ind_wall_frac,j,i) 4373 surf_usm_v(l)%frac(ind_veg_wall,m) = & 4374 building_pars_f%pars_xy(ind_wall_frac,j,i) 4367 4375 IF ( building_pars_f%pars_xy(ind_green_frac_w,j,i) /= & 4368 4376 building_pars_f%fill ) & 4369 surf_usm_v(l)%frac(1,m) = building_pars_f%pars_xy(ind_green_frac_w,j,i) 4377 surf_usm_v(l)%frac(ind_pav_green,m) = & 4378 building_pars_f%pars_xy(ind_green_frac_w,j,i) 4370 4379 IF ( building_pars_f%pars_xy(ind_win_frac,j,i) /= & 4371 4380 building_pars_f%fill ) & 4372 surf_usm_v(l)%frac(2,m) = building_pars_f%pars_xy(ind_win_frac,j,i) 4381 surf_usm_v(l)%frac(ind_wat_win,m) = & 4382 building_pars_f%pars_xy(ind_win_frac,j,i) 4373 4383 4374 4384 IF ( building_pars_f%pars_xy(ind_lai_w,j,i) /= building_pars_f%fill ) & … … 4438 4448 4439 4449 IF ( building_pars_f%pars_xy(ind_emis_wall,j,i) /= building_pars_f%fill ) & 4440 surf_usm_v(l)%emissivity( 0,m)= building_pars_f%pars_xy(ind_emis_wall,j,i)4450 surf_usm_v(l)%emissivity(ind_veg_wall,m) = building_pars_f%pars_xy(ind_emis_wall,j,i) 4441 4451 IF ( building_pars_f%pars_xy(ind_emis_green,j,i) /= building_pars_f%fill )& 4442 surf_usm_v(l)%emissivity( 1,m)= building_pars_f%pars_xy(ind_emis_green,j,i)4452 surf_usm_v(l)%emissivity(ind_pav_green,m) = building_pars_f%pars_xy(ind_emis_green,j,i) 4443 4453 IF ( building_pars_f%pars_xy(ind_emis_win,j,i) /= building_pars_f%fill ) & 4444 surf_usm_v(l)%emissivity( 2,m)= building_pars_f%pars_xy(ind_emis_win,j,i)4454 surf_usm_v(l)%emissivity(ind_wat_win,m) = building_pars_f%pars_xy(ind_emis_win,j,i) 4445 4455 4446 4456 IF ( building_pars_f%pars_xy(ind_trans,j,i) /= building_pars_f%fill ) & … … 4455 4465 4456 4466 IF ( building_pars_f%pars_xy(ind_alb_wall,j,i) /= building_pars_f%fill ) & 4457 surf_usm_v(l)%albedo_type( 0,m)= building_pars_f%pars_xy(ind_alb_wall,j,i)4467 surf_usm_v(l)%albedo_type(ind_veg_wall,m) = building_pars_f%pars_xy(ind_alb_wall,j,i) 4458 4468 IF ( building_pars_f%pars_xy(ind_alb_green,j,i) /= building_pars_f%fill ) & 4459 surf_usm_v(l)%albedo_type( 1,m)= building_pars_f%pars_xy(ind_alb_green,j,i)4469 surf_usm_v(l)%albedo_type(ind_pav_green,m) = building_pars_f%pars_xy(ind_alb_green,j,i) 4460 4470 IF ( building_pars_f%pars_xy(ind_alb_win,j,i) /= building_pars_f%fill ) & 4461 surf_usm_v(l)%albedo_type( 2,m)= building_pars_f%pars_xy(ind_alb_win,j,i)4471 surf_usm_v(l)%albedo_type(ind_wat_win,m) = building_pars_f%pars_xy(ind_alb_win,j,i) 4462 4472 4463 4473 IF ( building_pars_f%pars_xy(ind_thick_1,j,i) /= building_pars_f%fill ) & … … 4683 4693 - t_wall_h(nzb_wall,m) ) * & 4684 4694 surf_usm_h%ddz_wall(nzb_wall+1,m) & 4685 + surf_usm_h%frac( 0,m)&4686 / (surf_usm_h%frac( 0,m)&4687 + surf_usm_h%frac( 1,m) )&4695 + surf_usm_h%frac(ind_veg_wall,m) & 4696 / (surf_usm_h%frac(ind_veg_wall,m) & 4697 + surf_usm_h%frac(ind_pav_green,m) ) & 4688 4698 * surf_usm_h%wghf_eb(m) & 4689 - surf_usm_h%frac( 1,m)&4690 / (surf_usm_h%frac( 0,m)&4691 + surf_usm_h%frac( 1,m) )&4699 - surf_usm_h%frac(ind_pav_green,m) & 4700 / (surf_usm_h%frac(ind_veg_wall,m) & 4701 + surf_usm_h%frac(ind_pav_green,m) ) & 4692 4702 * ( surf_usm_h%lambda_h_green(nzt_wall,m) & 4693 4703 * surf_usm_h%ddz_green(nzt_wall,m) & … … 4853 4863 - t_wall_v(l)%t(nzb_wall,m) ) * & 4854 4864 surf_usm_v(l)%ddz_wall(nzb_wall+1,m) & 4855 + surf_usm_v(l)%frac( 0,m)&4856 / (surf_usm_v(l)%frac( 0,m)&4857 + surf_usm_v(l)%frac( 1,m) )&4865 + surf_usm_v(l)%frac(ind_veg_wall,m) & 4866 / (surf_usm_v(l)%frac(ind_veg_wall,m) & 4867 + surf_usm_v(l)%frac(ind_pav_green,m) ) & 4858 4868 * surf_usm_v(l)%wghf_eb(m) & 4859 - surf_usm_v(l)%frac( 1,m)&4860 / (surf_usm_v(l)%frac( 0,m)&4861 + surf_usm_v(l)%frac( 1,m) )&4869 - surf_usm_v(l)%frac(ind_pav_green,m) & 4870 / (surf_usm_v(l)%frac(ind_veg_wall,m) & 4871 + surf_usm_v(l)%frac(ind_pav_green,m) ) & 4862 4872 * ( surf_usm_v(l)%lambda_h_green(nzt_wall,m) & 4863 4873 * surf_usm_v(l)%ddz_green(nzt_wall,m) & … … 6772 6782 ! 6773 6783 !-- Albedo 6774 IF ( surf_usm_h%albedo( 0,m) < 0.0_wp ) THEN6784 IF ( surf_usm_h%albedo(ind_veg_wall,m) < 0.0_wp ) THEN 6775 6785 surf_usm_h%albedo(:,m) = surface_params(ialbedo,ip) 6776 6786 ENDIF … … 6944 6954 ! 6945 6955 !-- Albedo 6946 IF ( surf_usm_v(l)%albedo( 0,m) < 0.0_wp ) THEN6956 IF ( surf_usm_v(l)%albedo(ind_veg_wall,m) < 0.0_wp ) THEN 6947 6957 surf_usm_v(l)%albedo(:,m) = surface_params(ialbedo,ip) 6948 6958 ENDIF … … 7240 7250 !-- is used 7241 7251 coef_1 = surf_usm_h%rad_net_l(m) + & 7242 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity( 0,m) * sigma_sb* &7243 t_surf_h(m) ** 4 +&7244 f_shf * surf_usm_h%pt1(m) + 7252 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_veg_wall,m) * & 7253 sigma_sb * t_surf_h(m) ** 4 + & 7254 f_shf * surf_usm_h%pt1(m) + & 7245 7255 lambda_surface * t_wall_h(nzb_wall,m) 7246 coef_window_1 = surf_usm_h%rad_net_l(m) + 7247 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity( 2,m) * sigma_sb *&7248 t_surf_window_h(m) ** 4 +&7249 f_shf_window * surf_usm_h%pt1(m) + 7256 coef_window_1 = surf_usm_h%rad_net_l(m) + & 7257 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_wat_win,m) & 7258 * sigma_sb * t_surf_window_h(m) ** 4 + & 7259 f_shf_window * surf_usm_h%pt1(m) + & 7250 7260 lambda_surface_window * t_window_h(nzb_wall,m) 7251 coef_green_1 = surf_usm_h%rad_net_l(m) + 7252 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(1,m) * sigma_sb *&7253 t_surf_green_h(m) ** 4 +&7254 f_shf_green * surf_usm_h%pt1(m) + 7261 coef_green_1 = surf_usm_h%rad_net_l(m) + & 7262 ( 3.0_wp + 1.0_wp ) * surf_usm_h%emissivity(ind_pav_green,m) *& 7263 sigma_sb * t_surf_green_h(m) ** 4 + & 7264 f_shf_green * surf_usm_h%pt1(m) + & 7255 7265 lambda_surface_green * t_wall_h(nzb_wall,m) 7256 7266 7257 7267 !-- denominator of the prognostic equation 7258 coef_2 = 4.0_wp * surf_usm_h%emissivity( 0,m) * sigma_sb *&7259 t_surf_h(m) ** 3&7268 coef_2 = 4.0_wp * surf_usm_h%emissivity(ind_veg_wall,m) * & 7269 sigma_sb * t_surf_h(m) ** 3 & 7260 7270 + lambda_surface + f_shf / exn(k) 7261 coef_window_2 = 4.0_wp * surf_usm_h%emissivity( 2,m) * sigma_sb *&7262 t_surf_window_h(m) ** 3&7271 coef_window_2 = 4.0_wp * surf_usm_h%emissivity(ind_wat_win,m) * & 7272 sigma_sb * t_surf_window_h(m) ** 3 & 7263 7273 + lambda_surface_window + f_shf_window / exn(k) 7264 coef_green_2 = 4.0_wp * surf_usm_h%emissivity( 1,m) * sigma_sb* &7265 t_surf_green_h(m) ** 3&7274 coef_green_2 = 4.0_wp * surf_usm_h%emissivity(ind_pav_green,m) * & 7275 sigma_sb * t_surf_green_h(m) ** 3 & 7266 7276 + lambda_surface_green + f_shf_green / exn(k) 7267 7277 … … 7287 7297 ! 7288 7298 !-- Store surface temperature 7289 surf_usm_h%pt_surface(m) = ( surf_usm_h%frac( 0,m) * t_surf_h_p(m) &7290 + surf_usm_h%frac( 2,m) * t_surf_window_h_p(m) &7291 + surf_usm_h%frac( 1,m) * t_surf_green_h_p(m) ) &7299 surf_usm_h%pt_surface(m) = ( surf_usm_h%frac(ind_veg_wall,m) * t_surf_h_p(m) & 7300 + surf_usm_h%frac(ind_wat_win,m) * t_surf_window_h_p(m) & 7301 + surf_usm_h%frac(ind_pav_green,m) * t_surf_green_h_p(m) ) & 7292 7302 / exn(k) 7293 7303 … … 7328 7338 !-- rad_net_l is never used! 7329 7339 surf_usm_h%rad_net_l(m) = surf_usm_h%rad_net_l(m) + & 7330 surf_usm_h%frac( 0,m) *&7331 sigma_sb * surf_usm_h%emissivity( 0,m) *&7340 surf_usm_h%frac(ind_veg_wall,m) * & 7341 sigma_sb * surf_usm_h%emissivity(ind_veg_wall,m) * & 7332 7342 ( t_surf_h_p(m)**4 - t_surf_h(m)**4 ) & 7333 + surf_usm_h%frac( 2,m) *&7334 sigma_sb * surf_usm_h%emissivity( 2,m) *&7343 + surf_usm_h%frac(ind_wat_win,m) * & 7344 sigma_sb * surf_usm_h%emissivity(ind_wat_win,m) * & 7335 7345 ( t_surf_window_h_p(m)**4 - t_surf_window_h(m)**4 ) & 7336 + surf_usm_h%frac( 1,m) *&7337 sigma_sb * surf_usm_h%emissivity( 1,m) *&7346 + surf_usm_h%frac(ind_pav_green,m) * & 7347 sigma_sb * surf_usm_h%emissivity(ind_pav_green,m) * & 7338 7348 ( t_surf_green_h_p(m)**4 - t_surf_green_h(m)**4 ) 7339 7349 … … 7348 7358 !-- ground/wall/roof surface heat flux 7349 7359 surf_usm_h%wshf_eb(m) = - f_shf * ( surf_usm_h%pt1(m) - t_surf_h_p(m) / exn(k) ) * & 7350 surf_usm_h%frac( 0,m)&7360 surf_usm_h%frac(ind_veg_wall,m) & 7351 7361 - f_shf_window * ( surf_usm_h%pt1(m) - t_surf_window_h_p(m) / exn(k) ) * & 7352 surf_usm_h%frac( 2,m)&7362 surf_usm_h%frac(ind_wat_win,m) & 7353 7363 - f_shf_green * ( surf_usm_h%pt1(m) - t_surf_green_h_p(m) / exn(k) ) * & 7354 surf_usm_h%frac( 1,m)7364 surf_usm_h%frac(ind_pav_green,m) 7355 7365 ! 7356 7366 !-- store kinematic surface heat fluxes for utilization in other processes … … 7431 7441 !-- numerator of the prognostic equation 7432 7442 coef_1 = surf_usm_v(l)%rad_net_l(m) + & ! coef +1 corresponds to -lwout included in calculation of radnet_l 7433 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity( 0,m) * sigma_sb* &7434 t_surf_v(l)%t(m) ** 4 +&7435 f_shf * surf_usm_v(l)%pt1(m) + 7443 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_veg_wall,m) * & 7444 sigma_sb * t_surf_v(l)%t(m) ** 4 + & 7445 f_shf * surf_usm_v(l)%pt1(m) + & 7436 7446 lambda_surface * t_wall_v(l)%t(nzb_wall,m) 7437 coef_window_1 = surf_usm_v(l)%rad_net_l(m) + 7438 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity( 2,m) * sigma_sb *&7439 t_surf_window_v(l)%t(m) ** 4 +&7440 f_shf * surf_usm_v(l)%pt1(m) + 7447 coef_window_1 = surf_usm_v(l)%rad_net_l(m) + & ! coef +1 corresponds to -lwout included in calculation of radnet_l 7448 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_wat_win,m) * & 7449 sigma_sb * t_surf_window_v(l)%t(m) ** 4 + & 7450 f_shf * surf_usm_v(l)%pt1(m) + & 7441 7451 lambda_surface_window * t_window_v(l)%t(nzb_wall,m) 7442 7452 7443 7453 coef_green_1 = surf_usm_v(l)%rad_net_l(m) + & ! coef +1 corresponds to -lwout included in calculation of radnet_l 7444 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(1,m) * sigma_sb *&7445 t_surf_green_v(l)%t(m) ** 4 +&7446 f_shf * surf_usm_v(l)%pt1(m) + 7454 ( 3.0_wp + 1.0_wp ) * surf_usm_v(l)%emissivity(ind_pav_green,m) *& 7455 sigma_sb * t_surf_green_v(l)%t(m) ** 4 + & 7456 f_shf * surf_usm_v(l)%pt1(m) + & 7447 7457 lambda_surface_green * t_wall_v(l)%t(nzb_wall,m) 7448 7458 7449 7459 !-- denominator of the prognostic equation 7450 coef_2 = 4.0_wp * surf_usm_v(l)%emissivity( 0,m) * sigma_sb* &7451 t_surf_v(l)%t(m) ** 3&7460 coef_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_veg_wall,m) * & 7461 sigma_sb * t_surf_v(l)%t(m) ** 3 & 7452 7462 + lambda_surface + f_shf / exn(k) 7453 coef_window_2 = 4.0_wp * surf_usm_v(l)%emissivity( 2,m) * sigma_sb *&7454 t_surf_window_v(l)%t(m) ** 3&7463 coef_window_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_wat_win,m) *& 7464 sigma_sb * t_surf_window_v(l)%t(m) ** 3 & 7455 7465 + lambda_surface_window + f_shf / exn(k) 7456 coef_green_2 = 4.0_wp * surf_usm_v(l)%emissivity( 1,m) * sigma_sb *&7457 t_surf_green_v(l)%t(m) ** 3&7466 coef_green_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_pav_green,m) *& 7467 sigma_sb * t_surf_green_v(l)%t(m) ** 3 & 7458 7468 + lambda_surface_green + f_shf / exn(k) 7459 7469 … … 7482 7492 ! 7483 7493 !-- Store surface temperature 7484 surf_usm_v(l)%pt_surface(m) = ( surf_usm_v(l)%frac( 0,m) * t_surf_v_p(l)%t(m) &7485 + surf_usm_v(l)%frac( 2,m) * t_surf_window_v_p(l)%t(m) &7486 + surf_usm_v(l)%frac( 1,m) * t_surf_green_v_p(l)%t(m) ) &7494 surf_usm_v(l)%pt_surface(m) = ( surf_usm_v(l)%frac(ind_veg_wall,m) * t_surf_v_p(l)%t(m) & 7495 + surf_usm_v(l)%frac(ind_wat_win,m) * t_surf_window_v_p(l)%t(m) & 7496 + surf_usm_v(l)%frac(ind_pav_green,m) * t_surf_green_v_p(l)%t(m) ) & 7487 7497 / exn(k) 7488 7498 … … 7523 7533 !-- calculate fluxes 7524 7534 !-- prognostic rad_net_l is used just for output! 7525 surf_usm_v(l)%rad_net_l(m) = surf_usm_v(l)%frac( 0,m) *&7535 surf_usm_v(l)%rad_net_l(m) = surf_usm_v(l)%frac(ind_veg_wall,m) * & 7526 7536 ( surf_usm_v(l)%rad_net_l(m) + & 7527 7537 3.0_wp * sigma_sb * & 7528 7538 t_surf_v(l)%t(m)**4 - 4.0_wp * sigma_sb * & 7529 7539 t_surf_v(l)%t(m)**3 * t_surf_v_p(l)%t(m) ) & 7530 + surf_usm_v(l)%frac( 2,m) *&7540 + surf_usm_v(l)%frac(ind_wat_win,m) * & 7531 7541 ( surf_usm_v(l)%rad_net_l(m) + & 7532 7542 3.0_wp * sigma_sb * & 7533 7543 t_surf_window_v(l)%t(m)**4 - 4.0_wp * sigma_sb * & 7534 7544 t_surf_window_v(l)%t(m)**3 * t_surf_window_v_p(l)%t(m) ) & 7535 + surf_usm_v(l)%frac( 1,m) *&7545 + surf_usm_v(l)%frac(ind_pav_green,m) * & 7536 7546 ( surf_usm_v(l)%rad_net_l(m) + & 7537 7547 3.0_wp * sigma_sb * & … … 7549 7559 surf_usm_v(l)%wshf_eb(m) = & 7550 7560 - f_shf * ( surf_usm_v(l)%pt1(m) - & 7551 t_surf_v_p(l)%t(m) / exn(k) ) * surf_usm_v(l)%frac( 0,m) &7561 t_surf_v_p(l)%t(m) / exn(k) ) * surf_usm_v(l)%frac(ind_veg_wall,m) & 7552 7562 - f_shf_window * ( surf_usm_v(l)%pt1(m) - & 7553 t_surf_window_v_p(l)%t(m) / exn(k) ) * surf_usm_v(l)%frac( 2,m)&7563 t_surf_window_v_p(l)%t(m) / exn(k) ) * surf_usm_v(l)%frac(ind_wat_win,m)& 7554 7564 - f_shf_green * ( surf_usm_v(l)%pt1(m) - & 7555 t_surf_green_v_p(l)%t(m) / exn(k) ) * surf_usm_v(l)%frac( 1,m)7565 t_surf_green_v_p(l)%t(m) / exn(k) ) * surf_usm_v(l)%frac(ind_pav_green,m) 7556 7566 7557 7567 !
Note: See TracChangeset
for help on using the changeset viewer.