Ignore:
Timestamp:
Apr 7, 2016 7:49:42 AM (8 years ago)
Author:
hoffmann
Message:

changes in LPM and bulk cloud microphysics

File:
1 edited

Legend:

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

    r1818 r1822  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Particles and tails removed.
    2222!
    2323! Former revisions:
     
    5858! Description:
    5959! ------------
    60 !> Plot of isosurface, particles and slicers with dvrp-software
     60!> Plot of isosurface and slicers with dvrp-software
    6161!------------------------------------------------------------------------------!
    6262 MODULE dvrp_color
     
    130130       
    131131    USE kinds
    132    
    133     USE particle_attributes,                                                   &
    134         ONLY:  maximum_number_of_tailpoints, number_of_particles,              &
    135                number_of_tails, particle_advection, particle_advection_start,  &
    136                particle_tail_coordinates, particles, uniform_particles,        &
    137                use_particle_tails
    138        
     132
    139133    USE pegrid
    140134
     
    234228!--    Select the plot mode (in case of isosurface or slicer only if user has
    235229!--    defined a variable which shall be plotted; otherwise do nothing)
    236        IF ( mode_dvrp(m)(1:9) == 'particles'  .AND.  particle_advection  .AND. &
    237             simulated_time >= particle_advection_start )  THEN
    238 !
    239 !--       DVRP-Calls for plotting particles:
    240           CALL cpu_log( log_point_s(28), 'dvrp_particles', 'start' )
    241 
    242 !
    243 !--       Definition of characteristics of particle material
    244 !          tmp_r = 0.1;  tmp_g = 0.7;  tmp_b = 0.1;  tmp_t = 0.0
    245           tmp_r = 0.0_wp;  tmp_g = 0.0_wp;  tmp_b = 0.0_wp;  tmp_t = 0.0_wp
    246           CALL DVRP_MATERIAL_RGB( m-1, 1, tmp_r, tmp_g, tmp_b, tmp_t )
    247 
    248 !
    249 !--       If clipping is active and if this subdomain is clipped, find out the
    250 !--       number of particles and tails to be plotted; otherwise, all
    251 !--       particles/tails are plotted. dvrp_mask is used to mark the partikles.
    252           ALLOCATE( dvrp_mask(number_of_particles) )
    253 
    254           IF ( dvrp_total_overlap )  THEN
    255              dvrp_mask = .TRUE.
    256              dvrp_nop  = number_of_particles
    257              dvrp_not  = number_of_tails
    258           ELSE
    259              dvrp_mask = .FALSE.
    260              dvrp_nop  = 0
    261              dvrp_not  = 0
    262              IF ( dvrp_overlap )  THEN
    263                 IF ( .NOT. use_particle_tails )  THEN
    264                    DO  n = 1, number_of_particles
    265                       ip = particles(n)%x / dx
    266                       jp = particles(n)%y / dy
    267                       IF ( ip >= nxl_dvrp  .AND.  ip <= nxr_dvrp  .AND.  &
    268                            jp >= nys_dvrp  .AND.  jp <= nyn_dvrp )  THEN
    269                          dvrp_nop = dvrp_nop + 1
    270                          dvrp_mask(n) = .TRUE.
    271                       ENDIF
    272                    ENDDO
    273                 ELSE
    274                    k = 0
    275                    DO  n = 1, number_of_particles
    276                       IF ( particles(n)%tail_id /= 0 )  THEN
    277                          k = k + 1
    278                          ip = particles(n)%x / dx
    279                          jp = particles(n)%y / dy
    280                          IF ( ip >= nxl_dvrp  .AND.  ip <= nxr_dvrp  .AND.  &
    281                               jp >= nys_dvrp  .AND.  jp <= nyn_dvrp )  THEN
    282                             dvrp_not = dvrp_not + 1
    283                             dvrp_mask(n) = .TRUE.
    284                          ENDIF
    285                       ENDIF
    286                    ENDDO
    287                 ENDIF
    288              ENDIF
    289           ENDIF
    290 
    291 !
    292 !--       Move particle coordinates to one-dimensional arrays
    293           IF ( .NOT. use_particle_tails )  THEN
    294 !
    295 !--          All particles are output
    296              ALLOCATE( psize(dvrp_nop), p_t(dvrp_nop), p_c(dvrp_nop), &
    297                        p_x(dvrp_nop), p_y(dvrp_nop), p_z(dvrp_nop) )
    298              psize = 0.0_wp;  p_t = 0_wp;  p_c = 0.0_wp
    299              p_x = 0.0_wp; p_y = 0.0_wp
    300              p_z   = 0.0_wp
    301              k = 0
    302              DO  n = 1, number_of_particles
    303                 IF ( dvrp_mask(n) )  THEN
    304                    k = k + 1
    305                    psize(k) = particles(n)%dvrp_psize
    306                    p_x(k)   = particles(n)%x * superelevation_x
    307                    p_y(k)   = particles(n)%y * superelevation_y
    308                    p_z(k)   = particles(n)%z * superelevation
    309                    p_c(k)   = particles(n)%class
    310                 ENDIF
    311              ENDDO
    312           ELSE
    313 !
    314 !--          Particles have a tail
    315              ALLOCATE( psize(dvrp_not), p_t(dvrp_not),             &
    316                        p_c(dvrp_not*maximum_number_of_tailpoints), &
    317                        p_x(dvrp_not*maximum_number_of_tailpoints), &
    318                        p_y(dvrp_not*maximum_number_of_tailpoints), &
    319                        p_z(dvrp_not*maximum_number_of_tailpoints) )
    320              psize = 0.0_wp;  p_t = 0_wp;  p_c = 0.0_wp
    321              p_x = 0.0_wp;  p_y = 0.0_wp
    322              p_z   = 0.0_wp
    323              i = 0
    324              k = 0
    325 
    326              DO  n = 1, number_of_particles
    327                 nn = particles(n)%tail_id
    328                 IF ( nn /= 0  .AND.  dvrp_mask(n) )  THEN
    329                    k = k + 1
    330                    DO  j = 1, particles(n)%tailpoints
    331                       i = i + 1
    332                       p_x(i) = particle_tail_coordinates(j,1,nn) * &
    333                                                                 superelevation_x
    334                       p_y(i) = particle_tail_coordinates(j,2,nn) * &
    335                                                                 superelevation_y
    336                       p_z(i) = particle_tail_coordinates(j,3,nn) * &
    337                                                                 superelevation
    338                       p_c(i) = particle_tail_coordinates(j,4,nn)
    339                    ENDDO
    340                    psize(k) = particles(n)%dvrp_psize
    341                    p_t(k)   = particles(n)%tailpoints - 1
    342                 ENDIF               
    343              ENDDO
    344           ENDIF
    345 
    346 !
    347 !--       Compute and plot particles in dvr-format
    348           IF ( uniform_particles  .AND.  .NOT. use_particle_tails )  THEN
    349 !
    350 !--          All particles have the same color. Use simple routine to set
    351 !--          the particle attributes (produces less output data)
    352              CALL DVRP_PARTICLES( m-1, p_x, p_y, p_z, psize )
    353           ELSE
    354 !
    355 !--          Set color definitions
    356              CALL user_dvrp_coltab( 'particles', 'none' )
    357 
    358              CALL DVRP_COLORTABLE_HLS( m-1, 0, interval_values_dvrp_prt, &
    359                                        interval_h_dvrp_prt,              &
    360                                        interval_l_dvrp_prt,              &
    361                                        interval_s_dvrp_prt,              &
    362                                        interval_a_dvrp_prt )
    363 
    364              IF ( .NOT. use_particle_tails )  THEN
    365                 CALL DVRP_PARTICLES( m-1, dvrp_nop, p_x, p_y, p_z, 3, psize, &
    366                                      p_c, p_t )
    367              ELSE
    368                 CALL DVRP_PARTICLES( m-1, dvrp_not, p_x, p_y, p_z, 15, psize, &
    369                                      p_c, p_t )
    370              ENDIF
    371           ENDIF
    372 
    373           CALL DVRP_VISUALIZE( m-1, 3, dvrp_filecount )
    374 
    375           DEALLOCATE( dvrp_mask, psize, p_c, p_t, p_x, p_y, p_z )
    376 
    377           CALL cpu_log( log_point_s(28), 'dvrp_particles', 'stop' )
    378 
    379 
    380        ELSEIF ( ( mode_dvrp(m)(1:10) == 'isosurface'  .OR.                     &
     230       IF ( ( mode_dvrp(m)(1:10) == 'isosurface'  .OR.                     &
    381231                  mode_dvrp(m)(1:6)  == 'slicer'           )                   &
    382232                  .AND.  output_variable /= ' ' )  THEN
Note: See TracChangeset for help on using the changeset viewer.