- Timestamp:
- Mar 15, 2018 1:03:01 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/netcdf_data_input_mod.f90
r2897 r2898 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Check if each building has a type. Further, check if dimensions in static 28 ! input file match the model dimensions. 29 ! 30 ! 2897 2018-03-15 11:47:16Z suehring 27 31 ! Relax restrictions for topography input, terrain and building heights can be 28 32 ! input separately and are not mandatory any more. … … 85 89 86 90 USE pegrid 87 91 ! 92 !-- Define type for dimensions. 93 TYPE dims_xy 94 INTEGER(iwp) :: nx !< dimension length in x 95 INTEGER(iwp) :: ny !< dimension length in y 96 REAL(wp), DIMENSION(:), ALLOCATABLE :: x !< dimension array in x 97 REAL(wp), DIMENSION(:), ALLOCATABLE :: y !< dimension array in y 98 END TYPE dims_xy 88 99 ! 89 100 !-- Define data type for nesting in larger-scale models like COSMO. … … 287 298 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: pars_xyz !< respective parameters, level of detail = 2 288 299 END TYPE pars 289 290 TYPE(force_type) :: force !< input variable for lateral and top boundaries derived from large-scale model 300 ! 301 !-- Define variables 302 TYPE(dims_xy) :: dim_static !< data structure for x, y-dimension in static input file 303 304 TYPE(force_type) :: force !< data structure for data input at lateral and top boundaries (provided by Inifor) 291 305 292 306 TYPE(init_type) :: init_3d !< data structure for the initialization of the 3D flow and soil fields … … 1660 1674 ALLOCATE( var_names(1:num_vars) ) 1661 1675 CALL inquire_variable_names( id_topo, var_names ) 1676 ! 1677 !-- Read x, y - dimensions 1678 CALL get_dimension_length( id_topo, dim_static%nx, 'x' ) 1679 CALL get_dimension_length( id_topo, dim_static%ny, 'y' ) 1680 ALLOCATE( dim_static%x(0:dim_static%nx-1) ) 1681 ALLOCATE( dim_static%y(0:dim_static%ny-1) ) 1682 CALL get_variable( id_topo, 'x', dim_static%x ) 1683 CALL get_variable( id_topo, 'y', dim_static%y ) 1662 1684 ! 1663 1685 !-- Terrain height. First, get variable-related _FillValue attribute … … 2747 2769 ONLY: land_surface, message_string, urban_surface 2748 2770 2771 USE grid_variables, & 2772 ONLY: dx, dy 2773 2749 2774 USE indices, & 2750 ONLY: nx l, nxr, nyn, nys2775 ONLY: nx, nxl, nxr, ny, nyn, nys 2751 2776 2752 2777 IMPLICIT NONE … … 2760 2785 ! 2761 2786 !-- Return if no static input file is available 2762 IF ( .NOT. input_pids_static ) RETURN 2787 IF ( .NOT. input_pids_static ) RETURN 2788 ! 2789 !-- Check whether dimension size in input file matches the model dimensions 2790 IF ( dim_static%nx-1 /= nx .OR. dim_static%ny-1 /= ny ) THEN 2791 message_string = 'Static input file: horizontal dimension in ' // & 2792 'x- and/or y-direction ' // & 2793 'do not match the respective model dimension' 2794 CALL message( 'netcdf_data_input_mod', 'PA0999', 1, 2, 0, 6, 0 ) 2795 ENDIF 2796 ! 2797 !-- Check if grid spacing of provided input data matches the respective 2798 !-- grid spacing in the model. 2799 IF ( dim_static%x(1) - dim_static%x(0) /= dx .OR. & 2800 dim_static%y(1) - dim_static%y(0) /= dy ) THEN 2801 message_string = 'Static input file: horizontal grid spacing ' // & 2802 'in x- and/or y-direction ' // & 2803 'do not match the respective model grid spacing.' 2804 CALL message( 'netcdf_data_input_mod', 'PA0999', 1, 2, 0, 6, 0 ) 2805 ENDIF 2763 2806 ! 2764 2807 !-- Check orography for fill-values. For the moment, give an error message. … … 3041 3084 ! 3042 3085 !-- Check if building_type is set at each building 3043 ! IF ( building_type_f%from_file .AND. buildings_f%from_file ) THEN 3044 ! IF ( buildings_f%var_2d(j,i) /= buildings_f%fill1 .AND. & 3045 ! building_type_f%var(j,i) == building_type_f%fill ) THEN 3046 ! WRITE( message_string, * ) 'Each building requires ' // & 3047 ! ' a type. i, j = ', i, j 3048 ! CALL message( 'netcdf_data_input_mod', 'PA0999', & 3049 ! 2, 2, 0, 6, 0 ) 3050 ! ENDIF 3051 ! ENDIF 3086 IF ( building_type_f%from_file .AND. buildings_f%from_file ) THEN 3087 IF ( buildings_f%lod == 1 ) THEN 3088 IF ( buildings_f%var_2d(j,i) /= buildings_f%fill1 .AND. & 3089 building_type_f%var(j,i) == building_type_f%fill ) THEN 3090 WRITE( message_string, * ) 'Each building requires ' // & 3091 'a type in case the ' // & 3092 'urban-surface model is ' // & 3093 'applied. i, j = ', i, j 3094 CALL message( 'netcdf_data_input_mod', 'PA0999', & 3095 2, 2, 0, 6, 0 ) 3096 ENDIF 3097 ENDIF 3098 IF ( buildings_f%lod == 2 ) THEN 3099 IF ( ANY( buildings_f%var_3d(:,j,i) == 1 ) & 3100 .AND. building_type_f%var(j,i) == building_type_f%fill ) THEN 3101 WRITE( message_string, * ) 'Each building requires ' // & 3102 'a type in case the ' // & 3103 'urban-surface model is ' // & 3104 'applied. i, j = ', i, j 3105 CALL message( 'netcdf_data_input_mod', 'PA0999', & 3106 2, 2, 0, 6, 0 ) 3107 ENDIF 3108 ENDIF 3109 ENDIF 3052 3110 ! 3053 3111 !-- Check albedo parameters. If albedo_type is 0, all parameters
Note: See TracChangeset
for help on using the changeset viewer.