Changeset 2209 for palm/trunk/SOURCE/plant_canopy_model_mod.f90
- Timestamp:
- Apr 19, 2017 9:34:46 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/plant_canopy_model_mod.f90
r2101 r2209 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! Added 3d output of leaf area density (pcm_lad) and canopy 23 ! heat rate (pcm_heatrate) 23 24 ! 24 25 ! Former revisions: … … 166 167 ! 167 168 !-- Public functions 168 PUBLIC pcm_check_parameters, pcm_header, pcm_init, pcm_parin, pcm_tendency 169 PUBLIC pcm_check_data_output, pcm_check_parameters, pcm_data_output_3d, & 170 pcm_define_netcdf_grid, pcm_header, pcm_init, pcm_parin, pcm_tendency 169 171 170 172 ! … … 174 176 175 177 176 178 INTERFACE pcm_check_data_output 179 MODULE PROCEDURE pcm_check_data_output 180 END INTERFACE pcm_check_data_output 181 177 182 INTERFACE pcm_check_parameters 178 183 MODULE PROCEDURE pcm_check_parameters 179 END INTERFACE pcm_check_parameters 184 END INTERFACE pcm_check_parameters 185 186 INTERFACE pcm_data_output_3d 187 MODULE PROCEDURE pcm_data_output_3d 188 END INTERFACE pcm_data_output_3d 189 190 INTERFACE pcm_define_netcdf_grid 191 MODULE PROCEDURE pcm_define_netcdf_grid 192 END INTERFACE pcm_define_netcdf_grid 180 193 181 194 INTERFACE pcm_header … … 203 216 CONTAINS 204 217 218 219 !------------------------------------------------------------------------------! 220 ! Description: 221 ! ------------ 222 !> Check data output for plant canopy model 223 !------------------------------------------------------------------------------! 224 SUBROUTINE pcm_check_data_output( var, unit ) 225 226 227 USE control_parameters, & 228 ONLY: data_output, message_string 229 230 IMPLICIT NONE 231 232 CHARACTER (LEN=*) :: unit !< 233 CHARACTER (LEN=*) :: var !< 234 235 236 SELECT CASE ( TRIM( var ) ) 237 238 CASE ( 'pcm_heatrate' ) 239 unit = 'K s-1' 240 241 CASE ( 'pcm_lad' ) 242 unit = 'm2 m-3' 243 244 245 CASE DEFAULT 246 unit = 'illegal' 247 248 END SELECT 249 250 251 END SUBROUTINE pcm_check_data_output 252 205 253 206 254 !------------------------------------------------------------------------------! … … 259 307 260 308 309 !------------------------------------------------------------------------------! 310 ! 311 ! Description: 312 ! ------------ 313 !> Subroutine defining 3D output variables 314 !------------------------------------------------------------------------------! 315 SUBROUTINE pcm_data_output_3d( av, variable, found, local_pf ) 316 317 USE control_parameters, & 318 ONLY : nz_do3d 319 320 USE indices 321 322 USE kinds 323 324 325 IMPLICIT NONE 326 327 CHARACTER (LEN=*) :: variable !< 328 329 INTEGER(iwp) :: av !< 330 INTEGER(iwp) :: i !< 331 INTEGER(iwp) :: j !< 332 INTEGER(iwp) :: k !< 333 334 LOGICAL :: found !< 335 336 REAL(sp), DIMENSION(nxlg:nxrg,nysg:nyng,nzb:nz_do3d) :: local_pf !< 337 338 339 found = .TRUE. 340 341 342 SELECT CASE ( TRIM( variable ) ) 343 344 CASE ( 'pcm_heatrate' ) 345 IF ( av == 0 ) THEN 346 DO i = nxlg, nxrg 347 DO j = nysg, nyng 348 DO k = nzb_s_inner(j,i), nz_do3d 349 local_pf(i,j,k) = pc_heating_rate(k,j,i) 350 ENDDO 351 ENDDO 352 ENDDO 353 ENDIF 354 355 356 CASE ( 'pcm_lad' ) 357 358 IF ( av == 0 ) THEN 359 DO i = nxlg, nxrg 360 DO j = nysg, nyng 361 DO k = nzb_s_inner(j,i), nz_do3d 362 local_pf(i,j,k) = lad_s(k,j,i) 363 ENDDO 364 ENDDO 365 ENDDO 366 ENDIF 367 368 369 CASE DEFAULT 370 found = .FALSE. 371 372 END SELECT 373 374 375 END SUBROUTINE pcm_data_output_3d 376 377 !------------------------------------------------------------------------------! 378 ! 379 ! Description: 380 ! ------------ 381 !> Subroutine defining appropriate grid for netcdf variables. 382 !> It is called from subroutine netcdf. 383 !------------------------------------------------------------------------------! 384 SUBROUTINE pcm_define_netcdf_grid( var, found, grid_x, grid_y, grid_z ) 385 386 IMPLICIT NONE 387 388 CHARACTER (LEN=*), INTENT(IN) :: var !< 389 LOGICAL, INTENT(OUT) :: found !< 390 CHARACTER (LEN=*), INTENT(OUT) :: grid_x !< 391 CHARACTER (LEN=*), INTENT(OUT) :: grid_y !< 392 CHARACTER (LEN=*), INTENT(OUT) :: grid_z !< 393 394 found = .TRUE. 395 396 ! 397 !-- Check for the grid 398 SELECT CASE ( TRIM( var ) ) 399 400 CASE ( 'pcm_heatrate', 'pcm_lad' ) 401 grid_x = 'x' 402 grid_y = 'y' 403 grid_z = 'zu' 404 405 CASE DEFAULT 406 found = .FALSE. 407 grid_x = 'none' 408 grid_y = 'none' 409 grid_z = 'none' 410 END SELECT 411 412 END SUBROUTINE pcm_define_netcdf_grid 413 414 261 415 !------------------------------------------------------------------------------! 262 416 ! Description:
Note: See TracChangeset
for help on using the changeset viewer.