Changeset 4341 for palm/trunk
 Timestamp:
 Dec 16, 2019 10:43:49 AM (17 months ago)
 Location:
 palm/trunk/SOURCE
 Files:

 3 edited
Legend:
 Unmodified
 Added
 Removed

palm/trunk/SOURCE/plant_canopy_model_mod.f90
r4335 r4341 27 27 !  28 28 ! $Id$ 29 !  Unification of variable names: pc_variables now pcm_variables 30 ! (pc_latent_rate, pc_heating_rate, pc_transpiration_rate) 31 !  Removal of pcm_bowenratio output 32 !  Renamed canopymode 'block' to 'homogeneous' 33 !  Renamed value 'read_from_file_3d' to 'read_from_file' 34 !  Removal of confusing comment lines 35 !  Replacement of k_wall by topo_top_ind 36 !  Removal of ElseStatement in tendencycalculation 37 ! 38 ! 4335 20191212 16:39:05Z suehring 29 39 ! Fix for LAD at building edges also implemented in vector branch. 30 40 ! … … 140 150 141 151 142 CHARACTER (LEN=30) :: canopy_mode = ' block'!< canopy coverage152 CHARACTER (LEN=30) :: canopy_mode = 'homogeneous' !< canopy coverage 143 153 LOGICAL :: plant_canopy_transpiration = .FALSE. !< flag to switch calculation of transpiration and corresponding latent heat 144 154 !< for resolved plant canopy inside radiation model … … 177 187 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: cum_lai_hf !< cumulative lai for heatflux calc. 178 188 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: lad_s !< lad on scalargrid 179 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pc _heating_rate!< plant canopy heating rate180 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pc _transpiration_rate!< plant canopy transpiration rate181 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pc _latent_rate!< plant canopy latent heating rate189 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pcm_heating_rate !< plant canopy heating rate 190 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pcm_transpiration_rate !< plant canopy transpiration rate 191 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pcm_latent_rate !< plant canopy latent heating rate 182 192 183 193 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pcm_heatrate_av !< array for averaging plant canopy sensible heating rate … … 199 209 ! 200 210 ! Public variables and constants 201 PUBLIC cdc, pc _heating_rate, pc_transpiration_rate, pc_latent_rate,&211 PUBLIC cdc, pcm_heating_rate, pcm_transpiration_rate, pcm_latent_rate, & 202 212 canopy_mode, cthf, dt_plant_canopy, lad, lad_s, pch_index, & 203 213 plant_canopy_transpiration … … 398 408 unit = 'K s1' 399 409 400 CASE ( 'pcm_bowenratio' )401 unit = 'K s1'402 403 410 CASE ( 'pcm_lad' ) 404 411 unit = 'm2 m3' … … 472 479 ! 473 480 ! If canopy shall be read from file, static input file must be present 474 IF ( TRIM( canopy_mode ) == 'read_from_file _3d' .AND. &481 IF ( TRIM( canopy_mode ) == 'read_from_file' .AND. & 475 482 .NOT. input_pids_static ) THEN 476 message_string = 'canopy_mode = read_from_file _3drequires ' // &483 message_string = 'canopy_mode = read_from_file requires ' // & 477 484 'static input file' 478 485 CALL message( 'pcm_check_parameters', 'PA0672', 1, 2, 0, 6, 0 ) … … 547 554 IF ( pch_index_ji(j,i) /= 0 ) THEN 548 555 DO k = 0, pch_index_ji(j,i) 549 pcm_heatrate_av(k,j,i) = pcm_heatrate_av(k,j,i) + pc _heating_rate(k,j,i)556 pcm_heatrate_av(k,j,i) = pcm_heatrate_av(k,j,i) + pcm_heating_rate(k,j,i) 550 557 ENDDO 551 558 ENDIF … … 561 568 IF ( pch_index_ji(j,i) /= 0 ) THEN 562 569 DO k = 0, pch_index_ji(j,i) 563 pcm_latentrate_av(k,j,i) = pcm_latentrate_av(k,j,i) + pc _latent_rate(k,j,i)570 pcm_latentrate_av(k,j,i) = pcm_latentrate_av(k,j,i) + pcm_latent_rate(k,j,i) 564 571 ENDDO 565 572 ENDIF … … 575 582 IF ( pch_index_ji(j,i) /= 0 ) THEN 576 583 DO k = 0, pch_index_ji(j,i) 577 pcm_transpirationrate_av(k,j,i) = pcm_transpirationrate_av(k,j,i) + pc _transpiration_rate(k,j,i)584 pcm_transpirationrate_av(k,j,i) = pcm_transpirationrate_av(k,j,i) + pcm_transpiration_rate(k,j,i) 578 585 ENDDO 579 586 ENDIF … … 693 700 DO j = nys, nyn 694 701 DO k = MAX( 1, nzb_do ), MIN( pch_index, nzt_do ) 695 local_pf(i,j,k) = pc _heating_rate(k,j,i)702 local_pf(i,j,k) = pcm_heating_rate(k,j,i) 696 703 ENDDO 697 704 ENDDO … … 712 719 DO j = nys, nyn 713 720 DO k = MAX( 1, nzb_do ), MIN( pch_index, nzt_do ) 714 local_pf(i,j,k) = pc _latent_rate(k,j,i)721 local_pf(i,j,k) = pcm_latent_rate(k,j,i) 715 722 ENDDO 716 723 ENDDO … … 731 738 DO j = nys, nyn 732 739 DO k = MAX( 1, nzb_do ), MIN( pch_index, nzt_do ) 733 local_pf(i,j,k) = pc _transpiration_rate(k,j,i)740 local_pf(i,j,k) = pcm_transpiration_rate(k,j,i) 734 741 ENDDO 735 742 ENDDO … … 745 752 ENDIF 746 753 747 CASE ( 'pcm_bowenratio' )748 IF ( av == 0 ) THEN749 DO i = nxl, nxr750 DO j = nys, nyn751 DO k = MAX( 1, nzb_do ), MIN( pch_index, nzt_do )752 IF ( pc_latent_rate(k,j,i) /= 0.0_wp ) THEN753 local_pf(i,j,k) = pc_heating_rate(k,j,i) / &754 pc_latent_rate(k,j,i)755 ENDIF756 ENDDO757 ENDDO758 ENDDO759 ELSE760 DO i = nxl, nxr761 DO j = nys, nyn762 DO k = MAX( 1, nzb_do ), MIN( pch_index, nzt_do )763 IF ( pcm_latentrate_av(k,j,i) /= 0.0_wp ) THEN764 local_pf(i,j,k) = pcm_heatrate_av(k,j,i) / &765 pcm_latentrate_av(k,j,i)766 ENDIF767 ENDDO768 ENDDO769 ENDDO770 ENDIF771 772 754 CASE ( 'pcm_lad' ) 773 755 IF ( av == 0 ) THEN … … 812 794 SELECT CASE ( TRIM( var ) ) 813 795 814 CASE ( 'pcm_heatrate', 'pcm_lad', 'pcm_transpirationrate', 'pcm_latentrate' , 'pcm_bowenratio')796 CASE ( 'pcm_heatrate', 'pcm_lad', 'pcm_transpirationrate', 'pcm_latentrate') 815 797 grid_x = 'x' 816 798 grid_y = 'y' … … 1087 1069 ! 1088 1070 ! Initialization of the canopy coverage in the model domain: 1089 ! Setting the parameter canopy_mode = ' block' initializes a canopy, which1071 ! Setting the parameter canopy_mode = 'homogeneous' initializes a canopy, which 1090 1072 ! fully covers the domain surface 1091 1073 SELECT CASE ( TRIM( canopy_mode ) ) 1092 1074 1093 CASE( ' block' )1075 CASE( 'homogeneous' ) 1094 1076 1095 1077 DO i = nxlg, nxrg … … 1099 1081 ENDDO 1100 1082 1101 CASE ( 'read_from_file _3d' )1083 CASE ( 'read_from_file' ) 1102 1084 ! 1103 1085 ! Initialize LAD with data from file. If LAD is given in NetCDF file, … … 1219 1201 #endif 1220 1202 1221 ! Allocation of arrays pc _heating_rate, pc_transpiration_rate and pc_latent_rate1222 ALLOCATE( pc _heating_rate(0:pch_index,nysg:nyng,nxlg:nxrg) )1223 pc _heating_rate = 0.0_wp1203 ! Allocation of arrays pcm_heating_rate, pcm_transpiration_rate and pcm_latent_rate 1204 ALLOCATE( pcm_heating_rate(0:pch_index,nysg:nyng,nxlg:nxrg) ) 1205 pcm_heating_rate = 0.0_wp 1224 1206 1225 1207 IF ( humidity ) THEN 1226 ALLOCATE( pc _transpiration_rate(0:pch_index,nysg:nyng,nxlg:nxrg) )1227 pc _transpiration_rate = 0.0_wp1228 ALLOCATE( pc _latent_rate(0:pch_index,nysg:nyng,nxlg:nxrg) )1229 pc _latent_rate = 0.0_wp1208 ALLOCATE( pcm_transpiration_rate(0:pch_index,nysg:nyng,nxlg:nxrg) ) 1209 pcm_transpiration_rate = 0.0_wp 1210 ALLOCATE( pcm_latent_rate(0:pch_index,nysg:nyng,nxlg:nxrg) ) 1211 pcm_latent_rate = 0.0_wp 1230 1212 ENDIF 1231 1213 ! … … 1241 1223 ! 73â96). This approach has been applied e.g. by Shaw & Schumann (1992; 1242 1224 ! Bound.Layer Meteorol. 61, 47â64). 1243 ! When using the radiation_interactions, canopy heating (pc _heating_rate)1244 ! and plant canopy transpiration (pc _transpiration_rate, pc_latent_rate)1225 ! When using the radiation_interactions, canopy heating (pcm_heating_rate) 1226 ! and plant canopy transpiration (pcm_transpiration_rate, pcm_latent_rate) 1245 1227 ! are calculated in the RTM after the calculation of radiation. 1246 ! We cannot use variable radiation_interactions here to determine the situation1247 ! as it is assigned in init_3d_model after the call of pcm_init.1248 1228 IF ( cthf /= 0.0_wp ) THEN 1249 1229 … … 1314 1294 ! canopy. 1315 1295 ! Within the different canopy layers the plantcanopy heating 1316 ! rate (pc _heating_rate) is calculated as the vertical1296 ! rate (pcm_heating_rate) is calculated as the vertical 1317 1297 ! divergence of the canopy heat fluxes at the top and bottom 1318 1298 ! of the respective layer … … 1321 1301 DO k = 1, pch_index_ji(j,i) 1322 1302 IF ( cum_lai_hf(0,j,i) /= 0.0_wp ) THEN 1323 pc _heating_rate(k,j,i) = cthf * &1303 pcm_heating_rate(k,j,i) = cthf * & 1324 1304 ( exp(ext_coef*cum_lai_hf(k,j,i))  & 1325 1305 exp(ext_coef*cum_lai_hf(k1,j,i) ) ) / dzw(k) … … 1566 1546 INTEGER(iwp) :: j !< running index 1567 1547 INTEGER(iwp) :: k !< running index 1568 INTEGER(iwp) :: k_wall !< vertical index of topography top1569 1548 INTEGER(iwp) :: kk !< running index for flat lad arrays 1570 1549 … … 1604 1583 ! 1605 1584 ! Determine topographytop index on ugrid 1606 k_wall = topo_top_ind(j,i,1) 1607 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1608 1609 kk = k  k_wall ! lad arrays are defined flat 1585 DO k = topo_top_ind(j,i,1)+1, topo_top_ind(j,i,1) + pch_index_ji(j,i) 1586 1587 kk = k  topo_top_ind(j,i,1) ! lad arrays are defined flat 1610 1588 ! 1611 1589 ! In order to create sharp boundaries of the plant canopy, … … 1660 1638 IF ( SIGN(pre_u,u(k,j,i)) /= pre_u ) THEN 1661 1639 pre_tend =  u(k,j,i) * ddt_3d 1662 ELSE1663 pre_tend = pre_tend1664 1640 ENDIF 1665 1641 ! … … 1687 1663 ! 1688 1664 ! Determine topographytop index on vgrid 1689 k_wall = topo_top_ind(j,i,2) 1690 1691 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1692 1693 kk = k  k_wall ! lad arrays are defined flat 1665 DO k = topo_top_ind(j,i,2)+1, topo_top_ind(j,i,2) + pch_index_ji(j,i) 1666 1667 kk = k  topo_top_ind(j,i,2) ! lad arrays are defined flat 1694 1668 ! 1695 1669 ! In order to create sharp boundaries of the plant canopy, … … 1762 1736 ! 1763 1737 ! Determine topographytop index on wgrid 1764 k_wall = topo_top_ind(j,i,3) 1765 1766 DO k = k_wall+1, k_wall + pch_index_ji(j,i)  1 1767 1768 kk = k  k_wall ! lad arrays are defined flat 1738 DO k = topo_top_ind(j,i,3)+1, topo_top_ind(j,i,3) + pch_index_ji(j,i)  1 1739 1740 kk = k  topo_top_ind(j,i,3) ! lad arrays are defined flat 1769 1741 1770 1742 pre_tend = 0.0_wp … … 1814 1786 DO j = nys, nyn 1815 1787 ! Determine topographytop index on scalargrid 1816 k_wall = topo_top_ind(j,i,0) 1817 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1818 kk = k  k_wall ! lad arrays are defined flat 1819 tend(k,j,i) = tend(k,j,i) + pc_heating_rate(kk,j,i)  pc_latent_rate(kk,j,i) 1788 DO k = topo_top_ind(j,i,0)+1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 1789 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 1790 tend(k,j,i) = tend(k,j,i) + pcm_heating_rate(kk,j,i)  pcm_latent_rate(kk,j,i) 1820 1791 ENDDO 1821 1792 ENDDO … … 1825 1796 DO j = nys, nyn 1826 1797 ! Determine topographytop index on scalargrid 1827 k_wall = topo_top_ind(j,i,0) 1828 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1829 kk = k  k_wall ! lad arrays are defined flat 1830 tend(k,j,i) = tend(k,j,i) + pc_heating_rate(kk,j,i) 1798 DO k = topo_top_ind(j,i,0)+1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 1799 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 1800 tend(k,j,i) = tend(k,j,i) + pcm_heating_rate(kk,j,i) 1831 1801 ENDDO 1832 1802 ENDDO … … 1841 1811 ! 1842 1812 ! Determine topographytop index on scalargrid 1843 k_wall = topo_top_ind(j,i,0) 1844 1845 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1846 1847 kk = k  k_wall ! lad arrays are defined flat 1813 DO k = topo_top_ind(j,i,0)+1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 1814 1815 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 1848 1816 1849 1817 IF ( .NOT. plant_canopy_transpiration ) THEN 1850 ! pc _transpiration_rate is calculated in radiation model1818 ! pcm_transpiration_rate is calculated in radiation model 1851 1819 ! in case of plant_canopy_transpiration = .T. 1852 1820 ! to include also the dependecy to the radiation 1853 1821 ! in the plant canopy box 1854 pc _transpiration_rate(kk,j,i) =  lsec &1822 pcm_transpiration_rate(kk,j,i) =  lsec & 1855 1823 * lad_s(kk,j,i) * & 1856 1824 SQRT( ( 0.5_wp * ( u(k,j,i) + & … … 1867 1835 ENDIF 1868 1836 1869 tend(k,j,i) = tend(k,j,i) + pc _transpiration_rate(kk,j,i)1837 tend(k,j,i) = tend(k,j,i) + pcm_transpiration_rate(kk,j,i) 1870 1838 ENDDO 1871 1839 ENDDO … … 1879 1847 ! 1880 1848 ! Determine topographytop index on scalargrid 1881 k_wall = topo_top_ind(j,i,0) 1882 1883 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1884 1885 kk = k  k_wall ! lad arrays are defined flat 1849 DO k = topo_top_ind(j,i,0)+1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 1850 1851 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 1886 1852 tend(k,j,i) = tend(k,j,i)  & 1887 1853 2.0_wp * cdc * & … … 1908 1874 ! 1909 1875 ! Determine topographytop index on scalargrid 1910 k_wall = topo_top_ind(j,i,0) 1911 1912 DO k = k_wall+1, k_wall + pch_index_ji(j,i) 1913 1914 kk = k  k_wall ! lad arrays are defined flat 1876 DO k = topo_top_ind(j,i,0)+1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 1877 1878 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 1915 1879 tend(k,j,i) = tend(k,j,i)  & 1916 1880 lsec * & … … 1981 1945 INTEGER(iwp) :: j !< running index 1982 1946 INTEGER(iwp) :: k !< running index 1983 INTEGER(iwp) :: k_wall !< vertical index of topography top1984 1947 INTEGER(iwp) :: kk !< running index for flat lad arrays 1985 1948 … … 2016 1979 ! 2017 1980 ! Determine topographytop index on ugrid 2018 k_wall = topo_top_ind(j,i,1) 2019 DO k = k_wall + 1, k_wall + pch_index_ji(j,i) 2020 2021 kk = k  k_wall ! lad arrays are defined flat 1981 DO k = topo_top_ind(j,i,1) + 1, topo_top_ind(j,i,1) + pch_index_ji(j,i) 1982 1983 kk = k  topo_top_ind(j,i,1) ! lad arrays are defined flat 2022 1984 2023 1985 ! … … 2096 2058 ! 2097 2059 ! Determine topographytop index on vgrid 2098 k_wall = topo_top_ind(j,i,2) 2099 DO k = k_wall + 1, k_wall + pch_index_ji(j,i) 2100 2101 kk = k  k_wall ! lad arrays are defined flat 2060 DO k = topo_top_ind(j,i,2) + 1, topo_top_ind(j,i,2) + pch_index_ji(j,i) 2061 2062 kk = k  topo_top_ind(j,i,2) ! lad arrays are defined flat 2102 2063 ! 2103 2064 ! In order to create sharp boundaries of the plant canopy, … … 2166 2127 ! 2167 2128 ! Determine topographytop index on wgrid 2168 k_wall = topo_top_ind(j,i,3) 2169 2170 DO k = k_wall + 1, k_wall + pch_index_ji(j,i)  1 2171 2172 kk = k  k_wall ! lad arrays are defined flat 2129 DO k = topo_top_ind(j,i,3) + 1, topo_top_ind(j,i,3) + pch_index_ji(j,i)  1 2130 2131 kk = k  topo_top_ind(j,i,3) ! lad arrays are defined flat 2173 2132 2174 2133 pre_tend = 0.0_wp … … 2213 2172 ! 2214 2173 ! Determine topographytop index on scalar grid 2215 k_wall = topo_top_ind(j,i,0)2216 2217 2174 IF ( humidity ) THEN 2218 DO k = k_wall + 1, k_wall+ pch_index_ji(j,i)2219 kk = k  k_wall! lad arrays are defined flat2220 tend(k,j,i) = tend(k,j,i) + pc _heating_rate(kk,j,i)  &2221 pc _latent_rate(kk,j,i)2175 DO k = topo_top_ind(j,i,0) + 1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 2176 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 2177 tend(k,j,i) = tend(k,j,i) + pcm_heating_rate(kk,j,i)  & 2178 pcm_latent_rate(kk,j,i) 2222 2179 ENDDO 2223 2180 ELSE 2224 DO k = k_wall + 1, k_wall+ pch_index_ji(j,i)2225 kk = k  k_wall! lad arrays are defined flat2226 tend(k,j,i) = tend(k,j,i) + pc _heating_rate(kk,j,i)2181 DO k = topo_top_ind(j,i,0) + 1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 2182 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 2183 tend(k,j,i) = tend(k,j,i) + pcm_heating_rate(kk,j,i) 2227 2184 ENDDO 2228 2185 ENDIF … … 2233 2190 ! 2234 2191 ! Determine topographytop index on scalar grid 2235 k_wall = topo_top_ind(j,i,0) 2236 2237 DO k = k_wall + 1, k_wall + pch_index_ji(j,i) 2238 kk = k  k_wall ! lad arrays are defined flat 2192 DO k = topo_top_ind(j,i,0) + 1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 2193 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 2239 2194 IF ( .NOT. plant_canopy_transpiration ) THEN 2240 ! pc _transpiration_rate is calculated in radiation model2195 ! pcm_transpiration_rate is calculated in radiation model 2241 2196 ! in case of plant_canopy_transpiration = .T. 2242 2197 ! to include also the dependecy to the radiation 2243 2198 ! in the plant canopy box 2244 pc _transpiration_rate(kk,j,i) =  lsec &2199 pcm_transpiration_rate(kk,j,i) =  lsec & 2245 2200 * lad_s(kk,j,i) * & 2246 2201 SQRT( ( 0.5_wp * ( u(k,j,i) + & … … 2257 2212 ENDIF 2258 2213 2259 tend(k,j,i) = tend(k,j,i) + pc _transpiration_rate(kk,j,i)2214 tend(k,j,i) = tend(k,j,i) + pcm_transpiration_rate(kk,j,i) 2260 2215 2261 2216 ENDDO … … 2266 2221 ! 2267 2222 ! Determine topographytop index on scalar grid 2268 k_wall = topo_top_ind(j,i,0) 2269 2270 DO k = k_wall + 1, k_wall + pch_index_ji(j,i) 2271 2272 kk = k  k_wall 2223 DO k = topo_top_ind(j,i,0) + 1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 2224 2225 kk = k  topo_top_ind(j,i,0) 2273 2226 tend(k,j,i) = tend(k,j,i)  & 2274 2227 2.0_wp * cdc * & … … 2292 2245 ! 2293 2246 ! Determine topographytop index on scalar grid 2294 k_wall = topo_top_ind(j,i,0) 2295 2296 DO k = k_wall + 1, k_wall + pch_index_ji(j,i) 2297 2298 kk = k  k_wall 2247 DO k = topo_top_ind(j,i,0) + 1, topo_top_ind(j,i,0) + pch_index_ji(j,i) 2248 2249 kk = k  topo_top_ind(j,i,0) 2299 2250 tend(k,j,i) = tend(k,j,i)  & 2300 2251 lsec * & 
palm/trunk/SOURCE/radiation_model_mod.f90
r4340 r4341 28 28 !  29 29 ! $Id$ 30 ! Renamed pc_heating_rate, pc_transpiration_rate, pc_transpiration_rate to 31 ! pcm_heating_rate, pcm_latent_rate, pcm_transpiration_rate 32 ! 33 ! 4340 20191216 08:17:03Z Giersch 30 34 ! Albedo indices for building_surface_pars are now declared as parameters to 31 35 ! prevent an error if the gfortran compiler with Werror=unusedvalue is used … … 302 306 303 307 USE plant_canopy_model_mod, & 304 ONLY: lad_s, pc_heating_rate, pc_transpiration_rate, pc_latent_rate, & 305 plant_canopy_transpiration, pcm_calc_transpiration_rate 308 ONLY: lad_s, & 309 pcm_heating_rate, & 310 pcm_transpiration_rate, & 311 pcm_latent_rate, & 312 plant_canopy_transpiration, & 313 pcm_calc_transpiration_rate 306 314 307 315 USE pegrid … … 6150 6158 ! push heat flux absorbed by plant canopy to respective 3D arrays 6151 6159 IF ( npcbl > 0 ) THEN 6152 pc _heating_rate(:,:,:) = 0.0_wp6160 pcm_heating_rate(:,:,:) = 0.0_wp 6153 6161 DO ipcgb = 1, npcbl 6154 6162 j = pcbl(iy, ipcgb) … … 6158 6166 ! Following expression equals former kk = k  nzb_s_inner(j,i) 6159 6167 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 6160 pc _heating_rate(kk, j, i) = (pcbinsw(ipcgb) + pcbinlw(ipcgb)) &6168 pcm_heating_rate(kk, j, i) = (pcbinsw(ipcgb) + pcbinlw(ipcgb)) & 6161 6169 * pchf_prep(k) * pt(k, j, i) ! = dT/dt 6162 6170 ENDDO … … 6164 6172 IF ( humidity .AND. plant_canopy_transpiration ) THEN 6165 6173 ! Calculation of plant canopy transpiration rate and correspondidng latent heat rate 6166 pc _transpiration_rate(:,:,:) = 0.0_wp6167 pc _latent_rate(:,:,:) = 0.0_wp6174 pcm_transpiration_rate(:,:,:) = 0.0_wp 6175 pcm_latent_rate(:,:,:) = 0.0_wp 6168 6176 DO ipcgb = 1, npcbl 6169 6177 i = pcbl(ix, ipcgb) … … 6172 6180 kk = k  topo_top_ind(j,i,0) ! lad arrays are defined flat 6173 6181 CALL pcm_calc_transpiration_rate( i, j, k, kk, pcbinsw(ipcgb), pcbinlw(ipcgb), & 6174 pc _transpiration_rate(kk,j,i), pc_latent_rate(kk,j,i) )6182 pcm_transpiration_rate(kk,j,i), pcm_latent_rate(kk,j,i) ) 6175 6183 ENDDO 6176 6184 ENDIF 
palm/trunk/SOURCE/user_init_plant_canopy.f90
r4182 r4341 25 25 !  26 26 ! $Id$ 27 ! Renamed canopy_mode 'block' to 'homogeneous' 28 ! 29 ! 4182 20190822 15:20:23Z scharf 27 30 ! Corrected "Former revisions" section 28 31 ! … … 69 72 SELECT CASE ( TRIM( canopy_mode ) ) 70 73 71 CASE ( ' block' )74 CASE ( 'homogeneous' ) 72 75 ! 73 76 ! Not allowed here since this is the standard case used in init_3d_model.
Note: See TracChangeset
for help on using the changeset viewer.