Changeset 3274 for palm/trunk


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

Modularization of all bulk cloud physics code components

Location:
palm/trunk/SOURCE
Files:
2 added
4 deleted
58 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/Makefile

    r3235 r3274  
    461461        advec_w_up.f90 \
    462462        average_3d_data.f90 \
     463        basic_constants_and_equations_mod.f90 \
    463464        boundary_conds.f90 \
    464465        buoyancy.f90 \
    465         calc_liquid_water_content.f90 \
    466466        calc_mean_profile.f90 \
    467467        calc_radiation.f90 \
     
    488488        data_output_tseries.f90 \
    489489        date_and_time_mod.f90 \
    490         diagnostic_quantities_mod.f90 \
    491490        diffusion_s.f90 \
    492491        diffusion_u.f90 \
     
    506505        init_3d_model.f90 \
    507506        init_advec.f90 \
    508         init_cloud_physics.f90 \
    509507        init_coupling.f90 \
    510508        init_dvrp.f90 \
     
    542540        lpm_write_restart_file.f90 \
    543541        message.f90 \
    544         microphysics_mod.f90 \
     542        bulk_cloud_model_mod.f90 \
    545543        model_1d_mod.f90 \
    546544        mod_kinds.f90 \
     
    691689        modules.o
    692690advec_ws.o: \
     691        bulk_cloud_model_mod.o \
    693692        mod_kinds.o \
    694693        modules.o
     
    700699        modules.o
    701700average_3d_data.o: \
     701        bulk_cloud_model_mod.o \
    702702        chemistry_model_mod.o \
    703703        cpulog_mod.o \
     
    710710        turbulence_closure_mod.o \
    711711        urban_surface_mod.o
     712basic_constants_and_equations_mod.o: \
     713        mod_kinds.o
    712714boundary_conds.o: \
     715        basic_constants_and_equations_mod.o \
     716        bulk_cloud_model_mod.o \
    713717        chemistry_model_mod.o \
    714718        mod_kinds.o \
     
    717721        surface_mod.o \
    718722        turbulence_closure_mod.o
     723bulk_cloud_model_mod.o: \
     724        basic_constants_and_equations_mod.o \
     725        cpulog_mod.o \
     726        mod_kinds.o \
     727        modules.o \
     728        surface_mod.o
    719729buoyancy.o: \
     730        basic_constants_and_equations_mod.o \
    720731        mod_kinds.o \
    721732        modules.o
     
    723734        mod_kinds.o \
    724735        modules.o
    725 calc_liquid_water_content.o: \
    726         diagnostic_quantities_mod.o \
    727         mod_kinds.o \
    728         modules.o
    729736calc_radiation.o: \
     737        basic_constants_and_equations_mod.o \
    730738        mod_kinds.o \
    731739        modules.o
     
    741749        posix_calls_from_fortran.o
    742750check_parameters.o: \
     751        basic_constants_and_equations_mod.o \
     752        bulk_cloud_model_mod.o \
    743753        chemistry_model_mod.o \
    744754        gust_mod.o \
    745755        land_surface_model_mod.o \
    746756        large_scale_forcing_nudging_mod.o \
    747         microphysics_mod.o \
    748757        model_1d_mod.o \
    749758        mod_kinds.o \
     
    778787        modules.o
    779788chem_photolysis_mod.o: \
     789        basic_constants_and_equations_mod.o \
    780790        chem_gasphase_mod.o \
    781791        chemistry_model_mod.o \
     
    788798        netcdf_interface_mod.o
    789799compute_vpt.o: \
     800        basic_constants_and_equations_mod.o \
     801        bulk_cloud_model_mod.o \
    790802        mod_kinds.o \
    791803        modules.o
     
    803815        modules.o
    804816data_output_dvrp.o: \
     817        basic_constants_and_equations_mod.o \
     818        bulk_cloud_model_mod.o \
    805819        cpulog_mod.o \
    806820        mod_kinds.o \
    807821        modules.o
    808822data_output_mask.o: \
     823        basic_constants_and_equations_mod.o \
     824        bulk_cloud_model_mod.o \
    809825        cpulog_mod.o \
    810826        mod_kinds.o \
     
    824840        netcdf_interface_mod.o
    825841data_output_spectra.o: \
     842        basic_constants_and_equations_mod.o \
    826843        cpulog_mod.o \
    827844        mod_kinds.o \
     
    841858        virtual_flight_mod.o
    842859data_output_2d.o: \
     860        basic_constants_and_equations_mod.o \
     861        bulk_cloud_model_mod.o \
    843862        cpulog_mod.o \
    844863        gust_mod.o \
     
    853872        uv_exposure_model_mod.o
    854873data_output_3d.o: \
     874        basic_constants_and_equations_mod.o \
     875        bulk_cloud_model_mod.o \
    855876        chemistry_model_mod.o \
    856877        cpulog_mod.o \
     
    866887        mod_kinds.o \
    867888        modules.o
    868 diagnostic_quantities_mod.o: \
    869         mod_kinds.o \
    870         modules.o
    871889diffusion_s.o: \
    872890        mod_kinds.o \
     
    916934        temperton_fft_mod.o
    917935flow_statistics.o: \
     936        basic_constants_and_equations_mod.o \
     937        bulk_cloud_model_mod.o \
    918938        cpulog_mod.o \
    919939        gust_mod.o \
     
    932952        modules.o
    933953header.o: \
     954        basic_constants_and_equations_mod.o \
     955        bulk_cloud_model_mod.o \
    934956        cpulog_mod.o \
    935957        date_and_time_mod.o \
     
    937959        land_surface_model_mod.o \
    938960        large_scale_forcing_nudging_mod.o \
    939         microphysics_mod.o \
    940961        model_1d_mod.o \
    941962        mod_kinds.o \
     
    956977init_3d_model.o: \
    957978        advec_ws.o \
     979        basic_constants_and_equations_mod.o \
     980        bulk_cloud_model_mod.o \
    958981        chemistry_model_mod.o \
    959982        cpulog_mod.o \
     
    963986        large_scale_forcing_nudging_mod.o \
    964987        lpm_init.o \
    965         microphysics_mod.o \
    966988        model_1d_mod.o \
    967989        mod_kinds.o \
     
    9871009        mod_kinds.o \
    9881010        modules.o
    989 init_cloud_physics.o: \
    990         mod_kinds.o \
    991         modules.o
    9921011init_coupling.o: \
    9931012        mod_kinds.o \
     
    10071026        vertical_nesting_mod.o
    10081027init_masks.o: \
     1028        bulk_cloud_model_mod.o \
    10091029        mod_kinds.o \
    10101030        modules.o \
    10111031        netcdf_interface_mod.o
    10121032init_ocean.o: \
     1033        basic_constants_and_equations_mod.o \
    10131034        eqn_state_seawater.o \
    10141035        mod_kinds.o \
     
    10241045        modules.o
    10251046init_rankine.o: \
     1047        basic_constants_and_equations_mod.o \
    10261048        mod_kinds.o \
    10271049        modules.o
    10281050init_slope.o: \
     1051        basic_constants_and_equations_mod.o \
    10291052        mod_kinds.o \
    10301053        modules.o
    10311054interaction_droplets_ptq.o: \
     1055        basic_constants_and_equations_mod.o \
    10321056        mod_kinds.o \
    10331057        modules.o
    10341058land_surface_model_mod.o: \
     1059        basic_constants_and_equations_mod.o \
     1060        bulk_cloud_model_mod.o \
    10351061        calc_mean_profile.o \
    1036         diagnostic_quantities_mod.o \
    10371062        mod_kinds.o \
    10381063        modules.o \
     
    10731098        pmc_particle_interface.o
    10741099lpm_advec.o: \
     1100        basic_constants_and_equations_mod.o \
    10751101        cpulog_mod.o \
    10761102        mod_kinds.o \
     
    10851111        surface_mod.o
    10861112lpm_calc_liquid_water_content.o: \
     1113        basic_constants_and_equations_mod.o \
    10871114        cpulog_mod.o \
    10881115        mod_kinds.o \
     
    10901117        modules.o
    10911118lpm_collision_kernels.o: \
     1119        basic_constants_and_equations_mod.o \
    10921120        cpulog_mod.o \
    10931121        mod_kinds.o \
     
    11021130        netcdf_interface_mod.o
    11031131lpm_droplet_collision.o: \
     1132        basic_constants_and_equations_mod.o \
    11041133        cpulog_mod.o \
    11051134        lpm_collision_kernels.o \
     
    11081137        modules.o
    11091138lpm_droplet_condensation.o: \
    1110         cpulog_mod.o \
    1111         diagnostic_quantities_mod.o \
     1139        basic_constants_and_equations_mod.o \
     1140        cpulog_mod.o \
    11121141        lpm_collision_kernels.o \
    11131142        mod_kinds.o \
     
    11221151        netcdf_interface_mod.o
    11231152lpm_init.o: \
    1124         diagnostic_quantities_mod.o \
     1153        basic_constants_and_equations_mod.o \
    11251154        lpm_collision_kernels.o \
    11261155        lpm_exchange_horiz.o \
     
    11601189        modules.o
    11611190lpm_splitting.o: \
     1191        basic_constants_and_equations_mod.o \
    11621192        cpulog_mod.o \
    11631193        lpm_exchange_horiz.o \
     
    11781208        modules.o \
    11791209        pmc_interface_mod.o
    1180 microphysics_mod.o: \
    1181         cpulog_mod.o \
    1182         diagnostic_quantities_mod.o \
    1183         mod_kinds.o \
    1184         modules.o \
    1185         surface_mod.o
    11861210model_1d_mod.o: \
     1211        basic_constants_and_equations_mod.o \
    11871212        mod_kinds.o \
    11881213        modules.o
     
    11901215        mod_kinds.o
    11911216multi_agent_system_mod.o: \
     1217        basic_constants_and_equations_mod.o \
    11921218        chemistry_model_mod.o \
    11931219        cpulog_mod.o \
     
    12061232        surface_mod.o
    12071233netcdf_interface_mod.o: \
     1234        basic_constants_and_equations_mod.o \
    12081235        chemistry_model_mod.o \
    12091236        gust_mod.o \
     
    12251252        modules.o
    12261253palm.o: \
     1254        bulk_cloud_model_mod.o \
    12271255        chemistry_model_mod.o \
    12281256        chem_photolysis_mod.o \
     
    12381266        write_restart_data_mod.o
    12391267parin.o: \
     1268        bulk_cloud_model_mod.o \
    12401269        chemistry_model_mod.o \
    12411270        chem_modules.o \
     
    12441273        gust_mod.o \
    12451274        land_surface_model_mod.o \
    1246         microphysics_mod.o \
    12471275        model_1d_mod.o \
    12481276        mod_kinds.o \
     
    12631291        wind_turbine_model_mod.o
    12641292plant_canopy_model_mod.o: \
     1293        bulk_cloud_model_mod.o \
    12651294        mod_kinds.o \
    12661295        modules.o \
     
    12761305        pmc_parent_mod.o
    12771306pmc_interface_mod.o: \
     1307        bulk_cloud_model_mod.o \
    12781308        chemistry_model_mod.o \
    12791309        chem_modules.o \
     
    13441374        advec_ws.o \
    13451375        advec_w_up.o \
     1376        bulk_cloud_model_mod.o \
    13461377        buoyancy.o \
    13471378        calc_radiation.o \
     
    13581389        eqn_state_seawater.o \
    13591390        large_scale_forcing_nudging_mod.o \
    1360         microphysics_mod.o \
    13611391        mod_kinds.o \
    13621392        mod_kinds.o \
     
    13751405        modules.o
    13761406radiation_model_mod.o: \
     1407        basic_constants_and_equations_mod.o \
     1408        bulk_cloud_model_mod.o \
    13771409        calc_mean_profile.o \
    13781410        date_and_time_mod.o \
    1379         microphysics_mod.o \
    13801411        mod_particle_attributes.o \
    13811412        modules.o \
     
    13931424        modules.o
    13941425read_restart_data_mod.o: \
     1426        bulk_cloud_model_mod.o \
    13951427        chemistry_model_mod.o \
    13961428        cpulog_mod.o \
     
    13981430        gust_mod.o \
    13991431        land_surface_model_mod.o \
    1400         microphysics_mod.o \
    14011432        modules.o \
    14021433        mod_kinds.o \
     
    14351466        modules.o
    14361467sum_up_3d_data.o: \
     1468        basic_constants_and_equations_mod.o \
     1469        bulk_cloud_model_mod.o \
    14371470        chemistry_model_mod.o \
    14381471        cpulog_mod.o \
     
    14471480        uv_exposure_model_mod.o
    14481481surface_coupler.o: \
     1482        basic_constants_and_equations_mod.o \
    14491483        cpulog_mod.o \
    14501484        mod_kinds.o \
     
    14521486        surface_mod.o
    14531487surface_layer_fluxes_mod.o: \
     1488        basic_constants_and_equations_mod.o \
     1489        bulk_cloud_model_mod.o \
    14541490        chem_modules.o \
    14551491        exchange_horiz_2d.o \
     
    14651501        modules.o
    14661502swap_timelevel.o: \
     1503        bulk_cloud_model_mod.o \
    14671504        chemistry_model_mod.o \
    14681505        cpulog_mod.o \
     
    14751512        urban_surface_mod.o
    14761513synthetic_turbulence_generator_mod.o: \
     1514        basic_constants_and_equations_mod.o \
    14771515        cpulog_mod.o \
    14781516        mod_kinds.o \
     
    14841522time_integration.o: \
    14851523        advec_ws.o \
     1524        bulk_cloud_model_mod.o \
    14861525        buoyancy.o \
    14871526        calc_mean_profile.o \
     
    14961535        large_scale_forcing_nudging_mod.o \
    14971536        lpm.o \
    1498         microphysics_mod.o \
    14991537        mod_kinds.o \
    15001538        modules.o \
     
    15161554        wind_turbine_model_mod.o
    15171555time_integration_spinup.o: \
     1556        basic_constants_and_equations_mod.o \
    15181557        cpulog_mod.o \
    15191558        date_and_time_mod.o \
     
    15281567        mod_kinds.o
    15291568timestep.o: \
    1530         cpulog_mod.o \
    1531         microphysics_mod.o \
     1569        bulk_cloud_model_mod.o \
     1570        cpulog_mod.o \
    15321571        mod_kinds.o \
    15331572        modules.o \
     
    15421581        modules.o
    15431582tridia_solver_mod.o: \
     1583        basic_constants_and_equations_mod.o \
    15441584        mod_kinds.o \
    15451585        modules.o
     
    15491589        advec_s_up.o \
    15501590        advec_ws.o \
    1551         cpulog_mod.o \
    1552         microphysics_mod.o \
     1591        basic_constants_and_equations_mod.o \
     1592        bulk_cloud_model_mod.o \
     1593        cpulog_mod.o \
    15531594        mod_kinds.o \
    15541595        mod_particle_attributes.o \
     
    15601601        user_actions.o
    15611602urban_surface_mod.o: \
     1603        basic_constants_and_equations_mod.o \
    15621604        date_and_time_mod.o \
    15631605        mod_kinds.o \
     
    17061748        user_module.o
    17071749uv_exposure_model_mod.o: \
     1750        basic_constants_and_equations_mod.o \
    17081751        date_and_time_mod.o \
    17091752        mod_kinds.o \
     
    17161759        turbulence_closure_mod.o
    17171760virtual_flight_mod.o: \
     1761        basic_constants_and_equations_mod.o \
     1762        bulk_cloud_model_mod.o \
    17181763        cpulog_mod.o \
    17191764        mod_kinds.o \
     
    17231768        user_init_flight.o
    17241769wind_turbine_model_mod.o: \
     1770        basic_constants_and_equations_mod.o \
    17251771        cpulog_mod.o \
    17261772        mod_kinds.o \
     
    17291775        mod_kinds.o
    17301776write_restart_data_mod.o: \
     1777        bulk_cloud_model_mod.o \
    17311778        chemistry_model_mod.o \
    17321779        date_and_time_mod.o \
    17331780        gust_mod.o \
    17341781        land_surface_model_mod.o \
    1735         microphysics_mod.o \
    17361782        mod_kinds.o \
    17371783        mod_particle_attributes.o \
  • palm/trunk/SOURCE/advec_ws.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!
     
    219222 MODULE advec_ws
    220223
    221  
     224    USE kinds
     225
     226    IMPLICIT NONE
     227
     228    REAL(wp) ::  adv_mom_1            !< 1/4 - constant used in 5th-order advection scheme for momentum advection (1st-order part)
     229    REAL(wp) ::  adv_mom_3            !< 1/24 - constant used in 5th-order advection scheme for momentum advection (3rd-order part)
     230    REAL(wp) ::  adv_mom_5            !< 1/120 - constant used in 5th-order advection scheme for momentum advection (5th-order part)
     231    REAL(wp) ::  adv_sca_1            !< 1/2 - constant used in 5th-order advection scheme for scalar advection (1st-order part)
     232    REAL(wp) ::  adv_sca_3            !< 1/12 - constant used in 5th-order advection scheme for scalar advection (3rd-order part)
     233    REAL(wp) ::  adv_sca_5            !< 1/60 - constant used in 5th-order advection scheme for scalar advection (5th-order part)
    222234
    223235    PRIVATE
     
    280292                  flux_s_v, flux_s_w
    281293
    282        USE constants,                                                          &
    283            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5, adv_sca_1, adv_sca_3,       &
    284                   adv_sca_5
    285 
    286294       USE control_parameters,                                                 &
    287            ONLY:  cloud_physics, humidity, loop_optimization,                  &
    288                   passive_scalar, microphysics_morrison, microphysics_seifert, &
    289                   ocean, rans_tke_e, ws_scheme_mom, ws_scheme_sca
     295           ONLY:  humidity, loop_optimization, passive_scalar, ocean,          &
     296                  rans_tke_e, ws_scheme_mom, ws_scheme_sca
    290297
    291298       USE indices,                                                            &
     
    293300
    294301       USE kinds
    295        
     302
     303       USE bulk_cloud_model_mod,                                               &
     304           ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
     305
    296306       USE pegrid
    297307
     
    345355          ENDIF
    346356
    347           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     357          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    348358             ALLOCATE( sums_wsqcs_ws_l(nzb:nzt+1,0:threads_per_task-1) )
    349359             ALLOCATE( sums_wsncs_ws_l(nzb:nzt+1,0:threads_per_task-1) )
     
    352362          ENDIF
    353363
    354           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     364          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    355365             ALLOCATE( sums_wsqrs_ws_l(nzb:nzt+1,0:threads_per_task-1) )
    356366             ALLOCATE( sums_wsnrs_ws_l(nzb:nzt+1,0:threads_per_task-1) )
     
    422432             ENDIF
    423433
    424              IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     434             IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    425435                ALLOCATE( flux_s_qc(nzb+1:nzt,0:threads_per_task-1),           &
    426436                          diss_s_qc(nzb+1:nzt,0:threads_per_task-1),           &
     
    433443             ENDIF                 
    434444
    435              IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     445             IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    436446                ALLOCATE( flux_s_qr(nzb+1:nzt,0:threads_per_task-1),           &
    437447                          diss_s_qr(nzb+1:nzt,0:threads_per_task-1),           &
     
    10741084   
    10751085       USE control_parameters,                                                 &
    1076            ONLY:  cloud_physics, humidity, passive_scalar, ocean,              &
    1077                   microphysics_morrison, microphysics_seifert, ws_scheme_mom,  &
    1078                   ws_scheme_sca
     1086           ONLY:  humidity, passive_scalar, ocean, ws_scheme_mom, ws_scheme_sca
    10791087
    10801088       USE kinds
     1089
     1090       USE bulk_cloud_model_mod,                                               &
     1091           ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
    10811092
    10821093       USE statistics,                                                         &
     
    11041115          IF ( humidity       )  sums_wsqs_ws_l = 0.0_wp
    11051116          IF ( passive_scalar )  sums_wsss_ws_l = 0.0_wp
    1106           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     1117          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    11071118             sums_wsqcs_ws_l = 0.0_wp
    11081119             sums_wsncs_ws_l = 0.0_wp
    11091120          ENDIF
    1110           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     1121          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    11111122             sums_wsqrs_ws_l = 0.0_wp
    11121123             sums_wsnrs_ws_l = 0.0_wp
     
    11301141       USE arrays_3d,                                                          &
    11311142           ONLY:  ddzw, drho_air, tend, u, v, w, rho_air_zw
    1132 
    1133        USE constants,                                                          &
    1134            ONLY:  adv_sca_1, adv_sca_3, adv_sca_5
    11351143
    11361144       USE control_parameters,                                                 &
     
    17041712                  drho_air, rho_air_zw
    17051713
    1706        USE constants,                                                         &
    1707            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5
    1708 
    17091714       USE control_parameters,                                                &
    17101715           ONLY:  intermediate_timestep_count, u_gtrans, v_gtrans
     
    22022207                  drho_air, rho_air_zw
    22032208
    2204        USE constants,                                                          &
    2205            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5
    2206 
    22072209       USE control_parameters,                                                 &
    22082210           ONLY:  intermediate_timestep_count, u_gtrans, v_gtrans
     
    27072709                  drho_air_zw, rho_air
    27082710
    2709        USE constants,                                                         &
    2710            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5
    2711 
    27122711       USE control_parameters,                                                &
    27132712           ONLY:  intermediate_timestep_count, u_gtrans, v_gtrans
     
    31843183       USE arrays_3d,                                                         &
    31853184           ONLY:  ddzw, drho_air, tend, u, v, w, rho_air_zw
    3186 
    3187        USE constants,                                                         &
    3188            ONLY:  adv_sca_1, adv_sca_3, adv_sca_5
    31893185
    31903186       USE control_parameters,                                                &
     
    37403736           ONLY:  ddzw, drho_air, tend, u, v, w, rho_air_zw
    37413737
    3742        USE constants,                                                          &
    3743            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5
    3744 
    37453738       USE control_parameters,                                                 &
    37463739           ONLY:  intermediate_timestep_count, u_gtrans, v_gtrans
     
    42344227           ONLY:  ddzw, drho_air, tend, u, v, w, rho_air_zw
    42354228
    4236        USE constants,                                                          &
    4237            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5
    4238 
    42394229       USE control_parameters,                                                 &
    42404230           ONLY:  intermediate_timestep_count, u_gtrans, v_gtrans
     
    47384728       USE arrays_3d,                                                          &
    47394729           ONLY:  ddzu, drho_air_zw, tend, u, v, w, rho_air
    4740 
    4741        USE constants,                                                          &
    4742            ONLY:  adv_mom_1, adv_mom_3, adv_mom_5
    47434730
    47444731       USE control_parameters,                                                 &
  • palm/trunk/SOURCE/average_3d_data.f90

    r3004 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3004 2018-04-27 12:33:25Z Giersch
    2730! Further allocation checks implemented, case z0q* added
    2831!
     
    138141    USE averaging
    139142
     143    USE bulk_cloud_model_mod,                                                  &
     144        ONLY:  bulk_cloud_model, bcm_3d_data_averaging
     145
    140146    USE chemistry_model_mod,                                                   &
    141147        ONLY:  chem_3d_data_averaging
     
    255261             ENDIF
    256262
    257           CASE ( 'nc' )
    258              IF ( ALLOCATED( nc_av ) ) THEN
    259                 DO  i = nxlg, nxrg
    260                    DO  j = nysg, nyng
    261                       DO  k = nzb, nzt+1
    262                          nc_av(k,j,i) = nc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    263                       ENDDO
    264                    ENDDO
    265                 ENDDO
    266              ENDIF
    267 
    268           CASE ( 'nr' )
    269              IF ( ALLOCATED( nr_av ) ) THEN
    270                 DO  i = nxlg, nxrg
    271                    DO  j = nysg, nyng
    272                       DO  k = nzb, nzt+1
    273                          nr_av(k,j,i) = nr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    274                       ENDDO
    275                    ENDDO
    276                 ENDDO
    277              ENDIF
    278 
    279263         CASE ( 'ol*' )
    280264             IF ( ALLOCATED( ol_av ) ) THEN
     
    320304             ENDIF
    321305
    322           CASE ( 'prr' )
    323              IF ( ALLOCATED( prr_av ) ) THEN
    324                 DO  i = nxlg, nxrg
    325                    DO  j = nysg, nyng
    326                       DO  k = nzb, nzt+1
    327                          prr_av(k,j,i) = prr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    328                       ENDDO
    329                    ENDDO
    330                 ENDDO
    331              ENDIF
    332 
    333306          CASE ( 'pt' )
    334307             IF ( ALLOCATED( pt_av ) ) THEN
     
    353326             ENDIF
    354327
    355           CASE ( 'qc' )
    356              IF ( ALLOCATED( qc_av ) ) THEN
    357                 DO  i = nxlg, nxrg
    358                    DO  j = nysg, nyng
    359                       DO  k = nzb, nzt+1
    360                          qc_av(k,j,i) = qc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    361                       ENDDO
    362                    ENDDO
    363                 ENDDO
    364              ENDIF
    365 
    366328          CASE ( 'ql' )
    367329             IF ( ALLOCATED( ql_av ) ) THEN
     
    404366                         ql_vp_av(k,j,i) = ql_vp_av(k,j,i) /                      &
    405367                                           REAL( average_count_3d, KIND=wp )
    406                       ENDDO
    407                    ENDDO
    408                 ENDDO
    409              ENDIF
    410 
    411           CASE ( 'qr' )
    412              IF ( ALLOCATED( qr_av ) ) THEN
    413                 DO  i = nxlg, nxrg
    414                    DO  j = nysg, nyng
    415                       DO  k = nzb, nzt+1
    416                          qr_av(k,j,i) = qr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    417368                      ENDDO
    418369                   ENDDO
     
    607558!--          Turbulence closure module
    608559             CALL tcm_3d_data_averaging( 'average', doav(ii) )
    609 
     560!
     561!--          microphysics module quantities
     562             IF ( bulk_cloud_model )  THEN
     563                CALL bcm_3d_data_averaging( 'average', doav(ii) )
     564             ENDIF
    610565!
    611566!--          Land surface quantity
  • palm/trunk/SOURCE/boundary_conds.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!
     
    197200               w, w_p, w_m_l, w_m_n, w_m_r, w_m_s
    198201
     202    USE basic_constants_and_equations_mod,                                     &
     203        ONLY:  kappa
     204
    199205    USE chemistry_model_mod,                                                   &
    200206        ONLY:  chem_boundary_conds
     
    204210               bc_dirichlet_s, bc_radiation_l, bc_radiation_n, bc_radiation_r, &
    205211               bc_radiation_s, bc_pt_t_val, bc_q_t_val, bc_s_t_val,            &
    206                child_domain, constant_diffusion, cloud_physics, coupling_mode, &
     212               child_domain, constant_diffusion, coupling_mode, &
    207213               dt_3d, humidity, ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, ibc_s_b, &
    208214               ibc_s_t,ibc_sa_t, ibc_uv_b, ibc_uv_t,                           &
    209                intermediate_timestep_count, kappa,                             &
    210                microphysics_morrison, microphysics_seifert,                    &
     215               intermediate_timestep_count,                                    &
    211216               nesting_offline, nudging,                                       &
    212217               ocean, passive_scalar, rans_mode, rans_tke_e, tsc, use_cmax
     
    220225
    221226    USE kinds
     227
     228    USE bulk_cloud_model_mod,                                                  &
     229        ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
    222230
    223231    USE pegrid
     
    597605       ENDIF
    598606
    599        IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     607       IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    600608!             
    601609!--       Surface conditions cloud water (Dirichlet)
     
    618626       ENDIF
    619627
    620        IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     628       IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    621629!             
    622630!--       Surface conditions rain water (Dirichlet)
     
    736744       IF ( humidity )  THEN
    737745          q_p(:,nys-1,:) = q_p(:,nys,:)
    738           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     746          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    739747             qc_p(:,nys-1,:) = qc_p(:,nys,:)
    740748             nc_p(:,nys-1,:) = nc_p(:,nys,:)
    741749          ENDIF
    742           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     750          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    743751             qr_p(:,nys-1,:) = qr_p(:,nys,:)
    744752             nr_p(:,nys-1,:) = nr_p(:,nys,:)
     
    752760       IF ( humidity )  THEN
    753761          q_p(:,nyn+1,:) = q_p(:,nyn,:)
    754           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     762          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    755763             qc_p(:,nyn+1,:) = qc_p(:,nyn,:)
    756764             nc_p(:,nyn+1,:) = nc_p(:,nyn,:)
    757765          ENDIF
    758           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     766          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    759767             qr_p(:,nyn+1,:) = qr_p(:,nyn,:)
    760768             nr_p(:,nyn+1,:) = nr_p(:,nyn,:)
     
    768776       IF ( humidity )  THEN
    769777          q_p(:,:,nxl-1) = q_p(:,:,nxl)
    770           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     778          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    771779             qc_p(:,:,nxl-1) = qc_p(:,:,nxl)
    772780             nc_p(:,:,nxl-1) = nc_p(:,:,nxl)
    773781          ENDIF
    774           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     782          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    775783             qr_p(:,:,nxl-1) = qr_p(:,:,nxl)
    776784             nr_p(:,:,nxl-1) = nr_p(:,:,nxl)
     
    784792       IF ( humidity )  THEN
    785793          q_p(:,:,nxr+1) = q_p(:,:,nxr)
    786           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     794          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    787795             qc_p(:,:,nxr+1) = qc_p(:,:,nxr)
    788796             nc_p(:,:,nxr+1) = nc_p(:,:,nxr)
    789797          ENDIF
    790           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     798          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    791799             qr_p(:,:,nxr+1) = qr_p(:,:,nxr)
    792800             nr_p(:,:,nxr+1) = nr_p(:,:,nxr)
  • palm/trunk/SOURCE/buoyancy.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 Variable removed
    2831!
     
    114117!------------------------------------------------------------------------------!
    115118 MODULE buoyancy_mod
    116  
     119
     120    USE basic_constants_and_equations_mod,                                     &
     121        ONLY:  g
    117122
    118123    PRIVATE
     
    138143
    139144       USE control_parameters,                                                 &
    140            ONLY:  atmos_ocean_sign, cos_alpha_surface, g, message_string,      &
     145           ONLY:  atmos_ocean_sign, cos_alpha_surface, message_string,         &
    141146                  pt_surface, sin_alpha_surface, sloping_surface
    142147
     
    244249
    245250       USE control_parameters,                                                 &
    246            ONLY:  atmos_ocean_sign, cos_alpha_surface, g, message_string,      &
     251           ONLY:  atmos_ocean_sign, cos_alpha_surface, message_string,         &
    247252                  pt_surface, sin_alpha_surface, sloping_surface
    248253
  • palm/trunk/SOURCE/calc_radiation.f90

    r2718 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    7780 MODULE calc_radiation_mod
    7881 
     82
     83    USE arrays_3d,                                                             &
     84        ONLY:  dzw, pt, ql, tend, d_exner, exner
     85
     86    USE basic_constants_and_equations_mod,                                     &
     87        ONLY:  c_p, lv_d_cp, sigma_sb
     88
     89    USE control_parameters,                                                    &
     90        ONLY:  rho_surface
     91
     92    USE indices,                                                               &
     93        ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
     94
    7995    USE kinds
    80    
     96
     97    USE pegrid
     98
    8199    PRIVATE
    82100    PUBLIC calc_radiation
    83    
     101
    84102    LOGICAL, SAVE ::  first_call = .TRUE. !<
    85     REAL(wp), SAVE ::  sigma = 5.67E-08_wp   !<
    86103
    87104    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  lwp_ground         !<
     
    103120!------------------------------------------------------------------------------!
    104121    SUBROUTINE calc_radiation
    105 
    106        USE arrays_3d,                                                          &
    107            ONLY:  dzw, pt, ql, tend
    108 
    109        USE cloud_parameters,                                                   &
    110            ONLY:  cp, l_d_cp, pt_d_t, t_d_pt
    111 
    112        USE control_parameters,                                                 &
    113            ONLY:  rho_surface
    114 
    115        USE indices,                                                            &
    116            ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
    117 
    118        USE kinds
    119 
    120        USE pegrid
    121 
    122122
    123123       IMPLICIT NONE
     
    159159             lwp_top(nzt+1)  = rho_surface * ql(nzt+1,j,i) * dzw(nzt+1)
    160160
    161              temperature     = pt(nzb,j,i) * t_d_pt(nzb) + l_d_cp * ql(nzb,j,i)
    162              blackbody_emission(nzb) = sigma * temperature**4
     161             temperature     = pt(nzb,j,i) * exner(nzb) + lv_d_cp * ql(nzb,j,i)
     162             blackbody_emission(nzb) = sigma_sb * temperature**4
    163163
    164164             DO  k = nzb+1, nzt
     
    171171                                  rho_surface * ql(k_help,j,i) * dzw(k_help)
    172172
    173                 temperature     = pt(k,j,i) * t_d_pt(k) + l_d_cp * ql(k,j,i)
    174                 blackbody_emission(k) = sigma * temperature**4                 &
     173                temperature     = pt(k,j,i) * exner(k) + lv_d_cp * ql(k,j,i)
     174                blackbody_emission(k) = sigma_sb * temperature**4              &
    175175                                      * MERGE( 1.0_wp, 0.0_wp,                 &
    176176                                               BTEST( wall_flags_0(k,j,i), 0 ) )
     
    182182             lwp_top(nzb)      = lwp_top(nzb+1)
    183183
    184              temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp *      &
     184             temperature       = pt(nzt+1,j,i) * exner(nzt+1) + lv_d_cp *      &
    185185                                 ql(nzt+1,j,i)
    186              blackbody_emission(nzt+1) = sigma * temperature**4
     186             blackbody_emission(nzt+1) = sigma_sb * temperature**4
    187187
    188188!
     
    232232!--                Compute tendency term         
    233233                   tend(k,j,i) = tend(k,j,i) -                                 &
    234                                 ( pt_d_t(k) / ( rho_surface * cp ) *           &
     234                                ( d_exner(k) / ( rho_surface * c_p ) *         &
    235235                                  ( df_p - df_m ) / dzw(k) )                   &
    236236                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     
    253253    SUBROUTINE calc_radiation_ij( i, j )
    254254
    255        USE arrays_3d,                                                          &
    256            ONLY:  dzw, pt, ql, tend
    257 
    258        USE cloud_parameters,                                                   &
    259            ONLY:  cp, l_d_cp, pt_d_t, t_d_pt
    260 
    261        USE control_parameters,                                                 &
    262            ONLY:  rho_surface
    263 
    264        USE indices,                                                            &
    265            ONLY:  nzb, nzt, wall_flags_0
    266 
    267        USE kinds
    268 
    269        USE pegrid
    270 
    271    
    272255       IMPLICIT NONE
    273256
     
    305288       lwp_top(nzt+1)  = rho_surface * ql(nzt+1,j,i) * dzw(nzt+1)
    306289
    307        temperature     = pt(nzb,j,i) * t_d_pt(nzb) + l_d_cp * ql(nzb,j,i)
    308        blackbody_emission(nzb) = sigma * temperature**4
     290       temperature     = pt(nzb,j,i) * exner(nzb) + lv_d_cp * ql(nzb,j,i)
     291       blackbody_emission(nzb) = sigma_sb * temperature**4
    309292
    310293       DO  k = nzb+1, nzt
     
    315298                            rho_surface * ql(k_help,j,i) * dzw(k_help)
    316299
    317           temperature     = pt(k,j,i) * t_d_pt(k) + l_d_cp * ql(k,j,i)
    318           blackbody_emission(k) = sigma * temperature**4                       &
     300          temperature     = pt(k,j,i) * exner(k) + lv_d_cp * ql(k,j,i)
     301          blackbody_emission(k) = sigma_sb * temperature**4                    &
    319302                                      * MERGE( 1.0_wp, 0.0_wp,                 &
    320303                                               BTEST( wall_flags_0(k,j,i), 0 ) )
     
    325308       lwp_top(nzb)      = lwp_top(nzb+1)
    326309
    327        temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp *            &
     310       temperature       = pt(nzt+1,j,i) * exner(nzt+1) + lv_d_cp *            &
    328311                           ql(nzt+1,j,i)
    329        blackbody_emission(nzt+1) = sigma * temperature**4
     312       blackbody_emission(nzt+1) = sigma_sb * temperature**4
    330313
    331314!
     
    370353!
    371354!--          Compute tendency term         
    372              tend(k,j,i) = tend(k,j,i) - ( pt_d_t(k) / ( rho_surface * cp ) *  &
    373                                          ( df_p - df_m ) / dzw(k) )            &
     355             tend(k,j,i) = tend(k,j,i) - ( d_exner(k) / ( rho_surface * c_p )  &
     356                                      *  ( df_p - df_m ) / dzw(k) )            &
    374357                                      * MERGE( 1.0_wp, 0.0_wp,                 &
    375358                                               BTEST( wall_flags_0(k,j,i), 0 ) )
  • palm/trunk/SOURCE/check_parameters.f90

    r3241 r3274  
    2525! -----------------
    2626! $Id: check_parameters.f90 2520 2017-10-05 13:50:26Z gronemeier &
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2520 2017-10-05 13:50:26Z gronemeier
    2730! unused variables removed
    2831!
     
    298301!
    299302! 1994 2016-08-15 09:52:21Z suehring
    300 ! Add missing check for cloud_physics and cloud_droplets
     303! Add missing check for bulk_cloud_model and cloud_droplets
    301304!
    302305! 1992 2016-08-12 15:14:59Z suehring
     
    665668
    666669    USE arrays_3d
     670
     671    USE bulk_cloud_model_mod,                                                  &
     672        ONLY:  bulk_cloud_model, bcm_check_parameters, bcm_check_data_output,  &
     673               bcm_check_data_output_pr
     674
    667675    USE chemistry_model_mod,                                                   &
    668676        ONLY:  chem_boundary_conds, chem_check_data_output,                    &
    669                chem_check_data_output_pr, chem_species                 
     677               chem_check_data_output_pr, chem_species
    670678    USE chem_modules
    671     USE cloud_parameters
    672     USE constants
     679    USE basic_constants_and_equations_mod
    673680    USE control_parameters
    674681    USE dvrp_variables
     
    10581065          WRITE( action, '(A)' )  'galilei_transformation = .TRUE.'
    10591066       ENDIF
    1060        IF ( cloud_physics )  THEN
    1061           WRITE( action, '(A)' )  'cloud_physics = .TRUE.'
     1067       IF ( bulk_cloud_model )  THEN
     1068          WRITE( action, '(A)' )  'bulk_cloud_model = .TRUE.'
    10621069       ENDIF
    10631070       IF ( cloud_droplets )  THEN
     
    11861193
    11871194    ENDIF
    1188 !
    1189 !-- Check cloud scheme
    1190     IF ( cloud_scheme == 'saturation_adjust' )  THEN
    1191        microphysics_sat_adjust = .TRUE.
    1192        microphysics_seifert    = .FALSE.
    1193        microphysics_kessler    = .FALSE.
    1194        precipitation           = .FALSE.
    1195     ELSEIF ( cloud_scheme == 'seifert_beheng' )  THEN
    1196        microphysics_sat_adjust = .FALSE.
    1197        microphysics_seifert    = .TRUE.
    1198        microphysics_kessler    = .FALSE.
    1199        microphysics_morrison  = .FALSE.
    1200        precipitation           = .TRUE.
    1201     ELSEIF ( cloud_scheme == 'kessler' )  THEN
    1202        microphysics_sat_adjust = .FALSE.
    1203        microphysics_seifert    = .FALSE.
    1204        microphysics_kessler    = .TRUE.
    1205        microphysics_morrison   = .FALSE.
    1206        precipitation           = .TRUE.
    1207     ELSEIF ( cloud_scheme == 'morrison' )  THEN
    1208        microphysics_sat_adjust = .FALSE.
    1209        microphysics_seifert    = .TRUE.
    1210        microphysics_kessler    = .FALSE.
    1211        microphysics_morrison   = .TRUE.
    1212        precipitation           = .TRUE.
    1213     ELSE
    1214        message_string = 'unknown cloud microphysics scheme cloud_scheme ="' // &
    1215                         TRIM( cloud_scheme ) // '"'
    1216        CALL message( 'check_parameters', 'PA0357', 1, 2, 0, 6, 0 )
    1217     ENDIF
    1218 !
    1219 !-- Check aerosol
    1220     IF ( aerosol_bulk == 'nacl' )  THEN
    1221        aerosol_nacl   = .TRUE.
    1222        aerosol_c3h4o4 = .FALSE.
    1223        aerosol_nh4no3 = .FALSE.
    1224     ELSEIF ( aerosol_bulk == 'c3h4o4' )  THEN
    1225        aerosol_nacl   = .FALSE.
    1226        aerosol_c3h4o4 = .TRUE.
    1227        aerosol_nh4no3 = .FALSE.
    1228     ELSEIF ( aerosol_bulk == 'nh4no3' )  THEN
    1229        aerosol_nacl   = .FALSE.
    1230        aerosol_c3h4o4 = .FALSE.
    1231        aerosol_nh4no3 = .TRUE.
    1232     ELSE
    1233        message_string = 'unknown aerosol = "' // TRIM( aerosol_bulk ) // '"'
    1234        CALL message( 'check_parameters', 'PA0469', 1, 2, 0, 6, 0 )
    1235     ENDIF
    12361195
    12371196!
     
    13521311!
    13531312!-- Check for proper settings for microphysics
    1354     IF ( cloud_physics  .AND.  cloud_droplets )  THEN
    1355        message_string = 'cloud_physics = .TRUE. is not allowed with ' //       &
     1313    IF ( bulk_cloud_model  .AND.  cloud_droplets )  THEN
     1314       message_string = 'bulk_cloud_model = .TRUE. is not allowed with ' //    &
    13561315                        'cloud_droplets = .TRUE.'
    13571316       CALL message( 'check_parameters', 'PA0442', 1, 2, 0, 6, 0 )
     
    14581417    ENDIF
    14591418
    1460     IF ( cloud_physics  .AND.  .NOT.  humidity )  THEN
    1461        WRITE( message_string, * ) 'cloud_physics = ', cloud_physics, ' is ',   &
    1462               'not allowed with humidity = ', humidity
     1419    IF ( bulk_cloud_model  .AND.  .NOT.  humidity )  THEN
     1420       WRITE( message_string, * ) 'bulk_cloud_model = ', bulk_cloud_model,     &
     1421              ' is not allowed with humidity = ', humidity
    14631422       CALL message( 'check_parameters', 'PA0034', 1, 2, 0, 6, 0 )
    14641423    ENDIF
     
    14831442!-- When land surface model is used, perform additional checks
    14841443    IF ( land_surface )  CALL lsm_check_parameters
     1444!
     1445!-- When microphysics module is used, perform additional checks
     1446    IF ( bulk_cloud_model )  CALL bcm_check_parameters
    14851447
    14861448!
     
    23942356
    23952357!
    2396 !-- Set the default value for the integration interval of precipitation amount
    2397     IF ( microphysics_seifert  .OR.  microphysics_kessler )  THEN
    2398        IF ( precipitation_amount_interval == 9999999.9_wp )  THEN
    2399           precipitation_amount_interval = dt_do2d_xy
    2400        ELSE
    2401           IF ( precipitation_amount_interval > dt_do2d_xy )  THEN
    2402              WRITE( message_string, * )  'precipitation_amount_interval = ',   &
    2403                  precipitation_amount_interval, ' must not be larger than ',   &
    2404                  'dt_do2d_xy = ', dt_do2d_xy
    2405              CALL message( 'check_parameters', 'PA0090', 1, 2, 0, 6, 0 )
    2406           ENDIF
    2407        ENDIF
    2408     ENDIF
    2409 
    2410 !
    24112358!-- Determine the number of output profiles and check whether they are
    24122359!-- permissible
     
    24472394
    24482395          CASE ( 'pt', '#pt' )
    2449              IF ( .NOT. cloud_physics ) THEN
     2396             IF ( .NOT. bulk_cloud_model ) THEN
    24502397                dopr_index(i) = 4
    24512398                dopr_unit(i)  = 'K'
     
    26822629
    26832630          CASE ( 'qv', '#qv' )
    2684              IF ( .NOT. cloud_physics ) THEN
     2631             IF ( .NOT. bulk_cloud_model ) THEN
    26852632                dopr_index(i) = 41
    26862633                dopr_unit(i)  = 'kg/kg'
     
    27052652
    27062653          CASE ( 'lpt', '#lpt' )
    2707              IF ( .NOT. cloud_physics ) THEN
     2654             IF ( .NOT. bulk_cloud_model ) THEN
    27082655                message_string = 'data_output_pr = ' //                        &
    27092656                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    2710                                  'lemented for cloud_physics = .FALSE.'
     2657                                 'lemented for bulk_cloud_model = .FALSE.'
    27112658                CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    27122659             ELSE
     
    28212768
    28222769          CASE ( 'w"qv"' )
    2823              IF ( humidity  .AND.  .NOT.  cloud_physics )  THEN
     2770             IF ( humidity  .AND.  .NOT.  bulk_cloud_model )  THEN
    28242771                dopr_index(i) = 48
    28252772                dopr_unit(i)  = TRIM ( waterflux_output_unit )
    28262773                hom(:,2,48,:) = SPREAD( zw, 2, statistic_regions+1 )
    2827              ELSEIF ( humidity  .AND.  cloud_physics )  THEN
     2774             ELSEIF ( humidity  .AND.  bulk_cloud_model )  THEN
    28282775                dopr_index(i) = 51
    28292776                dopr_unit(i)  = TRIM ( waterflux_output_unit )
     
    28322779                message_string = 'data_output_pr = ' //                        &
    28332780                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    2834                                  'lemented for cloud_physics = .FALSE. an' // &
    2835                                  'd humidity = .FALSE.'
     2781                                 'lemented for bulk_cloud_model = .FALSE. ' // &
     2782                                 'and humidity = .FALSE.'
    28362783                CALL message( 'check_parameters', 'PA0095', 1, 2, 0, 6, 0 )
    28372784             ENDIF
    28382785
    28392786          CASE ( 'w*qv*' )
    2840              IF ( humidity  .AND.  .NOT. cloud_physics )                       &
    2841              THEN
     2787             IF ( humidity  .AND.  .NOT. bulk_cloud_model )  THEN
    28422788                dopr_index(i) = 49
    28432789                dopr_unit(i)  = TRIM ( waterflux_output_unit )
    28442790                hom(:,2,49,:) = SPREAD( zw, 2, statistic_regions+1 )
    2845              ELSEIF( humidity .AND. cloud_physics ) THEN
     2791             ELSEIF( humidity .AND. bulk_cloud_model ) THEN
    28462792                dopr_index(i) = 52
    28472793                dopr_unit(i)  = TRIM ( waterflux_output_unit )
     
    28502796                message_string = 'data_output_pr = ' //                        &
    28512797                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    2852                                  'lemented for cloud_physics = .FALSE. an' // &
    2853                                  'd humidity = .FALSE.'
     2798                                 'lemented for bulk_cloud_model = .FALSE. ' // &
     2799                                 'and humidity = .FALSE.'
    28542800                CALL message( 'check_parameters', 'PA0095', 1, 2, 0, 6, 0 )
    28552801             ENDIF
    28562802
    28572803          CASE ( 'wqv' )
    2858              IF ( humidity  .AND.  .NOT.  cloud_physics )  THEN
     2804             IF ( humidity  .AND.  .NOT.  bulk_cloud_model )  THEN
    28592805                dopr_index(i) = 50
    28602806                dopr_unit(i)  = TRIM ( waterflux_output_unit )
    28612807                hom(:,2,50,:) = SPREAD( zw, 2, statistic_regions+1 )
    2862              ELSEIF ( humidity  .AND.  cloud_physics )  THEN
     2808             ELSEIF ( humidity  .AND.  bulk_cloud_model )  THEN
    28632809                dopr_index(i) = 53
    28642810                dopr_unit(i)  = TRIM ( waterflux_output_unit )
     
    28672813                message_string = 'data_output_pr = ' //                        &
    28682814                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    2869                                  'lemented for cloud_physics = .FALSE. an' // &
    2870                                  'd humidity = .FALSE.'
     2815                                 'lemented for bulk_cloud_model = .FALSE. ' // &
     2816                                 'and humidity = .FALSE.'
    28712817                CALL message( 'check_parameters', 'PA0095', 1, 2, 0, 6, 0 )
    28722818             ENDIF
    28732819
    28742820          CASE ( 'ql' )
    2875              IF (  .NOT.  cloud_physics  .AND.  .NOT.  cloud_droplets )  THEN
     2821             IF (  .NOT.  bulk_cloud_model  .AND.  .NOT.  cloud_droplets )  THEN
    28762822                message_string = 'data_output_pr = ' //                        &
    28772823                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    2878                                  'lemented for cloud_physics = .FALSE. and' // &
    2879                                  'cloud_droplets = .FALSE.'
     2824                                 'lemented for bulk_cloud_model = .FALSE. ' // &
     2825                                 'and cloud_droplets = .FALSE.'
    28802826                CALL message( 'check_parameters', 'PA0096', 1, 2, 0, 6, 0 )
    28812827             ELSE
     
    30342980             hom(:,2,120,:) = SPREAD( zw, 2, statistic_regions+1 )
    30352981
    3036           CASE ( 'nc' )
    3037              IF (  .NOT.  cloud_physics )  THEN
    3038                 message_string = 'data_output_pr = ' //                        &
    3039                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3040                                  'lemented for cloud_physics = .FALSE.'
    3041                 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    3042              ELSEIF ( .NOT.  microphysics_morrison )  THEN
    3043                 message_string = 'data_output_pr = ' //                        &
    3044                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3045                                  'lemented for cloud_scheme /= morrison'
    3046                 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    3047              ELSE
    3048                 dopr_index(i) = 89
    3049                 dopr_unit(i)  = '1/m3'
    3050                 hom(:,2,89,:)  = SPREAD( zu, 2, statistic_regions+1 )
    3051              ENDIF
    3052 
    3053           CASE ( 'nr' )
    3054              IF (  .NOT.  cloud_physics )  THEN
    3055                 message_string = 'data_output_pr = ' //                        &
    3056                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3057                                  'lemented for cloud_physics = .FALSE.'
    3058                 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    3059              ELSEIF ( .NOT.  microphysics_seifert )  THEN
    3060                 message_string = 'data_output_pr = ' //                        &
    3061                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3062                                  'lemented for cloud_scheme /= seifert_beheng'
    3063                 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    3064              ELSE
    3065                 dopr_index(i) = 73
    3066                 dopr_unit(i)  = '1/m3'
    3067                 hom(:,2,73,:)  = SPREAD( zu, 2, statistic_regions+1 )
    3068              ENDIF
    3069 
    3070           CASE ( 'qr' )
    3071              IF (  .NOT.  cloud_physics )  THEN
    3072                 message_string = 'data_output_pr = ' //                        &
    3073                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3074                                  'lemented for cloud_physics = .FALSE.'
    3075                 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    3076              ELSEIF ( .NOT.  microphysics_seifert )  THEN
    3077                 message_string = 'data_output_pr = ' //                        &
    3078                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3079                                  'lemented for cloud_scheme /= seifert_beheng'
    3080                 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    3081              ELSE
    3082                 dopr_index(i) = 74
    3083                 dopr_unit(i)  = 'kg/kg'
    3084                 hom(:,2,74,:)  = SPREAD( zu, 2, statistic_regions+1 )
    3085              ENDIF
    3086 
    3087           CASE ( 'qc' )
    3088              IF (  .NOT.  cloud_physics )  THEN
    3089                 message_string = 'data_output_pr = ' //                        &
    3090                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3091                                  'lemented for cloud_physics = .FALSE.'
    3092                 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    3093              ELSE
    3094                 dopr_index(i) = 75
    3095                 dopr_unit(i)  = 'kg/kg'
    3096                 hom(:,2,75,:)  = SPREAD( zu, 2, statistic_regions+1 )
    3097              ENDIF
    3098 
    3099           CASE ( 'prr' )
    3100              IF (  .NOT.  cloud_physics )  THEN
    3101                 message_string = 'data_output_pr = ' //                        &
    3102                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    3103                                  'lemented for cloud_physics = .FALSE.'
    3104                 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    3105              ELSEIF ( microphysics_sat_adjust )  THEN
    3106                 message_string = 'data_output_pr = ' //                        &
    3107                                  TRIM( data_output_pr(i) ) // ' is not ava' // &
    3108                                  'ilable for cloud_scheme = saturation_adjust'
    3109                 CALL message( 'check_parameters', 'PA0422', 1, 2, 0, 6, 0 )
    3110              ELSE
    3111                 dopr_index(i) = 76
    3112                 dopr_unit(i)  = 'kg/kg m/s'
    3113                 hom(:,2,76,:)  = SPREAD( zu, 2, statistic_regions+1 )
    3114              ENDIF
    3115 
    31162982          CASE ( 'ug' )
    31172983             dopr_index(i) = 78
     
    31543020             CALL lsm_check_data_output_pr( data_output_pr(i), i, unit,        &
    31553021                                            dopr_unit(i) )
     3022!
     3023!--          Block of microphysics module profile outputs
     3024             IF ( unit == 'illegal'  .AND.  bulk_cloud_model  )  THEN
     3025                   CALL bcm_check_data_output_pr(data_output_pr(i), i, unit,   &
     3026                                                 dopr_unit(i) )
     3027             ENDIF
    31563028
    31573029             IF ( unit == 'illegal' )  THEN
     
    32603132
    32613133          CASE ( 'lpt' )
    3262              IF (  .NOT.  cloud_physics )  THEN
     3134             IF (  .NOT.  bulk_cloud_model )  THEN
    32633135                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3264                          'res cloud_physics = .TRUE.'
     3136                         'res bulk_cloud_model = .TRUE.'
    32653137                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    32663138             ENDIF
    32673139             unit = 'K'
    3268 
    3269           CASE ( 'nc' )
    3270              IF (  .NOT.  cloud_physics )  THEN
    3271                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3272                          'res cloud_physics = .TRUE.'
    3273                 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3274              ELSEIF ( .NOT.  microphysics_morrison )  THEN
    3275                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3276                          'res = morrison '
    3277                 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )
    3278              ENDIF
    3279              unit = '1/m3'
    3280 
    3281           CASE ( 'nr' )
    3282              IF (  .NOT.  cloud_physics )  THEN
    3283                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3284                          'res cloud_physics = .TRUE.'
    3285                 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3286              ELSEIF ( .NOT.  microphysics_seifert )  THEN
    3287                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3288                          'res cloud_scheme = seifert_beheng'
    3289                 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )
    3290              ENDIF
    3291              unit = '1/m3'
    32923140
    32933141          CASE ( 'pc', 'pr' )
     
    33013149             IF ( TRIM( var ) == 'pr' )  unit = 'm'
    33023150
    3303           CASE ( 'prr' )
    3304              IF (  .NOT.  cloud_physics )  THEN
    3305                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3306                          'res cloud_physics = .TRUE.'
    3307                 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3308              ELSEIF ( microphysics_sat_adjust )  THEN
    3309                 message_string = 'output of "' // TRIM( var ) // '" is ' //    &
    3310                          'not available for cloud_scheme = saturation_adjust'
    3311                 CALL message( 'check_parameters', 'PA0423', 1, 2, 0, 6, 0 )
    3312              ENDIF
    3313              unit = 'kg/kg m/s'
    3314 
    33153151          CASE ( 'q', 'vpt' )
    33163152             IF (  .NOT.  humidity )  THEN
     
    33223158             IF ( TRIM( var ) == 'vpt' )  unit = 'K'
    33233159
    3324           CASE ( 'qc' )
    3325              IF (  .NOT.  cloud_physics )  THEN
     3160          CASE ( 'ql' )
     3161             IF ( .NOT.  ( bulk_cloud_model  .OR.  cloud_droplets ) )  THEN
    33263162                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3327                          'res cloud_physics = .TRUE.'
    3328                 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3329              ENDIF
    3330              unit = 'kg/kg'
    3331 
    3332           CASE ( 'ql' )
    3333              IF ( .NOT.  ( cloud_physics  .OR.  cloud_droplets ) )  THEN
    3334                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3335                          'res cloud_physics = .TRUE. or cloud_droplets = .TRUE.'
     3163                      'res bulk_cloud_model = .TRUE. or cloud_droplets = .TRUE.'
    33363164                CALL message( 'check_parameters', 'PA0106', 1, 2, 0, 6, 0 )
    33373165             ENDIF
     
    33483176             IF ( TRIM( var ) == 'ql_vp' )  unit = 'none'
    33493177
    3350           CASE ( 'qr' )
    3351              IF (  .NOT.  cloud_physics )  THEN
     3178          CASE ( 'qv' )
     3179             IF (  .NOT.  bulk_cloud_model )  THEN
    33523180                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3353                          'res cloud_physics = .TRUE.'
    3354                 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3355              ELSEIF ( .NOT.  microphysics_seifert ) THEN
    3356                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3357                          'res cloud_scheme = seifert_beheng'
    3358                 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )
    3359              ENDIF
    3360              unit = 'kg/kg'
    3361 
    3362           CASE ( 'qv' )
    3363              IF (  .NOT.  cloud_physics )  THEN
    3364                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3365                                  'res cloud_physics = .TRUE.'
     3181                                 'res bulk_cloud_model = .TRUE.'
    33663182                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    33673183             ENDIF
     
    34003216             CONTINUE
    34013217
    3402           CASE ( 'ghf*', 'lwp*', 'ol*', 'pra*', 'prr*', 'qsws*', 'r_a*',       &
     3218          CASE ( 'ghf*', 'lwp*', 'ol*', 'qsws*', 'r_a*',                       &
    34033219                 'shf*', 'ssws*', 't*', 'tsurf*', 'u*', 'z0*', 'z0h*', 'z0q*' )
    34043220             IF ( k == 0  .OR.  data_output(i)(ilen-2:ilen) /= '_xy' )  THEN
     
    34093225             ENDIF
    34103226
    3411              IF ( TRIM( var ) == 'lwp*'  .AND.  .NOT. cloud_physics )  THEN
     3227             IF ( TRIM( var ) == 'lwp*'  .AND.  .NOT. bulk_cloud_model )  THEN
    34123228                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3413                                  'res cloud_physics = .TRUE.'
     3229                                 'res bulk_cloud_model = .TRUE.'
    34143230                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3415              ENDIF
    3416              IF ( TRIM( var ) == 'pra*'  .AND.                                 &
    3417                   .NOT. ( microphysics_kessler .OR. microphysics_seifert ) )  THEN
    3418                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3419                                  'res cloud_scheme = kessler or seifert_beheng'
    3420                 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )
    3421              ENDIF
    3422              IF ( TRIM( var ) == 'pra*'  .AND.  j == 1 )  THEN
    3423                 message_string = 'temporal averaging of precipitation ' //     &
    3424                           'amount "' // TRIM( var ) // '" is not possible'
    3425                 CALL message( 'check_parameters', 'PA0113', 1, 2, 0, 6, 0 )
    3426              ENDIF
    3427              IF ( TRIM( var ) == 'prr*'  .AND.                                 &
    3428                   .NOT. ( microphysics_kessler .OR. microphysics_seifert ) )  THEN
    3429                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3430                                  'res cloud_scheme = kessler or seifert_beheng'
    3431                 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )
    34323231             ENDIF
    34333232             IF ( TRIM( var ) == 'qsws*'  .AND.  .NOT.  humidity )  THEN
     
    34603259             IF ( TRIM( var ) == 'lwp*'   )  unit = 'kg/m2'
    34613260             IF ( TRIM( var ) == 'ol*'    )  unit = 'm'
    3462              IF ( TRIM( var ) == 'pra*'   )  unit = 'mm'
    3463              IF ( TRIM( var ) == 'prr*'   )  unit = 'mm/s'
    34643261             IF ( TRIM( var ) == 'qsws*'  )  unit = 'kgm/kgs'
    34653262             IF ( TRIM( var ) == 'r_a*'   )  unit = 's/m'     
     
    34833280
    34843281             CALL tcm_check_data_output ( var, unit )
     3282
     3283!
     3284!--          Block of microphysics module outputs
     3285             IF ( unit == 'illegal'  .AND.  bulk_cloud_model  )  THEN
     3286                CALL bcm_check_data_output ( var, unit )
     3287             ENDIF
    34853288
    34863289             IF ( unit == 'illegal' )  THEN
  • palm/trunk/SOURCE/chem_photolysis_mod.f90

    r3241 r3274  
    2626! -----------------
    2727! $Id$
     28! Modularization of all bulk cloud physics code components
     29!
     30! 3241 2018-09-12 15:02:00Z raasch
    2831! unused variables commented
    2932!
     
    5053        ONLY:  dzw, hyp, pt, q, ql, zu, zw
    5154
    52     USE constants,                                                             &
     55    USE basic_constants_and_equations_mod,                                     &
    5356        ONLY:  pi
    5457
     
    6871    USE control_parameters,                                                    &
    6972        ONLY:  initializing_actions           
    70 !       ONLY:  cloud_droplets, cloud_physics, g, initializing_actions,         &
     73!       ONLY:  cloud_droplets, initializing_actions,                           &
    7174!              large_scale_forcing, lsf_surf, phi, pt_surface, rho_surface,    &
    7275!              surface_pressure, time_since_reference_point
     
    271274!      INTEGER(iwp) :: i, j, k   !< loop indices
    272275       INTEGER(iwp) :: iphot,iav !< loop indix for photolysis reaction
    273 !      REAL(wp)     :: exn,   &  !< Exner functions at surface
     276!      REAL(wp)     :: exn,   &  !< Exner functions at surface (better use palms own exner array in arrays_3d)
    274277!                      pt1       !< potential temperature at first grid level
    275278
     
    304307!      INTEGER(iwp) :: i, j, k   !< loop indices
    305308       INTEGER(iwp) :: iphot,iav !< loop indix for photolysis reaction
    306 !      REAL(wp)     :: exn,   &  !< Exner functions at surface
     309!      REAL(wp)     :: exn,   &  !< Exner functions at surface (better use palms own exner array in arrays_3d)
    307310!                      pt1       !< potential temperature at first grid level
    308311       REAL(wp)     :: coszi     !< 1./cosine of zenith angle
  • palm/trunk/SOURCE/chemistry_model_mod.f90

    r3248 r3274  
    2727! -----------------
    2828! $Id$
     29! Modularization of all bulk cloud physics code components
     30!
     31! 3248 2018-09-14 09:42:06Z sward
    2932! Minor formating changes
    3033!
     
    144147                                 intermediate_timestep_count_max,              &
    145148                                 timestep_scheme, use_prescribed_profile_data 
    146    USE arrays_3d,          ONLY: hyp, pt, rdf_sc, tend, zu                     
     149   USE arrays_3d,          ONLY: hyp, pt, rdf_sc, tend, zu, exner
    147150   USE chem_gasphase_mod,  ONLY: nspec, spc_names, nkppctrl, nmaxfixsteps,     &
    148151                                 t_steps, fill_temp, chem_gasphase_integrate,  &
     
    939942    IF (chem_gasphase_on) THEN
    940943
    941        tmp_temp(:) = pt(:,j,i) * ( hyp(nzb+1:nzt) / 100000.0_wp )**0.286_wp
     944       tmp_temp(:) = pt(:,j,i) * exner(nzb+1:nzt)
    942945! ppm to molecules/cm**3
    943946!      tmp_fact = 1.e-6_wp*6.022e23_wp/(22.414_wp*1000._wp) * 273.15_wp * hyp(nzb+1:nzt)/( 101300.0_wp * tmp_temp )
  • palm/trunk/SOURCE/compute_vpt.f90

    r2718 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    6770
    6871    USE arrays_3d,                                                             &
    69         ONLY:  pt, q, ql, vpt
    70        
     72        ONLY:  pt, q, ql, vpt, d_exner
     73
     74    USE basic_constants_and_equations_mod,                                     &
     75        ONLY:  lv_d_cp
     76
     77    USE control_parameters,                                                    &
     78        ONLY:  cloud_droplets
     79
    7180    USE indices,                                                               &
    7281        ONLY:  nzb, nzt
    73        
    74     USE cloud_parameters,                                                      &
    75         ONLY:  l_d_cp, pt_d_t
    76        
    77     USE control_parameters,                                                    &
    78         ONLY:  cloud_droplets, cloud_physics
    79        
     82
    8083    USE kinds
     84
     85    USE bulk_cloud_model_mod,                                                  &
     86        ONLY:  bulk_cloud_model
    8187
    8288    IMPLICIT NONE
     
    8490    INTEGER(iwp) :: k   !<
    8591
    86     IF ( .NOT. cloud_physics  .AND.  .NOT. cloud_droplets )  THEN
     92    IF ( .NOT. bulk_cloud_model  .AND.  .NOT. cloud_droplets )  THEN
    8793       vpt = pt * ( 1.0_wp + 0.61_wp * q )
    88     ELSE IF (cloud_physics)  THEN
     94    ELSE IF (bulk_cloud_model)  THEN
    8995       DO  k = nzb, nzt+1
    90           vpt(k,:,:) = ( pt(k,:,:) + pt_d_t(k) * l_d_cp * ql(k,:,:) ) *        &
     96          vpt(k,:,:) = ( pt(k,:,:) + d_exner(k) * lv_d_cp * ql(k,:,:) ) *      &
    9197                       ( 1.0_wp + 0.61_wp * q(k,:,:) - 1.61_wp * ql(k,:,:) )
    9298       ENDDO
  • palm/trunk/SOURCE/data_output_2d.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!
     
    237240               precipitation_amount, prr, q, qc, ql, ql_c, ql_v, qr,           &
    238241               rho_ocean, s, sa, tend, u, v, vpt, w, zu, zw,                   &
    239                waterflux_output_conversion
    240        
     242               waterflux_output_conversion, hyrho, d_exner
     243
    241244    USE averaging
    242        
    243     USE cloud_parameters,                                                      &
    244         ONLY:  cp, hyrho, l_d_cp, l_v, pt_d_t
    245                
     245
     246    USE basic_constants_and_equations_mod,                                     &
     247        ONLY:  c_p, lv_d_cp, l_v
     248
     249    USE bulk_cloud_model_mod,                                                  &
     250        ONLY:  bulk_cloud_model, bcm_data_output_2d
     251
    246252    USE control_parameters,                                                    &
    247         ONLY:  cloud_physics, data_output_2d_on_each_pe, data_output_xy,       &
     253        ONLY:  data_output_2d_on_each_pe, data_output_xy,                      &
    248254               data_output_xz, data_output_yz, do2d,                           &
    249255               do2d_xy_last_time, do2d_xy_time_count,                          &
     
    254260               psolver, section, simulated_time,                               &
    255261               time_since_reference_point, uv_exposure
    256        
     262
    257263    USE cpulog,                                                                &
    258264        ONLY:  cpu_log, log_point
    259        
     265
    260266    USE gust_mod,                                                              &
    261267        ONLY:  gust_data_output_2d, gust_module_enabled
    262        
     268
    263269    USE indices,                                                               &
    264270        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg,       &
    265271               nzb, nzt, wall_flags_0
    266                
     272
    267273    USE kinds
    268    
     274
    269275    USE land_surface_model_mod,                                                &
    270276        ONLY:  lsm_data_output_2d, zs
    271    
     277
    272278#if defined( __netcdf )
    273279    USE NETCDF
     
    579585                level_z(nzb+1) = zu(nzb+1)
    580586
    581              CASE ( 'nc_xy', 'nc_xz', 'nc_yz' )
    582                 IF ( av == 0 )  THEN
    583                    to_be_resorted => nc
    584                 ELSE
    585                    IF ( .NOT. ALLOCATED( nc_av ) ) THEN
    586                       ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    587                       nc_av = REAL( fill_value, KIND = wp )
    588                    ENDIF
    589                    to_be_resorted => nc_av
    590                 ENDIF
    591                 IF ( mode == 'xy' )  level_z = zu
    592 
    593              CASE ( 'nr_xy', 'nr_xz', 'nr_yz' )
    594                 IF ( av == 0 )  THEN
    595                    to_be_resorted => nr
    596                 ELSE
    597                    IF ( .NOT. ALLOCATED( nr_av ) ) THEN
    598                       ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    599                       nr_av = REAL( fill_value, KIND = wp )
    600                    ENDIF
    601                    to_be_resorted => nr_av
    602                 ENDIF
    603                 IF ( mode == 'xy' )  level_z = zu
    604 
    605587             CASE ( 'ghf*_xy' )        ! 2d-array
    606588                IF ( av == 0 )  THEN
     
    756738                ENDIF
    757739
    758              CASE ( 'pra*_xy' )        ! 2d-array / integral quantity => no av
    759 !                CALL exchange_horiz_2d( precipitation_amount )
    760                    DO  i = nxl, nxr
    761                       DO  j = nys, nyn
    762                       local_pf(i,j,nzb+1) =  precipitation_amount(j,i)
    763                    ENDDO
    764                 ENDDO
    765                 precipitation_amount = 0.0_wp   ! reset for next integ. interval
    766                 resorted = .TRUE.
    767                 two_d = .TRUE.
    768                 level_z(nzb+1) = zu(nzb+1)
    769 
    770              CASE ( 'prr_xy', 'prr_xz', 'prr_yz' )
    771                 IF ( av == 0 )  THEN
    772 !                   CALL exchange_horiz( prr, nbgp )
    773                    DO  i = nxl, nxr
    774                       DO  j = nys, nyn
    775                          DO  k = nzb, nzt+1
    776                             local_pf(i,j,k) = prr(k,j,i) * hyrho(nzb+1)
    777                          ENDDO
    778                       ENDDO
    779                    ENDDO
    780                 ELSE
    781                    IF ( .NOT. ALLOCATED( prr_av ) ) THEN
    782                       ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    783                       prr_av = REAL( fill_value, KIND = wp )
    784                    ENDIF
    785 !                   CALL exchange_horiz( prr_av, nbgp )
    786                    DO  i = nxl, nxr
    787                       DO  j = nys, nyn
    788                          DO  k = nzb, nzt+1
    789                             local_pf(i,j,k) = prr_av(k,j,i) * hyrho(nzb+1)
    790                          ENDDO
    791                       ENDDO
    792                    ENDDO
    793                 ENDIF
    794                 resorted = .TRUE.
    795                 IF ( mode == 'xy' )  level_z = zu
    796 
    797740             CASE ( 'pt_xy', 'pt_xz', 'pt_yz' )
    798741                IF ( av == 0 )  THEN
    799                    IF ( .NOT. cloud_physics ) THEN
     742                   IF ( .NOT. bulk_cloud_model ) THEN
    800743                      to_be_resorted => pt
    801744                   ELSE
     
    803746                      DO  j = nys, nyn
    804747                            DO  k = nzb, nzt+1
    805                                local_pf(i,j,k) = pt(k,j,i) + l_d_cp *          &
    806                                                              pt_d_t(k) *       &
     748                               local_pf(i,j,k) = pt(k,j,i) + lv_d_cp *         &
     749                                                             d_exner(k) *      &
    807750                                                             ql(k,j,i)
    808751                            ENDDO
     
    829772                   ENDIF
    830773                   to_be_resorted => q_av
    831                 ENDIF
    832                 IF ( mode == 'xy' )  level_z = zu
    833 
    834              CASE ( 'qc_xy', 'qc_xz', 'qc_yz' )
    835                 IF ( av == 0 )  THEN
    836                    to_be_resorted => qc
    837                 ELSE
    838                    IF ( .NOT. ALLOCATED( qc_av ) ) THEN
    839                       ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    840                       qc_av = REAL( fill_value, KIND = wp )
    841                    ENDIF
    842                    to_be_resorted => qc_av
    843774                ENDIF
    844775                IF ( mode == 'xy' )  level_z = zu
     
    921852                IF ( mode == 'xy' )  level_z = zu
    922853
    923              CASE ( 'qr_xy', 'qr_xz', 'qr_yz' )
    924                 IF ( av == 0 )  THEN
    925                    to_be_resorted => qr
    926                 ELSE
    927                    IF ( .NOT. ALLOCATED( qr_av ) ) THEN
    928                       ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    929                       qr_av = REAL( fill_value, KIND = wp )
    930                    ENDIF
    931                    to_be_resorted => qr_av
    932                 ENDIF
    933                 IF ( mode == 'xy' )  level_z = zu
    934 
    935854             CASE ( 'qsws*_xy' )        ! 2d-array
    936855                IF ( av == 0 ) THEN
     
    1071990                      j = surf_lsm_h%j(m)
    1072991                      k = surf_lsm_h%k(m)
    1073                       local_pf(i,j,nzb+1) = surf_lsm_h%shf(m) * cp
     992                      local_pf(i,j,nzb+1) = surf_lsm_h%shf(m) * c_p
    1074993                   ENDDO
    1075994                   DO  m = 1, surf_usm_h%ns
     
    1077996                      j = surf_usm_h%j(m)
    1078997                      k = surf_usm_h%k(m)
    1079                       local_pf(i,j,nzb+1) = surf_usm_h%shf(m) * cp
     998                      local_pf(i,j,nzb+1) = surf_usm_h%shf(m) * c_p
    1080999                   ENDDO
    10811000                ELSE
     
    13871306
    13881307!
    1389 !--             Land surface model quantity
    1390                 IF ( land_surface )  THEN
    1391                    CALL lsm_data_output_2d( av, do2d(av,if), found, grid, mode,&
    1392                                             local_pf, two_d, nzb_do, nzt_do )
    1393                 ENDIF
    1394 
    1395 !
    13961308!--             Turbulence closure variables
    13971309                IF ( .NOT. found )  THEN
    13981310                   CALL tcm_data_output_2d( av, do2d(av,if), found, grid, mode,&
    13991311                                             local_pf, nzb_do, nzt_do )
     1312                ENDIF
     1313
     1314!
     1315!--             Microphysics module quantities
     1316                IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
     1317                   CALL bcm_data_output_2d( av, do2d(av,if), found, grid, mode,&
     1318                                            local_pf, two_d, nzb_do, nzt_do )
     1319                ENDIF
     1320
     1321!
     1322!--             Land surface model quantity
     1323                IF ( .NOT. found  .AND.  land_surface )  THEN
     1324                   CALL lsm_data_output_2d( av, do2d(av,if), found, grid, mode,&
     1325                                            local_pf, two_d, nzb_do, nzt_do )
    14001326                ENDIF
    14011327
     
    14171343!
    14181344!--             UV exposure model quantity
    1419                 IF ( uv_exposure )  THEN
     1345                IF ( .NOT. found  .AND.  uv_exposure )  THEN
    14201346                   CALL uvem_data_output_2d( av, do2d(av,if), found, grid,     &
    14211347                                             local_pf, two_d, nzb_do, nzt_do )
  • palm/trunk/SOURCE/data_output_3d.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 and format statements removed
    2831!
     
    206209    USE arrays_3d,                                                             &
    207210        ONLY:  e, nc, nr, p, pt, prr, q, qc, ql, ql_c, ql_v, qr, rho_ocean, s, &
    208                sa, tend, u, v, vpt, w
    209        
     211               sa, tend, u, v, vpt, w, d_exner
     212
    210213    USE averaging
    211        
     214
     215    USE basic_constants_and_equations_mod,                                     &
     216        ONLY:  lv_d_cp
     217
     218    USE bulk_cloud_model_mod,                                                  &
     219        ONLY:  bulk_cloud_model, bcm_data_output_3d
     220
    212221    USE chemistry_model_mod,                                                   &
    213222        ONLY:  chem_data_output_3d
    214223
    215     USE cloud_parameters,                                                      &
    216         ONLY:  l_d_cp, pt_d_t
    217        
    218224    USE control_parameters,                                                    &
    219         ONLY:  air_chemistry, cloud_physics, do3d, do3d_no, do3d_time_count,   &
     225        ONLY:  air_chemistry, do3d, do3d_no, do3d_time_count,                  &
    220226               io_blocks, io_group, land_surface, message_string,              &
    221227               ntdim_3d, nz_do3d,  plant_canopy,                               &
    222228               psolver, simulated_time, time_since_reference_point,            &
    223229               urban_surface, varnamelength
    224        
     230
    225231    USE cpulog,                                                                &
    226232        ONLY:  log_point, cpu_log
     
    228234    USE gust_mod,                                                              &
    229235        ONLY: gust_data_output_3d, gust_module_enabled
    230        
     236
    231237    USE indices,                                                               &
    232238        ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt,     &
    233239               wall_flags_0
    234        
     240
    235241    USE kinds
    236    
     242
    237243    USE land_surface_model_mod,                                                &
    238244        ONLY: lsm_data_output_3d, nzb_soil, nzt_soil
     
    399405                ENDIF
    400406                to_be_resorted => lpt_av
    401              ENDIF
    402 
    403           CASE ( 'nc' )
    404              IF ( av == 0 )  THEN
    405                 to_be_resorted => nc
    406              ELSE
    407                 IF ( .NOT. ALLOCATED( nc_av ) ) THEN
    408                    ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    409                    nc_av = REAL( fill_value, KIND = wp )
    410                 ENDIF
    411                 to_be_resorted => nc_av
    412              ENDIF
    413 
    414           CASE ( 'nr' )
    415              IF ( av == 0 )  THEN
    416                 to_be_resorted => nr
    417              ELSE
    418                 IF ( .NOT. ALLOCATED( nr_av ) ) THEN
    419                    ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    420                    nr_av = REAL( fill_value, KIND = wp )
    421                 ENDIF
    422                 to_be_resorted => nr_av
    423407             ENDIF
    424408
     
    506490             ENDIF
    507491
    508           CASE ( 'prr' )
    509              IF ( av == 0 )  THEN
    510                 DO  i = nxl, nxr
    511                    DO  j = nys, nyn
    512                       DO  k = nzb_do, nzt_do
    513                          local_pf(i,j,k) = prr(k,j,i)
    514                       ENDDO
    515                    ENDDO
    516                 ENDDO
    517              ELSE
    518                 IF ( .NOT. ALLOCATED( prr_av ) ) THEN
    519                    ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    520                    prr_av = REAL( fill_value, KIND = wp )
    521                 ENDIF
    522                 DO  i = nxl, nxr
    523                    DO  j = nys, nyn
    524                       DO  k = nzb_do, nzt_do
    525                          local_pf(i,j,k) = prr_av(k,j,i)
    526                       ENDDO
    527                    ENDDO
    528                 ENDDO
    529              ENDIF
    530              resorted = .TRUE.
    531 
    532492          CASE ( 'pt' )
    533493             IF ( av == 0 )  THEN
    534                 IF ( .NOT. cloud_physics ) THEN
     494                IF ( .NOT. bulk_cloud_model ) THEN
    535495                   to_be_resorted => pt
    536496                ELSE
     
    538498                      DO  j = nys, nyn
    539499                         DO  k = nzb_do, nzt_do
    540                             local_pf(i,j,k) = pt(k,j,i) + l_d_cp *             &
    541                                                           pt_d_t(k) *          &
     500                            local_pf(i,j,k) = pt(k,j,i) + lv_d_cp *            &
     501                                                          d_exner(k) *         &
    542502                                                          ql(k,j,i)
    543503                         ENDDO
     
    563523                ENDIF
    564524                to_be_resorted => q_av
    565              ENDIF
    566 
    567           CASE ( 'qc' )
    568              IF ( av == 0 )  THEN
    569                 to_be_resorted => qc
    570              ELSE
    571                 IF ( .NOT. ALLOCATED( qc_av ) ) THEN
    572                    ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    573                    qc_av = REAL( fill_value, KIND = wp )
    574                 ENDIF
    575                 to_be_resorted => qc_av
    576525             ENDIF
    577526
     
    647596             ENDIF
    648597
    649           CASE ( 'qr' )
    650              IF ( av == 0 )  THEN
    651                 to_be_resorted => qr
    652              ELSE
    653                 IF ( .NOT. ALLOCATED( qr_av ) ) THEN
    654                    ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    655                    qr_av = REAL( fill_value, KIND = wp )
    656                 ENDIF
    657                 to_be_resorted => qr_av
    658              ENDIF
    659 
    660598          CASE ( 'qv' )
    661599             IF ( av == 0 )  THEN
     
    758696!--       Block of urban surface model outputs   
    759697          CASE ( 'usm_output' )
    760              CALL usm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     698             CALL usm_data_output_3d( av, do3d(av,if), found, local_pf,        &
    761699                                         nzb_do, nzt_do )
    762700
    763701          CASE DEFAULT
    764702
     703             IF ( .NOT. found )  THEN
     704                CALL tcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     705                                         nzb_do, nzt_do )
     706                resorted = .TRUE.
     707             ENDIF
     708
     709!
     710!--          Microphysic module quantities
     711             IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
     712                CALL bcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
     713                                         nzb_do, nzt_do )
     714                resorted = .TRUE.
     715             ENDIF
     716
    765717!
    766718!--          Land surface quantity
    767              IF ( land_surface )  THEN
     719             IF ( .NOT. found  .AND.  land_surface )  THEN
    768720!
    769721!--             For soil model quantities, it is required to re-allocate local_pf
     
    788740                ENDIF
    789741
    790              ENDIF
    791 
    792              IF ( .NOT. found )  THEN
    793                 CALL tcm_data_output_3d( av, do3d(av,if), found, local_pf,     &
    794                                          nzb_do, nzt_do )
    795                 resorted = .TRUE.
    796742             ENDIF
    797743
  • palm/trunk/SOURCE/data_output_dvrp.f90

    r3045 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3045 2018-05-28 07:55:41Z Giersch
    2730! Code adjusted according to PALM coding standards
    2831!
     
    131134
    132135    USE arrays_3d,                                                             &
    133         ONLY:  p, pt, q, ql, s, ts, u, us, v, w, zu
    134        
    135     USE cloud_parameters,                                                      &
    136         ONLY:  l_d_cp, pt_d_t
    137        
    138     USE constants,                                                             &
    139         ONLY:  pi
    140        
     136        ONLY:  p, pt, q, ql, s, ts, u, us, v, w, zu, d_exner
     137
     138    USE basic_constants_and_equations_mod,                                     &
     139        ONLY:  pi, lv_d_cp
     140
    141141    USE control_parameters,                                                    &
    142         ONLY:  cloud_droplets, cloud_physics, do2d, do3d, humidity, ibc_uv_b,  &
     142        ONLY:  cloud_droplets, do2d, do3d, humidity, ibc_uv_b,                 &
    143143               message_string, nz_do3d, passive_scalar, simulated_time,        &
    144144               threshold
     
    160160       
    161161    USE kinds
     162
     163    USE bulk_cloud_model_mod,                                                  &
     164        ONLY:  bulk_cloud_model
    162165
    163166    USE pegrid
     
    335338
    336339                CASE ( 'pt', 'pt_xy', 'pt_xz', 'pt_yz' )
    337                    IF ( .NOT. cloud_physics ) THEN
     340                   IF ( .NOT. bulk_cloud_model ) THEN
    338341                      DO  i = nxl_dvrp, nxr_dvrp+1
    339342                         DO  j = nys_dvrp, nyn_dvrp+1
     
    347350                         DO  j = nys_dvrp, nyn_dvrp+1
    348351                            DO  k = nzb, nz_do3d
    349                                local_pf(i,j,k) = pt(k,j,i) + l_d_cp *          &
    350                                                  pt_d_t(k) * ql(k,j,i)
     352                               local_pf(i,j,k) = pt(k,j,i) + lv_d_cp *         &
     353                                                 d_exner(k) * ql(k,j,i)
    351354                            ENDDO
    352355                         ENDDO
     
    372375             
    373376                CASE ( 'ql', 'ql_xy', 'ql_xz', 'ql_yz' )
    374                    IF ( cloud_physics  .OR.  cloud_droplets )  THEN
     377                   IF ( bulk_cloud_model  .OR.  cloud_droplets )  THEN
    375378                      DO  i = nxl_dvrp, nxr_dvrp+1
    376379                         DO  j = nys_dvrp, nyn_dvrp+1
     
    381384                      ENDDO
    382385                   ELSE                     
    383                       message_string = 'if cloud_physics = .FALSE. and ' //    &
     386                      message_string = 'if bulk_cloud_model = .FALSE. and ' // &
    384387                                  'cloud_droplets = .FALSE. '
    385388                                  'output of ' // TRIM( output_variable) //    &
  • palm/trunk/SOURCE/data_output_mask.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 variable removed
    2831!
     
    129132    USE arrays_3d,                                                             &
    130133        ONLY:  e, nc, nr, p, pt, q, qc, ql, ql_c, ql_v, qr, rho_ocean, s, sa,  &
    131                tend, u, v, vpt, w
     134               tend, u, v, vpt, w, d_exner
    132135   
    133136    USE averaging,                                                             &
     
    135138               qc_av, ql_av, ql_c_av, ql_v_av, ql_vp_av, qv_av, qr_av,         &
    136139               rho_ocean_av, s_av, sa_av, u_av, v_av, vpt_av, w_av
    137    
    138     USE cloud_parameters,                                                      &
    139         ONLY:  l_d_cp, pt_d_t
     140
     141    USE basic_constants_and_equations_mod,                                     &
     142        ONLY:  lv_d_cp
    140143   
    141144    USE control_parameters,                                                    &
    142         ONLY:  cloud_physics, domask, domask_no, domask_time_count, mask_i,    &
     145        ONLY:  domask, domask_no, domask_time_count, mask_i,                   &
    143146               mask_j, mask_k, mask_size, mask_size_l, mask_start_l,           &
    144147               max_masks, message_string, mid, nz_do3d, simulated_time
     
    150153       
    151154    USE kinds
     155
     156    USE bulk_cloud_model_mod,                                                  &
     157        ONLY:  bulk_cloud_model
    152158   
    153159    USE NETCDF
     
    354360          CASE ( 'pt' )
    355361             IF ( av == 0 )  THEN
    356                 IF ( .NOT. cloud_physics ) THEN
     362                IF ( .NOT. bulk_cloud_model ) THEN
    357363                   to_be_resorted => pt
    358364                ELSE
     
    362368                            local_pf(i,j,k) =  &
    363369                                 pt(mask_k(mid,k),mask_j(mid,j),mask_i(mid,i)) &
    364                                  + l_d_cp * pt_d_t(mask_k(mid,k)) * &
     370                                 + lv_d_cp * d_exner(mask_k(mid,k)) *          &
    365371                                   ql(mask_k(mid,k),mask_j(mid,j),mask_i(mid,i))
    366372                         ENDDO
  • palm/trunk/SOURCE/data_output_spectra.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!
     
    238241#if defined( __netcdf )
    239242
    240     USE constants,                                                             &
     243    USE basic_constants_and_equations_mod,                                     &
    241244        ONLY:  pi
    242245
  • palm/trunk/SOURCE/flow_statistics.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!
     
    283286               momentumflux_output_conversion, nc, nr, p, prho, prr, pt, q,    &
    284287               qc, ql, qr, rho_air, rho_air_zw, rho_ocean, s,                  &
    285                sa, u, ug, v, vg, vpt, w, w_subs, waterflux_output_conversion, zw
     288               sa, u, ug, v, vg, vpt, w, w_subs, waterflux_output_conversion,  &
     289               zw, d_exner
    286290       
    287     USE cloud_parameters,                                                      &
    288         ONLY:   l_d_cp, pt_d_t
     291    USE basic_constants_and_equations_mod,                                     &
     292        ONLY:   g, lv_d_cp
    289293       
    290294    USE control_parameters,                                                    &
    291         ONLY:   average_count_pr, cloud_droplets, cloud_physics, do_sum,       &
    292                 dt_3d, g, humidity, initializing_actions, land_surface,        &
     295        ONLY:   average_count_pr, cloud_droplets, do_sum,                      &
     296                dt_3d, humidity, initializing_actions, land_surface,           &
    293297                large_scale_forcing, large_scale_subsidence, max_pr_user,      &
    294                 message_string, neutral, microphysics_morrison,                &
    295                 microphysics_seifert, ocean, passive_scalar, simulated_time,   &
    296                 simulated_time_at_begin, use_subsidence_tendencies,            &
     298                message_string, neutral, ocean, passive_scalar, simulated_time,&
     299                simulated_time_at_begin, use_subsidence_tendencies,            &
    297300                use_surface_fluxes, use_top_fluxes, ws_scheme_mom,             &
    298301                ws_scheme_sca
     
    313316       
    314317    USE kinds
     318
     319    USE bulk_cloud_model_mod,                                                  &
     320        ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
    315321   
    316322    USE land_surface_model_mod,                                                &
     
    515521             ENDDO
    516522          ENDDO
    517           IF ( cloud_physics )  THEN
     523          IF ( bulk_cloud_model )  THEN
    518524             !$OMP DO
    519525             DO  i = nxl, nxr
     
    525531                                                               * flag
    526532                      sums_l(k,43,tn) = sums_l(k,43,tn) + (                    &
    527                                       pt(k,j,i) + l_d_cp*pt_d_t(k) * ql(k,j,i) &
     533                                      pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) &
    528534                                                          ) * rmask(j,i,sr)    &
    529535                                                            * flag
     
    563569                sums_l(:,41,0) = sums_l(:,41,0) + sums_l(:,41,i)
    564570                sums_l(:,44,0) = sums_l(:,44,0) + sums_l(:,44,i)
    565                 IF ( cloud_physics )  THEN
     571                IF ( bulk_cloud_model )  THEN
    566572                   sums_l(:,42,0) = sums_l(:,42,0) + sums_l(:,42,i)
    567573                   sums_l(:,43,0) = sums_l(:,43,0) + sums_l(:,43,i)
     
    598604          CALL MPI_ALLREDUCE( sums_l(nzb,41,0), sums(nzb,41), nzt+2-nzb,       &
    599605                              MPI_REAL, MPI_SUM, comm2d, ierr )
    600           IF ( cloud_physics ) THEN
     606          IF ( bulk_cloud_model ) THEN
    601607             IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
    602608             CALL MPI_ALLREDUCE( sums_l(nzb,42,0), sums(nzb,42), nzt+2-nzb,    &
     
    621627          sums(:,44) = sums_l(:,44,0)
    622628          sums(:,41) = sums_l(:,41,0)
    623           IF ( cloud_physics ) THEN
     629          IF ( bulk_cloud_model ) THEN
    624630             sums(:,42) = sums_l(:,42,0)
    625631             sums(:,43) = sums_l(:,43,0)
     
    654660          hom(:,1,44,sr) = sums(:,44)             ! vpt
    655661          hom(:,1,41,sr) = sums(:,41)             ! qv (q)
    656           IF ( cloud_physics ) THEN
     662          IF ( bulk_cloud_model ) THEN
    657663             sums(:,42) = sums(:,42) / ngp_2dh_s_inner(:,sr)
    658664             sums(:,43) = sums(:,43) / ngp_2dh_s_inner(:,sr)
     
    948954                                               * ddzu(k+1) * rmask(j,i,sr) * flag
    949955
    950                    IF ( cloud_physics ) THEN
     956                   IF ( bulk_cloud_model ) THEN
    951957                      sums_l(k,51,tn) = sums_l(k,51,tn)                        &
    952958                                         - 0.5_wp * ( kh(k,j,i) + kh(k+1,j,i) )&
     
    10141020                                          * heatflux_output_conversion(k+ki)
    10151021                            ENDIF
    1016                             IF ( cloud_physics )  THEN
     1022                            IF ( bulk_cloud_model )  THEN
    10171023!
    10181024!--                            Formula does not work if ql(k+ki) /= 0.0
     
    10671073                                          * heatflux_output_conversion(nzb)
    10681074                      ENDIF
    1069                       IF ( cloud_physics )  THEN
     1075                      IF ( bulk_cloud_model )  THEN
    10701076!
    10711077!--                      Formula does not work if ql(nzb) /= 0.0
     
    11181124                                          * heatflux_output_conversion(nzb)
    11191125                      ENDIF
    1120                       IF ( cloud_physics )  THEN
     1126                      IF ( bulk_cloud_model )  THEN
    11211127!
    11221128!--                      Formula does not work if ql(nzb) /= 0.0
     
    12931299                                           * heatflux_output_conversion(nzt)
    12941300                   ENDIF
    1295                    IF ( cloud_physics )  THEN
     1301                   IF ( bulk_cloud_model )  THEN
    12961302!
    12971303!--                   Formula does not work if ql(nzb) /= 0.0
     
    13471353!--             content, rain drop concentration and rain water content
    13481354                IF ( humidity )  THEN
    1349                    IF ( cloud_physics .OR. cloud_droplets )  THEN
     1355                   IF ( bulk_cloud_model .OR. cloud_droplets )  THEN
    13501356                      pts = 0.5_wp * ( vpt(k,j,i)   - hom(k,1,44,sr) +         &
    13511357                                    vpt(k+1,j,i) - hom(k+1,1,44,sr) )
  • palm/trunk/SOURCE/header.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!
     
    378381    USE arrays_3d,                                                             &
    379382        ONLY:  pt_init, q_init, s_init, sa_init, ug, vg, w_subs, zu, zw
    380        
     383
     384    USE basic_constants_and_equations_mod,                                     &
     385        ONLY:  g, kappa, l_v, r_d
     386
     387    USE bulk_cloud_model_mod,                                                  &
     388        ONLY:  bulk_cloud_model, bcm_header
     389
    381390    USE control_parameters
    382        
    383     USE cloud_parameters,                                                      &
    384         ONLY:  cp, l_v, r_d
    385391
    386392    USE cpulog,                                                                &
     
    413419    USE lsf_nudging_mod,                                                       &
    414420        ONLY:  lsf_nudging_header
    415 
    416     USE microphysics_mod,                                                      &
    417         ONLY:  cloud_water_sedimentation, collision_turbulence,                &
    418                c_sedimentation, limiter_sedimentation, nc_const,               &
    419                ventilation_effect
    420421
    421422    USE model_1d_mod,                                                          &
     
    742743    IF ( neutral )  WRITE ( io, 131 )  pt_surface
    743744    IF ( humidity )  THEN
    744        IF ( .NOT. cloud_physics )  THEN
     745       IF ( .NOT. bulk_cloud_model )  THEN
    745746          WRITE ( io, 129 )
    746747       ELSE
     
    19021903
    19031904!
    1904 !-- Cloud physics parameters
    1905     IF ( cloud_physics )  THEN
    1906        WRITE ( io, 415 )
    1907        WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v
    1908        IF ( microphysics_seifert )  THEN
    1909           WRITE ( io, 510 ) 1.0E-6_wp * nc_const
    1910           WRITE ( io, 511 ) c_sedimentation
    1911        ENDIF
    1912     ENDIF
     1905!-- Output of microphysics information
     1906    IF ( bulk_cloud_model )  CALL bcm_header( io )
    19131907
    19141908!
    19151909!-- Cloud physcis parameters / quantities / numerical methods
    19161910    WRITE ( io, 430 )
    1917     IF ( humidity .AND. .NOT. cloud_physics .AND. .NOT. cloud_droplets)  THEN
     1911    IF ( humidity .AND. .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets)  THEN
    19181912       WRITE ( io, 431 )
    1919     ELSEIF ( humidity  .AND.  cloud_physics )  THEN
    1920        WRITE ( io, 432 )
    1921        IF ( cloud_top_radiation )  WRITE ( io, 132 )
    1922        IF ( microphysics_kessler )  THEN
    1923           WRITE ( io, 133 )
    1924        ELSEIF ( microphysics_seifert )  THEN
    1925           IF ( cloud_water_sedimentation )  WRITE ( io, 506 )
    1926           WRITE ( io, 505 )
    1927           IF ( collision_turbulence )  WRITE ( io, 507 )
    1928           IF ( ventilation_effect )  WRITE ( io, 508 )
    1929           IF ( limiter_sedimentation )  WRITE ( io, 509 )
    1930        ENDIF
    1931     ELSEIF ( humidity  .AND.  cloud_droplets )  THEN
     1913    ENDIF
     1914    IF ( cloud_top_radiation )  WRITE ( io, 132 )
     1915    IF ( humidity  .AND.  cloud_droplets )  THEN
    19321916       WRITE ( io, 433 )
    19331917       IF ( curvature_solution_effects )  WRITE ( io, 434 )
     
    21052089132 FORMAT ('     Parameterization of long-wave radiation processes via'/ &
    21062090            '     effective emissivity scheme')
    2107 133 FORMAT ('     Precipitation parameterization via Kessler-Scheme')
    21082091134 FORMAT (' --> Additional prognostic equation for a passive scalar')
    21092092135 FORMAT (' --> Solve perturbation pressure via ',A,' method (', &
     
    23272310413 FORMAT ('       Reference density in buoyancy terms: ',F8.3,' kg/m**3')
    23282311414 FORMAT ('       Reference temperature in buoyancy terms: ',F8.4,' K')
    2329 415 FORMAT (/' Cloud physics parameters:'/ &
    2330              ' ------------------------'/)
    2331 416 FORMAT ('    Surface pressure   :   p_0   = ',F7.2,' hPa'/      &
    2332             '    Gas constant       :   R     = ',F5.1,' J/(kg K)'/ &
    2333             '    Density of air     :   rho_0 =',F6.3,' kg/m**3'/  &
    2334             '    Specific heat cap. :   c_p   = ',F6.1,' J/(kg K)'/ &
    2335             '    Vapourization heat :   L_v   =',E9.2,' J/kg')
    23362312420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
    23372313            '       Height:        ',A,'  m'/ &
     
    23762352              ' ----------------------------------'/)
    23772353431 FORMAT ('    Humidity is considered, bu no condensation')
    2378 432 FORMAT ('    Bulk scheme with liquid water potential temperature and'/ &
    2379             '    total water content is used.'/ &
    2380             '    Condensation is parameterized via 0% - or 100% scheme.')
    23812354433 FORMAT ('    Cloud droplets treated explicitly using the Lagrangian part', &
    23822355                 'icle model')
     
    24732446503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order')
    24742447504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order')
    2475 505 FORMAT ('    Precipitation parameterization via Seifert-Beheng-Scheme')
    2476 506 FORMAT ('    Cloud water sedimentation parameterization via Stokes law')
    2477 507 FORMAT ('    Turbulence effects on precipitation process')
    2478 508 FORMAT ('    Ventilation effects on evaporation of rain drops')
    2479 509 FORMAT ('    Slope limiter used for sedimentation process')
    2480 510 FORMAT ('    Droplet density    :   N_c   = ',F6.1,' 1/cm**3')
    2481 511 FORMAT ('    Sedimentation Courant number:                  '/&
    2482             '                               C_s   =',F4.1,'        ')
    24832448512 FORMAT (/' Date:                 ',A8,6X,'Run:       ',A34/      &
    24842449            ' Time:                 ',A8,6X,'Run-No.:   ',I2.2/     &
  • palm/trunk/SOURCE/init_3d_model.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!
     
    255258! precipitation_amount, precipitation_rate, prr moved to arrays_3d.
    256259! Initialization of nc_1d, nr_1d, pt_1d, qc_1d, qr_1d, q_1d moved to
    257 ! microphysics_init.
     260! bcm_init.
    258261!
    259262! 1845 2016-04-08 08:29:13Z raasch
     
    498501    USE arrays_3d
    499502
     503    USE basic_constants_and_equations_mod,                                     &
     504        ONLY:  c_p, g, l_v, pi, r_d, exner_function, exner_function_invers,    &
     505               ideal_gas_law_rho, ideal_gas_law_rho_pt, barometric_formula
     506
     507    USE bulk_cloud_model_mod,                                                  &
     508        ONLY:  bulk_cloud_model, bcm_init, bcm_init_arrays
     509
    500510    USE chemistry_model_mod,                                                   &
    501511        ONLY:  chem_emissions
    502512
    503     USE cloud_parameters,                                                      &
    504         ONLY:  cp, l_v, r_d
    505 
    506     USE constants,                                                             &
    507         ONLY:  pi
    508    
    509513    USE control_parameters
    510514   
     
    530534    USE lsf_nudging_mod,                                                       &
    531535        ONLY:  lsf_init, ls_forcing_surf, nudge_init
    532 
    533     USE microphysics_mod,                                                      &
    534         ONLY:  microphysics_init
    535536
    536537    USE model_1d_mod,                                                          &
     
    738739#endif
    739740
    740        IF ( cloud_physics )  THEN
    741 !
    742 !--          Liquid water content
    743 #if defined( __nopointer )
    744           ALLOCATE ( ql(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    745 #else
    746           ALLOCATE ( ql_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    747 #endif
    748 
    749 !
    750 !--       3D-cloud water content
    751           IF ( .NOT. microphysics_morrison )  THEN
    752 #if defined( __nopointer )
    753              ALLOCATE( qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    754 #else
    755              ALLOCATE( qc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    756 #endif
    757           ENDIF
    758 !
    759 !--       Precipitation amount and rate (only needed if output is switched)
    760           ALLOCATE( precipitation_amount(nysg:nyng,nxlg:nxrg) )
    761 
    762 !
    763 !--       3d-precipitation rate
    764           ALLOCATE( prr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    765 
    766           IF ( microphysics_morrison )  THEN
    767 !
    768 !--          3D-cloud drop water content, cloud drop concentration arrays
    769 #if defined( __nopointer )
    770              ALLOCATE( nc(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                      &
    771                        nc_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    772                        qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                      &
    773                        qc_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    774                        tnc_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                   &
    775                        tqc_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    776 #else
    777              ALLOCATE( nc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    778                        nc_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    779                        nc_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    780                        qc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    781                        qc_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    782                        qc_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    783 #endif
    784           ENDIF
    785 
    786           IF ( microphysics_seifert )  THEN
    787 !
    788 !--          3D-rain water content, rain drop concentration arrays
    789 #if defined( __nopointer )
    790              ALLOCATE( nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                      &
    791                        nr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    792                        qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                      &
    793                        qr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    794                        tnr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                   &
    795                        tqr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    796 #else
    797              ALLOCATE( nr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    798                        nr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    799                        nr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    800                        qr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    801                        qr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),                    &
    802                        qr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    803 #endif
    804           ENDIF
    805 
    806        ENDIF
    807 
    808741       IF ( cloud_droplets )  THEN
    809742!
     
    868801!
    869802!-- Density profile calculation for anelastic approximation
    870     t_surface = pt_surface * ( surface_pressure / 1000.0_wp )**( r_d / cp )
     803    t_surface = pt_surface * ( surface_pressure / 1000.0_wp )**( r_d / c_p )
    871804    IF ( TRIM( approximation ) == 'anelastic' ) THEN
    872805       DO  k = nzb, nzt+1
    873806          p_hydrostatic(k)    = surface_pressure * 100.0_wp *                  &
    874                                 ( 1 - ( g * zu(k) ) / ( cp * t_surface )       &
    875                                 )**( cp / r_d )
     807                                ( 1 - ( g * zu(k) ) / ( c_p * t_surface )      &
     808                                )**( c_p / r_d )
    876809          rho_air(k)          = ( p_hydrostatic(k) *                           &
    877810                                  ( 100000.0_wp / p_hydrostatic(k)             &
    878                                   )**( r_d / cp )                              &
     811                                  )**( r_d / c_p )                             &
    879812                                ) / ( r_d * pt_init(k) )
    880813       ENDDO
     
    887820       DO  k = nzb, nzt+1
    888821          p_hydrostatic(k)    = surface_pressure * 100.0_wp *                  &
    889                                 ( 1 - ( g * zu(nzb) ) / ( cp * t_surface )       &
    890                                 )**( cp / r_d )
     822                                ( 1 - ( g * zu(nzb) ) / ( c_p * t_surface )    &
     823                                )**( c_p / r_d )
    891824          rho_air(k)          = ( p_hydrostatic(k) *                           &
    892825                                  ( 100000.0_wp / p_hydrostatic(k)             &
    893                                   )**( r_d / cp )                              &
     826                                  )**( r_d / c_p )                             &
    894827                                ) / ( r_d * pt_init(nzb) )
    895828       ENDDO
     
    923856            momentumflux_input_conversion(k)  = rho_air_zw(k)
    924857        ELSEIF ( TRIM( flux_input_mode ) == 'dynamic' ) THEN
    925             heatflux_input_conversion(k)      = 1.0_wp / cp
     858            heatflux_input_conversion(k)      = 1.0_wp / c_p
    926859            waterflux_input_conversion(k)     = 1.0_wp / l_v
    927860            momentumflux_input_conversion(k)  = 1.0_wp
     
    933866            momentumflux_output_conversion(k) = drho_air_zw(k)
    934867        ELSEIF ( TRIM( flux_output_mode ) == 'dynamic' ) THEN
    935             heatflux_output_conversion(k)     = cp
     868            heatflux_output_conversion(k)     = c_p
    936869            waterflux_output_conversion(k)    = l_v
    937870            momentumflux_output_conversion(k) = 1.0_wp
     
    1065998    IF ( humidity )  THEN
    1066999       q => q_1;  q_p => q_2;  tq_m => q_3
    1067        IF ( humidity )  THEN
    1068           vpt  => vpt_1   
    1069           IF ( cloud_physics )  THEN
    1070              ql => ql_1
    1071              IF ( .NOT. microphysics_morrison )  THEN
    1072                 qc => qc_1
    1073              ENDIF
    1074              IF ( microphysics_morrison )  THEN
    1075                 qc => qc_1;  qc_p  => qc_2;  tqc_m  => qc_3
    1076                 nc => nc_1;  nc_p  => nc_2;  tnc_m  => nc_3
    1077              ENDIF
    1078              IF ( microphysics_seifert )  THEN
    1079                 qr => qr_1;  qr_p  => qr_2;  tqr_m  => qr_3
    1080                 nr => nr_1;  nr_p  => nr_2;  tnr_m  => nr_3
    1081              ENDIF
    1082           ENDIF
    1083        ENDIF
     1000       vpt  => vpt_1
    10841001       IF ( cloud_droplets )  THEN
    10851002          ql   => ql_1
     
    11021019!-- Initialize surface arrays
    11031020    CALL init_surface_arrays
     1021!
     1022!-- Allocate microphysics module arrays
     1023    IF ( bulk_cloud_model )  THEN
     1024       CALL bcm_init_arrays
     1025    ENDIF
    11041026!
    11051027!-- Allocate land surface model arrays
     
    12971219!--       Set inital w to 0
    12981220          w = 0.0_wp
    1299 !
    1300 !--       Initialize the remaining quantities
    1301           IF ( humidity )  THEN
    1302              IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    1303                 DO  i = nxlg, nxrg
    1304                    DO  j = nysg, nyng
    1305                       qc(:,j,i) = 0.0_wp
    1306                       nc(:,j,i) = 0.0_wp
    1307                    ENDDO
    1308                 ENDDO
    1309              ENDIF
    1310 
    1311              IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    1312                 DO  i = nxlg, nxrg
    1313                    DO  j = nysg, nyng
    1314                       qr(:,j,i) = 0.0_wp
    1315                       nr(:,j,i) = 0.0_wp
    1316                    ENDDO
    1317                 ENDDO
    1318              ENDIF
    1319 
    1320           ENDIF
    13211221
    13221222          IF ( passive_scalar )  THEN
     
    13761276                ENDDO
    13771277             ENDDO
    1378              IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    1379                 DO  i = nxlg, nxrg
    1380                    DO  j = nysg, nyng
    1381                       qc(:,j,i) = 0.0_wp
    1382                       nc(:,j,i) = 0.0_wp
    1383                    ENDDO
    1384                 ENDDO
    1385              ENDIF
    1386              IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    1387                 DO  i = nxlg, nxrg
    1388                    DO  j = nysg, nyng
    1389                       qr(:,j,i) = 0.0_wp
    1390                       nr(:,j,i) = 0.0_wp
    1391                    ENDDO
    1392                 ENDDO
    1393              ENDIF
    13941278          ENDIF
    13951279
     
    14851369                ENDDO
    14861370             ENDDO
    1487              IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    1488                 DO  i = nxlg, nxrg
    1489                    DO  j = nysg, nyng
    1490                       qc(:,j,i) = 0.0_wp
    1491                       nc(:,j,i) = 0.0_wp
    1492                    ENDDO
    1493                 ENDDO
    1494              ENDIF
    1495 
    1496              IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    1497                 DO  i = nxlg, nxrg
    1498                    DO  j = nysg, nyng
    1499                       qr(:,j,i) = 0.0_wp
    1500                       nr(:,j,i) = 0.0_wp
    1501                    ENDDO
    1502                 ENDDO
    1503              ENDIF
    1504 
    15051371          ENDIF
    15061372         
     
    15981464!--       Store initial profile of mixing ratio and potential
    15991465!--       temperature
    1600           IF ( cloud_physics  .OR.  cloud_droplets ) THEN
     1466          IF ( bulk_cloud_model  .OR.  cloud_droplets ) THEN
    16011467             hom(:,1,27,:) = SPREAD(  q(:,nys,nxl), 2, statistic_regions+1 )
    16021468             hom(:,1,28,:) = SPREAD( pt(:,nys,nxl), 2, statistic_regions+1 )
     
    16451511!--    In case of iterative solvers, p must get an initial value
    16461512       IF ( psolver(1:9) == 'multigrid'  .OR.  psolver == 'sor' )  p = 0.0_wp
    1647 
    1648 !
    1649 !--    Treating cloud physics, liquid water content and precipitation amount
    1650 !--    are zero at beginning of the simulation
    1651        IF ( cloud_physics )  THEN
    1652           ql = 0.0_wp
    1653           qc = 0.0_wp
    1654 
    1655           precipitation_amount = 0.0_wp
    1656        ENDIF
    16571513!
    16581514!--    Impose vortex with vertical axis on the initial velocity profile
     
    16931549          tq_m = 0.0_wp
    16941550          q_p = q
    1695           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    1696              tqc_m = 0.0_wp
    1697              qc_p  = qc
    1698              tnc_m = 0.0_wp
    1699              nc_p  = nc
    1700           ENDIF
    1701           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    1702              tqr_m = 0.0_wp
    1703              qr_p  = qr
    1704              tnr_m = 0.0_wp
    1705              nr_p  = nr
    1706           ENDIF
    17071551       ENDIF
    17081552       
     
    19631807       IF ( humidity )  THEN
    19641808          q_p = q
    1965           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    1966              qc_p = qc
    1967              nc_p = nc
    1968           ENDIF
    1969           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    1970              qr_p = qr
    1971              nr_p = nr
    1972           ENDIF
    19731809       ENDIF
    19741810       IF ( passive_scalar )  s_p  = s
     
    19821818       IF ( humidity )  THEN
    19831819          tq_m = 0.0_wp
    1984           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    1985              tqc_m = 0.0_wp
    1986              tnc_m = 0.0_wp
    1987           ENDIF
    1988           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    1989              tqr_m = 0.0_wp
    1990              tnr_m = 0.0_wp
    1991           ENDIF
    19921820       ENDIF
    19931821       IF ( passive_scalar )  ts_m  = 0.0_wp
     
    24172245       CALL init_ocean
    24182246
    2419     ELSE
     2247    ENDIF
    24202248!
    24212249!--    Initialize quantities for handling cloud physics
    24222250!--    This routine must be called before lpm_init, because
    2423 !--    otherwise, array pt_d_t, needed in data_output_dvrp (called by
     2251!--    otherwise, array d_exner, needed in data_output_dvrp (called by
    24242252!--    lpm_init) is not defined.
    2425        CALL init_cloud_physics
    2426 !
    2427 !--    Initialize bulk cloud microphysics
    2428        CALL microphysics_init
     2253    IF ( .NOT. ocean )  THEN
     2254
     2255       ALLOCATE( hyp(nzb:nzt+1) )
     2256       ALLOCATE( d_exner(nzb:nzt+1) )
     2257       ALLOCATE( exner(nzb:nzt+1) )
     2258       ALLOCATE( hyrho(nzb:nzt+1) )
     2259!
     2260!--    Check temperature in case of too large domain height
     2261       DO  k = nzb, nzt+1
     2262          IF ( ( pt_surface * exner_function(surface_pressure * 100.0_wp) - g/c_p * zu(k) ) < 0.0_wp )  THEN
     2263             WRITE( message_string, * )  'absolute temperature < 0.0 at zu(', k, &
     2264                                         ') = ', zu(k)
     2265             CALL message( 'init_bulk_cloud_model', 'PA0142', 1, 2, 0, 6, 0 )
     2266          ENDIF
     2267       ENDDO
     2268
     2269!
     2270!--    Calculate vertical profile of the hydrostatic pressure (hyp)
     2271       hyp    = barometric_formula(zu, pt_surface * exner_function(surface_pressure * 100.0_wp), surface_pressure * 100.0_wp)
     2272       d_exner = exner_function_invers(hyp)
     2273       exner = 1.0_wp / exner_function_invers(hyp)
     2274       hyrho  = ideal_gas_law_rho_pt(hyp, pt_init)
     2275!
     2276!--    Compute reference density
     2277       rho_surface = ideal_gas_law_rho(surface_pressure * 100.0_wp, pt_surface * exner_function(surface_pressure * 100.0_wp))
     2278
     2279    ENDIF
     2280!
     2281!-- If required, initialize quantities needed for the microphysics module
     2282    IF ( bulk_cloud_model )  THEN
     2283       CALL bcm_init
    24292284    ENDIF
    24302285
  • palm/trunk/SOURCE/init_masks.f90

    r3065 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3065 2018-06-12 07:03:02Z Giersch
    2730! dz_stretch_level was replaced by dz_stretch_level_start
    2831!
     
    134137
    135138    USE control_parameters,                                                    &
    136         ONLY:  constant_diffusion, cloud_droplets, cloud_physics,              &
     139        ONLY:  constant_diffusion, cloud_droplets,                             &
    137140               data_output_masks, data_output_masks_user,                      &
    138141               doav, doav_n, domask, domask_no, dz, dz_stretch_level_start,    &
     
    142145               mask_x_loop, mask_xyz_dimension, mask_y, mask_y_loop, mask_z,   &
    143146               mask_z_loop, max_masks,  message_string, mid,                   &
    144                microphysics_morrison, microphysics_seifert, passive_scalar,    &
    145                ocean, varnamelength
    146                
     147               passive_scalar, ocean, varnamelength
     148
    147149
    148150    USE grid_variables,                                                        &
     
    153155
    154156    USE kinds
     157
     158    USE bulk_cloud_model_mod,                                                  &
     159        ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
    155160
    156161    USE netcdf_interface,                                                      &
     
    309314
    310315             CASE ( 'lpt' )
    311                 IF ( .NOT. cloud_physics )  THEN
    312                    WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
    313                         '" requires cloud_physics = .TRUE.'
     316                IF ( .NOT. bulk_cloud_model )  THEN
     317                   WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
     318                        '" requires bulk_cloud_model = .TRUE.'
    314319                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    315320                ENDIF
     
    317322
    318323             CASE ( 'nc' )
    319                 IF ( .NOT. cloud_physics )  THEN
    320                    WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
    321                         '" requires cloud_physics = .TRUE.'
     324                IF ( .NOT. bulk_cloud_model )  THEN
     325                   WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
     326                        '" requires bulk_cloud_model = .TRUE.'
    322327                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    323328                 ELSEIF ( .NOT. microphysics_morrison ) THEN
     
    329334
    330335             CASE ( 'nr' )
    331                 IF ( .NOT. cloud_physics )  THEN
    332                    WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
    333                         '" requires cloud_physics = .TRUE.'
     336                IF ( .NOT. bulk_cloud_model )  THEN
     337                   WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
     338                        '" requires bulk_cloud_model = .TRUE.'
    334339                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    335340                 ELSEIF ( .NOT. microphysics_seifert ) THEN
     
    360365
    361366             CASE ( 'qc' )
    362                 IF ( .NOT. cloud_physics )  THEN
     367                IF ( .NOT. bulk_cloud_model )  THEN
    363368                   message_string = 'output of "' // TRIM( var ) // '"' //     &
    364                             'requires cloud_physics = .TRUE.'
     369                            'requires bulk_cloud_model = .TRUE.'
    365370                   CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    366371                ENDIF
     
    368373
    369374             CASE ( 'ql' )
    370                 IF ( .NOT. ( cloud_physics  .OR.  cloud_droplets ) )  THEN
    371                    WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
    372                         '" requires cloud_physics = .TRUE. or cloud_droplets', &
    373                         ' = .TRUE.'
     375                IF ( .NOT. ( bulk_cloud_model  .OR.  cloud_droplets ) )  THEN
     376                   WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
     377                        '" requires bulk_cloud_model = .TRUE. or ',            &
     378                        'cloud_droplets = .TRUE.'
    374379                   CALL message( 'init_masks', 'PA0106', 1, 2, 0, 6, 0 )
    375380                ENDIF
     
    387392
    388393             CASE ( 'qv' )
    389                 IF ( .NOT. cloud_physics )  THEN
    390                    WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
    391                         '" requires cloud_physics = .TRUE.'
     394                IF ( .NOT. bulk_cloud_model )  THEN
     395                   WRITE ( message_string, * ) 'output of "', TRIM( var ),     &
     396                        '" requires bulk_cloud_model = .TRUE.'
    392397                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    393398                ENDIF
     
    395400
    396401             CASE ( 'qr' )
    397                 IF ( .NOT. cloud_physics )  THEN
     402                IF ( .NOT. bulk_cloud_model )  THEN
    398403                   message_string = 'output of "' // TRIM( var ) // '" ' //    &
    399                             'requires cloud_physics = .TRUE.'
     404                            'requires bulk_cloud_model = .TRUE.'
    400405                   CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    401406                ELSEIF ( .NOT. microphysics_seifert ) THEN
  • palm/trunk/SOURCE/init_ocean.f90

    r3270 r3274  
    2525! ------------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3270 2018-09-24 06:28:20Z raasch
    2730! bugfix for r2502: wrong calculation of hyp(nzt) in second iterative step
    2831!
     
    9093        ONLY:  dzu, hyp, pt_init, ref_state, sa_init, zu, zw
    9194
     95    USE basic_constants_and_equations_mod,                                     &
     96        ONLY:  g
     97
    9298    USE control_parameters,                                                    &
    93         ONLY:  g, molecular_viscosity, prho_reference, rho_surface,            &
     99        ONLY:  molecular_viscosity, prho_reference, rho_surface,               &
    94100               rho_reference, surface_pressure, use_single_reference_value
    95101
  • palm/trunk/SOURCE/init_rankine.f90

    r2718 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    7376        ONLY:  initializing_actions, n_sor, nsor, nsor_ini   
    7477
    75     USE constants,                                                             &
     78    USE basic_constants_and_equations_mod,                                     &
    7679        ONLY:  pi
    7780
  • palm/trunk/SOURCE/init_slope.f90

    r2718 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    7275        ONLY:  pt, pt_init, pt_slope_ref, zu
    7376       
    74     USE constants,                                                             &
     77    USE basic_constants_and_equations_mod,                                     &
    7578        ONLY:  pi
    7679                   
  • palm/trunk/SOURCE/interaction_droplets_ptq.f90

    r3040 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3040 2018-05-25 10:22:08Z schwenkel
    2730! Changed the name specific humidity to mixing ratio
    2831!
     
    7477!
    7578! 799 2011-12-21 17:48:03Z franke
    76 ! Bugfix: pt_d_t(k) was missing in calculation of pt_p
     79! Bugfix: d_exner(k) was missing in calculation of pt_p
    7780!
    7881! RCS Log replace by Id keyword, revision history cleaned up
     
    8992 MODULE interaction_droplets_ptq_mod
    9093 
     94
     95    USE arrays_3d,                                                             &
     96        ONLY:  pt_p, ql_c, q_p, d_exner
     97
     98    USE basic_constants_and_equations_mod,                                     &
     99        ONLY:  lv_d_cp
     100
     101    USE indices,                                                               &
     102        ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
     103
     104    USE kinds
     105
     106    USE pegrid
    91107
    92108    PRIVATE
     
    111127    SUBROUTINE i_droplets_ptq
    112128
    113        USE arrays_3d,                                                          &
    114            ONLY:  pt_p, ql_c, q_p
    115            
    116        USE cloud_parameters,                                                   &
    117            ONLY:  l_d_cp, pt_d_t
    118            
    119        USE indices,                                                            &
    120            ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
    121            
    122        USE kinds
    123 
    124        USE pegrid
    125 
    126129       IMPLICIT NONE
    127130
     
    140143
    141144                q_p(k,j,i)  = q_p(k,j,i)  - ql_c(k,j,i) * flag
    142                 pt_p(k,j,i) = pt_p(k,j,i) + l_d_cp * ql_c(k,j,i) * pt_d_t(k)  &
     145                pt_p(k,j,i) = pt_p(k,j,i) + lv_d_cp * ql_c(k,j,i) * d_exner(k) &
    143146                                                        * flag
    144147             ENDDO
     
    155158!------------------------------------------------------------------------------!
    156159    SUBROUTINE i_droplets_ptq_ij( i, j )
    157 
    158        USE arrays_3d,                                                          &
    159            ONLY:  pt_p, ql_c, q_p
    160 
    161        USE cloud_parameters,                                                   &
    162            ONLY:  l_d_cp, pt_d_t
    163 
    164        USE indices,                                                            &
    165            ONLY:  nzb, nzt, wall_flags_0
    166 
    167        USE kinds,                                                              &
    168            ONLY:  iwp, wp
    169 
    170        USE pegrid
    171160
    172161       IMPLICIT NONE
     
    185174
    186175          q_p(k,j,i)  = q_p(k,j,i)  - ql_c(k,j,i) * flag
    187           pt_p(k,j,i) = pt_p(k,j,i) + l_d_cp * ql_c(k,j,i) * pt_d_t(k) * flag
     176          pt_p(k,j,i) = pt_p(k,j,i) + lv_d_cp * ql_c(k,j,i) * d_exner(k) * flag
    188177       ENDDO
    189178
  • palm/trunk/SOURCE/land_surface_model_mod.f90

    r3271 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3271 2018-09-24 08:20:34Z suehring
    2730! Several bugfixes:
    2831! - Initialization of pt_surface array with soil temperature in the uppermost
     
    474477 
    475478    USE arrays_3d,                                                             &
    476         ONLY:  hyp, pt, prr, q, q_p, ql, vpt, u, v, w
     479        ONLY:  hyp, pt, prr, q, q_p, ql, vpt, u, v, w, hyrho, exner, d_exner
     480
     481    USE basic_constants_and_equations_mod,                                     &
     482        ONLY:  c_p, g, lv_d_cp, l_v, magnus, rho_l, r_d, r_v
    477483
    478484    USE calc_mean_profile_mod,                                                 &
    479485        ONLY:  calc_mean_profile
    480486
    481     USE cloud_parameters,                                                      &
    482         ONLY:  cp, hyrho, l_d_cp, l_d_r, l_v, pt_d_t, rho_l, r_d, r_v
    483 
    484487    USE control_parameters,                                                    &
    485         ONLY:  cloud_droplets, cloud_physics, coupling_start_time, dt_3d,      &
     488        ONLY:  cloud_droplets, coupling_start_time, dt_3d,      &
    486489               end_time, humidity, intermediate_timestep_count,                &
    487490               initializing_actions, intermediate_timestep_count_max,          &
    488                land_surface, max_masks, precipitation, pt_surface,             &
     491               land_surface, max_masks, pt_surface,             &
    489492               rho_surface, spinup, spinup_pt_mean, spinup_time,               &
    490493               surface_pressure, timestep_scheme, tsc,                         &
     
    493496    USE indices,                                                               &
    494497        ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb
     498
     499    USE bulk_cloud_model_mod,                                                  &
     500        ONLY: bulk_cloud_model, precipitation
    495501
    496502    USE netcdf_data_input_mod,                                                 &
     
    584590                deep_soil_temperature =  9999999.9_wp,  & !< Deep soil temperature (bottom boundary condition)
    585591                drho_l_lv,                              & !< (rho_l * l_v)**-1
    586                 exn,                                    & !< value of the Exner function
    587592                field_capacity = 9999999.9_wp,          & !< NAMELIST m_fc
    588593                f_shortwave_incoming = 9999999.9_wp,    & !< NAMELIST f_sw_in
     
    604609                rho_cp,                                 & !< rho_surface * cp
    605610                rho_lv,                                 & !< rho_ocean * l_v
    606                 rd_d_rv,                                & !< r_d / r_v
    607611                saturation_moisture = 9999999.9_wp,     & !< NAMELIST m_sat
    608612                skip_time_do_lsm = 0.0_wp,              & !< LSM is not called before this time
     
    17341738 SUBROUTINE lsm_energy_balance( horizontal, l )
    17351739
    1736     USE diagnostic_quantities_mod,                                             &
    1737         ONLY:  magnus
    1738 
    17391740    USE pegrid
    17401741
     
    18161817    j_off = surf%joff
    18171818    i_off = surf%ioff
    1818    
    1819 !
    1820 !-- Calculate the exner function for the current time step
    1821     exn = ( surface_pressure / 1000.0_wp )**0.286_wp
    18221819
    18231820    DO  m = 1, surf%ns
     
    18891886!--    time step is used here. Note that this formulation is the
    18901887!--    equivalent to the ECMWF formulation using drag coefficients
    1891 !        IF ( cloud_physics )  THEN
    1892 !           pt1 = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i)
     1888!        IF ( bulk_cloud_model )  THEN
     1889!           pt1 = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i)
    18931890!           qv1 = q(k,j,i) - ql(k,j,i)
    18941891!        ELSEIF ( cloud_droplets ) THEN
    1895 !           pt1 = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i)
     1892!           pt1 = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i)
    18961893!           qv1 = q(k,j,i)
    18971894!        ELSE
     
    20972094!--       Denominator of the prognostic equation
    20982095          coef_2 = surf%rad_lw_out_change_0(m) + f_qsws * dq_s_dt              &
    2099                    + lambda_surface + f_shf / exn
     2096                   + lambda_surface + f_shf / exner(nzb)
    21002097       ELSE
    21012098!
     
    21072104!
    21082105!--       Denominator of the prognostic equation
    2109           coef_2 = surf%rad_lw_out_change_0(m) + lambda_surface + f_shf / exn
     2106          coef_2 = surf%rad_lw_out_change_0(m) + lambda_surface + f_shf / exner(nzb)
    21102107
    21112108       ENDIF
     
    21602157
    21612158
    2162 !        pt(k+k_off,j+j_off,i+i_off) = surf_t_surface_p%var_1d(m) / exn  !is actually no air temperature
    2163        surf%pt_surface(m)          = surf_t_surface_p%var_1d(m) / exn
     2159!        pt(k+k_off,j+j_off,i+i_off) = surf_t_surface_p%var_1d(m) / exner(nzb)  !is actually no air temperature
     2160       surf%pt_surface(m)          = surf_t_surface_p%var_1d(m) / exner(nzb)
    21642161
    21652162!
     
    21772174                                             - surf_t_soil%var_2d(nzb_soil,m) )
    21782175
    2179        surf%shf(m) = - f_shf * ( surf%pt1(m) - surf%pt_surface(m) ) / cp
     2176       surf%shf(m) = - f_shf * ( surf%pt1(m) - surf%pt_surface(m) ) / c_p
    21802177
    21812178       IF ( humidity )  THEN
     
    23302327    SUBROUTINE calc_q_surface
    23312328
    2332        USE diagnostic_quantities_mod
    2333 
    23342329       IMPLICIT NONE
    23352330
    2336        REAL(wp) :: resistance    !< aerodynamic and soil resistance term
     2331       REAL(wp) ::  e_s           !< saturation water vapor pressure
     2332       REAL(wp) ::  q_s           !< saturation mixing ratio
     2333       REAL(wp) ::  resistance    !< aerodynamic and soil resistance term
    23372334
    23382335       DO  m = 1, surf%ns
     
    23532350!
    23542351!--       Calculate mixing ratio at surface
    2355           IF ( cloud_physics )  THEN
     2352          IF ( bulk_cloud_model )  THEN
    23562353             q(k+k_off,j+j_off,i+i_off) = resistance * q_s +                   &
    23572354                                        ( 1.0_wp - resistance ) *              &
     
    24712468!------------------------------------------------------------------------------!
    24722469    SUBROUTINE lsm_init
    2473    
     2470
    24742471       USE control_parameters,                                                 &
    24752472           ONLY:  message_string
     
    25012498       REAL(wp), DIMENSION(:), ALLOCATABLE ::  bound, bound_root_fr  !< temporary arrays for storing index bounds
    25022499       REAL(wp), DIMENSION(:), ALLOCATABLE ::  pr_soil_init !< temporary array used for averaging soil profiles
    2503 
    2504 !
    2505 !--    Calculate Exner function
    2506        exn = ( surface_pressure / 1000.0_wp )**0.286_wp
    25072500!
    25082501!--    If no cloud physics is used, rho_surface has not been calculated before
    2509        IF (  .NOT.  cloud_physics  .AND.  .NOT.  cloud_droplets )  THEN
     2502       IF (  .NOT.  bulk_cloud_model  .AND.  .NOT.  cloud_droplets )  THEN
    25102503          CALL calc_mean_profile( pt, 4 )
    2511           rho_surface = surface_pressure * 100.0_wp / ( r_d * hom(topo_min_level+1,1,4,0) * exn )
     2504          rho_surface = hyp(nzb) / ( r_d * hom(topo_min_level+1,1,4,0) * exner(nzb) )
    25122505       ENDIF
    25132506
    25142507!
    25152508!--    Calculate frequently used parameters
    2516        rho_cp    = cp * rho_surface
    2517        rd_d_rv   = r_d / r_v
     2509       rho_cp    = c_p * rho_surface
    25182510       rho_lv    = rho_surface * l_v
    25192511       drho_l_lv = 1.0_wp / (rho_l * l_v)
     
    44514443!--          uppermost layer
    44524444             t_surface_h%var_1d(m)    = t_soil_h%var_2d(nzb_soil,m)
    4453              surf_lsm_h%pt_surface(m) = t_soil_h%var_2d(nzb_soil,m) / exn
     4445             surf_lsm_h%pt_surface(m) = t_soil_h%var_2d(nzb_soil,m) / exner(nzb)
    44544446             
    4455              IF ( cloud_physics  .OR. cloud_droplets ) THEN
    4456                 surf_lsm_h%pt1(m) = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i)
     4447             IF ( bulk_cloud_model  .OR. cloud_droplets ) THEN
     4448                surf_lsm_h%pt1(m) = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i)
    44574449             ELSE
    44584450                surf_lsm_h%pt1(m) = pt(k,j,i)
     
    44804472!--             uppermost layer
    44814473                t_surface_v(l)%var_1d(m)      = t_soil_v(l)%var_2d(nzb_soil,m)
    4482                 surf_lsm_v(l)%pt_surface(m)   = t_soil_v(l)%var_2d(nzb_soil,m) / exn
    4483 
    4484                 IF ( cloud_physics  .OR. cloud_droplets ) THEN
    4485                    surf_lsm_v(l)%pt1(m) = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i)
     4474                surf_lsm_v(l)%pt_surface(m)   = t_soil_v(l)%var_2d(nzb_soil,m) / exner(nzb)
     4475
     4476                IF ( bulk_cloud_model  .OR. cloud_droplets ) THEN
     4477                   surf_lsm_v(l)%pt1(m) = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i)
    44864478                ELSE
    44874479                   surf_lsm_v(l)%pt1(m) = pt(k,j,i)
     
    70787070
    70797071       USE control_parameters,                                                 &
    7080            ONLY: g, message_string, molecular_viscosity
     7072           ONLY: message_string, molecular_viscosity
    70817073
    70827074       IMPLICIT NONE
  • palm/trunk/SOURCE/lpm_advec.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!
     
    173176        ONLY:  de_dx, de_dy, de_dz, diss, dzw, e, km, u, v, w, zu, zw
    174177
     178    USE basic_constants_and_equations_mod,                                     &
     179        ONLY:  g, kappa
     180
    175181    USE cpulog
    176182
     
    179185    USE control_parameters,                                                    &
    180186        ONLY:  cloud_droplets, constant_flux_layer, dt_3d, dt_3d_reached_l,    &
    181                dz, g, kappa, topography, u_gtrans, v_gtrans
     187               dz, topography, u_gtrans, v_gtrans
    182188
    183189    USE grid_variables,                                                        &
  • palm/trunk/SOURCE/lpm_calc_liquid_water_content.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!
     
    7578        ONLY:  dzw, ql, ql_v, ql_vp
    7679
    77     USE cloud_parameters,                                                      &
    78         ONLY:  rho_l
    79 
    80     USE constants,                                                             &
    81         ONLY:  pi
     80    USE basic_constants_and_equations_mod,                                     &
     81        ONLY:  pi, rho_l
    8282
    8383    USE control_parameters,                                                    &
  • palm/trunk/SOURCE/lpm_collision_kernels.f90

    r2718 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    135138 
    136139
    137     USE constants,                                                             &
    138         ONLY:  pi
     140    USE basic_constants_and_equations_mod,                                     &
     141        ONLY:  g, pi
    139142       
    140143    USE kinds
     
    404407
    405408       USE control_parameters,                                                 &
    406            ONLY:  g, molecular_viscosity
     409           ONLY:  molecular_viscosity
    407410   
    408411       USE particle_attributes,                                                &
  • palm/trunk/SOURCE/lpm_droplet_collision.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!
     
    122125        ONLY:  diss, dzw, ql_v, ql_vp
    123126
    124     USE cloud_parameters,                                                      &
    125         ONLY:  rho_l, rho_s
    126 
    127     USE constants,                                                             &
    128         ONLY:  pi
     127    USE basic_constants_and_equations_mod,                                     &
     128        ONLY:  pi, rho_l, rho_s
    129129
    130130    USE control_parameters,                                                    &
  • palm/trunk/SOURCE/lpm_droplet_condensation.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!
     
    136139
    137140    USE arrays_3d,                                                             &
    138         ONLY:  dzw, hyp, pt, q, ql_c, ql_v
    139 
    140     USE cloud_parameters,                                                      &
    141         ONLY:  l_v, molecular_weight_of_solute,                        &
    142                molecular_weight_of_water, rho_l, rho_s, r_v, vanthoff
    143 
    144     USE constants,                                                             &
    145         ONLY:  pi
     141        ONLY:  dzw, hyp, pt, q, ql_c, ql_v, exner
     142
     143    USE basic_constants_and_equations_mod,                                     &
     144        ONLY:  l_v, molecular_weight_of_solute, molecular_weight_of_water,     &
     145               magnus, pi, rho_l, rho_s, r_v, vanthoff
    146146
    147147    USE control_parameters,                                                    &
     
    150150    USE cpulog,                                                                &
    151151        ONLY:  cpu_log, log_point_s
    152 
    153     USE diagnostic_quantities_mod,                                             &
    154         ONLY:  magnus
    155152
    156153    USE grid_variables,                                                        &
     
    220217!
    221218!-- Absolute temperature
    222     t_int = pt(kp,jp,ip) * ( hyp(kp) / 100000.0_wp )**0.286_wp
     219    t_int = pt(kp,jp,ip) * exner(kp)
    223220!
    224221!-- Saturation vapor pressure (Eq. 10 in Bolton, 1980)
  • palm/trunk/SOURCE/lpm_init.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!
     
    10511054
    10521055    USE arrays_3d,                                                             &
    1053         ONLY: hyp, pt, q
    1054 
    1055     USE cloud_parameters,                                                      &
    1056         ONLY: molecular_weight_of_solute, molecular_weight_of_water, rho_l,    &
    1057               r_v, rho_s, vanthoff
    1058 
    1059     USE constants,                                                             &
    1060         ONLY: pi
    1061 
    1062     USE diagnostic_quantities_mod,                                             &
    1063         ONLY:  magnus
    1064 
     1056        ONLY: hyp, pt, q, exner
     1057
     1058    USE basic_constants_and_equations_mod,                                     &
     1059        ONLY: molecular_weight_of_solute, molecular_weight_of_water, magnus,   &
     1060              pi, rho_l, r_v, rho_s, vanthoff
    10651061
    10661062    USE kinds
     
    11991195!--          the sometimes lengthy growth toward their equilibrium radius within
    12001196!--          the simulation.
    1201              t_int  = pt(kp,jp,ip) * ( hyp(kp) / 100000.0_wp )**0.286_wp
     1197             t_int  = pt(kp,jp,ip) * exner(kp)
    12021198
    12031199             e_s = magnus( t_int )
  • palm/trunk/SOURCE/lpm_splitting.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!
     
    6164        ONLY:  ql
    6265
    63     USE cloud_parameters,                                                      &
    64         ONLY:  rho_l
    65 
    66     USE constants,                                                             &
    67         ONLY:  pi
     66    USE basic_constants_and_equations_mod,                                     &
     67        ONLY:  pi, rho_l
    6868
    6969    USE cpulog,                                                                &
  • palm/trunk/SOURCE/model_1d_mod.f90

    r3135 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3135 2018-07-16 14:43:04Z gronemeier
    2730! Bugfix: add +1 to c_3 according to Sogachev et al. (2012)
    2831!
     
    173176        ONLY:  dd2zu, ddzu, ddzw, dzu, dzw, pt_init, q_init, ug, u_init,       &
    174177               vg, v_init, zu
     178
     179    USE basic_constants_and_equations_mod,                                     &
     180        ONLY:  g, kappa, pi
    175181   
    176182    USE control_parameters,                                                    &
    177         ONLY:  constant_diffusion, constant_flux_layer, dissipation_1d, f, g,  &
     183        ONLY:  constant_diffusion, constant_flux_layer, dissipation_1d, f,     &
    178184               humidity, ibc_e_b, intermediate_timestep_count,                 &
    179                intermediate_timestep_count_max, kappa, km_constant,            &
     185               intermediate_timestep_count_max, km_constant,                   &
    180186               message_string, mixing_length_1d, prandtl_number,               &
    181187               roughness_length, run_description_header, simulated_time_chr,   &
     
    989995
    990996
    991     USE constants,                                                             &
    992         ONLY:  pi
    993 
    994997    IMPLICIT NONE
    995998
  • palm/trunk/SOURCE/modules.f90

    r3240 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3240 2018-09-12 12:04:40Z Giersch
    2730! max_pr_user_tmp has been defined as a control variable because it is not
    2831! local anymore
     
    985988    REAL(wp), DIMENSION(:), ALLOCATABLE ::  momentumflux_output_conversion  !< conversion factor array for momentumflux output
    986989
     990    REAL(wp), DIMENSION(:), ALLOCATABLE ::  hyrho   !< density of air calculated with hydrostatic pressure
     991    REAL(wp), DIMENSION(:), ALLOCATABLE ::  exner   !< ratio of actual and potential temperature
     992    REAL(wp), DIMENSION(:), ALLOCATABLE ::  d_exner !< ratio of potential and actual temperature
     993
    987994    SAVE
    988995
     
    10441051 
    10451052 END MODULE averaging
    1046 
    1047 
    1048 !------------------------------------------------------------------------------!
    1049 ! Description:
    1050 ! ------------
    1051 !> Definition of variables and constants for cloud physics.
    1052 !------------------------------------------------------------------------------!
    1053  MODULE cloud_parameters
    1054  
    1055     USE kinds
    1056 
    1057     REAL(wp) ::  cp = 1005.0_wp                            !< heat capacity of dry air (J kg-1 K-1)
    1058     REAL(wp) ::  l_v = 2.5E+06_wp                          !< latent heat of vaporization (J kg-1)
    1059     REAL(wp) ::  l_d_cp                                    !< l_v / cp
    1060     REAL(wp) ::  l_d_r                                     !< l_v / r_d
    1061     REAL(wp) ::  l_d_rv                                    !< l_v / r_v   
    1062     REAL(wp) ::  molecular_weight_of_solute = 0.05844_wp   !< mol. m. NaCl (kg mol-1)
    1063     REAL(wp) ::  molecular_weight_of_water = 0.01801528_wp !< mol. m. H2O (kg mol-1)
    1064     REAL(wp) ::  rho_l = 1.0E3_wp                          !< density of water (kg m-3)
    1065     REAL(wp) ::  rho_s = 2165.0_wp                         !< density of NaCl (kg m-3)
    1066     REAL(wp) ::  r_d = 287.0_wp                            !< sp. gas const. dry air (J kg-1 K-1)
    1067     REAL(wp) ::  r_v = 461.51_wp                           !< sp. gas const. water vapor (J kg-1 K-1)
    1068     REAL(wp) ::  vanthoff = 2.0_wp                         !< van't Hoff factor for NaCl
    1069 
    1070 
    1071 
    1072     REAL(wp), DIMENSION(:), ALLOCATABLE ::  hyrho   !< density of air calculated with hydrostatic pressure
    1073     REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt_d_t  !< ratio of potential and actual temperature
    1074     REAL(wp), DIMENSION(:), ALLOCATABLE ::  t_d_pt  !< ratio of actual and potential temperature
    1075 
    1076     SAVE
    1077 
    1078  END MODULE cloud_parameters
    1079 
    1080 
    1081 !------------------------------------------------------------------------------!
    1082 ! Description:
    1083 ! ------------
    1084 !> Definition of general constants.
    1085 !------------------------------------------------------------------------------!
    1086  MODULE constants
    1087  
    1088     USE kinds
    1089 
    1090     REAL(wp) ::  pi = 3.141592654_wp  !< PI
    1091     REAL(wp) ::  adv_mom_1            !< 1/4 - constant used in 5th-order advection scheme for momentum advection (1st-order part)
    1092     REAL(wp) ::  adv_mom_3            !< 1/24 - constant used in 5th-order advection scheme for momentum advection (3rd-order part)
    1093     REAL(wp) ::  adv_mom_5            !< 1/120 - constant used in 5th-order advection scheme for momentum advection (5th-order part)
    1094     REAL(wp) ::  adv_sca_1            !< 1/2 - constant used in 5th-order advection scheme for scalar advection (1st-order part)
    1095     REAL(wp) ::  adv_sca_3            !< 1/12 - constant used in 5th-order advection scheme for scalar advection (3rd-order part)
    1096     REAL(wp) ::  adv_sca_5            !< 1/60 - constant used in 5th-order advection scheme for scalar advection (5th-order part)
    1097    
    1098     SAVE
    1099 
    1100  END MODULE constants
    11011053
    11021054 
     
    11571109    CHARACTER (LEN=20)   ::  bc_uv_b = 'dirichlet'                        !< namelist parameter
    11581110    CHARACTER (LEN=20)   ::  bc_uv_t = 'dirichlet'                        !< namelist parameter
    1159     CHARACTER (LEN=20)   ::  aerosol_bulk = 'nacl'                        !< namelist parameter
    1160     CHARACTER (LEN=20)   ::  cloud_scheme = 'saturation_adjust'           !< namelist parameter
    11611111    CHARACTER (LEN=20)   ::  coupling_mode = 'uncoupled'                  !< coupling mode for atmosphere-ocean coupling 
    11621112    CHARACTER (LEN=20)   ::  coupling_mode_remote = 'uncoupled'           !< coupling mode of the remote process in case of coupled atmosphere-ocean runs
     
    13111261    INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE ::  mask_k_global  !< global grid index of masked output point on z-dimension
    13121262
    1313     LOGICAL ::  aerosol_nacl =.TRUE.                             !< nacl aerosol for bulk scheme
    1314     LOGICAL ::  aerosol_c3h4o4 =.FALSE.                          !< malonic acid aerosol for bulk scheme
    1315     LOGICAL ::  aerosol_nh4no3 =.FALSE.                          !< malonic acid aerosol for bulk scheme
    13161263    LOGICAL ::  agent_time_unlimited = .FALSE.                   !< namelist parameter
    13171264    LOGICAL ::  air_chemistry = .FALSE.                          !< chemistry model switch
     
    13311278    LOGICAL ::  bc_radiation_s = .FALSE.                         !< radiation boundary condition for outflow at south domain boundary
    13321279    LOGICAL ::  calc_soil_moisture_during_spinup = .FALSE.       !< namelist parameter
    1333     LOGICAL ::  call_microphysics_at_all_substeps = .FALSE.      !< namelist parameter
    13341280    LOGICAL ::  call_psolver_at_all_substeps = .TRUE.            !< namelist parameter
    13351281    LOGICAL ::  child_domain  = .FALSE.                          !< flag indicating that model is nested in a parent domain
    13361282    LOGICAL ::  cloud_droplets = .FALSE.                         !< namelist parameter
    1337     LOGICAL ::  cloud_physics = .FALSE.                          !< namelist parameter
    13381283    LOGICAL ::  cloud_top_radiation = .FALSE.                    !< namelist parameter
    13391284    LOGICAL ::  complex_terrain = .FALSE.                        !< namelist parameter
     
    13751320    LOGICAL ::  lsf_vert = .TRUE.                                !< use atmospheric forcing (large scale forcing)?
    13761321    LOGICAL ::  masking_method = .FALSE.                         !< namelist parameter
    1377     LOGICAL ::  microphysics_sat_adjust = .FALSE.                !< use saturation adjust bulk scheme?
    1378     LOGICAL ::  microphysics_kessler = .FALSE.                   !< use kessler bulk scheme?
    1379     LOGICAL ::  microphysics_morrison = .FALSE.                  !< use 2-moment Morrison (add. prog. eq. for nc and qc)
    1380     LOGICAL ::  microphysics_seifert = .FALSE.                   !< use 2-moment Seifert and Beheng scheme
    13811322    LOGICAL ::  mg_switch_to_pe0 = .FALSE.                       !< internal multigrid switch for steering the ghost point exchange in case that data has been collected on PE0
    13821323    LOGICAL ::  nesting_offline = .FALSE.                        !< flag controlling offline nesting in COSMO model 
     
    13861327    LOGICAL ::  passive_scalar = .FALSE.                         !< namelist parameter
    13871328    LOGICAL ::  plant_canopy = .FALSE.                           !< switch for use of plant canopy model
    1388     LOGICAL ::  precipitation = .FALSE.                          !< namelist parameter
    13891329    LOGICAL ::  random_heatflux = .FALSE.                        !< namelist parameter
    13901330    LOGICAL ::  rans_mode = .FALSE.                              !< switch between RANS and LES mode
     
    14921432    REAL(wp) ::  f = 0.0_wp                                    !< Coriolis parameter
    14931433    REAL(wp) ::  fs = 0.0_wp                                   !< Coriolis parameter
    1494     REAL(wp) ::  g = 9.81_wp                                   !< gravitational acceleration
    14951434    REAL(wp) ::  inflow_damping_height = 9999999.9_wp          !< namelist parameter
    14961435    REAL(wp) ::  inflow_damping_width = 9999999.9_wp           !< namelist parameter
    1497     REAL(wp) ::  kappa = 0.4_wp                                !< von Karman constant
    14981436    REAL(wp) ::  km_constant = -1.0_wp                         !< namelist parameter
    14991437    REAL(wp) ::  latitude = 55.0_wp                            !< namelist parameter
     
    15121450    REAL(wp) ::  particle_maximum_age = 9999999.9_wp           !< namelist parameter
    15131451    REAL(wp) ::  prandtl_number = 1.0_wp                       !< namelist parameter
    1514     REAL(wp) ::  precipitation_amount_interval = 9999999.9_wp  !< namelist parameter
    15151452    REAL(wp) ::  prho_reference                                !< reference state of potential density
    15161453    REAL(wp) ::  pt_damping_factor = 0.0_wp                    !< namelist parameter
  • palm/trunk/SOURCE/multi_agent_system_mod.f90

    r3268 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3268 2018-09-21 13:45:37Z sward
    2730! Cleaned up agent pointer assignment in output routine
    2831!
     
    7780    USE, INTRINSIC ::  ISO_C_BINDING
    7881
    79     USE constants,                                                             &
     82    USE basic_constants_and_equations_mod,                                     &
    8083        ONLY:  pi
    8184
     
    26892692
    26902693       USE arrays_3d,                                                          &
    2691            ONLY:  u, v, pt, hyp
     2694           ONLY:  u, v, pt, hyp, exner
    26922695
    26932696!       USE chemistry_model_mod,                                                &
     
    27612764!
    27622765!--                Calculate temperature at agent position
    2763                    agents(nl)%t = pt(kl,jl,il) *                               &
    2764                                   ( hyp(kl) / 100000.0_wp )**0.286_wp
     2766                   agents(nl)%t = pt(kl,jl,il) * exner(kl)
    27652767! !
    27662768! !--                Get PM10 concentration at agent position, if possible
     
    41074109    SUBROUTINE mas_timestep_social_forces ( mode, nl, ip, jp )
    41084110
    4109 !       USE constants,                                                          &
    4110 !           ONLY:  pi
    4111 
    41124111       IMPLICIT NONE
    41134112
  • palm/trunk/SOURCE/netcdf_interface_mod.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!
     
    552555        ONLY:  chem_define_netcdf_grid
    553556
    554     USE constants,                                                             &
     557    USE basic_constants_and_equations_mod,                                     &
    555558        ONLY:  pi
    556559
  • palm/trunk/SOURCE/palm.f90

    r3258 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3258 2018-09-18 07:23:31Z Giersch
    2730! current revision for user interface has been changed to 3240
    2831!
     
    245248
    246249    USE control_parameters,                                                    &
    247         ONLY:  air_chemistry, cloud_physics, constant_diffusion, child_domain, &
     250        ONLY:  air_chemistry, constant_diffusion, child_domain,                &
    248251               coupling_char, coupling_mode, do2d_at_begin, do3d_at_begin,     &
    249252               humidity, initializing_actions, io_blocks, io_group,            &
    250                message_string, microphysics_morrison, microphysics_seifert,    &
     253               message_string,                                                 &
    251254               neutral, passive_scalar, runnr, simulated_time_chr, spinup,     &
    252255               time_since_reference_point, user_interface_current_revision,    &
     
    259262        ONLY:  nbgp
    260263
     264    USE kinds
     265
     266    USE bulk_cloud_model_mod,                                                  &
     267        ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
     268
    261269    USE multi_agent_system_mod,                                                &
    262270        ONLY:  agents_active, mas_last_actions
     
    265273        ONLY:  netcdf_data_input_inquire_file, netcdf_data_input_init,         &
    266274               netcdf_data_input_surface_data, netcdf_data_input_topo
    267 
    268     USE kinds
    269275
    270276    USE particle_attributes,                                                   &
     
    442448             IF ( humidity )  THEN
    443449                CALL exchange_horiz( q, nbgp )
    444                 IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     450                IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    445451                  CALL exchange_horiz( qc, nbgp )
    446452                  CALL exchange_horiz( nc, nbgp )
    447453                ENDIF
    448                 IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     454                IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    449455                   CALL exchange_horiz( qr, nbgp )
    450456                   CALL exchange_horiz( nr, nbgp )
  • palm/trunk/SOURCE/parin.f90

    r3248 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3248 2018-09-14 09:42:06Z sward
    2730! Minor formating changes
    2831!
     
    420423
    421424    USE arrays_3d,                                                             &
    422         ONLY:  pt_init, q_init, ref_state, s_init, sa_init,                    &     
     425        ONLY:  pt_init, q_init, ref_state, s_init, sa_init,                    &
    423426               ug, u_init, v_init, vg
     427
     428    USE bulk_cloud_model_mod,                                                  &
     429        ONLY:  bcm_parin
    424430
    425431    USE chemistry_model_mod,                                                   &
    426432        ONLY:  chem_parin
    427        
     433
    428434    USE chem_modules
    429435
     
    455461    USE land_surface_model_mod,                                                &
    456462        ONLY: lsm_parin
    457 
    458     USE microphysics_mod,                                                      &
    459         ONLY:  c_sedimentation, cloud_water_sedimentation,                     &
    460                collision_turbulence, curvature_solution_effects_bulk,          &
    461                dry_aerosol_radius, limiter_sedimentation, na_init, nc_const,   &
    462                sigma_bulk, ventilation_effect
    463463
    464464    USE model_1d_mod,                                                          &
     
    525525    INTEGER(iwp) ::  ioerr          !< error flag for open/read/write
    526526
    527     NAMELIST /inipar/  aerosol_bulk, alpha_surface, approximation, bc_e_b,     &
     527    NAMELIST /inipar/  alpha_surface, approximation, bc_e_b,     &
    528528                       bc_lr, bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b, &
    529529             bc_q_t,bc_s_b, bc_s_t, bc_sa_t, bc_uv_b, bc_uv_t,                 &
     
    531531             building_length_y, building_wall_left, building_wall_south,       &
    532532             calc_soil_moisture_during_spinup,                                 &
    533              call_psolver_at_all_substeps, call_microphysics_at_all_substeps, &
     533             call_psolver_at_all_substeps, &
    534534             canyon_height,                                                    &
    535535             canyon_width_x, canyon_width_y, canyon_wall_left,                 &
    536              canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets,   &
    537              cloud_physics, cloud_scheme, cloud_top_radiation,                 &
    538              cloud_water_sedimentation,                                        &
    539              collective_wait, collision_turbulence, complex_terrain,           &
     536             canyon_wall_south, cfl_factor, cloud_droplets,   &
     537             cloud_top_radiation,                 &
     538             collective_wait, complex_terrain,           &
    540539             conserve_volume_flow,                                             &
    541540             conserve_volume_flow_mode, constant_flux_layer,                   &
    542              coupling_start_time, curvature_solution_effects_bulk,             &
     541             coupling_start_time,             &
    543542             cycle_mg, damp_level_1d,                                          &
    544543             data_output_during_spinup,                                        &
    545544             day_of_year_init,                                                 &
    546545             dissipation_1d,                                                   &
    547              dp_external, dp_level_b, dp_smooth, dpdxy, dry_aerosol_radius,    &
     546             dp_external, dp_level_b, dp_smooth, dpdxy,    &
    548547             dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max,   &
    549548             dz_stretch_factor, dz_stretch_level, dz_stretch_level_start,      &
     
    555554             initializing_actions, km_constant,                                &
    556555             large_scale_forcing, large_scale_subsidence, latitude,            &
    557              limiter_sedimentation, longitude,                                 &
     556             longitude,                                 &
    558557             loop_optimization, lsf_exception, masking_method, mg_cycles,      &
    559558             mg_switch_to_pe0_level, mixing_length_1d, momentum_advec,         &
    560              most_method, na_init, nc_const, nesting_offline,                  &
     559             most_method, nesting_offline,                  &
    561560             netcdf_precision, neutral, ngsrb,                                 &
    562561             nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor,     &
    563562             outflow_source_plane, passive_scalar,                             &
    564              prandtl_number, precipitation, psolver, pt_damping_factor,        &
     563             prandtl_number, psolver, pt_damping_factor,        &
    565564             pt_damping_width, pt_reference, pt_surface,                       &
    566565             pt_surface_initial_change, pt_vertical_gradient,                  &
     
    574573             roughness_length, sa_surface,                                     &
    575574             sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec,   &
    576              scalar_rayleigh_damping, sigma_bulk,                              &
     575             scalar_rayleigh_damping,                              &
    577576             spinup_time, spinup_pt_amplitude, spinup_pt_mean,                 &
    578577             statistic_regions, subs_vertical_gradient,                        &
     
    592591             use_top_fluxes, use_ug_for_galilei_tr, use_upstream_for_tke,      &
    593592             uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient,  &
    594              vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&
     593             vg_vertical_gradient_level, v_bulk, v_profile,&
    595594             wall_adjustment, wall_heatflux, wall_humidityflux,                &
    596595             wall_salinityflux, wall_scalarflux, y_shift, zeta_max, zeta_min,  &
    597596             z0h_factor
    598597
    599     NAMELIST /initialization_parameters/  aerosol_bulk, alpha_surface,         &
     598    NAMELIST /initialization_parameters/  alpha_surface,         &
    600599             approximation, bc_e_b,                                            &
    601600             bc_lr, bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b,           &
     
    604603             building_length_y, building_wall_left, building_wall_south,       &
    605604             calc_soil_moisture_during_spinup,                                 &
    606              call_psolver_at_all_substeps, call_microphysics_at_all_substeps, &
     605             call_psolver_at_all_substeps, &
    607606             canyon_height,                                                    &
    608607             canyon_width_x, canyon_width_y, canyon_wall_left,                 &
    609              canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets,   &
    610              cloud_physics, cloud_scheme, cloud_top_radiation,                 &
    611              cloud_water_sedimentation,                                        &
    612              collective_wait, collision_turbulence, complex_terrain,           &
     608             canyon_wall_south, cfl_factor, cloud_droplets,   &
     609             cloud_top_radiation,                 &
     610             collective_wait, complex_terrain,           &
    613611             conserve_volume_flow,                                             &
    614612             conserve_volume_flow_mode, constant_flux_layer,                   &
    615              coupling_start_time, curvature_solution_effects_bulk,             &
     613             coupling_start_time,             &
    616614             cycle_mg, damp_level_1d,                                          &
    617615             data_output_during_spinup,                                        &
    618616             day_of_year_init,                                                 &
    619617             dissipation_1d,                                                   &
    620              dp_external, dp_level_b, dp_smooth, dpdxy, dry_aerosol_radius,    &
     618             dp_external, dp_level_b, dp_smooth, dpdxy,    &
    621619             dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max,   &
    622620             dz_stretch_factor, dz_stretch_level, dz_stretch_level_start,      &
     
    628626             initializing_actions, km_constant,                                &
    629627             large_scale_forcing, large_scale_subsidence, latitude,            &
    630              limiter_sedimentation, longitude,                                 &
     628             longitude,                                 &
    631629             loop_optimization, lsf_exception, masking_method, mg_cycles,      &
    632630             mg_switch_to_pe0_level, mixing_length_1d, momentum_advec,         &
    633              most_method, na_init, nc_const, nesting_offline,                  &
     631             most_method, nesting_offline,                  &
    634632             netcdf_precision, neutral, ngsrb,                                 &
    635633             nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor,     &
    636634             outflow_source_plane, passive_scalar,                             &
    637              prandtl_number, precipitation, psolver, pt_damping_factor,        &
     635             prandtl_number, psolver, pt_damping_factor,        &
    638636             pt_damping_width, pt_reference, pt_surface,                       &
    639637             pt_surface_initial_change, pt_vertical_gradient,                  &
     
    647645             roughness_length, sa_surface,                                     &
    648646             sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec,   &
    649              scalar_rayleigh_damping, sigma_bulk,                              &
     647             scalar_rayleigh_damping,                              &
    650648             spinup_time, spinup_pt_amplitude, spinup_pt_mean,                 &
    651649             statistic_regions, subs_vertical_gradient,                        &
     
    665663             use_free_convection_scaling,                                      &
    666664             uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient,  &
    667              vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&
     665             vg_vertical_gradient_level, v_bulk, v_profile,&
    668666             wall_adjustment, wall_heatflux, wall_humidityflux,                &
    669667             wall_salinityflux, wall_scalarflux, y_shift, zeta_max, zeta_min,  &
     
    684682             mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate,     &
    685683             normalizing_region, npex, npey, nz_do3d,                          &
    686              precipitation_amount_interval, profile_columns, profile_rows,     &
     684             profile_columns, profile_rows,     &
    687685             restart_time, section_xy, section_xz, section_yz,                 &
    688686             skip_time_data_output, skip_time_data_output_av, skip_time_dopr,  &
     
    705703             mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate,     &
    706704             normalizing_region, npex, npey, nz_do3d,                          &
    707              precipitation_amount_interval, profile_columns, profile_rows,     &
     705             profile_columns, profile_rows,     &
    708706             restart_time, section_xy, section_xz, section_yz,                 &
    709707             skip_time_data_output, skip_time_data_output_av, skip_time_dopr,  &
     
    864862
    865863!
     864!--       Check if gust module is used and read &gust_par if required
     865          CALL bcm_parin
     866
     867!
    866868!--       Check if urban surface model is used and read &urban_surface_par if required
    867869          CALL usm_parin
  • palm/trunk/SOURCE/plant_canopy_model_mod.f90

    r3248 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 3248 2018-09-14 09:42:06Z sward
    2730! Minor formating changes
    2831!
     
    365368
    366369       USE control_parameters,                                                 &
    367            ONLY: cloud_physics, coupling_char, message_string,                 &
    368                  microphysics_seifert
     370           ONLY: coupling_char, message_string
     371
     372       USE bulk_cloud_model_mod,                                               &
     373           ONLY: bulk_cloud_model, microphysics_seifert
    369374
    370375       USE netcdf_data_input_mod,                                              &
     
    407412       ENDIF
    408413
    409        IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     414       IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    410415          message_string = 'plant_canopy = .TRUE. requires cloud_scheme /=' // &
    411416                          ' seifert_beheng'
  • palm/trunk/SOURCE/pmc_interface_mod.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!
     
    326329    USE control_parameters,                                                    &
    327330        ONLY:  air_chemistry, bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r,  &
    328                bc_dirichlet_s, cloud_physics, child_domain,                    &
     331               bc_dirichlet_s, child_domain,                                   &
    329332               constant_diffusion, constant_flux_layer,                        &
    330333               coupling_char, dt_3d, dz, humidity, message_string,             &
    331                microphysics_morrison, microphysics_seifert,                    &
    332334               neutral, passive_scalar, rans_mode, rans_tke_e,                 &
    333335               roughness_length, simulated_time, topography, volume_flow
     
    348350        ONLY:  nbgp, nx, nxl, nxlg, nxlu, nxr, nxrg, ny, nyn, nyng, nys, nysg, &
    349351               nysv, nz, nzb, nzt, wall_flags_0
     352
     353    USE bulk_cloud_model_mod,                                                  &
     354        ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert
    350355
    351356    USE particle_attributes,                                                   &
     
    12691274          CALL pmc_set_dataarray_name( 'coarse', 'q'  ,'fine', 'q',  ierr )
    12701275
    1271           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     1276          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    12721277            CALL pmc_set_dataarray_name( 'coarse', 'qc'  ,'fine', 'qc',  ierr ) 
    12731278            CALL pmc_set_dataarray_name( 'coarse', 'nc'  ,'fine', 'nc',  ierr )
    12741279          ENDIF
    12751280
    1276           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     1281          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    12771282             CALL pmc_set_dataarray_name( 'coarse', 'qr'  ,'fine', 'qr',  ierr )
    12781283             CALL pmc_set_dataarray_name( 'coarse', 'nr'  ,'fine', 'nr',  ierr )
     
    38423847                                      r2yo, r1zo, r2zo, 's' )
    38433848
    3844           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     3849          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    38453850             CALL pmci_interp_tril_all ( qc, qcc, ico, jco, kco, r1xo, r2xo,   &
    38463851                                          r1yo, r2yo, r1zo, r2zo, 's' )
     
    38493854          ENDIF
    38503855
    3851           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     3856          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    38523857             CALL pmci_interp_tril_all ( qr, qrc, ico, jco, kco, r1xo, r2xo,   &
    38533858                                         r1yo, r2yo, r1zo, r2zo, 's' )
     
    45754580                                          nzt_topo_nestbc_l, 'l', 's' )
    45764581
    4577                 IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     4582                IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    45784583                   CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo,     &
    45794584                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
     
    45894594                ENDIF
    45904595
    4591                 IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     4596                IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    45924597                   CALL pmci_interp_tril_lr( qr, qrc, ico, jco, kco, r1xo,     &
    45934598                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
     
    46834688                                          nzt_topo_nestbc_r, 'r', 's' )
    46844689
    4685                 IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     4690                IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    46864691
    46874692                   CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo,     &
     
    47004705                ENDIF
    47014706
    4702                 IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     4707                IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    47034708
    47044709     
     
    47964801                                          nzt_topo_nestbc_s, 's', 's' )
    47974802
    4798                 IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     4803                IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    47994804
    48004805                   CALL pmci_interp_tril_sn( qc, qcc, ico, jco, kco, r1xo,     &
     
    48124817                ENDIF
    48134818
    4814                 IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     4819                IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    48154820
    48164821                   CALL pmci_interp_tril_sn( qr, qrc, ico, jco, kco, r1xo,     &
     
    49074912                                          nzt_topo_nestbc_n, 'n', 's' )
    49084913
    4909                 IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     4914                IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    49104915
    49114916                   CALL pmci_interp_tril_sn( qc, qcc, ico, jco, kco, r1xo,     &
     
    49234928                ENDIF
    49244929
    4925                 IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     4930                IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    49264931
    49274932                   CALL pmci_interp_tril_sn( qr, qrc, ico, jco, kco, r1xo,     &
     
    49944999                                   r2yo, r1zo, r2zo, 's' )
    49955000
    4996           IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     5001          IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    49975002
    49985003             CALL pmci_interp_tril_t( qc, qcc, ico, jco, kco, r1xo, r2xo, r1yo,&
     
    50045009          ENDIF
    50055010
    5006           IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     5011          IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    50075012
    50085013
     
    50785083                                  kfuo, ijkfc_s, 'q' )
    50795084
    5080          IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     5085         IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    50815086
    50825087            CALL pmci_anterp_tophat( qc, qcc, kctu, iflo, ifuo, jflo, jfuo,    &
     
    50885093         ENDIF
    50895094
    5090          IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     5095         IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    50915096
    50925097            CALL pmci_anterp_tophat( qr, qrc, kctu, iflo, ifuo, jflo, jfuo,    &
     
    59025907          ENDDO 
    59035908       ENDIF
    5904        IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     5909       IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    59055910          DO  m = 1, bc_h(0)%ns
    59065911             i = bc_h(0)%i(m)           
     
    59205925       ENDIF
    59215926
    5922        IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     5927       IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    59235928          DO  m = 1, bc_h(0)%ns
    59245929             i = bc_h(0)%i(m)           
  • palm/trunk/SOURCE/prognostic_equations.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! omp_get_thread_num now declared in omp directive
    2831!
     
    289292               w, w_p
    290293
     294    USE bulk_cloud_model_mod,                                                  &
     295        ONLY:  call_microphysics_at_all_substeps, bulk_cloud_model,            &
     296               bcm_actions, microphysics_sat_adjust,                           &
     297               microphysics_morrison, microphysics_seifert
     298
    291299    USE chemistry_model_mod,                                                   &
    292300        ONLY:  chem_integrate, chem_prognostic_equations,                      &
     
    300308
    301309    USE control_parameters,                                                    &
    302         ONLY:  air_chemistry, call_microphysics_at_all_substeps,               &
    303                cloud_physics, cloud_top_radiation, constant_diffusion,         &
     310        ONLY:  air_chemistry,                                                  &
     311               cloud_top_radiation, constant_diffusion,                        &
    304312               dp_external, dp_level_ind_b, dp_smooth_factor, dpdxy, dt_3d,    &
    305313               humidity, intermediate_timestep_count,                          &
    306314               intermediate_timestep_count_max, large_scale_forcing,           &
    307                large_scale_subsidence, microphysics_morrison,                  &
    308                microphysics_seifert, microphysics_sat_adjust, neutral, nudging,&
     315               large_scale_subsidence,                  &
     316               neutral, nudging, &
    309317               ocean, passive_scalar, plant_canopy,                            &
    310318               prho_reference, prho_reference,                                 &
     
    381389    USE lsf_nudging_mod,                                                       &
    382390        ONLY:  ls_advec, nudge
    383 
    384     USE microphysics_mod,                                                      &
    385         ONLY:  microphysics_control
    386391
    387392    USE plant_canopy_model_mod,                                                &
     
    500505!
    501506!-- If required, calculate cloud microphysics
    502     IF ( cloud_physics  .AND.  .NOT. microphysics_sat_adjust  .AND.            &
     507    IF ( bulk_cloud_model  .AND.  .NOT. microphysics_sat_adjust  .AND.         &
    503508         ( intermediate_timestep_count == 1  .OR.                              &
    504509           call_microphysics_at_all_substeps ) )                               &
     
    508513       DO  i = nxlg, nxrg
    509514          DO  j = nysg, nyng
    510              CALL microphysics_control( i, j )
     515             CALL bcm_actions( i, j )
    511516           ENDDO
    512517       ENDDO
     
    9951000!--          If required, calculate prognostic equations for cloud water content
    9961001!--          and cloud drop concentration
    997              IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     1002             IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    9981003!
    9991004!--             Calculate prognostic equation for cloud water content
     
    11111116!--          If required, calculate prognostic equations for rain water content
    11121117!--          and rain drop concentration
    1113              IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     1118             IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    11141119!
    11151120!--             Calculate prognostic equation for rain water content
     
    13711376!
    13721377!-- If required, calculate cloud microphysical impacts
    1373     IF ( cloud_physics  .AND.  .NOT. microphysics_sat_adjust  .AND.            &
     1378    IF ( bulk_cloud_model  .AND.  .NOT. microphysics_sat_adjust  .AND.         &
    13741379         ( intermediate_timestep_count == 1  .OR.                              &
    13751380           call_microphysics_at_all_substeps )                                 &
    13761381       )  THEN
    13771382       CALL cpu_log( log_point(51), 'microphysics', 'start' )
    1378        CALL microphysics_control
     1383       CALL bcm_actions
    13791384       CALL cpu_log( log_point(51), 'microphysics', 'stop' )
    13801385    ENDIF
     
    19811986!--    If required, calculate prognostic equations for cloud water content
    19821987!--    and cloud drop concentration
    1983        IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
     1988       IF ( bulk_cloud_model  .AND.  microphysics_morrison )  THEN
    19841989
    19851990          CALL cpu_log( log_point(67), 'qc-equation', 'start' )
     
    21602165!--    If required, calculate prognostic equations for rain water content
    21612166!--    and rain drop concentration
    2162        IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
     2167       IF ( bulk_cloud_model  .AND.  microphysics_seifert )  THEN
    21632168
    21642169          CALL cpu_log( log_point(52), 'qr-equation', 'start' )
  • palm/trunk/SOURCE/radiation_model_mod.f90

    <
    r3272 r3274  
    2828! -----------------
    2929! $Id$
     30! Modularization of all bulk cloud physics code components
     31!
     32! 3272 2018-09-24 10:16:32Z suehring
    3033! - split direct and diffusion shortwave radiation using RRTMG rather than using
    3134!   calc_diffusion_radiation, in case of RRTMG
     
    103106!
    104107! 3117 2018-07-11 09:59:11Z maronga
    105 ! Bugfix: water vapor was not transfered to RRTMG when cloud_physics = .F.
     108! Bugfix: water vapor was not transfered to RRTMG when bulk_cloud_model = .F.
    106109! Bugfix: changed the calculation of RRTMG boundary conditions (Mohamed Salim)
    107110! Bugfix: dry residual atmosphere is replaced by standard RRTMG atmosphere
     
    437440 
    438441    USE arrays_3d,                                                             &
    439         ONLY:  dzw, hyp, nc, pt, q, ql, zu, zw
     442        ONLY:  dzw, hyp, nc, pt, q, ql, zu, zw, exner, d_exner
     443
     444    USE basic_constants_and_equations_mod,                                     &
     445        ONLY:  c_p, g, lv_d_cp, l_v, pi, r_d, rho_l, solar_constant,           &
     446               barometric_formula
    440447
    441448    USE calc_mean_profile_mod,                                                 &
    442449        ONLY:  calc_mean_profile
    443450
    444     USE cloud_parameters,                                                      &
    445         ONLY:  cp, l_d_cp, l_v, r_d, rho_l
    446 
    447     USE constants,                                                             &
    448         ONLY:  pi
    449 
    450451    USE control_parameters,                                                    &
    451         ONLY:  cloud_droplets, cloud_physics, coupling_char, dz, g,            &
     452        ONLY:  cloud_droplets, coupling_char, dz,                              &
    452453               humidity,                                                       &
    453454               initializing_actions, io_blocks, io_group,                      &
    454455               latitude, longitude, large_scale_forcing, lsf_surf,             &
    455                message_string, microphysics_morrison, plant_canopy, pt_surface,&
     456               message_string, plant_canopy, pt_surface,&
    456457               rho_surface, surface_pressure, time_since_reference_point,      &
    457458               urban_surface, land_surface, end_time, spinup_time, dt_spinup
     
    475476    USE kinds
    476477
    477     USE microphysics_mod,                                                      &
    478         ONLY:  na_init, nc_const, sigma_gc
     478    USE bulk_cloud_model_mod,                                                  &
     479        ONLY:  bulk_cloud_model, microphysics_morrison, na_init, nc_const, sigma_gc
    479480
    480481#if defined ( __netcdf )
     
    561562                                                         /)
    562563
     564    REAL(wp), PARAMETER :: sigma_sb       = 5.67037321E-8_wp !< Stefan-Boltzmann constant
     565
    563566    INTEGER(iwp) :: albedo_type  = 9999999, & !< Albedo surface type
    564567                    dots_rad     = 0          !< starting index for timeseries output
     
    578581                                                        !< will be considered. However fewer SVFs are expected.
    579582                radiation_interactions_on = .TRUE.      !< namelist flag to force RTM activiation regardless to vertical urban/land surface and trees
    580 
    581 
    582     REAL(wp), PARAMETER :: sigma_sb       = 5.67037321E-8_wp,       & !< Stefan-Boltzmann constant
    583                            solar_constant = 1368.0_wp                 !< solar constant at top of atmosphere
    584583
    585584    REAL(wp) :: albedo = 9999999.9_wp,           & !< NAMELIST alpha
     
    22742273!
    22752274!--       Initialize RRTMG