Ignore:
Timestamp:
Aug 18, 2011 4:10:16 PM (13 years ago)
Author:
suehring
Message:

Calculation of turbulent fluxes with WS-scheme only for the whole model domain, not for user-defined subregions

File:
1 edited

Legend:

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

    r737 r743  
    44! Current revisions:
    55! ------------------
     6! Evaluation of turbulent fluxes with WS-scheme only for the whole model
     7! domain. Therefor dimension of arrays needed for statistical evaluation
     8! decreased.
    69!
    710! Former revisions:
     
    130133       IF ( ws_scheme_mom )  THEN
    131134
    132           ALLOCATE( sums_wsus_ws_l(nzb:nzt+1,0:statistic_regions),  &
    133                     sums_wsvs_ws_l(nzb:nzt+1,0:statistic_regions),  &
    134                     sums_us2_ws_l(nzb:nzt+1,0:statistic_regions),   &
    135                     sums_vs2_ws_l(nzb:nzt+1,0:statistic_regions),   &
    136                     sums_ws2_ws_l(nzb:nzt+1,0:statistic_regions))
     135          ALLOCATE( sums_wsus_ws_l(nzb:nzt+1), sums_wsvs_ws_l(nzb:nzt+1),  &
     136                    sums_us2_ws_l(nzb:nzt+1),  sums_vs2_ws_l(nzb:nzt+1),   &
     137                    sums_ws2_ws_l(nzb:nzt+1) )
    137138
    138139          sums_wsus_ws_l = 0.0
     
    146147       IF ( ws_scheme_sca )  THEN
    147148
    148           ALLOCATE( sums_wspts_ws_l(nzb:nzt+1,0:statistic_regions) )
     149          ALLOCATE( sums_wspts_ws_l(nzb:nzt+1) )
    149150          sums_wspts_ws_l = 0.0
    150151
    151152          IF ( humidity .OR. passive_scalar )  THEN
    152              ALLOCATE( sums_wsqs_ws_l(nzb:nzt+1,0:statistic_regions) )
     153             ALLOCATE( sums_wsqs_ws_l(nzb:nzt+1) )
    153154             sums_wsqs_ws_l = 0.0
    154155          ENDIF
    155156
    156157          IF ( ocean )  THEN
    157              ALLOCATE( sums_wssas_ws_l(nzb:nzt+1,0:statistic_regions) )
     158             ALLOCATE( sums_wssas_ws_l(nzb:nzt+1) )
    158159             sums_wssas_ws_l = 0.0
    159160          ENDIF
     
    640641
    641642             DO  k = nzb_s_inner(j,i), nzt
    642                 sums_wspts_ws_l(k,:) = sums_wspts_ws_l(k,:) +                  &
     643                sums_wspts_ws_l(k) = sums_wspts_ws_l(k) +                      &
    643644                                       ( flux_t(k) + diss_t(k) )               &
    644                                  * weight_substep(intermediate_timestep_count) &
    645                                        * rmask(j,i,:)
     645                                 * weight_substep(intermediate_timestep_count)
    646646             ENDDO
    647647             
     
    649649
    650650             DO  k = nzb_s_inner(j,i), nzt
    651                 sums_wssas_ws_l(k,:) = sums_wssas_ws_l(k,:) +                  &
     651                sums_wssas_ws_l(k) = sums_wssas_ws_l(k) +                      &
    652652                                       ( flux_t(k) + diss_t(k) )               &
    653                                  * weight_substep(intermediate_timestep_count) &
    654                                        * rmask(j,i,:)
     653                                 * weight_substep(intermediate_timestep_count)
    655654             ENDDO
    656655             
     
    658657
    659658             DO  k = nzb_s_inner(j,i), nzt
    660                 sums_wsqs_ws_l(k,:)  = sums_wsqs_ws_l(k,:) +                   &
     659                sums_wsqs_ws_l(k)  = sums_wsqs_ws_l(k) +                       &
    661660                                      ( flux_t(k) + diss_t(k) )                &
    662                                  * weight_substep(intermediate_timestep_count) &
    663                                       * rmask(j,i,:)
     661                                 * weight_substep(intermediate_timestep_count)
    664662             ENDDO
    665663
     
    905903!--        Statistical Evaluation of u'u'. The factor has to be applied for
    906904!--        right evaluation when gallilei_trans = .T. .
    907            sums_us2_ws_l(k,:) = sums_us2_ws_l(k,:)                            &
     905           sums_us2_ws_l(k) = sums_us2_ws_l(k)                                &
    908906             + ( flux_r(k) *                                                  &
    909                ( u_comp(k) - 2.0 * hom(k,1,1,:) )                             &
     907               ( u_comp(k) - 2.0 * hom(k,1,1,0) )                             &
    910908             / ( u_comp(k) - gu + 1.0E-20      )                              &
    911909             +   diss_r(k) *                                                  &
    912                  ABS( u_comp(k) - 2.0 * hom(k,1,1,:) )                        &
     910                 ABS( u_comp(k) - 2.0 * hom(k,1,1,0) )                        &
    913911             / ( ABS( u_comp(k) - gu ) + 1.0E-20 ) )                          &
    914              *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     912             *   weight_substep(intermediate_timestep_count)
    915913       ENDDO
    916        sums_us2_ws_l(nzb_u_inner(j,i),:) = sums_us2_ws_l(nzb_u_inner(j,i)+1,:)
     914       sums_us2_ws_l(nzb_u_inner(j,i)) = sums_us2_ws_l(nzb_u_inner(j,i)+1)
    917915                                           
    918916
     
    1000998!--    sum up the vertical momentum fluxes
    1001999       DO  k = nzb_u_inner(j,i), nzt
    1002           sums_wsus_ws_l(k,:) = sums_wsus_ws_l(k,:)                           &
     1000          sums_wsus_ws_l(k) = sums_wsus_ws_l(k)                               &
    10031001              + ( flux_t(k) + diss_t(k) )                                     &
    1004               *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     1002              *   weight_substep(intermediate_timestep_count)
    10051003       ENDDO
    10061004
     
    12431241!--        right evaluation when gallilei_trans = .T. .
    12441242
    1245            sums_vs2_ws_l(k,:) = sums_vs2_ws_l(k,:)                            &
     1243           sums_vs2_ws_l(k) = sums_vs2_ws_l(k)                                &
    12461244             + ( flux_n(k)                                                    &
    1247              * ( v_comp(k) - 2.0 * hom(k,1,2,:) )                             &
     1245             * ( v_comp(k) - 2.0 * hom(k,1,2,0) )                             &
    12481246             / ( v_comp(k) - gv + 1.0E-20 )                                   &
    12491247             +   diss_n(k)                                                    &
    1250              *   ABS( v_comp(k) - 2.0 * hom(k,1,2,:) )                        &
     1248             *   ABS( v_comp(k) - 2.0 * hom(k,1,2,0) )                        &
    12511249             / ( ABS( v_comp(k) - gv ) +1.0E-20 ) )                           &
    1252              *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     1250             *   weight_substep(intermediate_timestep_count)
    12531251
    12541252       ENDDO
    1255        sums_vs2_ws_l(nzb_v_inner(j,i),:) = sums_vs2_ws_l(nzb_v_inner(j,i)+1,:
     1253       sums_vs2_ws_l(nzb_v_inner(j,i)) = sums_vs2_ws_l(nzb_v_inner(j,i)+1
    12561254                                           
    12571255!
     
    13351333             
    13361334       DO  k = nzb_v_inner(j,i), nzt
    1337           sums_wsvs_ws_l(k,:) = sums_wsvs_ws_l(k,:)                           &
     1335          sums_wsvs_ws_l(k) = sums_wsvs_ws_l(k)                               &
    13381336                 + ( flux_t(k) + diss_t(k) )                                  &
    1339                  *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     1337                 *   weight_substep(intermediate_timestep_count)
    13401338       ENDDO
    13411339
     
    16671665       
    16681666       DO  k = nzb_w_inner(j,i), nzt
    1669            sums_ws2_ws_l(k,:)  = sums_ws2_ws_l(k,:)                           &
     1667           sums_ws2_ws_l(k)  = sums_ws2_ws_l(k)                               &
    16701668                 + ( flux_t(k) + diss_t(k) )                                  &
    1671                  *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     1669                 *   weight_substep(intermediate_timestep_count)
    16721670       ENDDO
    16731671
     
    20392037               CASE ( 'pt' )
    20402038                 DO  k = nzb_s_inner(j,i), nzt
    2041                    sums_wspts_ws_l(k,:) = sums_wspts_ws_l(k,:)                &
     2039                   sums_wspts_ws_l(k) = sums_wspts_ws_l(k)                    &
    20422040                      + ( flux_t(k) + diss_t(k) )                             &
    2043                       *   weight_substep(intermediate_timestep_count)         &
    2044                       *   rmask(j,i,:)
     2041                      *   weight_substep(intermediate_timestep_count)
    20452042                 ENDDO
    20462043               CASE ( 'sa' )
    20472044                 DO  k = nzb_s_inner(j,i), nzt
    2048                    sums_wssas_ws_l(k,:) = sums_wssas_ws_l(k,:)                &
     2045                   sums_wssas_ws_l(k) = sums_wssas_ws_l(k)                    &
    20492046                      + ( flux_t(k) + diss_t(k) )                             &
    2050                       *   weight_substep(intermediate_timestep_count)         &
    2051                       *   rmask(j,i,:)
     2047                      *   weight_substep(intermediate_timestep_count)
    20522048                 ENDDO
    20532049               CASE ( 'q' )
    20542050                 DO  k = nzb_s_inner(j,i), nzt
    2055                    sums_wsqs_ws_l(k,:) = sums_wsqs_ws_l(k,:)                  &
     2051                   sums_wsqs_ws_l(k) = sums_wsqs_ws_l(k)                      &
    20562052                      + ( flux_t(k) + diss_t(k) )                             &
    2057                       *   weight_substep(intermediate_timestep_count)         &
    2058                       *   rmask(j,i,:)
     2053                      *   weight_substep(intermediate_timestep_count)
    20592054                 ENDDO
    20602055
     
    23352330               swap_diss_y_local_u(k)   = diss_n(k)
    23362331                     
    2337                sums_us2_ws_l(k,:)  = sums_us2_ws_l(k,:)                        &
     2332               sums_us2_ws_l(k)  = sums_us2_ws_l(k)                            &
    23382333                 + ( flux_r(k)                                                 &
    2339                  * ( u_comp(k) - 2.0 * hom(k,1,1,:) )                          &
     2334                 * ( u_comp(k) - 2.0 * hom(k,1,1,0) )                          &
    23402335                 / ( u_comp(k) - gu + 1.0E-20 )                                &
    23412336                 +   diss_r(k)                                                 &
    2342                  *   ABS( u_comp(k) - 2.0 * hom(k,1,1,:) )                     &
     2337                 *   ABS( u_comp(k) - 2.0 * hom(k,1,1,0) )                     &
    23432338                 / ( ABS( u_comp(k) - gu) + 1.0E-20) )                         &
    2344                  *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     2339                 *   weight_substep(intermediate_timestep_count)
    23452340            ENDDO
    2346             sums_us2_ws_l(nzb_u_inner(j,i),:) =                                &
    2347                                            sums_us2_ws_l(nzb_u_inner(j,i)+1,:)
     2341            sums_us2_ws_l(nzb_u_inner(j,i)) = sums_us2_ws_l(nzb_u_inner(j,i)+1)
    23482342         ENDDO
    23492343       ENDDO
     
    24382432!-- at last vertical momentum flux is accumulated
    24392433            DO  k = nzb_u_inner(j,i), nzt
    2440                sums_wsus_ws_l(k,:) = sums_wsus_ws_l(k,:)                       &
     2434               sums_wsus_ws_l(k) = sums_wsus_ws_l(k)                           &
    24412435                              + ( flux_t(k) + diss_t(k) )                      &
    2442                               *   weight_substep(intermediate_timestep_count)  &
    2443                               *   rmask(j,i,:)
     2436                              *   weight_substep(intermediate_timestep_count)
    24442437            ENDDO
    24452438          ENDDO
     
    27162709               swap_diss_y_local_v(k)   = diss_n(k)   
    27172710
    2718                sums_vs2_ws_l(k,:) = sums_vs2_ws_l(k,:)                         &
    2719                   + ( flux_n(k) * ( v_comp(k) - 2.0 * hom(k,1,2,:) )           &
     2711               sums_vs2_ws_l(k) = sums_vs2_ws_l(k)                             &
     2712                  + ( flux_n(k) * ( v_comp(k) - 2.0 * hom(k,1,2,0) )           &
    27202713                  / ( v_comp(k) - gv + 1.0E-20 )                               &
    2721                   +   diss_n(k) * ABS( v_comp(k) - 2.0 * hom(k,1,2,:) )        &
     2714                  +   diss_n(k) * ABS( v_comp(k) - 2.0 * hom(k,1,2,0) )        &
    27222715                  / ( ABS( v_comp(k) - gv ) + 1.0E-20 ) )                      &
    2723                   *   weight_substep(intermediate_timestep_count) * rmask(j,i,:)
     2716                  *   weight_substep(intermediate_timestep_count)
    27242717            ENDDO
    2725             sums_vs2_ws_l(nzb_v_inner(j,i),:) =                                & 
    2726                                            sums_vs2_ws_l(nzb_v_inner(j,i)+1,:)
     2718            sums_vs2_ws_l(nzb_v_inner(j,i)) = sums_vs2_ws_l(nzb_v_inner(j,i)+1)
    27272719         ENDDO
    27282720       ENDDO
     
    28142806!-          At last vertical momentum flux is accumulated.
    28152807            DO  k = nzb_v_inner(j,i), nzt
    2816                sums_wsvs_ws_l(k,:) = sums_wsvs_ws_l(k,:)                       &
     2808               sums_wsvs_ws_l(k) = sums_wsvs_ws_l(k)                           &
    28172809                               + ( flux_t(k) + diss_t(k) )                     &
    2818                                *   weight_substep(intermediate_timestep_count) &
    2819                                *   rmask(j,i,:)
     2810                               *   weight_substep(intermediate_timestep_count)
    28202811            ENDDO
    2821             sums_vs2_ws_l(nzb_v_inner(j,i),:) =                                &
    2822                                              sums_vs2_ws_l(nzb_v_inner(j,i)+1,:)
     2812            sums_vs2_ws_l(nzb_v_inner(j,i)) = sums_vs2_ws_l(nzb_v_inner(j,i)+1)
    28232813          ENDDO
    28242814       ENDDO
     
    31923182!--         at last vertical momentum flux is accumulated
    31933183            DO  k = nzb_w_inner(j,i), nzt
    3194                sums_ws2_ws_l(k,:)  = sums_ws2_ws_l(k,:)                        &
     3184               sums_ws2_ws_l(k)  = sums_ws2_ws_l(k)                            &
    31953185                               + ( flux_t(k) + diss_t(k) )                     &
    3196                                *   weight_substep(intermediate_timestep_count) &
    3197                                *   rmask(j,i,:)
     3186                               *   weight_substep(intermediate_timestep_count)
    31983187            ENDDO
    31993188
Note: See TracChangeset for help on using the changeset viewer.