Ignore:
Timestamp:
Sep 24, 2018 3:42:55 PM (6 years ago)
Author:
knoop
Message:

Modularization of all bulk cloud physics code components

File:
1 edited

Legend:

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

    r3241 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3241 2018-09-12 15:02:00Z raasch
    2730! unused variables removed
    2831!
     
    204207        ONLY:  dzw, e, heatflux_output_conversion, nc, nr, p, prr, pt,         &
    205208               q, qc, ql, ql_c, ql_v, qr, rho_ocean, s, sa, u, v, vpt, w,      &
    206                waterflux_output_conversion
     209               waterflux_output_conversion, d_exner
    207210
    208211    USE averaging,                                                             &
    209         ONLY:  e_av, ghf_av, lpt_av, lwp_av, nc_av,     &
    210                nr_av,                                                          &
    211                ol_av, p_av, pc_av, pr_av, prr_av, pt_av, q_av, qc_av, ql_av,   &
    212                ql_c_av, ql_v_av, ql_vp_av, qr_av, qsws_av, qv_av, r_a_av,      &
     212        ONLY:  e_av, ghf_av, lpt_av, lwp_av,                                   &
     213               ol_av, p_av, pc_av, pr_av, pt_av, q_av, ql_av,                  &
     214               ql_c_av, ql_v_av, ql_vp_av, qsws_av, qv_av, r_a_av,             &
    213215               rho_ocean_av, s_av, sa_av, shf_av, ssws_av, ts_av, tsurf_av,    &
    214216               u_av, us_av, v_av, vpt_av, w_av, z0_av, z0h_av, z0q_av
    215217
     218    USE basic_constants_and_equations_mod,                                     &
     219        ONLY:  c_p, lv_d_cp, l_v
     220
     221    USE bulk_cloud_model_mod,                                                  &
     222        ONLY:  bulk_cloud_model, bcm_3d_data_averaging
     223
    216224    USE chemistry_model_mod,                                                   &
    217225        ONLY:  chem_3d_data_averaging
    218226
    219     USE cloud_parameters,                                                      &
    220         ONLY:  cp, l_d_cp, l_v, pt_d_t
    221 
    222227    USE control_parameters,                                                    &
    223         ONLY:  air_chemistry, average_count_3d, cloud_physics, doav, doav_n,   &
     228        ONLY:  air_chemistry, average_count_3d, doav, doav_n,                  &
    224229               land_surface, rho_surface, urban_surface, uv_exposure,          &
    225230               varnamelength
     
    323328                lwp_av = 0.0_wp
    324329
    325              CASE ( 'nc' )
    326                 IF ( .NOT. ALLOCATED( nc_av ) )  THEN
    327                    ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    328                 ENDIF
    329                 nc_av = 0.0_wp
    330 
    331              CASE ( 'nr' )
    332                 IF ( .NOT. ALLOCATED( nr_av ) )  THEN
    333                    ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    334                 ENDIF
    335                 nr_av = 0.0_wp
    336 
    337330             CASE ( 'ol*' )
    338331                IF ( .NOT. ALLOCATED( ol_av ) )  THEN
     
    359352                pr_av = 0.0_wp
    360353
    361              CASE ( 'prr' )
    362                 IF ( .NOT. ALLOCATED( prr_av ) )  THEN
    363                    ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    364                 ENDIF
    365                 prr_av = 0.0_wp
    366 
    367354             CASE ( 'pt' )
    368355                IF ( .NOT. ALLOCATED( pt_av ) )  THEN
     
    377364                q_av = 0.0_wp
    378365
    379              CASE ( 'qc' )
    380                 IF ( .NOT. ALLOCATED( qc_av ) )  THEN
    381                    ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    382                 ENDIF
    383                 qc_av = 0.0_wp
    384 
    385366             CASE ( 'ql' )
    386367                IF ( .NOT. ALLOCATED( ql_av ) )  THEN
     
    406387                ENDIF
    407388                ql_vp_av = 0.0_wp
    408 
    409              CASE ( 'qr' )
    410                 IF ( .NOT. ALLOCATED( qr_av ) )  THEN
    411                    ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    412                 ENDIF
    413                 qr_av = 0.0_wp
    414389
    415390             CASE ( 'qsws*' )
     
    532507!--             Turbulence closure module
    533508                CALL tcm_3d_data_averaging( 'allocate', doav(ii) )
     509
     510!
     511!--             Microphysics module quantities
     512                IF ( bulk_cloud_model )  THEN
     513                   CALL bcm_3d_data_averaging( 'allocate', doav(ii) )
     514                ENDIF
    534515
    535516!
     
    654635             ENDIF
    655636
    656           CASE ( 'nc' )
    657              IF ( ALLOCATED( nc_av ) ) THEN
    658                 DO  i = nxlg, nxrg
    659                    DO  j = nysg, nyng
    660                       DO  k = nzb, nzt+1
    661                          nc_av(k,j,i) = nc_av(k,j,i) + nc(k,j,i)
    662                       ENDDO
    663                    ENDDO
    664                 ENDDO
    665              ENDIF
    666 
    667           CASE ( 'nr' )
    668              IF ( ALLOCATED( nr_av ) ) THEN
    669                 DO  i = nxlg, nxrg
    670                    DO  j = nysg, nyng
    671                       DO  k = nzb, nzt+1
    672                          nr_av(k,j,i) = nr_av(k,j,i) + nr(k,j,i)
    673                       ENDDO
    674                    ENDDO
    675                 ENDDO
    676              ENDIF
    677 
    678637          CASE ( 'ol*' )
    679638             IF ( ALLOCATED( ol_av ) ) THEN
     
    758717             ENDIF
    759718
    760           CASE ( 'prr' )
    761              IF ( ALLOCATED( prr_av ) ) THEN
    762                 DO  i = nxlg, nxrg
    763                    DO  j = nysg, nyng
    764                       DO  k = nzb, nzt+1
    765                          prr_av(k,j,i) = prr_av(k,j,i) + prr(k,j,i)
    766                       ENDDO
    767                    ENDDO
    768                 ENDDO
    769              ENDIF
    770 
    771719          CASE ( 'pt' )
    772720             IF ( ALLOCATED( pt_av ) ) THEN
    773                 IF ( .NOT. cloud_physics ) THEN
     721                IF ( .NOT. bulk_cloud_model ) THEN
    774722                DO  i = nxlg, nxrg
    775723                   DO  j = nysg, nyng
     
    783731                   DO  j = nysg, nyng
    784732                      DO  k = nzb, nzt+1
    785                             pt_av(k,j,i) = pt_av(k,j,i) + pt(k,j,i) + l_d_cp * &
    786                                                           pt_d_t(k) * ql(k,j,i)
     733                            pt_av(k,j,i) = pt_av(k,j,i) + pt(k,j,i) + lv_d_cp * &
     734                                                          d_exner(k) * ql(k,j,i)
    787735                         ENDDO
    788736                      ENDDO
     
    797745                      DO  k = nzb, nzt+1
    798746                         q_av(k,j,i) = q_av(k,j,i) + q(k,j,i)
    799                       ENDDO
    800                    ENDDO
    801                 ENDDO
    802              ENDIF
    803 
    804           CASE ( 'qc' )
    805              IF ( ALLOCATED( qc_av ) ) THEN
    806                 DO  i = nxlg, nxrg
    807                    DO  j = nysg, nyng
    808                       DO  k = nzb, nzt+1
    809                          qc_av(k,j,i) = qc_av(k,j,i) + qc(k,j,i)
    810747                      ENDDO
    811748                   ENDDO
     
    862799                            ENDIF
    863800                         ENDDO
    864                       ENDDO
    865                    ENDDO
    866                 ENDDO
    867              ENDIF
    868 
    869           CASE ( 'qr' )
    870              IF ( ALLOCATED( qr_av ) ) THEN
    871                 DO  i = nxlg, nxrg
    872                    DO  j = nysg, nyng
    873                       DO  k = nzb, nzt+1
    874                          qr_av(k,j,i) = qr_av(k,j,i) + qr(k,j,i)
    875801                      ENDDO
    876802                   ENDDO
     
    1001927                         m = surf_lsm_h%end_index(j,i)
    1002928                         shf_av(j,i) = shf_av(j,i) +                           &
    1003                                          surf_lsm_h%shf(m) * cp
     929                                         surf_lsm_h%shf(m) * c_p
    1004930                      ELSEIF ( match_usm )  THEN
    1005931                         m = surf_usm_h%end_index(j,i)
    1006932                         shf_av(j,i) = shf_av(j,i) +                           &
    1007                                          surf_usm_h%shf(m) * cp
     933                                         surf_usm_h%shf(m) * c_p
    1008934                      ENDIF
    1009935                   ENDDO
     
    12651191
    12661192!
     1193!--          Microphysics module quantities
     1194             IF ( bulk_cloud_model )  THEN
     1195                CALL bcm_3d_data_averaging( 'sum', doav(ii) )
     1196             ENDIF
     1197
     1198!
    12671199!--          Land surface quantity
    12681200             IF ( land_surface )  THEN
Note: See TracChangeset for help on using the changeset viewer.