Changeset 4027 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jun 13, 2019 8:48:51 AM (5 years ago)
Author:
schwenkel
Message:

Added microphyics scheme morrision_no_rain

File:
1 edited

Legend:

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

    r3931 r4027  
    2525! -----------------
    2626! $Id$
     27! Added microphyics scheme 'morrision_no_rain'
     28!
     29! 3931 2019-04-24 16:34:28Z schwenkel
    2730! Added bcm_exchange_horiz which is called after non_transport_physics
    2831!
     
    301304    LOGICAL ::  microphysics_morrison = .FALSE.                  !< use 2-moment Morrison (add. prog. eq. for nc and qc)
    302305    LOGICAL ::  microphysics_seifert = .FALSE.                   !< use 2-moment Seifert and Beheng scheme
     306    LOGICAL ::  microphysics_morrison_no_rain = .FALSE.          !< use 2-moment Morrison     
    303307    LOGICAL ::  precipitation = .FALSE.                          !< namelist parameter
    304308
     
    391395           dt_precipitation, &
    392396           microphysics_morrison, &
     397           microphysics_morrison_no_rain, &           
    393398           microphysics_sat_adjust, &
    394399           microphysics_seifert, &
     
    548553!
    549554!--    Check cloud scheme
     555!--    This scheme considers only saturation adjustment,
     556!--    i.e. water vapor surplus is converted into liquid
     557!--    water. No other microphysical processes are considered
    550558       IF ( cloud_scheme == 'saturation_adjust' )  THEN
    551559          microphysics_sat_adjust = .TRUE.
     
    553561          microphysics_kessler    = .FALSE.
    554562          precipitation           = .FALSE.
     563          microphysics_morrison_no_rain = .FALSE.
     564!
     565!--    This scheme includes all process of the seifert
     566!--    beheng scheme (2001,2006). Especially rain processes are
     567!--    considered with prognostic quantities of qr and nr.
     568!--    Cloud droplet concentration is assumed to be constant and
     569!--    qc is diagnostic.
     570!--    Technical remark: The switch 'microphysics_seifert' allocates
     571!--    fields of qr and nr and enables all rain processes.
    555572       ELSEIF ( cloud_scheme == 'seifert_beheng' )  THEN
    556573          microphysics_sat_adjust = .FALSE.
     
    559576          microphysics_morrison  = .FALSE.
    560577          precipitation           = .TRUE.
     578          microphysics_morrison_no_rain = .FALSE.
     579!
     580!--    The kessler scheme is a simplified scheme without any
     581!--    prognostic quantities for microphyical variables but
     582!--    considering autoconversion.
    561583       ELSEIF ( cloud_scheme == 'kessler' )  THEN
    562584          microphysics_sat_adjust = .FALSE.
     
    565587          microphysics_morrison   = .FALSE.
    566588          precipitation           = .TRUE.
     589          microphysics_morrison_no_rain = .FALSE.
     590!
     591!--    The morrison scheme is an extension of the seifer beheng scheme
     592!--    including also relevant processes for cloud droplet size particles
     593!--    such as activation and an diagnostic mehtod for diffusional growth.
     594!--    I.e. here all processes of Seifert and Beheng as well as of the
     595!--    morrision scheme are used. Therefore, ztis includes prognostic
     596!--    quantities for qc and nc.
     597!--    Technical remark: The switch 'microphysics_morrison' allocates
     598!--    fields of qc and nc and enables diagnostic diffusional growth and
     599!--    activation.
    567600       ELSEIF ( cloud_scheme == 'morrison' )  THEN
    568601          microphysics_sat_adjust = .FALSE.
     
    571604          microphysics_morrison   = .TRUE.
    572605          precipitation           = .TRUE.
     606          microphysics_morrison_no_rain = .FALSE.   
     607!         
     608!--    The 'morrision_no_rain' scheme includes only processes of morrision scheme
     609!--    without the rain processes of seifert beheng. Therfore, the prog. quantities
     610!--    of qr and nr remain unallocated. This might be appropiate for cloud in which
     611!--    the size distribution is narrow, e.g. fog.
     612       ELSEIF ( cloud_scheme == 'morrison_no_rain' )  THEN
     613          microphysics_sat_adjust = .FALSE.
     614          microphysics_seifert    = .FALSE.
     615          microphysics_kessler    = .FALSE.
     616          microphysics_morrison   = .TRUE.
     617          microphysics_morrison_no_rain = .TRUE.         
     618          precipitation           = .FALSE.     
    573619       ELSE
    574620          message_string = 'unknown cloud microphysics scheme cloud_scheme ="' // &
     
    12261272!
    12271273!--       Compute cloud physics
     1274!--       Here the the simple kessler scheme is used.
    12281275          IF ( microphysics_kessler )  THEN
    1229 
    12301276             CALL autoconversion_kessler
    12311277             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud
    1232 
    1233           ELSEIF ( microphysics_seifert )  THEN
    1234 
     1278             
     1279!
     1280!--       Here the seifert beheng scheme is used. Cloud concentration is assumed to
     1281!--       a constant value an qc a diagnostic value.
     1282          ELSEIF ( microphysics_seifert  .AND.  .NOT. microphysics_morrison )  THEN
    12351283             CALL adjust_cloud
    1236              IF ( microphysics_morrison )  CALL activation
    1237              IF ( microphysics_morrison )  CALL condensation
    12381284             CALL autoconversion
    12391285             CALL accretion
     
    12421288             CALL sedimentation_rain
    12431289             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud
     1290             
     1291!
     1292!--       Here the morrison scheme is used. No rain processes are considered and qr and nr
     1293!--       are not allocated
     1294          ELSEIF ( microphysics_morrison_no_rain  .AND.  .NOT. microphysics_seifert )  THEN
     1295             CALL activation
     1296             CALL condensation
     1297             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud   
     1298             
     1299!
     1300!--       Here the full morrison scheme is used and all processes of Seifert and Beheng are
     1301!--       included
     1302          ELSEIF ( microphysics_morrison  .AND.  microphysics_seifert )  THEN
     1303             CALL adjust_cloud
     1304             CALL activation
     1305             CALL condensation
     1306             CALL autoconversion
     1307             CALL accretion
     1308             CALL selfcollection_breakup
     1309             CALL evaporation_rain
     1310             CALL sedimentation_rain
     1311             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud           
    12441312
    12451313          ENDIF
     
    12961364!
    12971365!--       Compute cloud physics
     1366!--       Here the the simple kessler scheme is used.
    12981367          IF( microphysics_kessler )  THEN
    1299 
    13001368             CALL autoconversion_kessler_ij( i,j )
    13011369             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud_ij( i,j )
    13021370
    1303           ELSEIF ( microphysics_seifert )  THEN
    1304 
     1371!
     1372!--       Here the seifert beheng scheme is used. Cloud concentration is assumed to
     1373!--       a constant value an qc a diagnostic value.             
     1374          ELSEIF ( microphysics_seifert  .AND.  .NOT. microphysics_morrison )  THEN
    13051375             CALL adjust_cloud_ij( i,j )
    1306              IF ( microphysics_morrison ) CALL activation_ij( i,j )
    1307              IF ( microphysics_morrison ) CALL condensation_ij( i,j )
    13081376             CALL autoconversion_ij( i,j )
    13091377             CALL accretion_ij( i,j )
     
    13121380             CALL sedimentation_rain_ij( i,j )
    13131381             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud_ij( i,j )
     1382             
     1383!
     1384!--       Here the morrison scheme is used. No rain processes are considered and qr and nr
     1385!--       are not allocated
     1386          ELSEIF ( microphysics_morrison_no_rain  .AND.  .NOT. microphysics_seifert )  THEN
     1387             CALL activation_ij( i,j )
     1388             CALL condensation_ij( i,j )
     1389             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud_ij( i,j )
     1390             
     1391!
     1392!--       Here the full morrison scheme is used and all processes of Seifert and Beheng are
     1393!--       included             
     1394          ELSEIF ( microphysics_morrison  .AND.  microphysics_seifert )  THEN
     1395             CALL adjust_cloud_ij( i,j )
     1396             CALL activation_ij( i,j )
     1397             CALL condensation_ij( i,j )
     1398             CALL autoconversion_ij( i,j )
     1399             CALL accretion_ij( i,j )
     1400             CALL selfcollection_breakup_ij( i,j )
     1401             CALL evaporation_rain_ij( i,j )
     1402             CALL sedimentation_rain_ij( i,j )
     1403             IF ( cloud_water_sedimentation )  CALL sedimentation_cloud_ij( i,j )           
    13141404
    13151405          ENDIF
     
    32693359!
    32703360!--             Actual temperature:
    3271                 temp = t_l + lv_d_cp * ( qc(k,j,i) + qr(k,j,i) )
     3361                IF ( microphysics_seifert ) THEN
     3362                   temp = t_l + lv_d_cp * ( qc(k,j,i) + qr(k,j,i) )
     3363                ELSEIF ( microphysics_morrison_no_rain ) THEN
     3364                   temp = t_l + lv_d_cp * qc(k,j,i)
     3365                ENDIF 
    32723366
    32733367                g_fac  = 1.0_wp / ( ( l_v / ( r_v * temp ) - 1.0_wp ) *        &
     
    32933387!--                (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128)
    32943388                   cond      = 2.0_wp * pi * nc_0 * g_fac * sat / hyrho(k)
    3295                    cond_max  = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i)
     3389                   IF ( microphysics_seifert ) THEN
     3390                      cond_max  = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i)
     3391                   ELSEIF ( microphysics_morrison_no_rain ) THEN
     3392                      cond_max  = q(k,j,i) - q_s - qc(k,j,i)
     3393                   ENDIF
    32963394                   cond      = MIN( cond, cond_max / dt_micro )
    32973395
     
    33483446!
    33493447!--       Actual temperature:
    3350           temp = t_l + lv_d_cp * ( qc(k,j,i) + qr(k,j,i) )
     3448          IF ( microphysics_seifert ) THEN
     3449             temp = t_l + lv_d_cp * ( qc(k,j,i) + qr(k,j,i) )
     3450          ELSEIF ( microphysics_morrison_no_rain ) THEN
     3451             temp = t_l + lv_d_cp * qc(k,j,i)
     3452          ENDIF 
    33513453
    33523454          g_fac  = 1.0_wp / ( ( l_v / ( r_v * temp ) - 1.0_wp ) *        &
     
    33723474!--          (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128)
    33733475             cond      = 2.0_wp * pi * nc_0 * g_fac * sat / hyrho(k)
    3374              cond_max  = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i)
     3476             IF ( microphysics_seifert ) THEN
     3477                cond_max  = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i)
     3478             ELSEIF ( microphysics_morrison_no_rain ) THEN
     3479                cond_max  = q(k,j,i) - q_s - qc(k,j,i)
     3480             ENDIF
    33753481             cond      = MIN( cond, cond_max / dt_micro )
    33763482
     
    49975103!--    Not in case of microphysics_kessler or microphysics_sat_adjust
    49985104!--    since qr is unallocated
    4999        IF ( .NOT. microphysics_kessler  .AND.                                  &
    5000             .NOT.  microphysics_sat_adjust )  THEN
    5001           sat   = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp
     5105       IF ( microphysics_seifert ) THEN
     5106          sat = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp
     5107       ELSEIF ( microphysics_morrison_no_rain ) THEN
     5108          sat = ( q(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp
    50025109       ENDIF
    50035110
     
    50325139                flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
    50335140
    5034    !
    5035    !--          Call calculation of supersaturation located
     5141!
     5142!--             Call calculation of supersaturation located
    50365143                CALL supersaturation( i, j, k )
    50375144
    5038    !
    5039    !--          Compute the liquid water content
     5145!
     5146!--             Compute the liquid water content
    50405147                IF ( microphysics_seifert  .AND. .NOT. microphysics_morrison ) &
    50415148                THEN
     
    50485155                      ql(k,j,i) = qr(k,j,i) * flag
    50495156                   ENDIF
    5050                 ELSEIF ( microphysics_morrison )  THEN
     5157                ELSEIF ( microphysics_morrison  .AND.  microphysics_seifert )  THEN
    50515158                   ql(k,j,i) = qc(k,j,i) + qr(k,j,i) * flag
     5159                ELSEIF ( microphysics_morrison  .AND.  .NOT. microphysics_seifert )  THEN
     5160                   ql(k,j,i) = qc(k,j,i)                   
    50525161                ELSE
    50535162                   IF ( ( q(k,j,i) - q_s ) > 0.0_wp )  THEN
Note: See TracChangeset for help on using the changeset viewer.