Ignore:
Timestamp:
Mar 6, 2016 6:36:17 PM (8 years ago)
Author:
raasch
Message:

NetCDF routines modularized; new parameter netcdf_deflate; further changes in the pmc

File:
1 edited

Legend:

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

    r1780 r1783  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! netcdf variables moved to the netcdf-interface module
    2222!
    2323! Former revisions:
     
    614614                             return_addres, return_username, &
    615615                             timestep_scheme = 'runge-kutta-3'                             
    616     CHARACTER (LEN=40)   ::  avs_data_file, output_format_netcdf, &
    617                              topography = 'flat'
     616    CHARACTER (LEN=40)   ::  avs_data_file, topography = 'flat'
    618617    CHARACTER (LEN=64)   ::  host = ' '
    619618    CHARACTER (LEN=80)   ::  log_message, run_identifier
     
    629628    CHARACTER (LEN=20), DIMENSION(300) ::  data_output_pr = ' '
    630629    CHARACTER (LEN=20), DIMENSION(200) ::  data_output_pr_user = ' '
    631     CHARACTER (LEN=20), DIMENSION(11)  ::  netcdf_precision = ' '
    632 
    633630    CHARACTER (LEN=20), DIMENSION(max_masks,0:1,100) ::  domask = ' '
    634631    CHARACTER (LEN=20), DIMENSION(0:1,100) ::  do2d = ' ', do3d = ' '
     
    653650                     maximum_parallel_io_streams = -1, max_pr_user = 0, &
    654651                     mgcycles = 0, mg_cycles = -1, mg_switch_to_pe0_level = 0, mid, &
    655                      nlsf = 1000, ntnudge = 1000, netcdf_data_format = 2, ngsrb = 2, &
     652                     nlsf = 1000, ntnudge = 1000, ngsrb = 2, &
    656653                     nr_timesteps_this_run = 0, &
    657654                     nsor = 20, nsor_ini = 100, n_sor, normalizing_region = 0, &
     
    11531150
    11541151
    1155 !------------------------------------------------------------------------------!
    1156 ! Description:
    1157 ! ------------
    1158 !> Definition of parameters and variables for netcdf control.
    1159 !------------------------------------------------------------------------------!
    1160  MODULE netcdf_control
    1161 
    1162     USE control_parameters, ONLY: max_masks
    1163     USE kinds
    1164 #if defined( __netcdf )
    1165     USE netcdf
    1166 #endif
    1167 
    1168     INTEGER(iwp), PARAMETER ::  dopr_norm_num = 7, dopts_num = 29, dots_max = 100
    1169 
    1170     INTEGER(iwp) ::  dots_num = 23
    1171 
    1172     CHARACTER (LEN=6), DIMENSION(dopr_norm_num) ::  dopr_norm_names =          &
    1173          (/ 'wpt0  ', 'ws2   ', 'tsw2  ', 'ws3   ', 'ws2tsw', 'wstsw2',        &
    1174             'z_i   ' /)
    1175 
    1176     CHARACTER (LEN=6), DIMENSION(dopr_norm_num) ::  dopr_norm_longnames =      &
    1177          (/ 'wpt0  ', 'w*2   ', 't*w2  ', 'w*3   ', 'w*2t*w', 'w*t*w2',        &
    1178             'z_i   ' /)
    1179 
    1180     CHARACTER (LEN=7), DIMENSION(dopts_num) :: dopts_label =                   &
    1181           (/ 'tnpt   ', 'x_     ', 'y_     ', 'z_     ', 'z_abs  ', 'u      ', &
    1182              'v      ', 'w      ', 'u"     ', 'v"     ', 'w"     ', 'npt_up ', &
    1183              'w_up   ', 'w_down ', 'radius ', 'r_min  ', 'r_max  ', 'npt_max', &
    1184              'npt_min', 'x*2    ', 'y*2    ', 'z*2    ', 'u*2    ', 'v*2    ', &
    1185              'w*2    ', 'u"2    ', 'v"2    ', 'w"2    ', 'npt*2  ' /)
    1186 
    1187     CHARACTER (LEN=7), DIMENSION(dopts_num) :: dopts_unit =                    &
    1188           (/ 'number ', 'm      ', 'm      ', 'm      ', 'm      ', 'm/s    ', &
    1189              'm/s    ', 'm/s    ', 'm/s    ', 'm/s    ', 'm/s    ', 'number ', &
    1190              'm/s    ', 'm/s    ', 'm      ', 'm      ', 'm      ', 'number ', &
    1191              'number ', 'm2     ', 'm2     ', 'm2     ', 'm2/s2  ', 'm2/s2  ', &
    1192              'm2/s2  ', 'm2/s2  ', 'm2/s2  ', 'm2/s2  ', 'number2' /)
    1193 
    1194     CHARACTER (LEN=13), DIMENSION(dots_max) :: dots_label =                    &
    1195           (/ 'E            ', 'E*           ', 'dt           ',                &
    1196              'u*           ', 'th*          ', 'umax         ',                &
    1197              'vmax         ', 'wmax         ', 'div_new      ',                &
    1198              'div_old      ', 'z_i_wpt      ', 'z_i_pt       ',                &
    1199              'w*           ', 'w"pt"0       ', 'w"pt"        ',                &
    1200              'wpt          ', 'pt(0)        ', 'pt(z_mo)     ',                &
    1201              'w"u"0        ', 'w"v"0        ', 'w"q"0        ',                &
    1202              'ol           ', 'q*           ',                                 &
    1203              ( 'unknown      ', i9 = 1, dots_max-23 ) /)
    1204 
    1205     CHARACTER (LEN=13), DIMENSION(dots_max) :: dots_unit =                     &
    1206           (/ 'm2/s2        ', 'm2/s2        ', 's            ',                &
    1207              'm/s          ', 'K            ', 'm/s          ',                &
    1208              'm/s          ', 'm/s          ', 's-1          ',                &
    1209              's-1          ', 'm            ', 'm            ',                &
    1210              'm/s          ', 'K m/s        ', 'K m/s        ',                &
    1211              'K m/s        ', 'K            ', 'K            ',                &
    1212              'm2/s2        ', 'm2/s2        ', 'kg m/s       ',                &
    1213              'm            ', 'kg/kg        ',                                 &
    1214              ( 'unknown      ', i9 = 1, dots_max-23 ) /)
    1215 
    1216     CHARACTER (LEN=9), DIMENSION(300) ::  dopr_unit = 'unknown'
    1217 
    1218     CHARACTER (LEN=7), DIMENSION(0:1,100) ::  do2d_unit, do3d_unit
    1219 
    1220     CHARACTER (LEN=16), DIMENSION(25) ::  prt_var_names = &
    1221           (/ 'pt_age          ', 'pt_dvrp_size    ', 'pt_origin_x     ', &
    1222              'pt_origin_y     ', 'pt_origin_z     ', 'pt_radius       ', &
    1223              'pt_speed_x      ', 'pt_speed_y      ', 'pt_speed_z      ', &
    1224              'pt_weight_factor', 'pt_x            ', 'pt_y            ', &
    1225              'pt_z            ', 'pt_color        ', 'pt_group        ', &
    1226              'pt_tailpoints   ', 'pt_tail_id      ', 'pt_density_ratio', &
    1227              'pt_exp_arg      ', 'pt_exp_term     ', 'not_used        ', &
    1228              'not_used        ', 'not_used        ', 'not_used        ', &
    1229              'not_used        ' /)
    1230 
    1231     CHARACTER (LEN=16), DIMENSION(25) ::  prt_var_units = &
    1232           (/ 'seconds         ', 'meters          ', 'meters          ', &
    1233              'meters          ', 'meters          ', 'meters          ', &
    1234              'm/s             ', 'm/s             ', 'm/s             ', &
    1235              'factor          ', 'meters          ', 'meters          ', &
    1236              'meters          ', 'none            ', 'none            ', &
    1237              'none            ', 'none            ', 'ratio           ', &
    1238              'none            ', 'none            ', 'not_used        ', &
    1239              'not_used        ', 'not_used        ', 'not_used        ', &
    1240              'not_used        ' /)
    1241 
    1242     INTEGER(iwp) ::  id_dim_prtnum, id_dim_time_pr, id_dim_time_prt, &
    1243                      id_dim_time_pts, id_dim_time_sp, id_dim_time_ts, id_dim_x_sp, &
    1244                      id_dim_y_sp, id_dim_zu_sp, id_dim_zw_sp, id_set_pr, &
    1245                      id_set_prt, id_set_pts, id_set_sp, id_set_ts, id_var_prtnum, &
    1246                      id_var_rnop_prt, id_var_time_pr, id_var_time_prt, &
    1247                      id_var_time_pts, id_var_time_sp, id_var_time_ts, id_var_x_sp, &
    1248                      id_var_y_sp, id_var_zu_sp, id_var_zw_sp, nc_stat
    1249 
    1250     INTEGER(iwp), DIMENSION(0:1) ::  id_dim_time_xy, id_dim_time_xz, &
    1251                     id_dim_time_yz, id_dim_time_3d, id_dim_x_xy, id_dim_xu_xy, &
    1252                     id_dim_x_xz, id_dim_xu_xz, id_dim_x_yz, id_dim_xu_yz, &
    1253                     id_dim_x_3d, id_dim_xu_3d, id_dim_y_xy, id_dim_yv_xy, &
    1254                     id_dim_y_xz, id_dim_yv_xz, id_dim_y_yz, id_dim_yv_yz, &
    1255                     id_dim_y_3d, id_dim_yv_3d, id_dim_zu_xy, id_dim_zu1_xy, &
    1256                     id_dim_zu_xz, id_dim_zu_yz, id_dim_zu_3d, id_dim_zw_xy, &
    1257                     id_dim_zw_xz, id_dim_zw_yz, id_dim_zw_3d, id_set_xy, &
    1258                     id_set_xz, id_set_yz, id_set_3d, id_var_ind_x_yz, &
    1259                     id_var_ind_y_xz, id_var_ind_z_xy, id_var_time_xy, &
    1260                     id_var_time_xz, id_var_time_yz, id_var_time_3d, id_var_x_xy, &
    1261                     id_var_xu_xy, id_var_x_xz, id_var_xu_xz, id_var_x_yz, &
    1262                     id_var_xu_yz, id_var_x_3d, id_var_xu_3d, id_var_y_xy, &
    1263                     id_var_yv_xy, id_var_y_xz, id_var_yv_xz, id_var_y_yz, &
    1264                     id_var_yv_yz, id_var_y_3d, id_var_yv_3d, id_var_zusi_xy, &
    1265                     id_var_zusi_3d, id_var_zu_xy, id_var_zu1_xy, id_var_zu_xz, &
    1266                     id_var_zu_yz, id_var_zu_3d, id_var_zwwi_xy, id_var_zwwi_3d, &
    1267                     id_var_zw_xy, id_var_zw_xz, id_var_zw_yz, id_var_zw_3d
    1268 
    1269     INTEGER(iwp), DIMENSION(10)  ::  id_var_dospx, id_var_dospy
    1270     INTEGER(iwp), DIMENSION(20)  ::  id_var_prt
    1271     INTEGER(iwp), DIMENSION(11)  ::  nc_precision
    1272     INTEGER(iwp), DIMENSION(dopr_norm_num) ::  id_var_norm_dopr
    1273 
    1274     INTEGER(iwp), DIMENSION(dopts_num,0:10) ::  id_var_dopts
    1275     INTEGER(iwp), DIMENSION(0:1,100)        ::  id_var_do2d, id_var_do3d
    1276     INTEGER(iwp), DIMENSION(100,0:9)        ::  id_dim_z_pr, id_var_dopr, &
    1277                                                id_var_z_pr
    1278     INTEGER(iwp), DIMENSION(dots_max,0:9)   ::  id_var_dots
    1279 
    1280 !
    1281 !-- masked output
    1282     CHARACTER (LEN=7), DIMENSION(max_masks,0:1,100) ::  domask_unit
    1283 
    1284     LOGICAL ::  output_for_t0 = .FALSE.
    1285 
    1286     INTEGER(iwp), DIMENSION(1:max_masks,0:1) ::  id_dim_time_mask, id_dim_x_mask, &
    1287                    id_dim_xu_mask, id_dim_y_mask, id_dim_yv_mask, id_dim_zu_mask, &
    1288                    id_dim_zw_mask, &
    1289                    id_set_mask, &
    1290                    id_var_time_mask, id_var_x_mask, id_var_xu_mask, &
    1291                    id_var_y_mask, id_var_yv_mask, id_var_zu_mask, id_var_zw_mask, &
    1292                    id_var_zusi_mask, id_var_zwwi_mask
    1293 
    1294     INTEGER(iwp), DIMENSION(1:max_masks,0:1,100)         ::  id_var_domask
    1295 
    1296     SAVE
    1297 
    1298  END MODULE netcdf_control
    12991152
    13001153
Note: See TracChangeset for help on using the changeset viewer.