Changeset 264 for palm/trunk/SOURCE


Ignore:
Timestamp:
Mar 21, 2009 8:14:44 AM (15 years ago)
Author:
raasch
Message:

new dvrp features added

Location:
palm/trunk/SOURCE
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/CURRENT_MODIFICATIONS

    r263 r264  
    11New:
    22---
    3 Clipping of dvrp output implemented. (init_dvrp, data_output_dvrp,
    4 user_data_output_dvrp)
     3Clipping of dvrp output implemented. Default colourtable for particles
     4implemented, particle attributes (color, dvrp_size) can be set with new
     5parameters particle_color, particle_dvrpsize, color_interval,
     6dvrpsize_interval (init_dvrp, data_output_dvrp, modules, user_data_output_dvrp)
    57
    68Polygon reduction for topography and ground plate isosurface. Reduction level
     
    1921check_parameters, data_output_dvrp, init_dvrp, init_grid, init_3d_model, header, modules, package_parin, parin, prognostic_equations, read_var_list, user_check_parameters, user_data_output_dvrp, user_header, user_init_grid, write_var_list
    2022
     23New: set_particle_attributes
    2124
    2225Changed:
  • palm/trunk/SOURCE/Makefile

    r226 r264  
    44# Actual revisions:
    55# -----------------
    6 #
     6# +set_particle_attributes
    77#
    88# Former revisions:
     
    7474        production_e.f90 prognostic_equations.f90 random_function.f90 \
    7575        random_gauss.f90 read_3d_binary.f90 read_var_list.f90 run_control.f90 \
    76         singleton.f90 sor.f90 spline_x.f90 spline_y.f90 spline_z.f90 \
    77         sum_up_3d_data.f90 surface_coupler.f90 swap_timelevel.f90 \
    78         temperton_fft.f90 time_integration.f90 time_to_string.f90 timestep.f90 \
    79         timestep_scheme_steering.f90 transpose.f90 user_3d_data_averaging.f90 \
    80         user_actions.f90 user_additional_routines.f90 user_advec_particles.f90 \
     76        set_particle_attributes.f90 singleton.f90 sor.f90 spline_x.f90 \
     77        spline_y.f90 spline_z.f90 sum_up_3d_data.f90 surface_coupler.f90 \
     78        swap_timelevel.f90 temperton_fft.f90 time_integration.f90 \
     79        time_to_string.f90 timestep.f90 timestep_scheme_steering.f90 \
     80        transpose.f90 user_3d_data_averaging.f90 user_actions.f90 \
     81        user_additional_routines.f90 user_advec_particles.f90 \
    8182        user_check_data_output.f90 user_check_data_output_pr.f90 \
    8283        user_check_parameters.f90 user_data_output_2d.f90 \
     
    113114        poisfft_hybrid.o poismg.o prandtl_fluxes.o pres.o print_1d.o \
    114115        production_e.o prognostic_equations.o random_function.o random_gauss.o \
    115         read_3d_binary.o read_var_list.o run_control.o singleton.o sor.o \
    116         spline_x.o spline_y.o spline_z.o sum_up_3d_data.o surface_coupler.o \
    117         swap_timelevel.o temperton_fft.o time_integration.o time_to_string.o \
     116        read_3d_binary.o read_var_list.o run_control.o \
     117        set_particle_attributes.o singleton.o sor.o spline_x.o spline_y.o \
     118        spline_z.o sum_up_3d_data.o surface_coupler.o swap_timelevel.o \
     119        temperton_fft.o time_integration.o time_to_string.o \
    118120        timestep.o timestep_scheme_steering.o transpose.o \
    119121        user_3d_data_averaging.o user_actions.o user_additional_routines.o \
     
    253255read_var_list.o: modules.o
    254256run_control.o: modules.o
     257set_particle_attributes.o: modules.o
    255258singleton.o: singleton.f90
    256259sor.o: modules.o
  • palm/trunk/SOURCE/advec_particles.f90

    r263 r264  
    44! Current revisions:
    55! -----------------
     6! Particle attributes are set with new routine set_particle_attributes.
    67! Output of NetCDF messages with aid of message handling routine.
    78! Output of messages replaced by message handling routine
     
    33603361
    33613362!
     3363!-- Set particle attributes
     3364    CALL set_particle_attributes
     3365
     3366!
    33623367!-- Set particle attributes defined by the user
    33633368    CALL user_particle_attributes
  • palm/trunk/SOURCE/check_parameters.f90

    r256 r264  
    44! Actual revisions:
    55! -----------------
     6! Check particle_color, particle_dvrpsize, color_interval, dvrpsize_interval
    67! Bugfix: pressure included for profile output
    78! Check pressure gradient conditions
     
    9091    USE constants
    9192    USE control_parameters
     93    USE dvrp_variables
    9294    USE grid_variables
    9395    USE indices
     
    29162918
    29172919!
     2920!-- Check particle attributes
     2921    IF ( particle_color /= 'none' )  THEN
     2922       IF ( particle_color /= 'absuv'  .AND.  particle_color /= 'pt*'  .AND.  &
     2923            particle_color /= 'z' )  THEN
     2924          message_string = 'illegal value for parameter particle_color: ' // &
     2925                           TRIM( particle_color)
     2926          CALL message( 'check_parameters', 'PA0313', 1, 2, 0, 6, 0 )
     2927       ELSE
     2928          IF ( color_interval(2) <= color_interval(1) )  THEN
     2929             message_string = 'color_interval(2) <= color_interval(1)'
     2930             CALL message( 'check_parameters', 'PA0315', 1, 2, 0, 6, 0 )
     2931          ENDIF
     2932       ENDIF
     2933    ENDIF
     2934
     2935    IF ( particle_dvrpsize /= 'none' )  THEN
     2936       IF ( particle_dvrpsize /= 'absw' )  THEN
     2937          message_string = 'illegal value for parameter particle_dvrpsize:' // &
     2938                           ' ' // TRIM( particle_color)
     2939          CALL message( 'check_parameters', 'PA0314', 1, 2, 0, 6, 0 )
     2940       ELSE
     2941          IF ( dvrpsize_interval(2) <= dvrpsize_interval(1) )  THEN
     2942             message_string = 'dvrpsize_interval(2) <= dvrpsize_interval(1)'
     2943             CALL message( 'check_parameters', 'PA0316', 1, 2, 0, 6, 0 )
     2944          ENDIF
     2945       ENDIF
     2946    ENDIF
     2947
     2948!
    29182949!-- Check &userpar parameters
    29192950    CALL user_check_parameters
  • palm/trunk/SOURCE/data_output_dvrp.f90

    r262 r264  
    3232! Current revisions:
    3333! -----------------
    34 ! Clipping of dvr-output implemented,
     34! Clipping of dvr-output implemented, using a default colourtable for
     35! particles,
    3536! output of messages replaced by message handling routine.
    3637! TEST: different colours for isosurfaces
     
    168169!--       number of particles and tails to be plotted; otherwise, all
    169170!--       particles/tails are plotted. dvrp_mask is used to mark the partikles.
    170 !          IF ( .NOT. use_particle_tails )  THEN
    171              ALLOCATE( dvrp_mask(number_of_particles) )
    172 !          ELSE
    173 !             ALLOCATE( dvrp_mask(number_of_tails*maximum_number_of_tailpoints) )
    174 !          ENDIF
    175           dvrp_mask = .TRUE.
     171          ALLOCATE( dvrp_mask(number_of_particles) )
     172
    176173          IF ( dvrp_total_overlap )  THEN
    177              dvrp_nop = number_of_particles
    178              dvrp_not = number_of_tails
     174             dvrp_mask = .TRUE.
     175             dvrp_nop  = number_of_particles
     176             dvrp_not  = number_of_tails
    179177          ELSE
    180              dvrp_nop = 0
    181              dvrp_not = 0
     178             dvrp_mask = .FALSE.
     179             dvrp_nop  = 0
     180             dvrp_not  = 0
    182181             IF ( dvrp_overlap )  THEN
    183182                IF ( .NOT. use_particle_tails )  THEN
     
    188187                           jp >= nys_dvrp  .AND.  jp <= nyn_dvrp )  THEN
    189188                         dvrp_nop = dvrp_nop + 1
    190                       ELSE
    191                          dvrp_mask(n) = .FALSE.
     189                         dvrp_mask(n) = .TRUE.
    192190                      ENDIF
    193191                   ENDDO
     
    202200                              jp >= nys_dvrp  .AND.  jp <= nyn_dvrp )  THEN
    203201                            dvrp_not = dvrp_not + 1
    204                          ELSE
    205                             dvrp_mask(n) = .FALSE.
     202                            dvrp_mask(n) = .TRUE.
    206203                         ENDIF
    207204                      ENDIF
     
    243240             i = 0
    244241             k = 0
     242
    245243             DO  n = 1, number_of_particles
    246244                nn = particles(n)%tail_id
     
    275273             CALL user_dvrp_coltab( 'particles', 'none' )
    276274
    277              CALL DVRP_COLORTABLE_HLS( m-1, 0, interval_values_dvrp,     &
    278                                        interval_h_dvrp, interval_l_dvrp, &
    279                                        interval_s_dvrp, interval_a_dvrp )
     275             CALL DVRP_COLORTABLE_HLS( m-1, 0, interval_values_dvrp_prt, &
     276                                       interval_h_dvrp_prt,              &
     277                                       interval_l_dvrp_prt,              &
     278                                       interval_s_dvrp_prt,              &
     279                                       interval_a_dvrp_prt )
    280280
    281281             IF ( .NOT. use_particle_tails )  THEN
     
    452452             END SELECT
    453453
     454          ELSE
     455!
     456!--          No overlap of clipping domain with the current subdomain
     457             DO  i = nxl_dvrp, nxr_dvrp+1
     458                DO  j = nys_dvrp, nyn_dvrp+1
     459                   DO  k = nzb, nz_do3d
     460                      local_pf(i,j,k) = 0.0
     461                   ENDDO
     462                ENDDO
     463             ENDDO
     464
    454465          ENDIF
    455466
    456467          IF ( mode_dvrp(m)(1:10) == 'isosurface' )  THEN
     468             WRITE(9,*) '#8'
     469             CALL local_flush( 9 )
    457470!
    458471!--          DVRP-Calls for plotting isosurfaces:
     
    477490                CALL DVRP_MATERIAL_RGB( m-1, 1, tmp_r, tmp_g, tmp_b, tmp_t )
    478491             ENDIF
     492             WRITE(9,*) '#8.1'
     493             CALL local_flush( 9 )
    479494
    480495!
     
    482497             CALL DVRP_DATA( m-1, local_pf, 1, nx_dvrp, ny_dvrp, nz_dvrp, &
    483498                             cyclic_dvrp, cyclic_dvrp, cyclic_dvrp )
     499             WRITE(9,*) '#8.2'
     500             CALL local_flush( 9 )
    484501
    485502             c_size_x = vc_size_x;  c_size_y = vc_size_y;  c_size_z = vc_size_z
    486503             CALL DVRP_CLUSTER_SIZE( m-1, c_size_x, c_size_y, c_size_z )
     504             WRITE(9,*) '#8.3'
     505             CALL local_flush( 9 )
    487506
    488507             c_mode   = vc_mode
    489508             CALL DVRP_CLUSTERING_MODE( m-1, c_mode )
     509             WRITE(9,*) '#8.4'
     510             CALL local_flush( 9 )
    490511
    491512             gradient_normals = vc_gradient_normals
    492513             CALL DVRP_GRADIENTNORMALS( m-1, gradient_normals )
     514             WRITE(9,*) '#8.5'
     515             CALL local_flush( 9 )
    493516!
    494517!--          A seperate procedure for setting vc_alpha will be in the next
     
    496519             tmp_c_alpha = vc_alpha
    497520             CALL DVRP_THRESHOLD( -(m-1)-1, tmp_c_alpha )
     521             WRITE(9,*) '#8.6'
     522             CALL local_flush( 9 )
    498523
    499524             IF ( dvrp_overlap )  THEN
     
    502527                tmp_th = 1.0   ! nothing is plotted because array values are 0
    503528             ENDIF
     529             WRITE(9,*) '#8.7'
     530             CALL local_flush( 9 )
    504531
    505532             CALL DVRP_THRESHOLD( m-1, tmp_th )
     533             WRITE(9,*) '#8.8'
     534             WRITE(9,*) 'nxl_dvrp=',nxl_dvrp, ' nxl=',nxl
     535             WRITE(9,*) 'nxr_dvrp=',nxr_dvrp, ' nxr=',nxr
     536             WRITE(9,*) 'nys_dvrp=',nys_dvrp, ' nys=',nys
     537             WRITE(9,*) 'nyn_dvrp=',nyn_dvrp, ' nyn=',nyn
     538             CALL local_flush( 9 )
    506539             CALL DVRP_VISUALIZE( m-1, 21, dvrp_filecount )
     540             WRITE(9,*) '#8.9'
     541             CALL local_flush( 9 )
    507542
    508543             CALL cpu_log( log_point_s(26), 'dvrp_isosurface', 'stop' )
     544                      WRITE(9,*) '#9'
     545                      CALL local_flush( 9 )
    509546
    510547          ELSEIF ( mode_dvrp(m)(1:6) == 'slicer' )  THEN
     548                      WRITE(9,*) '#10'
     549                      CALL local_flush( 9 )
    511550!
    512551!--          DVRP-Calls for plotting slicers:
     
    547586
    548587             CALL cpu_log( log_point_s(27), 'dvrp_slicer', 'stop' )
     588                      WRITE(9,*) '#11'
     589                      CALL local_flush( 9 )
    549590
    550591          ENDIF
     
    552593          DEALLOCATE( local_pf )
    553594
     595                      WRITE(9,*) '#12'
     596                      CALL local_flush( 9 )
    554597       ELSEIF ( mode_dvrp(m)(1:9) == 'pathlines' ) THEN
    555598
     
    588631
    589632    ENDDO
     633                      WRITE(9,*) '#13'
     634                      CALL local_flush( 9 )
    590635
    591636    dvrp_filecount = dvrp_filecount + 1
  • palm/trunk/SOURCE/init_dvrp.f90

    r260 r264  
    44! Current revisions:
    55! -----------------
     6! Definition of a colortable to be used for particles.
    67! Output names are changed: surface=groundplate, buildings=topography
    78! Output of messages replaced by message handling routine.
     
    112113       dvrp_overlap       = .FALSE.
    113114       dvrp_total_overlap = .FALSE.
    114        nxl_dvrp = nx_dvrp_l
    115        nxr_dvrp = nxl_dvrp + 4
    116        nys_dvrp = ny_dvrp_s
    117        nyn_dvrp = nys_dvrp + 4
     115!       nxl_dvrp = nx_dvrp_l
     116!       nxr_dvrp = nxl_dvrp + 4
     117!       nys_dvrp = ny_dvrp_s
     118!       nyn_dvrp = nys_dvrp + 4
     119       nxl_dvrp = nxl
     120       nxr_dvrp = MIN( nxl+4, nxr )
     121       nys_dvrp = nys
     122       nyn_dvrp = MIN( nys+4, nyn )
    118123
    119124    ENDIF
     
    250255          tmp_3 = clip_dvrp_s * superelevation_y
    251256          tmp_4 = 0.0
    252           tmp_5 = clip_dvrp_r * superelevation_x
    253           tmp_6 = clip_dvrp_n * superelevation_y
     257          tmp_5 = (clip_dvrp_r+dx) * superelevation_x
     258          tmp_6 = (clip_dvrp_n+dy) * superelevation_y
    254259          tmp_7 = zu(nz_do3d) * superelevation
    255260          CALL DVRP_BOUNDINGBOX( m-1, 1, tmp_1, tmp_2, tmp_3, tmp_4, tmp_5, &
     
    644649       ENDIF
    645650
     651       IF ( mode_dvrp(m) == 'particles' )  THEN
     652!
     653!--       Define a default colourtable for particles
     654          DO  i = 1, 11
     655             interval_values_dvrp_prt(1,i) = i - 1.0
     656             interval_values_dvrp_prt(2,i) = REAL( i )
     657             interval_h_dvrp_prt(:,i) = 270.0 - ( i - 1.0 ) * 9.0
     658          ENDDO
     659
     660          DO  j = 12, 22
     661             interval_values_dvrp_prt(1,i) = i - 1.0
     662             interval_values_dvrp_prt(2,i) = REAL( i )
     663             interval_h_dvrp_prt(:,i) = 70.0 - ( i - 12.0 ) * 9.5
     664          ENDDO
     665
     666          dvrp_colortable_entries_prt = 22
     667
     668       ENDIF
     669
    646670       m = m + 1
    647671
  • palm/trunk/SOURCE/modules.f90

    r260 r264  
    55! Actual revisions:
    66! -----------------
    7 ! +clip_dvrp_*, cluster_size, dvrp_overlap, dvrp_total_overlap,
    8 ! local_dvrserver_running, n*_dvrp in dvrp_variables
     7! +clip_dvrp_*, cluster_size, color_interval, dvrpsize_interval, dvrp_overlap,
     8! dvrp_total_overlap, local_dvrserver_running, n*_dvrp, interval_*_dvrp_prt,
     9! particle_color, particle_dvrpsize in dvrp_variables
    910! +canyon_height, canyon_width_x, canyon_width_y, canyon_wall_left,
    1011! canyon_wall_south, conserve_volume_flow_mode, dp_external, dp_level_b,
     
    527528!------------------------------------------------------------------------------!
    528529
    529     CHARACTER (LEN=10) ::  dvrp_output = 'rtsp'
     530    CHARACTER (LEN=10) ::  dvrp_output = 'rtsp', particle_color = 'none', &
     531                           particle_dvrpsize = 'none'
    530532
    531533    CHARACTER (LEN=20), DIMENSION(10) ::  mode_dvrp = &
     
    538540                           dvrp_username  = ' '
    539541
    540     INTEGER ::  cluster_size = 1, dvrp_colourtable_entries = 4, islice_dvrp,   &
     542    INTEGER ::  cluster_size = 1, dvrp_colortable_entries = 4,                 &
     543                dvrp_colortable_entries_prt = 22, islice_dvrp,                 &
    541544                nx_dvrp, nxl_dvrp, nxr_dvrp, ny_dvrp, nyn_dvrp, nys_dvrp,      &
    542545                nz_dvrp, pathlines_fadeintime = 5, pathlines_fadeouttime = 5,  &
     
    557560                superelevation_y = 1.0, vc_alpha = 38.0
    558561
     562    REAL, DIMENSION(2) ::  color_interval = (/ 0.0, 1.0 /), &
     563                           dvrpsize_interval = (/ 0.0, 1.0 /)
     564
    559565#if defined( __decalpha )
    560566    REAL, DIMENSION(2,10)  ::  slicer_range_limits_dvrp = (/ &
     
    563569                                -1.0, 1.0, -1.0, 1.0 /)
    564570
    565     REAL/4), DIMENSION(2,100) ::  interval_values_dvrp, interval_h_dvrp =      &
     571    REAL(4), DIMENSION(2,100) ::  interval_values_dvrp, interval_h_dvrp =      &
    566572                                  (/ 270.0, 225.0, 225.0, 180.0, 70.0, 25.0,   &
    567573                                     25.0, -25.0, ( 0.0, i9 = 1, 192 ) /),     &
    568574                                  interval_l_dvrp = 0.5, interval_s_dvrp = 1.0,&
    569                                   interval_a_dvrp = 0.0
     575                                  interval_a_dvrp = 0.0,                       &
     576                                  interval_values_dvrp_prt,                    &
     577                                  interval_h_dvrp_prt,                         &
     578                                  (/ 270.0, 225.0, 225.0, 180.0, 70.0, 25.0,   &
     579                                     25.0, -25.0, ( 0.0, i9 = 1, 192 ) /),     &
     580                                  interval_l_dvrp_prt = 0.5,                   &
     581                                  interval_s_dvrp_prt = 1.0,                   &
     582                                  interval_a_dvrp_prt = 0.0
    570583#else
    571584    REAL, DIMENSION(2,10)  ::  slicer_range_limits_dvrp
    572585
    573     REAL(4), DIMENSION(2,100) ::  interval_values_dvrp, interval_h_dvrp,       &
    574                                   interval_l_dvrp = 0.5, interval_s_dvrp = 1.0,&
    575                                   interval_a_dvrp = 0.0
     586    REAL(4), DIMENSION(2,100) ::  interval_values_dvrp,                       &
     587                                  interval_values_dvrp_prt, interval_h_dvrp,  &
     588                                  interval_h_dvrp_prt, interval_l_dvrp = 0.5, &
     589                                  interval_l_dvrp_prt, interval_s_dvrp = 1.0, &
     590                                  interval_s_dvrp_prt, interval_a_dvrp = 0.0, &
     591                                  interval_a_dvrp_prt
    576592
    577593    DATA  slicer_range_limits_dvrp / -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, &
  • palm/trunk/SOURCE/package_parin.f90

    r242 r264  
    44! Actual revisions:
    55! -----------------
    6 ! +clip_dvrp_*, cluster_size in dvrp_graphics_par
     6! +clip_dvrp_*, cluster_size, color_interval, dvrpsize_interval, particle_color,
     7! dvrpsize_color in dvrp_graphics_par
    78! Variables for dvrp-mode pathlines added
    89!
     
    4647
    4748    NAMELIST /dvrp_graphics_par/  clip_dvrp_l, clip_dvrp_n, clip_dvrp_r,       &
    48                                   clip_dvrp_s, cluster_size, dt_dvrp,          &
    49                                   dvrp_directory, dvrp_file, dvrp_host,        &
    50                                   dvrp_output, dvrp_password, dvrp_username,   &
    51                                   mode_dvrp, pathlines_fadeintime,             &
    52                                   pathlines_fadeouttime, pathlines_linecount,  &
    53                                   pathlines_maxhistory, pathlines_wavecount,   &
    54                                   pathlines_wavetime, slicer_range_limits_dvrp,&
    55                                   superelevation, superelevation_x,            &
    56                                   superelevation_y, threshold, vc_alpha,       &
    57                                   vc_gradient_normals, vc_mode, vc_size_x,     &
    58                                   vc_size_y, vc_size_z
     49                                  clip_dvrp_s, cluster_size, color_interval,   &
     50                                  dt_dvrp, dvrpsize_interval, dvrp_directory,  &
     51                                  dvrp_file, dvrp_host, dvrp_output,           &
     52                                  dvrp_password, dvrp_username, mode_dvrp,     &
     53                                  particle_color, particle_dvrpsize,           &
     54                                  pathlines_fadeintime, pathlines_fadeouttime, &
     55                                  pathlines_linecount, pathlines_maxhistory,   &
     56                                  pathlines_wavecount, pathlines_wavetime,     &
     57                                  slicer_range_limits_dvrp, superelevation,    &
     58                                  superelevation_x, superelevation_y,          &
     59                                  threshold, vc_alpha, vc_gradient_normals,    &
     60                                  vc_mode, vc_size_x, vc_size_y, vc_size_z
     61
    5962    NAMELIST /particles_par/      bc_par_b, bc_par_lr, bc_par_ns, bc_par_t,    &
    6063                                  density_ratio, radius, dt_dopts,             &
Note: See TracChangeset for help on using the changeset viewer.