Ignore:
Timestamp:
Apr 19, 2017 9:34:46 AM (7 years ago)
Author:
kanani
Message:

small bugfix, formatting and new PCM output

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/plant_canopy_model_mod.f90

    r2101 r2209  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Added 3d output of leaf area density (pcm_lad) and canopy
     23! heat rate (pcm_heatrate)
    2324!
    2425! Former revisions:
     
    166167!
    167168!-- 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
    169171
    170172!
     
    174176           
    175177
    176 
     178    INTERFACE pcm_check_data_output
     179       MODULE PROCEDURE pcm_check_data_output
     180    END INTERFACE pcm_check_data_output
     181   
    177182    INTERFACE pcm_check_parameters
    178183       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
    180193   
    181194     INTERFACE pcm_header
     
    203216 CONTAINS
    204217
     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 
    205253 
    206254!------------------------------------------------------------------------------!
     
    259307 
    260308
     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 
    261415!------------------------------------------------------------------------------!
    262416! Description:
Note: See TracChangeset for help on using the changeset viewer.