Ignore:
Timestamp:
Feb 19, 2012 3:03:44 AM (10 years ago)
Author:
raasch
Message:

New:
---

droplet growth by condensation may include curvature and solution effects.
Steered by new inipar-parameter curvature_solution_effects.
(advec_particles, check_parameters, header, init_cloud_physics, init_particles, modules, parin, read_var_list, write_var_list)

mean/min/max particle radius added as output quantity. (data_output_ptseries, modules)

Changed:


Initialisation of temporary particle array for resorting removed.
(advec_particles)

particle attributes speed_x|y|z_sgs renamed rvar1|2|3.
(advec_particles, data_output_ptseries, modules, init_particles, particle_boundary_conds)

routine wang_kernel and respective module renamed lpm_collision_kernels.
Package (particle) parameters wang_collision_kernel and turbulence_effects_on_collision
replaced by parameter collision_kernel.
(Makefile, advec_particles, check_parameters, diffusion_e, init_3d_model, modules, package_parin, time_integration, new: lpm_collision_kernels, deleted: wang_kernel)

Errors:


File:
1 edited

Legend:

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

    r824 r825  
    44! Current revisions:
    55! -----------------
    6 ! mean particle radius added as output quantity.
     6! mean/minimum/maximum particle radius added as output quantity.
    77! particle attributes speed_x|y|z_sgs renamed rvar1|2|3.
    88!
     
    3535!------------------------------------------------------------------------------!
    3636
     37    USE cloud_parameters
    3738    USE control_parameters
    3839    USE cpulog
     
    4849    INTEGER ::  i, inum, j, n
    4950
    50     REAL, DIMENSION(0:number_of_particle_groups,30) ::  pts_value, pts_value_l
    51 
     51    REAL, DIMENSION(:,:), ALLOCATABLE ::  pts_value, pts_value_l
    5252
    5353
     
    7070    ENDIF
    7171
     72    ALLOCATE( pts_value(0:number_of_particle_groups,dopts_num), &
     73              pts_value_l(0:number_of_particle_groups,dopts_num) )
     74
    7275    pts_value_l = 0.0
     76    pts_value_l(:,16) = 9999999.9    ! for calculation of minimum radius
    7377
    7478!
     
    8892       pts_value_l(0,7)  = pts_value_l(0,7) + particles(n)%speed_y     ! mean v
    8993       pts_value_l(0,8)  = pts_value_l(0,8) + particles(n)%speed_z     ! mean w
    90        pts_value_l(0,9)  = pts_value_l(0,9) + particles(n)%rvar1     ! mean sgsu
    91        pts_value_l(0,10) = pts_value_l(0,10) + particles(n)%rvar2    ! mean sgsv
    92        pts_value_l(0,11) = pts_value_l(0,11) + particles(n)%rvar3    ! mean sgsw
     94       IF ( .NOT. curvature_solution_effects )  THEN
     95          pts_value_l(0,9)  = pts_value_l(0,9) + particles(n)%rvar1  ! mean sgsu
     96          pts_value_l(0,10) = pts_value_l(0,10) + particles(n)%rvar2 ! mean sgsv
     97          pts_value_l(0,11) = pts_value_l(0,11) + particles(n)%rvar3 ! mean sgsw
     98       ENDIF
    9399       IF ( particles(n)%speed_z > 0.0 )  THEN
    94100          pts_value_l(0,12) = pts_value_l(0,12) + 1.0  ! # of upward moving prts
     
    99105                                            particles(n)%speed_z ! mean w down
    100106       ENDIF
    101        pts_value_l(0,15) = pts_value_l(0,15) + particles(n)%radius
    102        pts_value_l(0,16) = number_of_particles
    103        pts_value_l(0,17) = number_of_particles
     107       pts_value_l(0,15) = pts_value_l(0,15) + particles(n)%radius ! mean rad
     108       pts_value_l(0,16) = MIN( pts_value_l(0,16), particles(n)%radius ) ! minrad
     109       pts_value_l(0,17) = MAX( pts_value_l(0,17), particles(n)%radius ) ! maxrad
     110       pts_value_l(0,18) = number_of_particles
     111       pts_value_l(0,19) = number_of_particles
    104112
    105113!
     
    119127          pts_value_l(j,7)  = pts_value_l(j,7)  + particles(n)%speed_y
    120128          pts_value_l(j,8)  = pts_value_l(j,8)  + particles(n)%speed_z
    121           pts_value_l(j,9)  = pts_value_l(j,9)  + particles(n)%rvar1
    122           pts_value_l(j,10) = pts_value_l(j,10) + particles(n)%rvar2
    123           pts_value_l(j,11) = pts_value_l(j,11) + particles(n)%rvar3
     129          IF ( .NOT. curvature_solution_effects )  THEN
     130             pts_value_l(j,9)  = pts_value_l(j,9)  + particles(n)%rvar1
     131             pts_value_l(j,10) = pts_value_l(j,10) + particles(n)%rvar2
     132             pts_value_l(j,11) = pts_value_l(j,11) + particles(n)%rvar3
     133          ENDIF
    124134          IF ( particles(n)%speed_z > 0.0 )  THEN
    125135             pts_value_l(j,12) = pts_value_l(j,12) + 1.0
     
    129139          ENDIF
    130140          pts_value_l(j,15) = pts_value_l(j,15) + particles(n)%radius
    131           pts_value_l(j,16) = pts_value_l(j,16) + 1.0
    132           pts_value_l(j,17) = pts_value_l(j,17) + 1.0
     141          pts_value_l(j,16) = MIN( pts_value(j,16), particles(n)%radius )
     142          pts_value_l(j,17) = MAX( pts_value(j,17), particles(n)%radius )
     143          pts_value_l(j,18) = pts_value_l(j,18) + 1.0
     144          pts_value_l(j,19) = pts_value_l(j,19) + 1.0
    133145
    134146       ENDIF
     
    146158    IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
    147159    CALL MPI_ALLREDUCE( pts_value_l(0,16), pts_value(0,16), inum, MPI_REAL, &
     160                        MPI_MIN, comm2d, ierr )
     161    IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
     162    CALL MPI_ALLREDUCE( pts_value_l(0,17), pts_value(0,17), inum, MPI_REAL, &
    148163                        MPI_MAX, comm2d, ierr )
    149164    IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
    150     CALL MPI_ALLREDUCE( pts_value_l(0,17), pts_value(0,17), inum, MPI_REAL, &
     165    CALL MPI_ALLREDUCE( pts_value_l(0,18), pts_value(0,18), inum, MPI_REAL, &
     166                        MPI_MAX, comm2d, ierr )
     167    IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
     168    CALL MPI_ALLREDUCE( pts_value_l(0,19), pts_value(0,19), inum, MPI_REAL, &
    151169                        MPI_MIN, comm2d, ierr )
    152170#else
    153     pts_value(:,1:17) = pts_value_l(:,1:17)
     171    pts_value(:,1:19) = pts_value_l(:,1:19)
    154172#endif
    155173
    156174!
    157 !-- Normalize the above calculated quantities with the total number of
    158 !-- particles
     175!-- Normalize the above calculated quantities (except min/max values) with the
     176!-- total number of particles
    159177    IF ( number_of_particle_groups > 1 )  THEN
    160178       inum = number_of_particle_groups
     
    186204    DO  n = 1, number_of_particles
    187205
    188        pts_value_l(0,18) = pts_value_l(0,18) + ( particles(n)%x - &
     206       pts_value_l(0,20) = pts_value_l(0,20) + ( particles(n)%x - &
    189207                           particles(n)%origin_x - pts_value(0,2) )**2 ! x*2
    190        pts_value_l(0,19) = pts_value_l(0,19) + ( particles(n)%y - &
     208       pts_value_l(0,21) = pts_value_l(0,21) + ( particles(n)%y - &
    191209                           particles(n)%origin_y - pts_value(0,3) )**2 ! y*2
    192        pts_value_l(0,20) = pts_value_l(0,20) + ( particles(n)%z - &
     210       pts_value_l(0,22) = pts_value_l(0,22) + ( particles(n)%z - &
    193211                           particles(n)%origin_z - pts_value(0,4) )**2 ! z*2
    194        pts_value_l(0,21) = pts_value_l(0,21) + ( particles(n)%speed_x - &
    195                                                pts_value(0,6) )**2     ! u*2
    196        pts_value_l(0,22) = pts_value_l(0,22) + ( particles(n)%speed_y - &
    197                                                pts_value(0,7) )**2     ! v*2
    198        pts_value_l(0,23) = pts_value_l(0,23) + ( particles(n)%speed_z - &
    199                                                pts_value(0,8) )**2     ! w*2
    200        pts_value_l(0,24) = pts_value_l(0,24) + ( particles(n)%rvar1 - &
    201                                                pts_value(0,9) )**2     ! u"2
    202        pts_value_l(0,25) = pts_value_l(0,25) + ( particles(n)%rvar2 - &
    203                                                pts_value(0,10) )**2    ! v"2
    204        pts_value_l(0,26) = pts_value_l(0,26) + ( particles(n)%rvar3 - &
    205                                                pts_value(0,11) )**2    ! w"2
     212       pts_value_l(0,23) = pts_value_l(0,23) + ( particles(n)%speed_x - &
     213                                                pts_value(0,6) )**2   ! u*2
     214       pts_value_l(0,24) = pts_value_l(0,24) + ( particles(n)%speed_y - &
     215                                                 pts_value(0,7) )**2   ! v*2
     216       pts_value_l(0,25) = pts_value_l(0,25) + ( particles(n)%speed_z - &
     217                                                 pts_value(0,8) )**2   ! w*2
     218       IF ( .NOT. curvature_solution_effects )  THEN
     219          pts_value_l(0,26) = pts_value_l(0,26) + ( particles(n)%rvar1 - &
     220                                                    pts_value(0,9) )**2   ! u"2
     221          pts_value_l(0,27) = pts_value_l(0,27) + ( particles(n)%rvar2 - &
     222                                                    pts_value(0,10) )**2  ! v"2
     223          pts_value_l(0,28) = pts_value_l(0,28) + ( particles(n)%rvar3 - &
     224                                                    pts_value(0,11) )**2  ! w"2
     225       ENDIF
    206226!
    207227!--    Repeat the same for the respective particle group
     
    209229          j = particles(n)%group
    210230
    211           pts_value_l(j,18) = pts_value_l(j,18) + ( particles(n)%x - &
     231          pts_value_l(j,20) = pts_value_l(j,20) + ( particles(n)%x - &
    212232                              particles(n)%origin_x - pts_value(j,2) )**2
    213           pts_value_l(j,19) = pts_value_l(j,19) + ( particles(n)%y - &
     233          pts_value_l(j,21) = pts_value_l(j,21) + ( particles(n)%y - &
    214234                              particles(n)%origin_y - pts_value(j,3) )**2
    215           pts_value_l(j,20) = pts_value_l(j,20) + ( particles(n)%z - &
     235          pts_value_l(j,22) = pts_value_l(j,22) + ( particles(n)%z - &
    216236                              particles(n)%origin_z - pts_value(j,4) )**2
    217           pts_value_l(j,21) = pts_value_l(j,21) + ( particles(n)%speed_x - &
    218                                                   pts_value(j,6) )**2
    219           pts_value_l(j,22) = pts_value_l(j,22) + ( particles(n)%speed_y - &
    220                                                   pts_value(j,7) )**2
    221           pts_value_l(j,23) = pts_value_l(j,23) + ( particles(n)%speed_z - &
    222                                                   pts_value(j,8) )**2
    223           pts_value_l(j,24) = pts_value_l(j,24) + ( particles(n)%rvar1 -   &
    224                                                   pts_value(j,9) )**2
    225           pts_value_l(j,25) = pts_value_l(j,25) + ( particles(n)%rvar2 -   &
    226                                                   pts_value(j,10) )**2
    227           pts_value_l(j,26) = pts_value_l(j,26) + ( particles(n)%rvar3 -   &
    228                                                   pts_value(j,11) )**2
     237          pts_value_l(j,23) = pts_value_l(j,23) + ( particles(n)%speed_x - &
     238                                                    pts_value(j,6) )**2
     239          pts_value_l(j,24) = pts_value_l(j,24) + ( particles(n)%speed_y - &
     240                                                    pts_value(j,7) )**2
     241          pts_value_l(j,25) = pts_value_l(j,25) + ( particles(n)%speed_z - &
     242                                                    pts_value(j,8) )**2
     243          IF ( .NOT. curvature_solution_effects )  THEN
     244             pts_value_l(j,26) = pts_value_l(j,26) + ( particles(n)%rvar1 - &
     245                                                       pts_value(j,9) )**2
     246             pts_value_l(j,27) = pts_value_l(j,27) + ( particles(n)%rvar2 - &
     247                                                       pts_value(j,10) )**2
     248             pts_value_l(j,28) = pts_value_l(j,28) + ( particles(n)%rvar3 - &
     249                                                       pts_value(j,11) )**2
     250          ENDIF
    229251       ENDIF
    230252
    231253    ENDDO
    232254
    233     pts_value_l(0,27) = ( number_of_particles - pts_value(0,1) / numprocs )**2
     255    pts_value_l(0,29) = ( number_of_particles - pts_value(0,1) / numprocs )**2
    234256                                                 ! variance of particle numbers
    235257    IF ( number_of_particle_groups > 1 )  THEN
    236258       DO  j = 1, number_of_particle_groups
    237           pts_value_l(j,27) = ( pts_value_l(j,1) - &
     259          pts_value_l(j,29) = ( pts_value_l(j,1) - &
    238260                                pts_value(j,1) / numprocs )**2
    239261       ENDDO
     
    246268
    247269    IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
    248     CALL MPI_ALLREDUCE( pts_value_l(0,18), pts_value(0,18), inum*10, MPI_REAL, &
     270    CALL MPI_ALLREDUCE( pts_value_l(0,20), pts_value(0,20), inum*10, MPI_REAL, &
    249271                        MPI_SUM, comm2d, ierr )
    250272#else
    251     pts_value(:,18:27) = pts_value_l(:,18:27)
     273    pts_value(:,20:29) = pts_value_l(:,20:29)
    252274#endif
    253275
     
    264286
    265287       IF ( pts_value(j,1) > 0.0 )  THEN
    266           pts_value(j,18:26) = pts_value(j,18:26) / pts_value(j,1)
    267        ENDIF
    268        pts_value(j,27) = pts_value(j,27) / numprocs
     288          pts_value(j,20:28) = pts_value(j,20:28) / pts_value(j,1)
     289       ENDIF
     290       pts_value(j,29) = pts_value(j,29) / numprocs
    269291
    270292    ENDDO
     
    286308#endif
    287309
     310    DEALLOCATE( pts_value, pts_value_l )
     311
    288312    CALL cpu_log( log_point(36), 'data_output_ptseries','stop', 'nobarrier' )
    289313
Note: See TracChangeset for help on using the changeset viewer.