Changeset 2737
- Timestamp:
- Jan 11, 2018 2:58:11 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/urban_surface_mod.f90
r2735 r2737 17 17 ! Copyright 2015-2018 Czech Technical University in Prague 18 18 ! Copyright 1997-2018 Leibniz Universitaet Hannover 19 !------------------------------------------------------------------------------ --!19 !------------------------------------------------------------------------------! 20 20 ! 21 21 ! Current revisions: … … 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Removed unused variables t_surf_whole... 29 ! 30 ! 2735 2018-01-11 12:01:27Z suehring 28 31 ! resistances are saved in surface attributes 29 32 ! … … 529 532 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_h !< green surface temperature (K) at horizontal walls 530 533 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_h_p !< progn. green surface temperature (K) at horizontal walls 531 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_whole_h !< whole surface temperature (K) at horizontal walls532 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_whole_h_p !< progn. whole surface temperature (K) at horizontal walls533 534 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_h !< near surface temperature (10cm) (K) at horizontal walls 534 535 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_h_p !< progn. near surface temperature (10cm) (K) at horizontal walls … … 539 540 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v 540 541 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v_p 541 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_whole_v542 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_whole_v_p543 542 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_10cm_v 544 543 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_10cm_v_p … … 550 549 REAL(wp), DIMENSION(:), POINTER :: t_surf_green_h 551 550 REAL(wp), DIMENSION(:), POINTER :: t_surf_green_h_p 552 REAL(wp), DIMENSION(:), POINTER :: t_surf_whole_h553 REAL(wp), DIMENSION(:), POINTER :: t_surf_whole_h_p554 551 REAL(wp), DIMENSION(:), POINTER :: t_surf_10cm_h 555 552 REAL(wp), DIMENSION(:), POINTER :: t_surf_10cm_h_p … … 561 558 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_h_1 562 559 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_h_2 563 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_whole_h_1564 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_whole_h_2565 560 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_h_1 566 561 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_h_2 … … 572 567 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_green_v 573 568 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_green_v_p 574 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_whole_v575 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_whole_v_p576 569 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_10cm_v 577 570 TYPE(t_surf_vertical), DIMENSION(:), POINTER :: t_surf_10cm_v_p … … 583 576 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v_1 584 577 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v_2 585 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_whole_v_1586 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_whole_v_2587 578 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_10cm_v_1 588 579 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_10cm_v_2 … … 592 583 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_av !< average of window surface temperature (K) 593 584 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_av !< average of green wall surface temperature (K) 594 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_whole_av !< average of whole wall surface temperature (K)595 585 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_10cm_av !< average of whole wall surface temperature (K) 596 586 … … 941 931 IF ( .NOT. ALLOCATED( t_green_h_p ) ) & 942 932 ALLOCATE ( t_green_h_p(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) ) 943 IF ( .NOT. ALLOCATED( t_surf_whole_h ) ) &944 ALLOCATE ( t_surf_whole_h(1:surf_usm_h%ns) )945 IF ( .NOT. ALLOCATED( t_surf_whole_h_p ) ) &946 ALLOCATE ( t_surf_whole_h_p(1:surf_usm_h%ns) )947 933 IF ( .NOT. ALLOCATED( t_surf_10cm_h ) ) & 948 934 ALLOCATE ( t_surf_10cm_h(1:surf_usm_h%ns) ) … … 977 963 IF ( .NOT. ALLOCATED( t_green_h_2 ) ) & 978 964 ALLOCATE ( t_green_h_2(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) ) 979 IF ( .NOT. ALLOCATED( t_surf_whole_h_1 ) ) &980 ALLOCATE ( t_surf_whole_h_1(1:surf_usm_h%ns) )981 IF ( .NOT. ALLOCATED( t_surf_whole_h_2 ) ) &982 ALLOCATE ( t_surf_whole_h_2(1:surf_usm_h%ns) )983 965 IF ( .NOT. ALLOCATED( t_surf_10cm_h_1 ) ) & 984 966 ALLOCATE ( t_surf_10cm_h_1(1:surf_usm_h%ns) ) … … 993 975 t_surf_window_h => t_surf_window_h_1; t_surf_window_h_p => t_surf_window_h_2 994 976 t_surf_green_h => t_surf_green_h_1; t_surf_green_h_p => t_surf_green_h_2 995 t_surf_whole_h => t_surf_whole_h_1; t_surf_whole_h_p => t_surf_whole_h_2996 977 t_surf_10cm_h => t_surf_10cm_h_1; t_surf_10cm_h_p => t_surf_10cm_h_2 997 978 … … 1025 1006 IF ( .NOT. ALLOCATED( t_surf_green_v_p(l)%t ) ) & 1026 1007 ALLOCATE ( t_surf_green_v_p(l)%t(1:surf_usm_v(l)%ns) ) 1027 IF ( .NOT. ALLOCATED( t_surf_whole_v(l)%t ) ) &1028 ALLOCATE ( t_surf_whole_v(l)%t(1:surf_usm_v(l)%ns) )1029 IF ( .NOT. ALLOCATED( t_surf_whole_v_p(l)%t ) ) &1030 ALLOCATE ( t_surf_whole_v_p(l)%t(1:surf_usm_v(l)%ns) )1031 1008 IF ( .NOT. ALLOCATED( t_surf_10cm_v(l)%t ) ) & 1032 1009 ALLOCATE ( t_surf_10cm_v(l)%t(1:surf_usm_v(l)%ns) ) … … 1063 1040 IF ( .NOT. ALLOCATED( t_green_v_2(l)%t ) ) & 1064 1041 ALLOCATE ( t_green_v_2(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) ) 1065 IF ( .NOT. ALLOCATED( t_surf_whole_v_1(l)%t ) ) &1066 ALLOCATE ( t_surf_whole_v_1(l)%t(1:surf_usm_v(l)%ns) )1067 IF ( .NOT. ALLOCATED( t_surf_whole_v_2(l)%t ) ) &1068 ALLOCATE ( t_surf_whole_v_2(l)%t(1:surf_usm_v(l)%ns) )1069 1042 IF ( .NOT. ALLOCATED( t_surf_10cm_v_1(l)%t ) ) & 1070 1043 ALLOCATE ( t_surf_10cm_v_1(l)%t(1:surf_usm_v(l)%ns) ) … … 1080 1053 t_surf_window_v => t_surf_window_v_1; t_surf_window_v_p => t_surf_window_v_2 1081 1054 t_surf_green_v => t_surf_green_v_1; t_surf_green_v_p => t_surf_green_v_2 1082 t_surf_whole_v => t_surf_whole_v_1; t_surf_whole_v_p => t_surf_whole_v_21083 1055 t_surf_10cm_v => t_surf_10cm_v_1; t_surf_10cm_v_p => t_surf_10cm_v_2 1084 1056 … … 1454 1426 ENDDO 1455 1427 1456 CASE ( 'usm_t_surf_whole' )1457 !-- surface temperature for whole surfaces1458 IF ( .NOT. ALLOCATED(surf_usm_h%t_surf_whole_av) ) THEN1459 ALLOCATE( surf_usm_h%t_surf_whole_av(1:surf_usm_h%ns) )1460 surf_usm_h%t_surf_whole_av = 0.0_wp1461 ENDIF1462 DO l = 0, 31463 IF ( .NOT. ALLOCATED(surf_usm_v(l)%t_surf_whole_av) ) THEN1464 ALLOCATE( surf_usm_v(l)%t_surf_whole_av(1:surf_usm_v(l)%ns) )1465 surf_usm_v(l)%t_surf_whole_av = 0.0_wp1466 ENDIF1467 ENDDO1468 1469 1428 CASE ( 'usm_t_surf_10cm' ) 1470 1429 !-- near surface temperature for whole surfaces … … 1785 1744 ENDDO 1786 1745 1787 CASE ( 'usm_t_surf_whole' )1788 !-- surface temperature for whole surfaces1789 DO m = 1, surf_usm_h%ns1790 surf_usm_h%t_surf_whole_av(m) = &1791 surf_usm_h%t_surf_whole_av(m) + &1792 t_surf_whole_h(m)1793 ENDDO1794 DO l = 0, 31795 DO m = 1, surf_usm_v(l)%ns1796 surf_usm_v(l)%t_surf_whole_av(m) = &1797 surf_usm_v(l)%t_surf_whole_av(m) + &1798 t_surf_whole_v(l)%t(m)1799 ENDDO1800 ENDDO1801 1802 1746 CASE ( 'usm_t_surf_10cm' ) 1803 1747 !-- near surface temperature for whole surfaces … … 2119 2063 surf_usm_v(l)%t_surf_green_av(m) = & 2120 2064 surf_usm_v(l)%t_surf_green_av(m) / & 2121 REAL( average_count_3d, kind=wp )2122 ENDDO2123 ENDDO2124 2125 CASE ( 'usm_t_surf_whole' )2126 !-- surface temperature for whole surfaces2127 DO m = 1, surf_usm_h%ns2128 surf_usm_h%t_surf_whole_av(m) = &2129 surf_usm_h%t_surf_whole_av(m) / &2130 REAL( average_count_3d, kind=wp )2131 ENDDO2132 DO l = 0, 32133 DO m = 1, surf_usm_v(l)%ns2134 surf_usm_v(l)%t_surf_whole_av(m) = &2135 surf_usm_v(l)%t_surf_whole_av(m) / &2136 2065 REAL( average_count_3d, kind=wp ) 2137 2066 ENDDO … … 2279 2208 var(1:12) == 'usm_t_window' .OR. var(1:17) == 'usm_t_surf_window' .OR. & 2280 2209 var(1:16) == 'usm_t_surf_green' .OR. & 2281 var(1:1 6) == 'usm_t_surf_whole' .OR. var(1:11) == 'usm_t_green' .OR.&2210 var(1:11) == 'usm_t_green' .OR. & 2282 2211 var(1:15) == 'usm_t_surf_10cm') THEN 2283 2212 unit = 'K' … … 3062 2991 ENDIF 3063 2992 3064 CASE ( 'usm_t_surf_whole' )3065 !-- surface temperature for whole surfaces3066 3067 IF ( av == 0 ) THEN3068 DO m = 1, surf_usm_h%ns3069 i = surf_usm_h%i(m)3070 j = surf_usm_h%j(m)3071 k = surf_usm_h%k(m)3072 temp_pf(k,j,i) = t_surf_whole_h(m)3073 ENDDO3074 DO l = 0, 33075 DO m = 1, surf_usm_v(l)%ns3076 i = surf_usm_v(l)%i(m)3077 j = surf_usm_v(l)%j(m)3078 k = surf_usm_v(l)%k(m)3079 temp_pf(k,j,i) = t_surf_whole_v(l)%t(m)3080 ENDDO3081 ENDDO3082 3083 ELSE3084 DO m = 1, surf_usm_h%ns3085 i = surf_usm_h%i(m)3086 j = surf_usm_h%j(m)3087 k = surf_usm_h%k(m)3088 temp_pf(k,j,i) = surf_usm_h%t_surf_whole_av(m)3089 ENDDO3090 DO l = 0, 33091 DO m = 1, surf_usm_v(l)%ns3092 i = surf_usm_v(l)%i(m)3093 j = surf_usm_v(l)%j(m)3094 k = surf_usm_v(l)%k(m)3095 temp_pf(k,j,i) = surf_usm_v(l)%t_surf_whole_av(m)3096 ENDDO3097 3098 ENDDO3099 3100 ENDIF3101 3102 2993 CASE ( 'usm_t_surf_10cm' ) 3103 2994 !-- near surface temperature for whole surfaces … … 3292 3183 var(1:10) == 'usm_t_surf' .OR. var(1:10) == 'usm_t_wall' .OR. & 3293 3184 var(1:17) == 'usm_t_surf_window' .OR. var(1:12) == 'usm_t_window' .OR. & 3294 var(1:16) == 'usm_t_surf_green' .OR. var(1:16) == 'usm_t_surf_whole' .OR.&3185 var(1:16) == 'usm_t_surf_green' .OR. & 3295 3186 var(1:15) == 'usm_t_surf_10cm' .OR. & 3296 3187 var(1:9) == 'usm_surfz' .OR. var(1:7) == 'usm_svf' .OR. & … … 4488 4379 t_surf_window_h(m) = pt(k,j,i) * exn 4489 4380 t_surf_green_h(m) = pt(k,j,i) * exn 4490 t_surf_whole_h(m) = pt(k,j,i) * exn4381 surf_usm_h%pt_surface(m) = pt(k,j,i) * exn 4491 4382 ENDDO 4492 4383 ! … … 4501 4392 t_surf_window_v(l)%t(m) = pt(k,j,i) * exn 4502 4393 t_surf_green_v(l)%t(m) = pt(k,j,i) * exn 4503 t_surf_whole_v(l)%t(m) = pt(k,j,i) * exn4394 surf_usm_v(l)%pt_surface(m) = pt(k,j,i) * exn 4504 4395 ENDDO 4505 4396 ENDDO … … 4563 4454 t_surf_window_h_p = t_surf_window_h 4564 4455 t_surf_window_v_p = t_surf_window_v 4565 t_surf_whole_h_p = t_surf_whole_h4566 t_surf_whole_v_p = t_surf_whole_v4567 4456 t_surf_green_h_p = t_surf_green_h 4568 4457 t_surf_green_v_p = t_surf_green_v … … 5151 5040 k = surf_usm_h%k(m) 5152 5041 5153 t_surf_10cm_h(m) = t_surf_whole_h(m) + surf_usm_h%ts(m) / kappa &5042 t_surf_10cm_h(m) = surf_usm_h%pt_surface(m) + surf_usm_h%ts(m) / kappa & 5154 5043 * ( log( 0.1_wp / surf_usm_h%z0h(m) ) & 5155 5044 - psi_h( 0.1_wp / surf_usm_h%ol(m) ) & … … 5167 5056 k = surf_usm_v(l)%k(m) 5168 5057 5169 t_surf_10cm_v(l)%t(m) = t_surf_whole_v(l)%t(m) + surf_usm_v(l)%ts(m) / kappa &5058 t_surf_10cm_v(l)%t(m) =surf_usm_v(l)%pt_surface(m) + surf_usm_v(l)%ts(m) / kappa & 5170 5059 * ( log( 0.1_wp / surf_usm_v(l)%z0h(m) ) & 5171 5060 - psi_h( 0.1_wp / surf_usm_v(l)%ol(m) ) & … … 7385 7274 t_green_h = t_green_h_p 7386 7275 t_green_v = t_green_v_p 7387 t_surf_whole_h = t_surf_whole_h_p7388 t_surf_whole_v = t_surf_whole_v_p7389 7276 #else 7390 7277 SELECT CASE ( mod_count ) … … 7398 7285 t_surf_green_h => t_surf_green_h_1; t_surf_green_h_p => t_surf_green_h_2 7399 7286 t_green_h => t_green_h_1; t_green_h_p => t_green_h_2 7400 t_surf_whole_h => t_surf_whole_h_1; t_surf_whole_h_p => t_surf_whole_h_27401 7287 ! 7402 7288 !-- Vertical surfaces … … 7407 7293 t_surf_green_v => t_surf_green_v_1; t_surf_green_v_p => t_surf_green_v_2 7408 7294 t_green_v => t_green_v_1; t_green_v_p => t_green_v_2 7409 t_surf_whole_v => t_surf_whole_v_1; t_surf_whole_v_p => t_surf_whole_v_27410 7295 CASE ( 1 ) 7411 7296 ! … … 7417 7302 t_surf_green_h => t_surf_green_h_2; t_surf_green_h_p => t_surf_green_h_1 7418 7303 t_green_h => t_green_h_2; t_green_h_p => t_green_h_1 7419 t_surf_whole_h => t_surf_whole_h_2; t_surf_whole_h_p => t_surf_whole_h_17420 7304 ! 7421 7305 !-- Vertical surfaces … … 7426 7310 t_surf_green_v => t_surf_green_v_2; t_surf_green_v_p => t_surf_green_v_1 7427 7311 t_green_v => t_green_v_2; t_green_v_p => t_green_v_1 7428 t_surf_whole_v => t_surf_whole_v_2; t_surf_whole_v_p => t_surf_whole_v_17429 7312 END SELECT 7430 7313 #endif
Note: See TracChangeset
for help on using the changeset viewer.