Ignore:
Timestamp:
Apr 11, 2014 5:15:14 PM (10 years ago)
Author:
hoffmann
Message:

new Lagrangian particle structure integrated

File:
1 edited

Legend:

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

    r1354 r1359  
    2020! Current revisions:
    2121! -----------------
    22 !
    23 ! 
     22! New particle structure integrated.
     23!
    2424! Former revisions:
    2525! -----------------
     
    9292
    9393    USE particle_attributes,                                                   &
    94         ONLY:  particles, prt_count, prt_start_index
     94        ONLY:  grid_particles, number_of_particles, particles, prt_count
    9595
    9696    IMPLICIT NONE
     
    104104
    105105    REAL(wp)     ::  mean_r !:
     106    REAL(wp)     ::  s_r2   !:
    106107    REAL(wp)     ::  s_r3   !:
    107     REAL(wp)     ::  s_r4   !:
    108108
    109109    CALL cpu_log (log_point(34),'sum_up_3d_data','start')
     
    382382                DO  j = nys, nyn
    383383                   DO  k = nzb, nzt+1
    384                       psi = prt_start_index(k,j,i)
     384                      number_of_particles = prt_count(k,j,i)
     385                      IF ( number_of_particles <= 0 )  CYCLE
     386                      particles => grid_particles(k,j,i)%particles(1:number_of_particles)
     387                      s_r2 = 0.0_wp
    385388                      s_r3 = 0.0_wp
    386                       s_r4 = 0.0_wp
    387                       DO  n = psi, psi+prt_count(k,j,i)-1
    388                          s_r3 = s_r3 + particles(n)%radius**3 * &
    389                                        particles(n)%weight_factor
    390                          s_r4 = s_r4 + particles(n)%radius**4 * &
    391                                        particles(n)%weight_factor
     389
     390                      DO  n = 1, number_of_particles
     391                         IF ( particles(n)%particle_mask )  THEN
     392                            s_r2 = s_r2 + particles(n)%radius**2 * &
     393                                particles(n)%weight_factor
     394                            s_r3 = s_r3 + particles(n)%radius**3 * &
     395                                particles(n)%weight_factor
     396                         ENDIF
    392397                      ENDDO
    393                       IF ( s_r3 /= 0.0_wp )  THEN
    394                          mean_r = s_r4 / s_r3
     398
     399                      IF ( s_r2 > 0.0_wp )  THEN
     400                         mean_r = s_r3 / s_r2
    395401                      ELSE
    396402                         mean_r = 0.0_wp
     
    401407             ENDDO
    402408
     409
    403410          CASE ( 'pr*' )
    404411             DO  i = nxlg, nxrg
     
    478485                DO  j = nys, nyn
    479486                   DO  k = nzb, nzt+1
    480                       psi = prt_start_index(k,j,i)
    481                       DO  n = psi, psi+prt_count(k,j,i)-1
    482                          ql_vp_av(k,j,i) = ql_vp_av(k,j,i) + &
    483                                            particles(n)%weight_factor / &
    484                                            prt_count(k,j,i)
     487                      number_of_particles = prt_count(k,j,i)
     488                      IF ( number_of_particles <= 0 )  CYCLE
     489                      particles => grid_particles(k,j,i)%particles(1:number_of_particles)
     490                      DO  n = 1, number_of_particles
     491                         IF ( particles(n)%particle_mask )  THEN
     492                            ql_vp_av(k,j,i) = ql_vp_av(k,j,i) + &
     493                                              particles(n)%weight_factor / &
     494                                              number_of_particles
     495                         ENDIF
    485496                      ENDDO
    486497                   ENDDO
Note: See TracChangeset for help on using the changeset viewer.