Ignore:
Timestamp:
Jan 10, 2012 5:30:36 PM (10 years ago)
Author:
suehring
Message:

Bugfix concerning OpenMP parallelization. Calculation of turbulent fluxes in advec_ws is now thread-safe.

File:
1 edited

Legend:

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

    r744 r801  
    44! Current revisions:
    55! -----------------
    6 ! Calculation of turbulent fluxes with WS-scheme only for the whole model
    7 ! domain, not for user-defined subregions.
     6! Calculation of turbulent fluxes in advec_ws is now thread-safe.
    87!
    98! Former revisions:
     
    179178!--       the corresponding fluxes has to satisfiy the same bc.
    180179          IF ( ocean )  THEN
    181              sums_us2_ws_l(nzt+1) = sums_us2_ws_l(nzt)
    182              sums_vs2_ws_l(nzt+1) = sums_vs2_ws_l(nzt)   
     180             sums_us2_ws_l(nzt+1,:) = sums_us2_ws_l(nzt,:)
     181             sums_vs2_ws_l(nzt+1,:) = sums_vs2_ws_l(nzt,:)   
    183182          ENDIF
    184183
     
    186185!         
    187186!--          Swap the turbulent quantities evaluated in advec_ws.
    188              sums_l(:,13,i) = sums_wsus_ws_l(:)       ! w*u*
    189              sums_l(:,15,i) = sums_wsvs_ws_l(:)       ! w*v*
    190              sums_l(:,30,i) = sums_us2_ws_l(:)        ! u*2
    191              sums_l(:,31,i) = sums_vs2_ws_l(:)        ! v*2
    192              sums_l(:,32,i) = sums_ws2_ws_l(:)        ! w*2
     187             sums_l(:,13,i) = sums_wsus_ws_l(:,i)       ! w*u*
     188             sums_l(:,15,i) = sums_wsvs_ws_l(:,i)       ! w*v*
     189             sums_l(:,30,i) = sums_us2_ws_l(:,i)        ! u*2
     190             sums_l(:,31,i) = sums_vs2_ws_l(:,i)        ! v*2
     191             sums_l(:,32,i) = sums_ws2_ws_l(:,i)        ! w*2
    193192             sums_l(:,34,i) = sums_l(:,34,i) + 0.5 *                        &
    194                               ( sums_us2_ws_l(:) + sums_vs2_ws_l(:) +       &
    195                                 sums_ws2_ws_l(:) )    ! e*
     193                              ( sums_us2_ws_l(:,i) + sums_vs2_ws_l(:,i) +   &
     194                                sums_ws2_ws_l(:,i) )    ! e*
    196195             DO  k = nzb, nzt
    197                 sums_l(nzb+5,pr_palm,i) = sums_l(nzb+5,pr_palm,i) + 0.5 * (  &
    198                                                       sums_us2_ws_l(k) +     &
    199                                                       sums_vs2_ws_l(k) +     &
    200                                                       sums_ws2_ws_l(k) )
     196                sums_l(nzb+5,pr_palm,i) = sums_l(nzb+5,pr_palm,i) + 0.5 * ( &
     197                                                      sums_us2_ws_l(k,i) +  &
     198                                                      sums_vs2_ws_l(k,i) +  &
     199                                                      sums_ws2_ws_l(k,i) )
    201200             ENDDO
    202201          ENDDO
     
    207206
    208207          DO  i = 0, threads_per_task-1
    209              sums_l(:,17,i) = sums_wspts_ws_l(:)      ! w*pt* from advec_s_ws
    210              IF ( ocean ) sums_l(:,66,i) = sums_wssas_ws_l(:) ! w*sa*
     208             sums_l(:,17,i) = sums_wspts_ws_l(:,i)      ! w*pt* from advec_s_ws
     209             IF ( ocean ) sums_l(:,66,i) = sums_wssas_ws_l(:,i) ! w*sa*
    211210             IF ( humidity .OR. passive_scalar ) sums_l(:,49,i) =              &
    212                                                    sums_wsqs_ws_l(:) !w*q*
     211                                                   sums_wsqs_ws_l(:,i) !w*q*
    213212          ENDDO
    214213
Note: See TracChangeset for help on using the changeset viewer.