Ignore:
Timestamp:
Dec 4, 2009 5:05:40 PM (14 years ago)
Author:
letzel
Message:
  • reintegrate branch letzel/masked_output into trunk; new funtionality: masked data output (not yet documented)
Location:
palm/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

    • Property svn:mergeinfo set to False
      /palm/branches/letzel/masked_output296-409
  • palm/trunk/SOURCE/modules.f90

    r405 r410  
    88! initial data assignments to some dvrp arrays changed due to error messages
    99! from gfortran compiler
     10!
     11! Branch revisions:
     12! -----------------
     13! Masked data output: + dt_domask, mask_01~20_x|y|z, mask_01~20_x|y|z_loop,
     14! mask_scale|_x|y|z, masks, netcdf_format_mask[_av], skip_time_domask
    1015!
    1116! Former revisions:
     
    281286    TYPE(file_status), DIMENSION(200) :: openfile = file_status(.FALSE.,.FALSE.)
    282287
     288
     289    INTEGER, PARAMETER :: mask_xyz_dimension = 100, max_masks = 20
    283290
    284291    CHARACTER (LEN=1)    ::  cycle_mg = 'w', timestep_reason = ' '
     
    322329    CHARACTER (LEN=11), DIMENSION(100) ::  data_output = ' ',    &
    323330                                           data_output_user = ' ', doav = ' '
     331    CHARACTER (LEN=10), DIMENSION(100) ::  &
     332         data_output_mask_01      = ' ', data_output_mask_02      = ' ',  &
     333         data_output_mask_03      = ' ', data_output_mask_04      = ' ',  &
     334         data_output_mask_05      = ' ', data_output_mask_06      = ' ',  &
     335         data_output_mask_07      = ' ', data_output_mask_08      = ' ',  &
     336         data_output_mask_09      = ' ', data_output_mask_10      = ' ',  &
     337         data_output_mask_11      = ' ', data_output_mask_12      = ' ',  &
     338         data_output_mask_13      = ' ', data_output_mask_14      = ' ',  &
     339         data_output_mask_15      = ' ', data_output_mask_16      = ' ',  &
     340         data_output_mask_17      = ' ', data_output_mask_18      = ' ',  &
     341         data_output_mask_19      = ' ', data_output_mask_20      = ' ',  &
     342         data_output_mask_user_01 = ' ', data_output_mask_user_02 = ' ',  &
     343         data_output_mask_user_03 = ' ', data_output_mask_user_04 = ' ',  &
     344         data_output_mask_user_05 = ' ', data_output_mask_user_06 = ' ',  &
     345         data_output_mask_user_07 = ' ', data_output_mask_user_08 = ' ',  &
     346         data_output_mask_user_09 = ' ', data_output_mask_user_10 = ' ',  &
     347         data_output_mask_user_11 = ' ', data_output_mask_user_12 = ' ',  &
     348         data_output_mask_user_13 = ' ', data_output_mask_user_14 = ' ',  &
     349         data_output_mask_user_15 = ' ', data_output_mask_user_16 = ' ',  &
     350         data_output_mask_user_17 = ' ', data_output_mask_user_18 = ' ',  &
     351         data_output_mask_user_19 = ' ', data_output_mask_user_20 = ' '
     352
    324353    CHARACTER (LEN=10), DIMENSION(300) ::  data_output_pr = ' '
    325354    CHARACTER (LEN=10), DIMENSION(200) ::  data_output_pr_user = ' '
    326     CHARACTER (LEN=20), DIMENSION(10)  ::  netcdf_precision = ' '
    327 
     355    CHARACTER (LEN=20), DIMENSION(50)  ::  netcdf_precision = ' '
     356
     357    CHARACTER (LEN=10), DIMENSION(max_masks,0:1,100) ::  domask = ' '
    328358    CHARACTER (LEN=10), DIMENSION(0:1,100) ::  do2d = ' ', do3d = ' '
    329359
     
    341371                inflow_disturbance_begin = -1, inflow_disturbance_end = -1, &
    342372                intermediate_timestep_count, intermediate_timestep_count_max, &
    343                 iran = -1234567, last_dt_change = 0, maximum_grid_level, &
     373                iran = -1234567, last_dt_change = 0, masks = 0, &
     374                maximum_grid_level, &
    344375                max_pr_user = 0, mgcycles = 0, mg_cycles = -1, &
    345                 mg_switch_to_pe0_level = 0, ngsrb = 2, nsor = 20, &
     376                mg_switch_to_pe0_level = 0, mid, ngsrb = 2, nsor = 20, &
    346377                nsor_ini = 100, n_sor, normalizing_region = 0, &
    347378                nz_do1d, nz_do3d = -9999, outflow_damping_width = -1, &
     
    354385                do2d_xz_time_count(0:1), do2d_yz_time_count(0:1), &
    355386                do3d_no(0:1) = 0, do3d_time_count(0:1), &
     387                domask_no(max_masks,0:1) = 0, domask_time_count(max_masks,0:1),&
    356388                lad_vertical_gradient_level_ind(10) = -9999, &
     389                mask_size(max_masks,3) = -1, mask_size_l(max_masks,3) = -1, &
     390                mask_start_l(max_masks,3) = -1, &
     391                nc_format_mask(1:max_masks,0:1), &
     392                netcdf_format_mask(1:max_masks) = 1, &
     393                netcdf_format_mask_av(1:max_masks) = 1, &
    357394                pt_vertical_gradient_level_ind(10) = -9999, &
    358395                q_vertical_gradient_level_ind(10) = -9999, &
     
    364401
    365402    INTEGER, DIMENSION(:), ALLOCATABLE ::  grid_level_count
     403
     404    INTEGER, DIMENSION(:,:), ALLOCATABLE   ::  mask_i, mask_j, mask_k
     405    INTEGER, DIMENSION(:,:), ALLOCATABLE   ::  &
     406                mask_i_global, mask_j_global, mask_k_global
    366407
    367408    LOGICAL ::  adjust_mixing_length = .FALSE., avs_output = .FALSE., &
     
    381422                disturbance_created = .FALSE., &
    382423                first_call_advec_particles = .TRUE., &
    383                 force_print_header = .FALSE., galilei_transformation = .FALSE.,&
     424                force_print_header = .FALSE., format_parallel_io = .FALSE., &
     425                galilei_transformation = .FALSE.,&
    384426                humidity = .FALSE., humidity_remote = .FALSE., &
    385427                inflow_l = .FALSE., inflow_n = .FALSE., &
     
    439481             km_damp_max = -1.0, lad_surface = 0.0,  &
    440482             leaf_surface_concentration = 0.0, long_filter_factor = 0.0, &
    441              maximum_cpu_time_allowed = 0.0, molecular_viscosity = 1.461E-5, &
     483             mask_scale_x = 1.0, mask_scale_y = 1.0, mask_scale_z = 1.0, &
     484             maximum_cpu_time_allowed = 0.0,  &
     485             molecular_viscosity = 1.461E-5, &
    442486             old_dt = 1.0E-10, omega = 7.29212E-5, omega_sor = 1.8, &
    443487             overshoot_limit_e = 0.0, overshoot_limit_pt = 0.0, &
     
    480524    REAL ::  do2d_xy_last_time(0:1) = -1.0, do2d_xz_last_time(0:1) = -1.0, &
    481525             do2d_yz_last_time(0:1) = -1.0, dpdxy(1:2) = 0.0, &
    482              lad_vertical_gradient(10) = 0.0, &
     526             dt_domask(max_masks) = 9999999.9, lad_vertical_gradient(10) = 0.0,&
    483527             lad_vertical_gradient_level(10) = -9999999.9, &
     528             mask_scale(3), &
    484529             pt_vertical_gradient(10) = 0.0, &
    485530             pt_vertical_gradient_level(10) = -9999999.9, &
     
    489534             s_vertical_gradient_level(10) = -1.0, &
    490535             sa_vertical_gradient(10) = 0.0, &
    491              sa_vertical_gradient_level(10) = -9999999.9, threshold(20) = 0.0, &
     536             sa_vertical_gradient_level(10) = -9999999.9, &
     537             skip_time_domask(max_masks) = 9999999.9, threshold(20) = 0.0, &
     538             time_domask(max_masks) = 0.0, &
    492539             tsc(10) = (/ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /), &
    493540             ug_vertical_gradient(10) = 0.0, &
     
    502549    REAL, DIMENSION(:), ALLOCATABLE ::  dp_smooth_factor
    503550
     551    REAL, DIMENSION(mask_xyz_dimension) ::  &
     552       mask_01_x = -1.0, mask_02_x = -1.0, mask_03_x = -1.0, mask_04_x = -1.0, &
     553       mask_05_x = -1.0, mask_06_x = -1.0, mask_07_x = -1.0, mask_08_x = -1.0, &
     554       mask_09_x = -1.0, mask_10_x = -1.0, mask_11_x = -1.0, mask_12_x = -1.0, &
     555       mask_13_x = -1.0, mask_14_x = -1.0, mask_15_x = -1.0, mask_16_x = -1.0, &
     556       mask_17_x = -1.0, mask_18_x = -1.0, mask_19_x = -1.0, mask_20_x = -1.0, &
     557       mask_01_y = -1.0, mask_02_y = -1.0, mask_03_y = -1.0, mask_04_y = -1.0, &
     558       mask_05_y = -1.0, mask_06_y = -1.0, mask_07_y = -1.0, mask_08_y = -1.0, &
     559       mask_09_y = -1.0, mask_10_y = -1.0, mask_11_y = -1.0, mask_12_y = -1.0, &
     560       mask_13_y = -1.0, mask_14_y = -1.0, mask_15_y = -1.0, mask_16_y = -1.0, &
     561       mask_17_y = -1.0, mask_18_y = -1.0, mask_19_y = -1.0, mask_20_y = -1.0, &
     562       mask_01_z = -1.0, mask_02_z = -1.0, mask_03_z = -1.0, mask_04_z = -1.0, &
     563       mask_05_z = -1.0, mask_06_z = -1.0, mask_07_z = -1.0, mask_08_z = -1.0, &
     564       mask_09_z = -1.0, mask_10_z = -1.0, mask_11_z = -1.0, mask_12_z = -1.0, &
     565       mask_13_z = -1.0, mask_14_z = -1.0, mask_15_z = -1.0, mask_16_z = -1.0, &
     566       mask_17_z = -1.0, mask_18_z = -1.0, mask_19_z = -1.0, mask_20_z = -1.0
     567    REAL, DIMENSION(3) ::  &
     568       mask_01_x_loop = (/ -1.0, -1.0, 0.0 /), &
     569       mask_02_x_loop = (/ -1.0, -1.0, 0.0 /), &
     570       mask_03_x_loop = (/ -1.0, -1.0, 0.0 /), &
     571       mask_04_x_loop = (/ -1.0, -1.0, 0.0 /), &
     572       mask_05_x_loop = (/ -1.0, -1.0, 0.0 /), &
     573       mask_06_x_loop = (/ -1.0, -1.0, 0.0 /), &
     574       mask_07_x_loop = (/ -1.0, -1.0, 0.0 /), &
     575       mask_08_x_loop = (/ -1.0, -1.0, 0.0 /), &
     576       mask_09_x_loop = (/ -1.0, -1.0, 0.0 /), &
     577       mask_10_x_loop = (/ -1.0, -1.0, 0.0 /), &
     578       mask_11_x_loop = (/ -1.0, -1.0, 0.0 /), &
     579       mask_12_x_loop = (/ -1.0, -1.0, 0.0 /), &
     580       mask_13_x_loop = (/ -1.0, -1.0, 0.0 /), &
     581       mask_14_x_loop = (/ -1.0, -1.0, 0.0 /), &
     582       mask_15_x_loop = (/ -1.0, -1.0, 0.0 /), &
     583       mask_16_x_loop = (/ -1.0, -1.0, 0.0 /), &
     584       mask_17_x_loop = (/ -1.0, -1.0, 0.0 /), &
     585       mask_18_x_loop = (/ -1.0, -1.0, 0.0 /), &
     586       mask_19_x_loop = (/ -1.0, -1.0, 0.0 /), &
     587       mask_20_x_loop = (/ -1.0, -1.0, 0.0 /), &
     588       mask_01_y_loop = (/ -1.0, -1.0, 0.0 /), &
     589       mask_02_y_loop = (/ -1.0, -1.0, 0.0 /), &
     590       mask_03_y_loop = (/ -1.0, -1.0, 0.0 /), &
     591       mask_04_y_loop = (/ -1.0, -1.0, 0.0 /), &
     592       mask_05_y_loop = (/ -1.0, -1.0, 0.0 /), &
     593       mask_06_y_loop = (/ -1.0, -1.0, 0.0 /), &
     594       mask_07_y_loop = (/ -1.0, -1.0, 0.0 /), &
     595       mask_08_y_loop = (/ -1.0, -1.0, 0.0 /), &
     596       mask_09_y_loop = (/ -1.0, -1.0, 0.0 /), &
     597       mask_10_y_loop = (/ -1.0, -1.0, 0.0 /), &
     598       mask_11_y_loop = (/ -1.0, -1.0, 0.0 /), &
     599       mask_12_y_loop = (/ -1.0, -1.0, 0.0 /), &
     600       mask_13_y_loop = (/ -1.0, -1.0, 0.0 /), &
     601       mask_14_y_loop = (/ -1.0, -1.0, 0.0 /), &
     602       mask_15_y_loop = (/ -1.0, -1.0, 0.0 /), &
     603       mask_16_y_loop = (/ -1.0, -1.0, 0.0 /), &
     604       mask_17_y_loop = (/ -1.0, -1.0, 0.0 /), &
     605       mask_18_y_loop = (/ -1.0, -1.0, 0.0 /), &
     606       mask_19_y_loop = (/ -1.0, -1.0, 0.0 /), &
     607       mask_20_y_loop = (/ -1.0, -1.0, 0.0 /), &
     608       mask_01_z_loop = (/ -1.0, -1.0, 0.0 /), &
     609       mask_02_z_loop = (/ -1.0, -1.0, 0.0 /), &
     610       mask_03_z_loop = (/ -1.0, -1.0, 0.0 /), &
     611       mask_04_z_loop = (/ -1.0, -1.0, 0.0 /), &
     612       mask_05_z_loop = (/ -1.0, -1.0, 0.0 /), &
     613       mask_06_z_loop = (/ -1.0, -1.0, 0.0 /), &
     614       mask_07_z_loop = (/ -1.0, -1.0, 0.0 /), &
     615       mask_08_z_loop = (/ -1.0, -1.0, 0.0 /), &
     616       mask_09_z_loop = (/ -1.0, -1.0, 0.0 /), &
     617       mask_10_z_loop = (/ -1.0, -1.0, 0.0 /), &
     618       mask_11_z_loop = (/ -1.0, -1.0, 0.0 /), &
     619       mask_12_z_loop = (/ -1.0, -1.0, 0.0 /), &
     620       mask_13_z_loop = (/ -1.0, -1.0, 0.0 /), &
     621       mask_14_z_loop = (/ -1.0, -1.0, 0.0 /), &
     622       mask_15_z_loop = (/ -1.0, -1.0, 0.0 /), &
     623       mask_16_z_loop = (/ -1.0, -1.0, 0.0 /), &
     624       mask_17_z_loop = (/ -1.0, -1.0, 0.0 /), &
     625       mask_18_z_loop = (/ -1.0, -1.0, 0.0 /), &
     626       mask_19_z_loop = (/ -1.0, -1.0, 0.0 /), &
     627       mask_20_z_loop = (/ -1.0, -1.0, 0.0 /)
     628!
     629!--    internal mask arrays ("mask,dimension,selection")
     630       REAL, DIMENSION(:,:,:), ALLOCATABLE ::  mask, mask_loop
    504631
    505632    SAVE
     
    832959!------------------------------------------------------------------------------!
    833960
     961    USE control_parameters
    834962#if defined( __netcdf )
    835963    USE netcdf
     
    9341062                id_var_zw_xy, id_var_zw_xz, id_var_zw_yz, id_var_zw_3d
    9351063
    936     INTEGER, DIMENSION(10)  ::  id_var_dospx, id_var_dospy, nc_precision
     1064    INTEGER, DIMENSION(10)  ::  id_var_dospx, id_var_dospy
    9371065    INTEGER, DIMENSION(20)  ::  id_var_prt
     1066    INTEGER, DIMENSION(50)  ::  nc_precision
    9381067    INTEGER, DIMENSION(dopr_norm_num) ::  id_var_norm_dopr
    9391068
     
    9441073    INTEGER, DIMENSION(dots_max,0:9)   ::  id_var_dots
    9451074
     1075!
     1076!-- masked output
     1077    CHARACTER (LEN=7), DIMENSION(max_masks,0:1,100) ::  domask_unit
     1078
    9461079    LOGICAL ::  output_for_t0 = .FALSE.
     1080
     1081    INTEGER, DIMENSION(1:max_masks,0:1) ::  id_dim_time_mask, id_dim_x_mask, &
     1082                id_dim_xu_mask, id_dim_y_mask, id_dim_yv_mask, id_dim_zu_mask, &
     1083                id_dim_zw_mask, &
     1084                id_set_mask, &
     1085                id_var_time_mask, id_var_x_mask, id_var_xu_mask, &
     1086                id_var_y_mask, id_var_yv_mask, id_var_zu_mask, id_var_zw_mask, &
     1087                id_var_zusi_mask, id_var_zwwi_mask
     1088
     1089    INTEGER, DIMENSION(1:max_masks,0:1,100)         ::  id_var_domask
    9471090
    9481091    SAVE
Note: See TracChangeset for help on using the changeset viewer.