Ignore:
Timestamp:
Apr 30, 2015 7:05:52 AM (10 years ago)
Author:
maronga
Message:

Added support for RRTMG radiation code

File:
1 edited

Legend:

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

    r1576 r1585  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Added support for RRTMG
    2323!
    2424! Former revisions:
     
    11431143
    11441144    IF ( radiation )  THEN
    1145        IF ( radiation_scheme == 'constant' )  THEN
    1146           irad_scheme = 0
    1147        ELSEIF ( radiation_scheme == 'clear-sky' )  THEN
    1148           irad_scheme = 1
    1149        ELSEIF ( radiation_scheme == 'rrtm' )  THEN
    1150           irad_scheme = 2
    1151        ELSE
     1145       IF ( radiation_scheme /= 'constant'  .AND.                              &
     1146            radiation_scheme /= 'clear-sky' .AND.                              &
     1147            radiation_scheme /= 'rrtmg' )  THEN
    11521148          message_string = 'unknown radiation_scheme = '//                     &
    11531149                           TRIM( radiation_scheme )
    11541150          CALL message( 'check_parameters', 'PA0405', 1, 2, 0, 6, 0 )
     1151       ELSEIF ( radiation_scheme == 'rrtmg' )  THEN
     1152#if ! defined ( __rrtmg )
     1153          message_string = 'radiation_scheme = "rrtmg" requires ' //           &
     1154                           'compilation of PALM with pre-processor ' //        &
     1155                           'directive -D__rrtmg'
     1156          CALL message( 'check_parameters', 'PA0407', 1, 2, 0, 6, 0 )
     1157#endif
     1158       ENDIF
     1159       IF ( albedo_type == 0 .AND. albedo == 9999999.9_wp .AND.                &
     1160            radiation_scheme == 'clear-sky')  THEN
     1161          message_string = 'radiation_scheme = "clear-sky" in combination' //  &
     1162                           'with albedo_type = 0 requires setting of albedo'// &
     1163                           ' /= 9999999.9'
     1164          CALL message( 'check_parameters', 'PA0410', 1, 2, 0, 6, 0 )
    11551165       ENDIF
    11561166    ENDIF
     
    30583068             ENDIF
    30593069
     3070          CASE ( 'rad_lw_in' )
     3071             IF ( (.NOT. radiation) .OR. radiation_scheme == 'constant' )  THEN
     3072                message_string = 'data_output_pr = ' //                        &
     3073                                 TRIM( data_output_pr(i) ) // ' is not ava' // &
     3074                                 'lable for radiation = .FALSE. or ' //        &
     3075                                 'radiation_scheme = "constant"'
     3076                CALL message( 'check_parameters', 'PA0408', 1, 2, 0, 6, 0 )
     3077             ELSE
     3078                dopr_index(i) = 102
     3079                dopr_unit(i)  = 'W/m2'
     3080                hom(:,2,102,:)  = SPREAD( zw, 2, statistic_regions+1 )
     3081             ENDIF
     3082
     3083          CASE ( 'rad_lw_out' )
     3084             IF ( (.NOT. radiation) .OR. radiation_scheme == 'constant' )  THEN
     3085                message_string = 'data_output_pr = ' //                        &
     3086                                 TRIM( data_output_pr(i) ) // ' is not ava' // &
     3087                                 'lable for radiation = .FALSE. or ' //        &
     3088                                 'radiation_scheme = "constant"'
     3089                CALL message( 'check_parameters', 'PA0408', 1, 2, 0, 6, 0 )
     3090             ELSE
     3091                dopr_index(i) = 103
     3092                dopr_unit(i)  = 'W/m2'
     3093                hom(:,2,103,:)  = SPREAD( zw, 2, statistic_regions+1 )
     3094             ENDIF
     3095
     3096          CASE ( 'rad_sw_in' )
     3097             IF ( (.NOT. radiation) .OR. radiation_scheme == 'constant' )  THEN
     3098                message_string = 'data_output_pr = ' //                        &
     3099                                 TRIM( data_output_pr(i) ) // ' is not ava' // &
     3100                                 'lable for radiation = .FALSE. or ' //        &
     3101                                 'radiation_scheme = "constant"'
     3102                CALL message( 'check_parameters', 'PA0408', 1, 2, 0, 6, 0 )
     3103             ELSE
     3104                dopr_index(i) = 104
     3105                dopr_unit(i)  = 'W/m2'
     3106                hom(:,2,104,:)  = SPREAD( zw, 2, statistic_regions+1 )
     3107             ENDIF
     3108
     3109          CASE ( 'rad_sw_out')
     3110             IF ( (.NOT. radiation) .OR. radiation_scheme == 'constant' )  THEN
     3111                message_string = 'data_output_pr = ' //                        &
     3112                                 TRIM( data_output_pr(i) ) // ' is not ava' // &
     3113                                 'lable for radiation = .FALSE. or ' //        &
     3114                                 'radiation_scheme = "constant"'
     3115                CALL message( 'check_parameters', 'PA0408', 1, 2, 0, 6, 0 )
     3116             ELSE
     3117                dopr_index(i) = 105
     3118                dopr_unit(i)  = 'W/m2'
     3119                hom(:,2,105,:)  = SPREAD( zw, 2, statistic_regions+1 )
     3120             ENDIF
    30603121
    30613122          CASE DEFAULT
     
    32573318             unit = 'kg/kg'
    32583319
     3320
     3321          CASE ( 'rad_lw_in', 'rad_lw_out', 'rad_sw_in', 'rad_sw_out' )
     3322             IF ( .NOT. radiation .OR. radiation_scheme /= 'rrtmg' )  THEN
     3323                message_string = '"output of "' // TRIM( var ) // '" requi' //  &
     3324                                 'res radiation = .TRUE. and ' //              &
     3325                                 'radiation_scheme = "rrtmg"'
     3326                CALL message( 'check_parameters', 'PA0406', 1, 2, 0, 6, 0 )
     3327             ENDIF
     3328             unit = 'W/m2'
     3329
    32593330          CASE ( 'rho' )
    32603331             IF ( .NOT. ocean )  THEN
     
    32933364                 'm_liq_eb*', 'pra*', 'prr*', 'qsws*', 'qsws_eb*',             &
    32943365                 'qsws_liq_eb*', 'qsws_soil_eb*', 'qsws_veg_eb*', 'rad_net*',  &
    3295                  'rad_sw_in*', 'r_a*', 'r_s*', 'shf*', 'shf_eb*', 't*',        &
    3296                  'u*', 'z0*', 'z0h*' )
     3366                 'rrtm_aldif*', 'rrtm_aldir*', 'rrtm_asdif*', 'rrtm_asdir*',   &
     3367                 'r_a*', 'r_s*', 'shf*', 'shf_eb*', 't*', 'u*', 'z0*', 'z0h*' )
    32973368             IF ( k == 0  .OR.  data_output(i)(ilen-2:ilen) /= '_xy' )  THEN
    32983369                message_string = 'illegal value for data_output: "' //         &
     
    33013372                CALL message( 'check_parameters', 'PA0111', 1, 2, 0, 6, 0 )
    33023373             ENDIF
     3374             IF ( .NOT. radiation .OR. radiation_scheme /= "rrtmg" )  THEN
     3375                IF ( TRIM( var ) == 'rrtm_aldif*' .OR.                         &
     3376                     TRIM( var ) == 'rrtm_aldir*' .OR.                         &
     3377                     TRIM( var ) == 'rrtm_asdif*' .OR.                         &
     3378                     TRIM( var ) == 'rrtm_asdir*'      )                       &
     3379                THEN
     3380                   message_string = 'output of "' // TRIM( var ) // '" require'&
     3381                                    // 's radiation = .TRUE. and radiation_sch'&
     3382                                    // 'eme = "rrtmg"'
     3383                   CALL message( 'check_parameters', 'PA0409', 1, 2, 0, 6, 0 )
     3384                ENDIF
     3385             ENDIF
     3386
    33033387             IF ( TRIM( var ) == 'c_liq*'  .AND.  .NOT. land_surface )  THEN
    33043388                message_string = 'output of "' // TRIM( var ) // '" requi' //  &
     
    34053489             IF ( TRIM( var ) == 'qsws_soil_eb*' ) unit = 'W/m2'
    34063490             IF ( TRIM( var ) == 'qsws_veg_eb*'  ) unit = 'W/m2'
    3407              IF ( TRIM( var ) == 'rad_net*')       unit = 'W/m2'     
    3408              IF ( TRIM( var ) == 'rad_sw_in*')     unit = 'W/m2'
     3491             IF ( TRIM( var ) == 'rad_net*'      ) unit = 'W/m2'   
     3492             IF ( TRIM( var ) == 'rrtm_aldif*'   ) unit = ''   
     3493             IF ( TRIM( var ) == 'rrtm_aldir*'   ) unit = ''
     3494             IF ( TRIM( var ) == 'rrtm_asdif*'   ) unit = ''
     3495             IF ( TRIM( var ) == 'rrtm_asdir*'   ) unit = ''
    34093496             IF ( TRIM( var ) == 'r_a*')     unit = 's/m'     
    34103497             IF ( TRIM( var ) == 'r_s*')     unit = 's/m'
Note: See TracChangeset for help on using the changeset viewer.