Ignore:
Timestamp:
Apr 7, 2016 7:49:42 AM (8 years ago)
Author:
hoffmann
Message:

changes in LPM and bulk cloud microphysics

File:
1 edited

Legend:

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

    r1818 r1822  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! PALM collision kernel deleted. Collision algorithms are checked for correct
     22! spelling.
     23!
     24! Tails removed.
     25!
     26! Checks for use_sgs_for_particles adopted for the use of droplets with
     27! use_sgs_for_particles adopted.
     28!
     29! Unused variables removed.
    2230!
    2331! Former revisions:
     
    358366    CHARACTER (LEN=1)   ::  sq                       !<
    359367    CHARACTER (LEN=15)  ::  var                      !<
    360     CHARACTER (LEN=7)   ::  unit                     !< 
     368    CHARACTER (LEN=7)   ::  unit                     !<
    361369    CHARACTER (LEN=8)   ::  date                     !<
    362370    CHARACTER (LEN=10)  ::  time                     !<
     
    367375
    368376    INTEGER(iwp) ::  i                               !<
    369     INTEGER(iwp) ::  ilen                            !<
    370     INTEGER(iwp) ::  iremote = 0                     !<
     377    INTEGER(iwp) ::  ilen                            !<
    371378    INTEGER(iwp) ::  j                               !<
    372379    INTEGER(iwp) ::  k                               !<
     
    374381    INTEGER(iwp) ::  netcdf_data_format_save         !<
    375382    INTEGER(iwp) ::  position                        !<
    376     INTEGER(iwp) ::  prec                            !<
    377383   
    378384    LOGICAL     ::  found                            !<
     
    661667                        'with particle advection.'
    662668       CALL message( 'check_parameters', 'PA0017', 1, 2, 0, 6, 0 )
    663     ENDIF
    664 
    665 !
    666 !--
    667     IF ( use_particle_tails )  THEN
    668        message_string = 'Particle tails are currently not available due ' //   &
    669                         'to the new particle structure.'
    670        CALL message( 'check_parameters', 'PA0392', 1, 2, 0, 6, 0 )
    671669    ENDIF
    672670
     
    767765!
    768766!-- Check cloud scheme
    769     IF ( cloud_scheme == 'seifert_beheng' )  THEN
    770        icloud_scheme = 0
     767    IF ( cloud_scheme == 'saturation_adjust' )  THEN
     768       microphysics_sat_adjust = .TRUE.
     769       microphysics_seifert    = .FALSE.
     770       microphysics_kessler    = .FALSE.
     771       precipitation           = .FALSE.
     772    ELSEIF ( cloud_scheme == 'seifert_beheng' )  THEN
     773       microphysics_sat_adjust = .FALSE.
     774       microphysics_seifert    = .TRUE.
     775       microphysics_kessler    = .FALSE.
     776       precipitation           = .TRUE.
    771777    ELSEIF ( cloud_scheme == 'kessler' )  THEN
    772        icloud_scheme = 1
     778       microphysics_sat_adjust = .FALSE.
     779       microphysics_seifert    = .FALSE.
     780       microphysics_kessler    = .TRUE.
     781       precipitation           = .TRUE.
    773782    ELSE
    774783       message_string = 'unknown cloud microphysics scheme cloud_scheme ="' // &
     
    846855    ENDIF
    847856
    848     IF ( use_sgs_for_particles  .AND.  .NOT. use_upstream_for_tke .AND.        &
    849          ( scalar_advec /= 'ws-scheme' .OR.                                    &
    850            scalar_advec /= 'ws-scheme-mono' )                                  &
     857    IF ( use_sgs_for_particles  .AND.  .NOT. cloud_droplets  .AND.               &
     858         .NOT. use_upstream_for_tke  .AND.                                       &
     859         ( scalar_advec /= 'ws-scheme'  .OR.  scalar_advec /= 'ws-scheme-mono' ) &
    851860       )  THEN
    852861       use_upstream_for_tke = .TRUE.
     
    906915          hall_kernel = .TRUE.
    907916
    908        CASE ( 'palm' )
    909           palm_kernel = .TRUE.
    910 
    911917       CASE ( 'wang', 'wang_fast' )
    912918          wang_kernel = .TRUE.
     
    922928    END SELECT
    923929    IF ( collision_kernel(6:9) == 'fast' )  use_kernel_tables = .TRUE.
     930
     931!
     932!-- Collision algorithms:
     933    SELECT CASE ( TRIM( collision_algorithm ) )
     934
     935       CASE ( 'all_or_nothing' )
     936          all_or_nothing = .TRUE.
     937
     938       CASE ( 'average_impact' )
     939          average_impact = .TRUE.
     940
     941       CASE DEFAULT
     942          message_string = 'unknown collision algorithm: collision_algorithm = "' // &
     943                           TRIM( collision_algorithm ) // '"'
     944          CALL message( 'check_parameters', 'PA0420', 1, 2, 0, 6, 0 )
     945
     946       END SELECT
    924947
    925948    IF ( TRIM( initializing_actions ) /= 'read_restart_data'  .AND.            &
     
    9791002              'not allowed with humidity = ', humidity
    9801003       CALL message( 'check_parameters', 'PA0034', 1, 2, 0, 6, 0 )
    981     ENDIF
    982 
    983     IF ( precipitation  .AND.  .NOT.  cloud_physics )  THEN
    984        WRITE( message_string, * ) 'precipitation = ', precipitation, ' is ',   &
    985               'not allowed with cloud_physics = ', cloud_physics
    986        CALL message( 'check_parameters', 'PA0035', 1, 2, 0, 6, 0 )
    9871004    ENDIF
    9881005
     
    10321049       ENDIF
    10331050
    1034        IF ( cloud_physics  .AND.  icloud_scheme == 0 )  THEN
     1051       IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    10351052          message_string = 'plant_canopy = .TRUE. requires cloud_scheme /=' // &
    10361053                           ' seifert_beheng'
     
    10951112    IF ( .NOT. ( loop_optimization == 'cache'  .OR.                            &
    10961113                 loop_optimization == 'vector' )                               &
    1097          .AND.  cloud_physics  .AND.  icloud_scheme == 0 )  THEN
     1114         .AND.  cloud_physics  .AND.  microphysics_seifert )  THEN
    10981115       message_string = 'cloud_scheme = seifert_beheng requires ' //           &
    10991116                        'loop_optimization = "cache" or "vector"'
     
    21522169!
    21532170!-- Set the default value for the integration interval of precipitation amount
    2154     IF ( precipitation )  THEN
     2171    IF ( microphysics_seifert  .OR.  microphysics_kessler )  THEN
    21552172       IF ( precipitation_amount_interval == 9999999.9_wp )  THEN
    21562173          precipitation_amount_interval = dt_do2d_xy
     
    27822799                                 'lemented for cloud_physics = .FALSE.'
    27832800                CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    2784              ELSEIF ( icloud_scheme /= 0 )  THEN
     2801             ELSEIF ( .NOT.  microphysics_seifert )  THEN
    27852802                message_string = 'data_output_pr = ' //                        &
    27862803                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    27872804                                 'lemented for cloud_scheme /= seifert_beheng'
    27882805                CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    2789              ELSEIF (  .NOT.  precipitation )  THEN
    2790                 message_string = 'data_output_pr = ' //                        &
    2791                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2792                                  'lemented for precipitation = .FALSE.'
    2793                 CALL message( 'check_parameters', 'PA0361', 1, 2, 0, 6, 0 )
    27942806             ELSE
    27952807                dopr_index(i) = 73
     
    28042816                                 'lemented for cloud_physics = .FALSE.'
    28052817                CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    2806              ELSEIF ( icloud_scheme /= 0 )  THEN
     2818             ELSEIF ( .NOT.  microphysics_seifert )  THEN
    28072819                message_string = 'data_output_pr = ' //                        &
    28082820                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
    28092821                                 'lemented for cloud_scheme /= seifert_beheng'
    28102822                CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    2811              ELSEIF (  .NOT.  precipitation )  THEN
    2812                 message_string = 'data_output_pr = ' //                        &
    2813                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2814                                  'lemented for precipitation = .FALSE.'
    2815                 CALL message( 'check_parameters', 'PA0361', 1, 2, 0, 6, 0 )
    28162823             ELSE
    28172824                dopr_index(i) = 74
     
    28262833                                 'lemented for cloud_physics = .FALSE.'
    28272834                CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    2828              ELSEIF ( icloud_scheme /= 0 )  THEN
    2829                 message_string = 'data_output_pr = ' //                        &
    2830                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2831                                  'lemented for cloud_scheme /= seifert_beheng'
    2832                 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    28332835             ELSE
    28342836                dopr_index(i) = 75
     
    28432845                                 'lemented for cloud_physics = .FALSE.'
    28442846                CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )
    2845              ELSEIF ( icloud_scheme /= 0 )  THEN
    2846                 message_string = 'data_output_pr = ' //                        &
    2847                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2848                                  'lemented for cloud_scheme /= seifert_beheng'
    2849                 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )
    2850              ELSEIF (  .NOT.  precipitation )  THEN
    2851                 message_string = 'data_output_pr = ' //                        &
    2852                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2853                                  'lemented for precipitation = .FALSE.'
    2854                 CALL message( 'check_parameters', 'PA0361', 1, 2, 0, 6, 0 )
    2855 
     2847             ELSEIF ( microphysics_sat_adjust )  THEN
     2848                message_string = 'data_output_pr = ' //                        &
     2849                                 TRIM( data_output_pr(i) ) // ' is not ava' // &
     2850                                 'ilable for cloud_scheme = saturation_adjust'
     2851                CALL message( 'check_parameters', 'PA0422', 1, 2, 0, 6, 0 )
    28562852             ELSE
    28572853                dopr_index(i) = 76
     
    32033199                         'res cloud_physics = .TRUE.'
    32043200                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3205              ELSEIF ( icloud_scheme /= 0 )  THEN
     3201             ELSEIF ( .NOT.  microphysics_seifert )  THEN
    32063202                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    32073203                         'res cloud_scheme = seifert_beheng'
     
    32243220                         'res cloud_physics = .TRUE.'
    32253221                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3226              ELSEIF ( icloud_scheme /= 0 )  THEN
    3227                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3228                          'res cloud_scheme = seifert_beheng'
    3229                 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )
    3230              ELSEIF (  .NOT.  precipitation )  THEN
    3231                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3232                                  'res precipitation = .TRUE.'
    3233                 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )
     3222             ELSEIF ( microphysics_sat_adjust )  THEN
     3223                message_string = 'output of "' // TRIM( var ) // '" is ' //  &
     3224                         'not available for cloud_scheme = saturation_adjust'
     3225                CALL message( 'check_parameters', 'PA0423', 1, 2, 0, 6, 0 )
    32343226             ENDIF
    32353227             unit = 'kg/kg m/s'
     
    32493241                         'res cloud_physics = .TRUE.'
    32503242                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3251              ELSEIF ( icloud_scheme /= 0 ) THEN
    3252                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3253                          'res cloud_scheme = seifert_beheng'
    3254                 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )
    32553243             ENDIF
    32563244             unit = 'kg/kg'
     
    32793267                         'res cloud_physics = .TRUE.'
    32803268                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    3281              ELSEIF ( icloud_scheme /= 0 ) THEN
     3269             ELSEIF ( .NOT.  microphysics_seifert ) THEN
    32823270                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    32833271                         'res cloud_scheme = seifert_beheng'
    32843272                CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )
    3285              ELSEIF (  .NOT.  precipitation )  THEN
    3286                 message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3287                                  'res precipitation = .TRUE.'
    3288                 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )
    32893273             ENDIF
    32903274             unit = 'kg/kg'
     
    33713355                CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )
    33723356             ENDIF
    3373              IF ( TRIM( var ) == 'pra*'  .AND.  .NOT. precipitation )  THEN
     3357             IF ( TRIM( var ) == 'pra*'  .AND.                                 &
     3358                  .NOT. ( microphysics_kessler .OR. microphysics_seifert ) )  THEN
    33743359                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3375                                  'res precipitation = .TRUE.'
     3360                                 'res cloud_scheme = kessler or seifert_beheng'
    33763361                CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )
    33773362             ENDIF
     
    33813366                CALL message( 'check_parameters', 'PA0113', 1, 2, 0, 6, 0 )
    33823367             ENDIF
    3383              IF ( TRIM( var ) == 'prr*'  .AND.  .NOT.  precipitation )  THEN
     3368             IF ( TRIM( var ) == 'prr*'  .AND.                                 &
     3369                  .NOT. ( microphysics_kessler .OR. microphysics_seifert ) )  THEN
    33843370                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
    3385                                  'res precipitation = .TRUE.'
     3371                                 'res cloud_scheme = kessler or seifert_beheng'
    33863372                CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )
    33873373             ENDIF
Note: See TracChangeset for help on using the changeset viewer.