Ignore:
Timestamp:
Feb 8, 2019 4:53:32 PM (6 years ago)
Author:
gronemeier
Message:

bugfix: initialize return values to ensure they are set before returning (routine define_geo_coordinates); change order of dimensions for some variables

File:
1 edited

Legend:

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

    r3727 r3729  
    2525! -----------------
    2626! $Id$
     27! Bugfix: - initialize return values to ensure they are set before returning
     28!           (routine define_geo_coordinates)
     29!         - change order of dimensions for some variables
     30!
     31! 3727 2019-02-08 14:52:10Z gronemeier
    2732! make several routines publicly available
    2833!
     
    511516                    id_var_zw_xy, id_var_zw_xz, id_var_zw_yz, id_var_zw_3d
    512517
    513     INTEGER(iwp), DIMENSION(0:1,0:2) ::  id_var_eutm_3d, id_var_nutm_3d, &
     518    INTEGER(iwp), DIMENSION(0:2,0:1) ::  id_var_eutm_3d, id_var_nutm_3d, &
    514519                                         id_var_eutm_xy, id_var_nutm_xy, &
    515520                                         id_var_eutm_xz, id_var_nutm_xz, &
    516521                                         id_var_eutm_yz, id_var_nutm_yz
    517522
    518     INTEGER(iwp), DIMENSION(0:1,0:2) ::  id_var_lat_3d, id_var_lon_3d, &
     523    INTEGER(iwp), DIMENSION(0:2,0:1) ::  id_var_lat_3d, id_var_lon_3d, &
    519524                                         id_var_lat_xy, id_var_lon_xy, &
    520525                                         id_var_lat_xz, id_var_lon_xz, &
     
    564569                   id_var_zusi_mask, id_var_zwwi_mask
    565570
    566     INTEGER(iwp), DIMENSION(1:max_masks,0:1,0:2) ::  id_var_eutm_mask, &
     571    INTEGER(iwp), DIMENSION(0:2,1:max_masks,0:1) ::  id_var_eutm_mask, &
    567572                                                     id_var_nutm_mask
    568573
    569     INTEGER(iwp), DIMENSION(1:max_masks,0:1,0:2) ::  id_var_lat_mask, &
     574    INTEGER(iwp), DIMENSION(0:2,1:max_masks,0:1) ::  id_var_lat_mask, &
    570575                                                     id_var_lon_mask
    571576
     
    10291034                  (/ id_dim_x_mask(mid,av), id_dim_xu_mask(mid,av) /),    &
    10301035                  (/ id_dim_y_mask(mid,av), id_dim_yv_mask(mid,av) /),    &
    1031                   id_var_eutm_mask(mid,av,:), id_var_nutm_mask(mid,av,:), &
    1032                   id_var_lat_mask(mid,av,:), id_var_lon_mask(mid,av,:)    )
     1036                  id_var_eutm_mask(:,mid,av), id_var_nutm_mask(:,mid,av), &
     1037                  id_var_lat_mask(:,mid,av), id_var_lon_mask(:,mid,av)    )
    10331038!
    10341039!--       Define coordinate-reference system
     
    13031308
    13041309                nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), &
    1305                                         id_var_eutm_mask(mid,av,k), &
     1310                                        id_var_eutm_mask(k,mid,av), &
    13061311                                        netcdf_data, start = (/ 1 /), &
    13071312                                        count = (/ mask_size(mid,1) /) )
     
    13321337
    13331338                nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), &
    1334                                         id_var_nutm_mask(mid,av,k), &
     1339                                        id_var_nutm_mask(k,mid,av), &
    13351340                                        netcdf_data, start = (/ 1 /), &
    13361341                                        count = (/ mask_size(mid,2) /) )
     
    13711376
    13721377               nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), &
    1373                                        id_var_eutm_mask(mid,av,k), &
     1378                                       id_var_eutm_mask(k,mid,av), &
    13741379                                       netcdf_data_2d, start = (/ 1, 1 /), &
    13751380                                       count = (/ mask_size(mid,1), &
     
    13861391             
    13871392               nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), &
    1388                                        id_var_nutm_mask(mid,av,k), &
     1393                                       id_var_nutm_mask(k,mid,av), &
    13891394                                       netcdf_data_2d, start = (/ 1, 1 /), &
    13901395                                       count = (/ mask_size(mid,1), &
     
    14331438
    14341439             nc_stat = NF90_PUT_VAR( id_set_mask(mid,av),           &
    1435                                      id_var_lon_mask(mid,av,k),     &
     1440                                     id_var_lon_mask(k,mid,av),     &
    14361441                                     lon, start = (/ 1, 1 /),       &
    14371442                                     count = (/ mask_size(mid,1),   &
     
    14401445
    14411446             nc_stat = NF90_PUT_VAR( id_set_mask(mid,av),           &
    1442                                      id_var_lat_mask(mid,av,k),     &
     1447                                     id_var_lat_mask(k,mid,av),     &
    14431448                                     lat, start = (/ 1, 1 /),       &
    14441449                                     count = (/ mask_size(mid,1),   &
     
    17781783                  (/ id_dim_x_3d(av), id_dim_xu_3d(av) /),    &
    17791784                  (/ id_dim_y_3d(av), id_dim_yv_3d(av) /),    &
    1780                   id_var_eutm_3d(av,:), id_var_nutm_3d(av,:), &
    1781                   id_var_lat_3d(av,:), id_var_lon_3d(av,:)    )
     1785                  id_var_eutm_3d(:,av), id_var_nutm_3d(:,av), &
     1786                  id_var_lat_3d(:,av), id_var_lon_3d(:,av)    )
    17821787!
    17831788!--       Define coordinate-reference system
     
    20982103                   ENDDO
    20992104               
    2100                    nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_eutm_3d(av,k),&
     2105                   nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_eutm_3d(k,av),&
    21012106                                           netcdf_data, start = (/ 1 /),   &
    21022107                                           count = (/ nx+1 /) )
     
    21282133                   ENDDO
    21292134
    2130                    nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_nutm_3d(av,k),&
     2135                   nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_nutm_3d(k,av),&
    21312136                                           netcdf_data, start = (/ 1 /),   &
    21322137                                           count = (/ ny+1 /) )
     
    21662171                  ENDDO
    21672172               
    2168                   nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_eutm_3d(av,k),  &
     2173                  nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_eutm_3d(k,av),  &
    21692174                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    21702175                                          count = (/ nx+1, ny+1 /) )
     
    21792184                  ENDDO
    21802185               
    2181                   nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_nutm_3d(av,k),  &
     2186                  nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_nutm_3d(k,av),  &
    21822187                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    21832188                                          count = (/ nx+1, ny+1 /) )
     
    22492254                ENDDO
    22502255
    2251                 nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_lon_3d(av,k), &
     2256                nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_lon_3d(k,av), &
    22522257                                     lon, start = (/ nxl+1, nys+1 /),       &
    22532258                                     count = (/ nxr-nxl+1, nyn-nys+1 /) )
    22542259                CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    22552260
    2256                 nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_lat_3d(av,k), &
     2261                nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_lat_3d(k,av), &
    22572262                                     lat, start = (/ nxl+1, nys+1 /),       &
    22582263                                     count = (/ nxr-nxl+1, nyn-nys+1 /) )
     
    27602765                  (/ id_dim_x_xy(av), id_dim_xu_xy(av) /),    &
    27612766                  (/ id_dim_y_xy(av), id_dim_yv_xy(av) /),    &
    2762                   id_var_eutm_xy(av,:), id_var_nutm_xy(av,:), &
    2763                   id_var_lat_xy(av,:), id_var_lon_xy(av,:)    )
     2767                  id_var_eutm_xy(:,av), id_var_nutm_xy(:,av), &
     2768                  id_var_lat_xy(:,av), id_var_lon_xy(:,av)    )
    27642769!
    27652770!--       Define coordinate-reference system
     
    31543159                   ENDDO
    31553160               
    3156                    nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_eutm_xy(av,k),&
     3161                   nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_eutm_xy(k,av),&
    31573162                                           netcdf_data, start = (/ 1 /),   &
    31583163                                           count = (/ nx+1 /) )
     
    31843189                   ENDDO
    31853190
    3186                    nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_nutm_xy(av,k),&
     3191                   nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_nutm_xy(k,av),&
    31873192                                           netcdf_data, start = (/ 1 /),   &
    31883193                                           count = (/ ny+1 /) )
     
    32223227                  ENDDO
    32233228               
    3224                   nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_eutm_xy(av,k),  &
     3229                  nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_eutm_xy(k,av),  &
    32253230                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    32263231                                          count = (/ nx+1, ny+1 /) )
     
    32353240                  ENDDO
    32363241               
    3237                   nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_nutm_xy(av,k),  &
     3242                  nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_nutm_xy(k,av),  &
    32383243                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    32393244                                          count = (/ nx+1, ny+1 /) )
     
    32843289                ENDDO
    32853290
    3286                 nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_lon_xy(av,k), &
     3291                nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_lon_xy(k,av), &
    32873292                                     lon, start = (/ nxl+1, nys+1 /),       &
    32883293                                     count = (/ nxr-nxl+1, nyn-nys+1 /) )
    32893294                CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    32903295
    3291                 nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_lat_xy(av,k), &
     3296                nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_lat_xy(k,av), &
    32923297                                     lat, start = (/ nxl+1, nys+1 /),       &
    32933298                                     count = (/ nxr-nxl+1, nyn-nys+1 /) )
     
    36873692                  (/ id_dim_x_xz(av), id_dim_xu_xz(av) /),    &
    36883693                  (/ id_dim_y_xz(av), id_dim_yv_xz(av) /),    &
    3689                   id_var_eutm_xz(av,:), id_var_nutm_xz(av,:), &
    3690                   id_var_lat_xz(av,:), id_var_lon_xz(av,:)    )
     3694                  id_var_eutm_xz(:,av), id_var_nutm_xz(:,av), &
     3695                  id_var_lat_xz(:,av), id_var_lon_xz(:,av)    )
    36913696!
    36923697!--       Define coordinate-reference system
     
    40354040                   ENDDO
    40364041               
    4037                    nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_eutm_xz(av,k),&
     4042                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_eutm_xz(k,av),&
    40384043                                           netcdf_data, start = (/ 1 /),   &
    40394044                                           count = (/ nx+1 /) )
     
    40694074                   ENDDO
    40704075
    4071                    nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_nutm_xz(av,k),&
     4076                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_nutm_xz(k,av),&
    40724077                                           netcdf_data, start = (/ 1 /),   &
    40734078                                           count = (/ ns /) )
     
    41114116                   ENDDO
    41124117                   
    4113                    nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_eutm_xz(av,k),  &
     4118                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_eutm_xz(k,av),  &
    41144119                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    41154120                                           count = (/ nx+1, ns /) )
     
    41284133                   ENDDO
    41294134                   
    4130                    nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_nutm_xz(av,k),  &
     4135                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_nutm_xz(k,av),  &
    41314136                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    41324137                                           count = (/ nx+1, ns /) )
     
    41784183                ENDDO
    41794184
    4180                 nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_lon_xz(av,k), &
     4185                nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_lon_xz(k,av), &
    41814186                                     lon, start = (/ 1, 1 /),       &
    41824187                                     count = (/ nx+1, ns /) )
    41834188                CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    41844189
    4185                 nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_lat_xz(av,k), &
     4190                nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_lat_xz(k,av), &
    41864191                                     lat, start = (/ 1, 1 /),       &
    41874192                                     count = (/ nx+1, ns /) )
     
    45464551                  (/ id_dim_x_yz(av), id_dim_xu_yz(av) /),    &
    45474552                  (/ id_dim_y_yz(av), id_dim_yv_yz(av) /),    &
    4548                   id_var_eutm_yz(av,:), id_var_nutm_yz(av,:), &
    4549                   id_var_lat_yz(av,:), id_var_lon_yz(av,:)    )
     4553                  id_var_eutm_yz(:,av), id_var_nutm_yz(:,av), &
     4554                  id_var_lat_yz(:,av), id_var_lon_yz(:,av)    )
    45504555!
    45514556!--       Define coordinate-reference system
     
    48844889                   ENDDO
    48854890               
    4886                    nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_eutm_yz(av,k),&
     4891                   nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_eutm_yz(k,av),&
    48874892                                           netcdf_data, start = (/ 1 /),   &
    48884893                                           count = (/ ns /) )
     
    49144919                   ENDDO
    49154920
    4916                    nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_nutm_yz(av,k),&
     4921                   nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_nutm_yz(k,av),&
    49174922                                           netcdf_data, start = (/ 1 /),   &
    49184923                                           count = (/ ny+1 /) )
     
    49564961                   ENDDO
    49574962                   
    4958                    nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_eutm_yz(av,k),  &
     4963                   nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_eutm_yz(k,av),  &
    49594964                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    49604965                                           count = (/ ns, ny+1 /) )
     
    49734978                   ENDDO
    49744979
    4975                    nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_nutm_yz(av,k),  &
     4980                   nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_nutm_yz(k,av),  &
    49764981                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    49774982                                           count = (/ ns, ny+1 /) )
     
    50235028                ENDDO
    50245029
    5025                 nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_lon_yz(av,k), &
     5030                nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_lon_yz(k,av), &
    50265031                                     lon, start = (/ 1, 1 /),       &
    50275032                                     count = (/ ns, ny+1 /) )
    50285033                CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    50295034
    5030                 nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_lat_yz(av,k), &
     5035                nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_lat_yz(k,av), &
    50315036                                     lat, start = (/ 1, 1 /),       &
    50325037                                     count = (/ ns, ny+1 /) )
     
    72347239    INTEGER(iwp), DIMENSION(0:2), INTENT(OUT) ::  id_var_nutm  !< variable id for N_UTM coordinates
    72357240
     7241!
     7242!-- Initialize return values
     7243    id_var_lat  = -1
     7244    id_var_lon  = -1
     7245    id_var_eutm = -1
     7246    id_var_nutm = -1
     7247
    72367248#if defined( __netcdf )
    7237 
    72387249!
    72397250!-- Define UTM coordinates
Note: See TracChangeset for help on using the changeset viewer.