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

new Lagrangian particle structure integrated

File:
1 edited

Legend:

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

    r1354 r1359  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! New particle structure integrated.
    2323!
    2424! Former revisions:
     
    7070
    7171    USE indices,                                                               &
    72         ONLY:
     72        ONLY: nxl, nxr, nys, nyn, nzb, nzt
    7373
    7474    USE kinds
     
    7777
    7878    USE particle_attributes,                                                   &
    79         ONLY:  number_of_particles, number_of_particle_groups, particles
     79        ONLY:  grid_particles, number_of_particles, number_of_particle_groups, &
     80               particles, prt_count
    8081
    8182    USE pegrid
     
    8788    INTEGER(iwp) ::  inum !:
    8889    INTEGER(iwp) ::  j    !:
     90    INTEGER(iwp) ::  jg   !:
     91    INTEGER(iwp) ::  k    !:
    8992    INTEGER(iwp) ::  n    !:
    9093
     
    120123!-- Calculate or collect the particle time series quantities for all particles
    121124!-- and seperately for each particle group (if there is more than one group)
    122     DO  n = 1, number_of_particles
    123 
    124        pts_value_l(0,1)  = number_of_particles            ! total # of particles
    125        pts_value_l(0,2)  = pts_value_l(0,2) + &
    126                            ( particles(n)%x - particles(n)%origin_x )  ! mean x
    127        pts_value_l(0,3)  = pts_value_l(0,3) + &
    128                            ( particles(n)%y - particles(n)%origin_y )  ! mean y
    129        pts_value_l(0,4)  = pts_value_l(0,4) + &
    130                            ( particles(n)%z - particles(n)%origin_z )  ! mean z
    131        pts_value_l(0,5)  = pts_value_l(0,5) + particles(n)%z ! mean z (absolute)
    132        pts_value_l(0,6)  = pts_value_l(0,6) + particles(n)%speed_x     ! mean u
    133        pts_value_l(0,7)  = pts_value_l(0,7) + particles(n)%speed_y     ! mean v
    134        pts_value_l(0,8)  = pts_value_l(0,8) + particles(n)%speed_z     ! mean w
    135        IF ( .NOT. curvature_solution_effects )  THEN
    136           pts_value_l(0,9)  = pts_value_l(0,9) + particles(n)%rvar1  ! mean sgsu
    137           pts_value_l(0,10) = pts_value_l(0,10) + particles(n)%rvar2 ! mean sgsv
    138           pts_value_l(0,11) = pts_value_l(0,11) + particles(n)%rvar3 ! mean sgsw
    139        ENDIF
    140        IF ( particles(n)%speed_z > 0.0_wp )  THEN
    141           pts_value_l(0,12) = pts_value_l(0,12) + 1.0_wp  ! # of upward moving prts
    142           pts_value_l(0,13) = pts_value_l(0,13) + &
    143                                             particles(n)%speed_z ! mean w upw.
    144        ELSE
    145           pts_value_l(0,14) = pts_value_l(0,14) + &
    146                                             particles(n)%speed_z ! mean w down
    147        ENDIF
    148        pts_value_l(0,15) = pts_value_l(0,15) + particles(n)%radius ! mean rad
    149        pts_value_l(0,16) = MIN( pts_value_l(0,16), particles(n)%radius ) ! minrad
    150        pts_value_l(0,17) = MAX( pts_value_l(0,17), particles(n)%radius ) ! maxrad
    151        pts_value_l(0,18) = number_of_particles
    152        pts_value_l(0,19) = number_of_particles
    153 
    154 !
    155 !--    Repeat the same for the respective particle group
    156        IF ( number_of_particle_groups > 1 )  THEN
    157           j = particles(n)%group
    158 
    159           pts_value_l(j,1)  = pts_value_l(j,1)  + 1
    160           pts_value_l(j,2)  = pts_value_l(j,2)  + &
    161                               ( particles(n)%x - particles(n)%origin_x )
    162           pts_value_l(j,3)  = pts_value_l(j,3)  + &
    163                               ( particles(n)%y - particles(n)%origin_y )
    164           pts_value_l(j,4)  = pts_value_l(j,4)  + &
    165                               ( particles(n)%z - particles(n)%origin_z )
    166           pts_value_l(j,5)  = pts_value_l(j,5)  + particles(n)%z
    167           pts_value_l(j,6)  = pts_value_l(j,6)  + particles(n)%speed_x
    168           pts_value_l(j,7)  = pts_value_l(j,7)  + particles(n)%speed_y
    169           pts_value_l(j,8)  = pts_value_l(j,8)  + particles(n)%speed_z
    170           IF ( .NOT. curvature_solution_effects )  THEN
    171              pts_value_l(j,9)  = pts_value_l(j,9)  + particles(n)%rvar1
    172              pts_value_l(j,10) = pts_value_l(j,10) + particles(n)%rvar2
    173              pts_value_l(j,11) = pts_value_l(j,11) + particles(n)%rvar3
    174           ENDIF
    175           IF ( particles(n)%speed_z > 0.0_wp )  THEN
    176              pts_value_l(j,12) = pts_value_l(j,12) + 1.0_wp
    177              pts_value_l(j,13) = pts_value_l(j,13) + particles(n)%speed_z
    178           ELSE
    179              pts_value_l(j,14) = pts_value_l(j,14) + particles(n)%speed_z
    180           ENDIF
    181           pts_value_l(j,15) = pts_value_l(j,15) + particles(n)%radius
    182           pts_value_l(j,16) = MIN( pts_value(j,16), particles(n)%radius )
    183           pts_value_l(j,17) = MAX( pts_value(j,17), particles(n)%radius )
    184           pts_value_l(j,18) = pts_value_l(j,18) + 1.0_wp
    185           pts_value_l(j,19) = pts_value_l(j,19) + 1.0_wp
    186 
    187        ENDIF
    188 
     125    DO  i = nxl, nxr
     126       DO  j = nys, nyn
     127          DO  k = nzb, nzt
     128             number_of_particles = prt_count(k,j,i)
     129             IF (number_of_particles <= 0)  CYCLE
     130             particles => grid_particles(k,j,i)%particles(1:number_of_particles)
     131             DO  n = 1, number_of_particles
     132
     133                IF ( particles(n)%particle_mask )  THEN  ! Restrict analysis to active particles
     134
     135                   pts_value_l(0,1)  = pts_value_l(0,1) + 1.0_wp  ! total # of particles
     136                   pts_value_l(0,2)  = pts_value_l(0,2) +                      &
     137                          ( particles(n)%x - particles(n)%origin_x )  ! mean x
     138                   pts_value_l(0,3)  = pts_value_l(0,3) +                      &
     139                          ( particles(n)%y - particles(n)%origin_y )  ! mean y
     140                   pts_value_l(0,4)  = pts_value_l(0,4) +                      &
     141                          ( particles(n)%z - particles(n)%origin_z )  ! mean z
     142                   pts_value_l(0,5)  = pts_value_l(0,5) + particles(n)%z        ! mean z (absolute)
     143                   pts_value_l(0,6)  = pts_value_l(0,6) + particles(n)%speed_x  ! mean u
     144                   pts_value_l(0,7)  = pts_value_l(0,7) + particles(n)%speed_y  ! mean v
     145                   pts_value_l(0,8)  = pts_value_l(0,8) + particles(n)%speed_z  ! mean w
     146                   IF ( .NOT. curvature_solution_effects )  THEN
     147                      pts_value_l(0,9)  = pts_value_l(0,9)  + particles(n)%rvar1 ! mean sgsu
     148                      pts_value_l(0,10) = pts_value_l(0,10) + particles(n)%rvar2 ! mean sgsv
     149                      pts_value_l(0,11) = pts_value_l(0,11) + particles(n)%rvar3 ! mean sgsw
     150                   ENDIF
     151                   IF ( particles(n)%speed_z > 0.0_wp )  THEN
     152                      pts_value_l(0,12) = pts_value_l(0,12) + 1.0_wp  ! # of upward moving prts
     153                      pts_value_l(0,13) = pts_value_l(0,13) +                  &
     154                                              particles(n)%speed_z ! mean w upw.
     155                   ELSE
     156                      pts_value_l(0,14) = pts_value_l(0,14) +                  &
     157                                              particles(n)%speed_z ! mean w down
     158                   ENDIF
     159                   pts_value_l(0,15) = pts_value_l(0,15) + particles(n)%radius ! mean rad
     160                   pts_value_l(0,16) = MIN( pts_value_l(0,16), particles(n)%radius ) ! minrad
     161                   pts_value_l(0,17) = MAX( pts_value_l(0,17), particles(n)%radius ) ! maxrad
     162                   pts_value_l(0,18) = pts_value_l(0,18) + 1.0_wp
     163                   pts_value_l(0,19) = pts_value_l(0,18) + 1.0_wp
     164!
     165!--                Repeat the same for the respective particle group
     166                   IF ( number_of_particle_groups > 1 )  THEN
     167                      jg = particles(n)%group
     168
     169                      pts_value_l(jg,1)  = pts_value_l(jg,1) + 1.0_wp
     170                      pts_value_l(jg,2)  = pts_value_l(jg,2) +                   &
     171                           ( particles(n)%x - particles(n)%origin_x )
     172                      pts_value_l(jg,3)  = pts_value_l(jg,3) +                   &
     173                           ( particles(n)%y - particles(n)%origin_y )
     174                      pts_value_l(jg,4)  = pts_value_l(jg,4) +                   &
     175                           ( particles(n)%z - particles(n)%origin_z )
     176                      pts_value_l(jg,5)  = pts_value_l(jg,5) + particles(n)%z
     177                      pts_value_l(jg,6)  = pts_value_l(jg,6) + particles(n)%speed_x
     178                      pts_value_l(jg,7)  = pts_value_l(jg,7) + particles(n)%speed_y
     179                      pts_value_l(jg,8)  = pts_value_l(jg,8) + particles(n)%speed_z
     180                      IF ( .NOT. curvature_solution_effects )  THEN
     181                         pts_value_l(jg,9)  = pts_value_l(jg,9)  + particles(n)%rvar1
     182                         pts_value_l(jg,10) = pts_value_l(jg,10) + particles(n)%rvar2
     183                         pts_value_l(jg,11) = pts_value_l(jg,11) + particles(n)%rvar3
     184                      ENDIF
     185                      IF ( particles(n)%speed_z > 0.0_wp )  THEN
     186                         pts_value_l(jg,12) = pts_value_l(jg,12) + 1.0_wp
     187                         pts_value_l(jg,13) = pts_value_l(jg,13) + particles(n)%speed_z
     188                      ELSE
     189                         pts_value_l(jg,14) = pts_value_l(jg,14) + particles(n)%speed_z
     190                      ENDIF
     191                      pts_value_l(jg,15) = pts_value_l(jg,15) + particles(n)%radius
     192                      pts_value_l(jg,16) = MIN( pts_value(jg,16), particles(n)%radius )
     193                      pts_value_l(jg,17) = MAX( pts_value(jg,17), particles(n)%radius )
     194                      pts_value_l(jg,18) = pts_value_l(jg,18) + 1.0_wp
     195                      pts_value_l(jg,19) = pts_value_l(jg,19) + 1.0_wp
     196                   ENDIF
     197
     198                ENDIF
     199
     200             ENDDO
     201
     202          ENDDO
     203       ENDDO
    189204    ENDDO
     205
    190206
    191207#if defined( __parallel )
     
    243259!-- Calculate higher order moments of particle time series quantities,
    244260!-- seperately for each particle group (if there is more than one group)
    245     DO  n = 1, number_of_particles
    246 
    247        pts_value_l(0,20) = pts_value_l(0,20) + ( particles(n)%x - &
    248                            particles(n)%origin_x - pts_value(0,2) )**2 ! x*2
    249        pts_value_l(0,21) = pts_value_l(0,21) + ( particles(n)%y - &
    250                            particles(n)%origin_y - pts_value(0,3) )**2 ! y*2
    251        pts_value_l(0,22) = pts_value_l(0,22) + ( particles(n)%z - &
    252                            particles(n)%origin_z - pts_value(0,4) )**2 ! z*2
    253        pts_value_l(0,23) = pts_value_l(0,23) + ( particles(n)%speed_x - &
    254                                                 pts_value(0,6) )**2   ! u*2
    255        pts_value_l(0,24) = pts_value_l(0,24) + ( particles(n)%speed_y - &
    256                                                  pts_value(0,7) )**2   ! v*2
    257        pts_value_l(0,25) = pts_value_l(0,25) + ( particles(n)%speed_z - &
    258                                                  pts_value(0,8) )**2   ! w*2
    259        IF ( .NOT. curvature_solution_effects )  THEN
    260           pts_value_l(0,26) = pts_value_l(0,26) + ( particles(n)%rvar1 - &
    261                                                     pts_value(0,9) )**2   ! u"2
    262           pts_value_l(0,27) = pts_value_l(0,27) + ( particles(n)%rvar2 - &
    263                                                     pts_value(0,10) )**2  ! v"2
    264           pts_value_l(0,28) = pts_value_l(0,28) + ( particles(n)%rvar3 - &
    265                                                     pts_value(0,11) )**2  ! w"2
    266        ENDIF
    267 !
    268 !--    Repeat the same for the respective particle group
    269        IF ( number_of_particle_groups > 1 )  THEN
    270           j = particles(n)%group
    271 
    272           pts_value_l(j,20) = pts_value_l(j,20) + ( particles(n)%x - &
    273                               particles(n)%origin_x - pts_value(j,2) )**2
    274           pts_value_l(j,21) = pts_value_l(j,21) + ( particles(n)%y - &
    275                               particles(n)%origin_y - pts_value(j,3) )**2
    276           pts_value_l(j,22) = pts_value_l(j,22) + ( particles(n)%z - &
    277                               particles(n)%origin_z - pts_value(j,4) )**2
    278           pts_value_l(j,23) = pts_value_l(j,23) + ( particles(n)%speed_x - &
    279                                                     pts_value(j,6) )**2
    280           pts_value_l(j,24) = pts_value_l(j,24) + ( particles(n)%speed_y - &
    281                                                     pts_value(j,7) )**2
    282           pts_value_l(j,25) = pts_value_l(j,25) + ( particles(n)%speed_z - &
    283                                                     pts_value(j,8) )**2
    284           IF ( .NOT. curvature_solution_effects )  THEN
    285              pts_value_l(j,26) = pts_value_l(j,26) + ( particles(n)%rvar1 - &
    286                                                        pts_value(j,9) )**2
    287              pts_value_l(j,27) = pts_value_l(j,27) + ( particles(n)%rvar2 - &
    288                                                        pts_value(j,10) )**2
    289              pts_value_l(j,28) = pts_value_l(j,28) + ( particles(n)%rvar3 - &
    290                                                        pts_value(j,11) )**2
    291           ENDIF
    292        ENDIF
    293 
     261    DO  i = nxl, nxr
     262       DO  j = nys, nyn
     263          DO  k = nzb, nzt
     264             number_of_particles = prt_count(k,j,i)
     265             IF (number_of_particles <= 0)  CYCLE
     266             particles => grid_particles(k,j,i)%particles(1:number_of_particles)
     267             DO  n = 1, number_of_particles
     268
     269                pts_value_l(0,20) = pts_value_l(0,20) + ( particles(n)%x - &
     270                                    particles(n)%origin_x - pts_value(0,2) )**2 ! x*2
     271                pts_value_l(0,21) = pts_value_l(0,21) + ( particles(n)%y - &
     272                                    particles(n)%origin_y - pts_value(0,3) )**2 ! y*2
     273                pts_value_l(0,22) = pts_value_l(0,22) + ( particles(n)%z - &
     274                                    particles(n)%origin_z - pts_value(0,4) )**2 ! z*2
     275                pts_value_l(0,23) = pts_value_l(0,23) + ( particles(n)%speed_x - &
     276                                                         pts_value(0,6) )**2   ! u*2
     277                pts_value_l(0,24) = pts_value_l(0,24) + ( particles(n)%speed_y - &
     278                                                          pts_value(0,7) )**2   ! v*2
     279                pts_value_l(0,25) = pts_value_l(0,25) + ( particles(n)%speed_z - &
     280                                                          pts_value(0,8) )**2   ! w*2
     281                IF ( .NOT. curvature_solution_effects )  THEN
     282                   pts_value_l(0,26) = pts_value_l(0,26) + ( particles(n)%rvar1 - &
     283                                                             pts_value(0,9) )**2   ! u"2
     284                   pts_value_l(0,27) = pts_value_l(0,27) + ( particles(n)%rvar2 - &
     285                                                             pts_value(0,10) )**2  ! v"2
     286                   pts_value_l(0,28) = pts_value_l(0,28) + ( particles(n)%rvar3 - &
     287                                                             pts_value(0,11) )**2  ! w"2
     288                ENDIF
     289!
     290!--             Repeat the same for the respective particle group
     291                IF ( number_of_particle_groups > 1 )  THEN
     292                   jg = particles(n)%group
     293
     294                   pts_value_l(jg,20) = pts_value_l(jg,20) + ( particles(n)%x - &
     295                                       particles(n)%origin_x - pts_value(jg,2) )**2
     296                   pts_value_l(jg,21) = pts_value_l(jg,21) + ( particles(n)%y - &
     297                                       particles(n)%origin_y - pts_value(jg,3) )**2
     298                   pts_value_l(jg,22) = pts_value_l(jg,22) + ( particles(n)%z - &
     299                                       particles(n)%origin_z - pts_value(jg,4) )**2
     300                   pts_value_l(jg,23) = pts_value_l(jg,23) + ( particles(n)%speed_x - &
     301                                                             pts_value(jg,6) )**2
     302                   pts_value_l(jg,24) = pts_value_l(jg,24) + ( particles(n)%speed_y - &
     303                                                             pts_value(jg,7) )**2
     304                   pts_value_l(jg,25) = pts_value_l(jg,25) + ( particles(n)%speed_z - &
     305                                                             pts_value(jg,8) )**2
     306                   IF ( .NOT. curvature_solution_effects )  THEN
     307                      pts_value_l(jg,26) = pts_value_l(jg,26) + ( particles(n)%rvar1 - &
     308                                                                pts_value(jg,9) )**2
     309                      pts_value_l(jg,27) = pts_value_l(jg,27) + ( particles(n)%rvar2 - &
     310                                                                pts_value(jg,10) )**2
     311                      pts_value_l(jg,28) = pts_value_l(jg,28) + ( particles(n)%rvar3 - &
     312                                                                pts_value(jg,11) )**2
     313                   ENDIF
     314                ENDIF
     315
     316             ENDDO
     317          ENDDO
     318       ENDDO
    294319    ENDDO
    295320
Note: See TracChangeset for help on using the changeset viewer.