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/data_output_mask.f90

    r1354 r1359  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! New particle structure integrated.
    2323!
    2424! Former revisions:
     
    9696   
    9797    USE particle_attributes,                                                   &
    98         ONLY:  particles, prt_count, prt_start_index
     98        ONLY:  grid_particles, number_of_particles, particles,                 &
     99               particle_advection_start, prt_count
    99100   
    100101    USE pegrid
     
    117118   
    118119    REAL(wp) ::  mean_r       !:
     120    REAL(wp) ::  s_r2         !:
    119121    REAL(wp) ::  s_r3         !:
    120     REAL(wp) ::  s_r4         !:
    121122   
    122123    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  local_pf    !:
     
    215216             ENDIF
    216217
    217           CASE ( 'pr' )  ! mean particle radius
    218              IF ( av == 0 )  THEN
    219                 DO  i = nxl, nxr
    220                    DO  j = nys, nyn
    221                       DO  k = nzb, nzt+1
    222                          psi = prt_start_index(k,j,i)
    223                          s_r3 = 0.0_wp
    224                          s_r4 = 0.0_wp
    225                          DO  n = psi, psi+prt_count(k,j,i)-1
    226                             s_r3 = s_r3 + particles(n)%radius**3 * &
    227                                           particles(n)%weight_factor
    228                             s_r4 = s_r4 + particles(n)%radius**4 * &
    229                                           particles(n)%weight_factor
     218          CASE ( 'pr' )  ! mean particle radius (effective radius)
     219             IF ( av == 0 )  THEN
     220                IF ( simulated_time >= particle_advection_start )  THEN
     221                   DO  i = nxl, nxr
     222                      DO  j = nys, nyn
     223                         DO  k = nzb, nz_do3d
     224                            number_of_particles = prt_count(k,j,i)
     225                            IF (number_of_particles <= 0)  CYCLE
     226                            particles => grid_particles(k,j,i)%particles(1:number_of_particles)
     227                            s_r2 = 0.0_wp
     228                            s_r3 = 0.0_wp
     229                            DO  n = 1, number_of_particles
     230                               IF ( particles(n)%particle_mask )  THEN
     231                                  s_r2 = s_r2 + grid_particles(k,j,i)%particles(n)%radius**2 * &
     232                                         grid_particles(k,j,i)%particles(n)%weight_factor
     233                                  s_r3 = s_r3 + grid_particles(k,j,i)%particles(n)%radius**3 * &
     234                                         grid_particles(k,j,i)%particles(n)%weight_factor
     235                               ENDIF
     236                            ENDDO
     237                            IF ( s_r2 > 0.0_wp )  THEN
     238                               mean_r = s_r3 / s_r2
     239                            ELSE
     240                               mean_r = 0.0_wp
     241                            ENDIF
     242                            tend(k,j,i) = mean_r
    230243                         ENDDO
    231                          IF ( s_r3 /= 0.0_wp )  THEN
    232                             mean_r = s_r4 / s_r3
    233                          ELSE
    234                             mean_r = 0.0_wp
    235                          ENDIF
    236                          tend(k,j,i) = mean_r
    237                       ENDDO
    238                    ENDDO
    239                 ENDDO
    240                 CALL exchange_horiz( tend, nbgp )
     244                      ENDDO
     245                   ENDDO
     246                   CALL exchange_horiz( tend, nbgp )
     247                ELSE
     248                   tend = 0.0_wp
     249                ENDIF
    241250                DO  i = 1, mask_size_l(mid,1)
    242251                   DO  j = 1, mask_size_l(mid,2)
     
    304313          CASE ( 'ql_vp' )
    305314             IF ( av == 0 )  THEN
    306                 DO  i = nxl, nxr
    307                    DO  j = nys, nyn
    308                       DO  k = nzb, nz_do3d
    309                          psi = prt_start_index(k,j,i)
    310                          DO  n = psi, psi+prt_count(k,j,i)-1
    311                             tend(k,j,i) = tend(k,j,i) + &
     315                IF ( simulated_time >= particle_advection_start )  THEN
     316                   DO  i = nxl, nxr
     317                      DO  j = nys, nyn
     318                         DO  k = nzb, nz_do3d
     319                            number_of_particles = prt_count(k,j,i)
     320                            IF (number_of_particles <= 0)  CYCLE
     321                            particles => grid_particles(k,j,i)%particles(1:number_of_particles)
     322                            DO  n = 1, number_of_particles
     323                               IF ( particles(n)%particle_mask )  THEN
     324                                  tend(k,j,i) = tend(k,j,i) + &
    312325                                          particles(n)%weight_factor / &
    313326                                          prt_count(k,j,i)
     327                               ENDIF
     328                            ENDDO
    314329                         ENDDO
    315330                      ENDDO
    316331                   ENDDO
    317                 ENDDO
    318                 CALL exchange_horiz( tend, nbgp )
     332                   CALL exchange_horiz( tend, nbgp )
     333                ELSE
     334                   tend = 0.0_wp
     335                ENDIF
    319336                DO  i = 1, mask_size_l(mid,1)
    320337                   DO  j = 1, mask_size_l(mid,2)
Note: See TracChangeset for help on using the changeset viewer.