Ignore:
Timestamp:
Jan 15, 2018 12:06:04 PM (4 years ago)
Author:
suehring
Message:

Read information from statitic driver for resolved vegetation independently from land- or urban-surface model

File:
1 edited

Legend:

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

    r2718 r2746  
    2525! -----------------
    2626! $Id$
     27! Read plant-canopy variables independently on land-surface model usage
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    497500       USE control_parameters,                                                 &
    498501           ONLY:  bc_lr_cyc, bc_ns_cyc, land_surface, message_string,          &
    499                   urban_surface
     502                  plant_canopy, urban_surface
    500503
    501504       USE indices,                                                            &
    502505           ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg
     506
    503507
    504508       IMPLICIT NONE
     
    525529!
    526530!--    If not static input file is available, skip this routine
    527        IF ( .NOT. input_pids_static )  RETURN 
    528 !
    529 !--    Moreover, skip routine if no land-surface or urban-surface module are
    530 !--    applied as no variable is used anyway. 
     531       IF ( .NOT. input_pids_static )  RETURN
     532!
     533!--    Read plant canopy variables.
     534       IF ( plant_canopy )  THEN
     535          DO  ii = 0, io_blocks-1
     536             IF ( ii == io_group )  THEN
     537#if defined ( __netcdf )
     538!
     539!--             Open file in read-only mode
     540                CALL open_read_file( TRIM( input_file_static ) //              &
     541                                     TRIM( coupling_char ) , id_surf )
     542!
     543!--             At first, inquire all variable names.
     544!--             This will be used to check whether an optional input variable
     545!--             exist or not.
     546                CALL inquire_num_variables( id_surf, num_vars )
     547
     548                ALLOCATE( var_names(1:num_vars) )
     549                CALL inquire_variable_names( id_surf, var_names )
     550
     551
     552!
     553!--             Read leaf area density - resolved vegetation
     554                IF ( check_existence( var_names, 'leaf_area_density' ) )  THEN
     555                   leaf_area_density_f%from_file = .TRUE.
     556                   CALL get_attribute( id_surf, char_fill,                     &
     557                                       leaf_area_density_f%fill,               &
     558                                       .FALSE., 'leaf_area_density' ) 
     559!
     560!--                Inquire number of vertical vegetation layer
     561                   CALL get_dimension_length( id_surf, leaf_area_density_f%nz, &
     562                                              'zlad' )
     563!           
     564!--                Allocate variable for leaf-area density
     565                   ALLOCATE( leaf_area_density_f%var(                          &
     566                                                   0:leaf_area_density_f%nz-1, &
     567                                                   nys:nyn,nxl:nxr) )
     568
     569                      DO  i = nxl, nxr
     570                         DO  j = nys, nyn
     571                            CALL get_variable( id_surf, 'leaf_area_density',   &
     572                                               i, j,                           &
     573                                               leaf_area_density_f%var(:,j,i) )
     574                         ENDDO
     575                      ENDDO
     576                ELSE
     577                   leaf_area_density_f%from_file = .FALSE.
     578                ENDIF
     579
     580!
     581!--             Read basal area density - resolved vegetation
     582                IF ( check_existence( var_names, 'basal_area_density' ) )  THEN
     583                   basal_area_density_f%from_file = .TRUE.
     584                   CALL get_attribute( id_surf, char_fill,                     &
     585                                       basal_area_density_f%fill,              &
     586                                       .FALSE., 'basal_area_density' ) 
     587!
     588!--                Inquire number of vertical vegetation layer
     589                   CALL get_dimension_length( id_surf,                         &
     590                                              basal_area_density_f%nz,         &
     591                                              'zlad' )
     592!           
     593!--                Allocate variable
     594                   ALLOCATE( basal_area_density_f%var(                         &
     595                                                  0:basal_area_density_f%nz-1, &
     596                                                  nys:nyn,nxl:nxr) )
     597
     598                   DO  i = nxl, nxr
     599                      DO  j = nys, nyn
     600                         CALL get_variable( id_surf, 'basal_area_density',     &
     601                                            i, j,                              &
     602                                            basal_area_density_f%var(:,j,i) )
     603                      ENDDO
     604                   ENDDO
     605                ELSE
     606                   basal_area_density_f%from_file = .FALSE.
     607                ENDIF
     608
     609!
     610!--             Read root area density - resolved vegetation
     611                IF ( check_existence( var_names, 'root_area_density_lad' ) )  THEN
     612                   root_area_density_lad_f%from_file = .TRUE.
     613                   CALL get_attribute( id_surf, char_fill,                     &
     614                                       root_area_density_lad_f%fill,           &
     615                                       .FALSE., 'root_area_density_lad' ) 
     616!
     617!--                Inquire number of vertical soil layers
     618                   CALL get_dimension_length( id_surf,                         &
     619                                              root_area_density_lad_f%nz,      &
     620                                              'zsoil' )
     621!           
     622!--                Allocate variable
     623                   ALLOCATE( root_area_density_lad_f%var                       &
     624                                               (0:root_area_density_lad_f%nz-1,&
     625                                                nys:nyn,nxl:nxr) )
     626
     627                   DO  i = nxl, nxr
     628                      DO  j = nys, nyn
     629                         CALL get_variable( id_surf, 'root_area_density_lad',  &
     630                                            i, j,                              &
     631                                            root_area_density_lad_f%var(:,j,i) )
     632                      ENDDO
     633                   ENDDO
     634                ELSE
     635                   root_area_density_lad_f%from_file = .FALSE.
     636                ENDIF
     637!
     638!--             Finally, close input file
     639                CALL close_input_file( id_surf )
     640#endif
     641             ENDIF
     642#if defined( __parallel )
     643             CALL MPI_BARRIER( comm2d, ierr )
     644#endif
     645          ENDDO
     646!
     647!--       Deallocate variable list. Will be re-allocated in case further
     648!--       variables are read from file.         
     649          IF ( ALLOCATED( var_names ) )  DEALLOCATE( var_names )
     650
     651       ENDIF
     652!
     653!--    Skip the following if no land-surface or urban-surface module are
     654!--    applied. This case, no one of the following variables is used anyway. 
    531655       IF (  .NOT. land_surface  .OR.  .NOT. urban_surface )  RETURN
    532656!
     
    544668
    545669!
    546 !--          At first, inquire all variable names.
     670!--          Inquire all variable names.
    547671!--          This will be used to check whether an optional input variable exist
    548672!--          or not.
     
    9531077                water_pars_f%from_file = .FALSE.
    9541078             ENDIF
    955 
    956 !
    957 !--          Read leaf area density - resolved vegetation
    958              IF ( check_existence( var_names, 'leaf_area_density' ) )  THEN
    959                 leaf_area_density_f%from_file = .TRUE.
    960                 CALL get_attribute( id_surf, char_fill,                        &
    961                                     leaf_area_density_f%fill,                  &
    962                                     .FALSE., 'leaf_area_density' ) 
    963 !
    964 !--             Inquire number of vertical vegetation layer
    965                 CALL get_dimension_length( id_surf, leaf_area_density_f%nz,    &
    966                                            'zlad' )
    967 !           
    968 !--             Allocate variable for leaf-area density
    969                 ALLOCATE( leaf_area_density_f%var(0:leaf_area_density_f%nz-1,  &
    970                                                   nys:nyn,nxl:nxr) )
    971 
    972                 DO  i = nxl, nxr
    973                    DO  j = nys, nyn
    974                       CALL get_variable( id_surf, 'leaf_area_density', i, j,   &
    975                                          leaf_area_density_f%var(:,j,i) )
    976                    ENDDO
    977                 ENDDO
    978              ELSE
    979                 leaf_area_density_f%from_file = .FALSE.
    980              ENDIF
    981 
    982 !
    983 !--          Read basal area density - resolved vegetation
    984              IF ( check_existence( var_names, 'basal_area_density' ) )  THEN
    985                 basal_area_density_f%from_file = .TRUE.
    986                 CALL get_attribute( id_surf, char_fill,                        &
    987                                     basal_area_density_f%fill,                 &
    988                                     .FALSE., 'basal_area_density' ) 
    989 !
    990 !--             Inquire number of vertical vegetation layer
    991                 CALL get_dimension_length( id_surf, basal_area_density_f%nz,   &
    992                                            'zlad' )
    993 !           
    994 !--             Allocate variable
    995                 ALLOCATE( basal_area_density_f%var(0:basal_area_density_f%nz-1,&
    996                                                    nys:nyn,nxl:nxr) )
    997 
    998                 DO  i = nxl, nxr
    999                    DO  j = nys, nyn
    1000                       CALL get_variable( id_surf, 'basal_area_density', i, j,  &
    1001                                          basal_area_density_f%var(:,j,i) )
    1002                    ENDDO
    1003                 ENDDO
    1004              ELSE
    1005                 basal_area_density_f%from_file = .FALSE.
    1006              ENDIF
    1007 
    1008 !
    1009 !--          Read root area density - resolved vegetation
    1010              IF ( check_existence( var_names, 'root_area_density_lad' ) )  THEN
    1011                 root_area_density_lad_f%from_file = .TRUE.
    1012                 CALL get_attribute( id_surf, char_fill,                        &
    1013                                     root_area_density_lad_f%fill,              &
    1014                                     .FALSE., 'root_area_density_lad' ) 
    1015 !
    1016 !--             Inquire number of vertical soil layers
    1017                 CALL get_dimension_length( id_surf, root_area_density_lad_f%nz,&
    1018                                            'zsoil' )
    1019 !           
    1020 !--             Allocate variable
    1021                 ALLOCATE( root_area_density_lad_f%var                          &
    1022                                             (0:root_area_density_lad_f%nz-1,   &
    1023                                              nys:nyn,nxl:nxr) )
    1024 
    1025                 DO  i = nxl, nxr
    1026                    DO  j = nys, nyn
    1027                       CALL get_variable( id_surf, 'root_area_density_lad', i, j,&
    1028                                          root_area_density_lad_f%var(:,j,i) )
    1029                    ENDDO
    1030                 ENDDO
    1031              ELSE
    1032                 root_area_density_lad_f%from_file = .FALSE.
    1033              ENDIF
    1034 
    10351079!
    10361080!--          Read root area density - parametrized vegetation
Note: See TracChangeset for help on using the changeset viewer.