Changeset 1822 for palm/trunk/SOURCE/data_output_dvrp.f90
- Timestamp:
- Apr 7, 2016 7:49:42 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/data_output_dvrp.f90
r1818 r1822 19 19 ! Current revisions: 20 20 ! ----------------- 21 ! 21 ! Particles and tails removed. 22 22 ! 23 23 ! Former revisions: … … 58 58 ! Description: 59 59 ! ------------ 60 !> Plot of isosurface , particlesand slicers with dvrp-software60 !> Plot of isosurface and slicers with dvrp-software 61 61 !------------------------------------------------------------------------------! 62 62 MODULE dvrp_color … … 130 130 131 131 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 139 133 USE pegrid 140 134 … … 234 228 !-- Select the plot mode (in case of isosurface or slicer only if user has 235 229 !-- 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. & 381 231 mode_dvrp(m)(1:6) == 'slicer' ) & 382 232 .AND. output_variable /= ' ' ) THEN
Note: See TracChangeset
for help on using the changeset viewer.