Changeset 3014 for palm/trunk/SOURCE/plant_canopy_model_mod.f90
- Timestamp:
- May 9, 2018 8:42:38 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/plant_canopy_model_mod.f90
r2977 r3014 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Bugfix: nzb_do and nzt_do were not used for 3d data output 28 ! Added pc_transpiration_rate 29 ! 30 ! 2977 2018-04-17 10:27:57Z kanani 27 31 ! Implement changes from branch radiation (r2948-2971) with minor modifications, 28 32 ! plus some formatting. … … 230 234 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: lad_s !< lad on scalar-grid 231 235 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pc_heating_rate !< plant canopy heating rate 236 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pc_transpiration_rate !< plant canopy transpiration rate 232 237 233 238 SAVE … … 243 248 ! 244 249 !-- Public variables and constants 245 PUBLIC pc_heating_rate, canopy_mode, cthf, dt_plant_canopy, lad, lad_s, &250 PUBLIC pc_heating_rate, pc_transpiration_rate, canopy_mode, cthf, dt_plant_canopy, lad, lad_s, & 246 251 pch_index 247 252 … … 315 320 unit = 'K s-1' 316 321 322 CASE ( 'pcm_transpirationrate' ) 323 unit = 'kg kg-1 s-1' 324 317 325 CASE ( 'pcm_lad' ) 318 326 unit = 'm2 m-3' … … 404 412 !> Subroutine defining 3D output variables 405 413 !------------------------------------------------------------------------------! 406 SUBROUTINE pcm_data_output_3d( av, variable, found, local_pf, fill_value ) 407 408 USE control_parameters, & 409 ONLY : nz_do3d 410 414 SUBROUTINE pcm_data_output_3d( av, variable, found, local_pf, fill_value, & 415 nzb_do, nzt_do ) 416 411 417 USE indices 412 418 … … 423 429 INTEGER(iwp) :: k !< 424 430 INTEGER(iwp) :: k_topo !< topography top index 431 INTEGER(iwp) :: nzb_do !< lower limit of the data output (usually 0) 432 INTEGER(iwp) :: nzt_do !< vertical upper limit of the data output (usually nz_do3d) 425 433 426 434 LOGICAL :: found !< 427 435 428 436 REAL(wp) :: fill_value 429 REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb :nz_do3d) :: local_pf !<437 REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do) :: local_pf !< 430 438 431 439 … … 449 457 ENDDO 450 458 ENDIF 451 459 460 CASE ( 'pcm_transpirationrate' ) 461 IF ( av == 0 ) THEN 462 DO i = nxl, nxr 463 DO j = nys, nyn 464 IF ( pch_index_ji(j,i) /= 0 ) THEN 465 k_topo = get_topography_top_index_ji( j, i, 's' ) 466 DO k = k_topo, k_topo + pch_index_ji(j,i) 467 local_pf(i,j,k) = pc_transpiration_rate(k-k_topo,j,i) 468 ENDDO 469 ENDIF 470 ENDDO 471 ENDDO 472 ENDIF 452 473 453 474 CASE ( 'pcm_lad' ) … … 497 518 SELECT CASE ( TRIM( var ) ) 498 519 499 CASE ( 'pcm_heatrate', 'pcm_lad' 520 CASE ( 'pcm_heatrate', 'pcm_lad', 'pcm_transpirationrate') 500 521 grid_x = 'x' 501 522 grid_y = 'y' … … 873 894 874 895 ALLOCATE( cum_lai_hf(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 875 pc_heating_rate(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 896 pc_heating_rate(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 897 pc_transpiration_rate(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 876 898 ! 877 899 !-- Piecewise calculation of the cumulative leaf area index by vertical … … 1397 1419 1398 1420 kk = k - k_wall !- lad arrays are defined flat 1399 tend(k,j,i) = tend(k,j,i) - & 1400 lsec * & 1401 lad_s(kk,j,i) * & 1421 pc_transpiration_rate(kk,j,i) = - lsec & 1422 * lad_s(kk,j,i) * & 1402 1423 SQRT( ( 0.5_wp * ( u(k,j,i) + & 1403 1424 u(k,j,i+1) ) & … … 1411 1432 ) * & 1412 1433 ( q(k,j,i) - lsc ) 1434 1435 tend(k,j,i) = tend(k,j,i) + pc_transpiration_rate(kk,j,i) 1413 1436 ENDDO 1414 1437 ENDDO … … 1728 1751 1729 1752 DO k = k_wall + 1, k_wall + pch_index_ji(j,i) 1730 1731 kk = k - k_wall 1732 tend(k,j,i) = tend(k,j,i) - & 1733 lsec * & 1734 lad_s(kk,j,i) * & 1753 kk = k - k_wall !- lad arrays are defined flat 1754 1755 pc_transpiration_rate(kk,j,i) = - lsec & 1756 * lad_s(kk,j,i) * & 1735 1757 SQRT( ( 0.5_wp * ( u(k,j,i) + & 1736 1758 u(k,j,i+1) ) & … … 1744 1766 ) * & 1745 1767 ( q(k,j,i) - lsc ) 1768 1769 tend(k,j,i) = tend(k,j,i) + pc_transpiration_rate(kk,j,i) 1770 1746 1771 ENDDO 1747 1772
Note: See TracChangeset
for help on using the changeset viewer.