Changeset 1551 for palm/trunk/SOURCE/check_parameters.f90
- Timestamp:
- Mar 3, 2015 2:18:16 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/check_parameters.f90
r1505 r1551 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! Added various checks for land surface and radiation model. In the course of this 23 ! action, the length of the variable var has to be increased 23 24 ! 24 25 ! Former revisions: … … 278 279 279 280 CHARACTER (LEN=1) :: sq !: 280 CHARACTER (LEN= 6):: var !:281 CHARACTER (LEN=15) :: var !: 281 282 CHARACTER (LEN=7) :: unit !: 282 283 CHARACTER (LEN=8) :: date !: … … 970 971 IF ( bc_pt_b == 'neumann' .OR. bc_q_b == 'neumann' ) THEN 971 972 message_string = 'lsm requires setting of'// & 972 'bc_pt_b = "dirichlet" and '// 973 'bc_pt_b = "dirichlet" and '// & 973 974 'bc_q_b = "dirichlet"' 974 975 CALL message( 'check_parameters', 'PA0399', 1, 2, 0, 6, 0 ) … … 988 989 CALL message( 'check_parameters', 'PA0401', 1, 2, 0, 6, 0 ) 989 990 ENDIF 991 992 IF ( min_canopy_resistance == 9999999.9_wp) THEN 993 message_string = 'veg_type = 0 (user_defined)'// & 994 'requires setting of min_canopy_resistance'// & 995 '/= 9999999.9' 996 CALL message( 'check_parameters', 'PA0415', 1, 2, 0, 6, 0 ) 997 ENDIF 998 999 IF ( leaf_area_index == 9999999.9_wp) THEN 1000 message_string = 'veg_type = 0 (user_defined)'// & 1001 'requires setting of leaf_area_index'// & 1002 '/= 9999999.9' 1003 CALL message( 'check_parameters', 'PA0416', 1, 2, 0, 6, 0 ) 1004 ENDIF 1005 1006 IF ( vegetation_coverage == 9999999.9_wp) THEN 1007 message_string = 'veg_type = 0 (user_defined)'// & 1008 'requires setting of vegetation_coverage'// & 1009 '/= 9999999.9' 1010 CALL message( 'check_parameters', 'PA0417', 1, 2, 0, 6, 0 ) 1011 ENDIF 1012 1013 IF ( canopy_resistance_coefficient == 9999999.9_wp) THEN 1014 message_string = 'veg_type = 0 (user_defined)'// & 1015 'requires setting of'// & 1016 'canopy_resistance_coefficient /= 9999999.9' 1017 CALL message( 'check_parameters', 'PA0418', 1, 2, 0, 6, 0 ) 1018 ENDIF 1019 1020 IF ( lambda_surface_stable == 9999999.9_wp) THEN 1021 message_string = 'veg_type = 0 (user_defined)'// & 1022 'requires setting of lambda_surface_stable'// & 1023 '/= 9999999.9' 1024 CALL message( 'check_parameters', 'PA0419', 1, 2, 0, 6, 0 ) 1025 ENDIF 1026 1027 IF ( lambda_surface_unstable == 9999999.9_wp) THEN 1028 message_string = 'veg_type = 0 (user_defined)'// & 1029 'requires setting of lambda_surface_unstable'// & 1030 '/= 9999999.9' 1031 CALL message( 'check_parameters', 'PA0420', 1, 2, 0, 6, 0 ) 1032 ENDIF 1033 1034 IF ( f_shortwave_incoming == 9999999.9_wp) THEN 1035 message_string = 'veg_type = 0 (user_defined)'// & 1036 'requires setting of f_shortwave_incoming'// & 1037 '/= 9999999.9' 1038 CALL message( 'check_parameters', 'PA0421', 1, 2, 0, 6, 0 ) 1039 ENDIF 1040 1041 IF ( z0_eb == 9999999.9_wp) THEN 1042 message_string = 'veg_type = 0 (user_defined)'// & 1043 'requires setting of z0_eb'// & 1044 '/= 9999999.9' 1045 CALL message( 'check_parameters', 'PA0422', 1, 2, 0, 6, 0 ) 1046 ENDIF 1047 1048 IF ( z0h_eb == 9999999.9_wp) THEN 1049 message_string = 'veg_type = 0 (user_defined)'// & 1050 'requires setting of z0h_eb'// & 1051 '/= 9999999.9' 1052 CALL message( 'check_parameters', 'PA0423', 1, 2, 0, 6, 0 ) 1053 ENDIF 1054 1055 1056 ENDIF 1057 1058 IF ( soil_type == 0 ) THEN 1059 1060 IF ( alpha_vangenuchten == 9999999.9_wp) THEN 1061 message_string = 'soil_type = 0 (user_defined)'// & 1062 'requires setting of alpha_vangenuchten'// & 1063 '/= 9999999.9' 1064 CALL message( 'check_parameters', 'PA0422', 1, 2, 0, 6, 0 ) 1065 ENDIF 1066 1067 IF ( l_vangenuchten == 9999999.9_wp) THEN 1068 message_string = 'soil_type = 0 (user_defined)'// & 1069 'requires setting of l_vangenuchten'// & 1070 '/= 9999999.9' 1071 CALL message( 'check_parameters', 'PA0423', 1, 2, 0, 6, 0 ) 1072 ENDIF 1073 1074 IF ( n_vangenuchten == 9999999.9_wp) THEN 1075 message_string = 'soil_type = 0 (user_defined)'// & 1076 'requires setting of n_vangenuchten'// & 1077 '/= 9999999.9' 1078 CALL message( 'check_parameters', 'PA0424', 1, 2, 0, 6, 0 ) 1079 ENDIF 1080 1081 IF ( hydraulic_conductivity == 9999999.9_wp) THEN 1082 message_string = 'soil_type = 0 (user_defined)'// & 1083 'requires setting of hydraulic_conductivity'// & 1084 '/= 9999999.9' 1085 CALL message( 'check_parameters', 'PA0425', 1, 2, 0, 6, 0 ) 1086 ENDIF 1087 1088 IF ( saturation_moisture == 9999999.9_wp) THEN 1089 message_string = 'soil_type = 0 (user_defined)'// & 1090 'requires setting of saturation_moisture'// & 1091 '/= 9999999.9' 1092 CALL message( 'check_parameters', 'PA0426', 1, 2, 0, 6, 0 ) 1093 ENDIF 1094 1095 IF ( field_capacity == 9999999.9_wp) THEN 1096 message_string = 'soil_type = 0 (user_defined)'// & 1097 'requires setting of field_capacity'// & 1098 '/= 9999999.9' 1099 CALL message( 'check_parameters', 'PA0427', 1, 2, 0, 6, 0 ) 1100 ENDIF 1101 1102 IF ( wilting_point == 9999999.9_wp) THEN 1103 message_string = 'soil_type = 0 (user_defined)'// & 1104 'requires setting of wilting_point'// & 1105 '/= 9999999.9' 1106 CALL message( 'check_parameters', 'PA0428', 1, 2, 0, 6, 0 ) 1107 ENDIF 1108 1109 IF ( residual_moisture == 9999999.9_wp) THEN 1110 message_string = 'soil_type = 0 (user_defined)'// & 1111 'requires setting of residual_moisture'// & 1112 '/= 9999999.9' 1113 CALL message( 'check_parameters', 'PA0429', 1, 2, 0, 6, 0 ) 1114 ENDIF 1115 990 1116 ENDIF 991 1117 … … 996 1122 ENDIF 997 1123 998 999 1124 END IF 1125 1126 IF ( radiation ) THEN 1127 IF ( radiation_scheme == 'constant' ) THEN 1128 irad_scheme = 0 1129 ELSEIF ( radiation_scheme == 'clear-sky' ) THEN 1130 irad_scheme = 1 1131 ELSEIF ( radiation_scheme == 'rrtm' ) THEN 1132 irad_scheme = 2 1133 ELSE 1134 message_string = 'unknown radiation_scheme = '// & 1135 TRIM( radiation_scheme ) 1136 CALL message( 'check_parameters', 'PA0430', 1, 2, 0, 6, 0 ) 1137 ENDIF 1138 ENDIF 1000 1139 1001 1140 … … 2862 3001 ENDIF 2863 3002 3003 CASE ( 't_soil', '#t_soil' ) 3004 IF ( .NOT. land_surface ) THEN 3005 message_string = 'data_output_pr = ' // & 3006 TRIM( data_output_pr(i) ) // ' is not imp' // & 3007 'lemented for land_surface = .FALSE.' 3008 CALL message( 'check_parameters', 'PA0403', 1, 2, 0, 6, 0 ) 3009 ELSE 3010 dopr_index(i) = 89 3011 dopr_unit(i) = 'K' 3012 hom(0:nzs-1,2,89,:) = SPREAD( - zs, 2, statistic_regions+1 ) 3013 IF ( data_output_pr(i)(1:1) == '#' ) THEN 3014 dopr_initial_index(i) = 90 3015 hom(0:nzs-1,2,90,:) = SPREAD( - zs, 2, statistic_regions+1 ) 3016 data_output_pr(i) = data_output_pr(i)(2:) 3017 ENDIF 3018 ENDIF 3019 3020 CASE ( 'm_soil', '#m_soil' ) 3021 IF ( .NOT. land_surface ) THEN 3022 message_string = 'data_output_pr = ' // & 3023 TRIM( data_output_pr(i) ) // ' is not imp' // & 3024 'lemented for land_surface = .FALSE.' 3025 CALL message( 'check_parameters', 'PA0403', 1, 2, 0, 6, 0 ) 3026 ELSE 3027 dopr_index(i) = 91 3028 dopr_unit(i) = 'm3/m3' 3029 hom(0:nzs-1,2,91,:) = SPREAD( - zs, 2, statistic_regions+1 ) 3030 IF ( data_output_pr(i)(1:1) == '#' ) THEN 3031 dopr_initial_index(i) = 92 3032 hom(0:nzs-1,2,92,:) = SPREAD( - zs, 2, statistic_regions+1 ) 3033 data_output_pr(i) = data_output_pr(i)(2:) 3034 ENDIF 3035 ENDIF 3036 2864 3037 2865 3038 CASE DEFAULT … … 2932 3105 ENDIF 2933 3106 ENDIF 3107 2934 3108 ! 2935 3109 !-- Check for allowed value and set units … … 2951 3125 ENDIF 2952 3126 unit = 'K' 3127 3128 CASE ( 'm_soil' ) 3129 IF ( .NOT. land_surface ) THEN 3130 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3131 'land_surface = .TRUE.' 3132 CALL message( 'check_parameters', 'PA0404', 1, 2, 0, 6, 0 ) 3133 ENDIF 3134 unit = 'm3/m3' 2953 3135 2954 3136 CASE ( 'nr' ) … … 3076 3258 unit = 'psu' 3077 3259 3078 CASE ( 'u*', 't*', 'lwp*', 'pra*', 'prr*', 'qsws*', 'shf*', 'z0*', 'z0h*' ) 3260 CASE ( 't_soil' ) 3261 IF ( .NOT. land_surface ) THEN 3262 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3263 'land_surface = .TRUE.' 3264 CALL message( 'check_parameters', 'PA0404', 1, 2, 0, 6, 0 ) 3265 ENDIF 3266 unit = 'K' 3267 3268 3269 CASE ( 'c_liq*', 'c_soil*', 'c_veg*', 'ghf_eb*', 'lai*', 'lwp*', & 3270 'm_liq_eb*', 'pra*', 'prr*', 'qsws*', 'qsws_eb*', & 3271 'qsws_liq_eb*', 'qsws_soil_eb*', 'qsws_veg_eb*', & 3272 'rad_net*', 'rad_sw_in*', 'shf*', 'shf_eb*', 't*', 'u*', & 3273 'z0*', 'z0h*' ) 3079 3274 IF ( k == 0 .OR. data_output(i)(ilen-2:ilen) /= '_xy' ) THEN 3080 3275 message_string = 'illegal value for data_output: "' // & … … 3083 3278 CALL message( 'check_parameters', 'PA0111', 1, 2, 0, 6, 0 ) 3084 3279 ENDIF 3280 IF ( TRIM( var ) == 'c_liq*' .AND. .NOT. land_surface ) THEN 3281 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3282 'res land_surface = .TRUE.' 3283 CALL message( 'check_parameters', 'PA0411', 1, 2, 0, 6, 0 ) 3284 ENDIF 3285 IF ( TRIM( var ) == 'c_soil*' .AND. .NOT. land_surface ) THEN 3286 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3287 'res land_surface = .TRUE.' 3288 CALL message( 'check_parameters', 'PA0412', 1, 2, 0, 6, 0 ) 3289 ENDIF 3290 IF ( TRIM( var ) == 'c_veg*' .AND. .NOT. land_surface ) THEN 3291 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3292 'res land_surface = .TRUE.' 3293 CALL message( 'check_parameters', 'PA0413', 1, 2, 0, 6, 0 ) 3294 ENDIF 3295 IF ( TRIM( var ) == 'ghf_eb*' .AND. .NOT. land_surface ) THEN 3296 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3297 'res land_surface = .TRUE.' 3298 CALL message( 'check_parameters', 'PA0405', 1, 2, 0, 6, 0 ) 3299 ENDIF 3300 IF ( TRIM( var ) == 'lai*' .AND. .NOT. land_surface ) THEN 3301 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3302 'res land_surface = .TRUE.' 3303 CALL message( 'check_parameters', 'PA0414', 1, 2, 0, 6, 0 ) 3304 ENDIF 3085 3305 IF ( TRIM( var ) == 'lwp*' .AND. .NOT. cloud_physics ) THEN 3086 3306 message_string = 'output of "' // TRIM( var ) // '" requi' // & … … 3088 3308 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3089 3309 ENDIF 3310 IF ( TRIM( var ) == 'm_liq_eb*' .AND. .NOT. land_surface ) THEN 3311 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3312 'res land_surface = .TRUE.' 3313 CALL message( 'check_parameters', 'PA0406', 1, 2, 0, 6, 0 ) 3314 ENDIF 3090 3315 IF ( TRIM( var ) == 'pra*' .AND. .NOT. precipitation ) THEN 3091 3316 message_string = 'output of "' // TRIM( var ) // '" requi' // & … … 3108 3333 CALL message( 'check_parameters', 'PA0322', 1, 2, 0, 6, 0 ) 3109 3334 ENDIF 3110 3335 IF ( TRIM( var ) == 'qsws_eb*' .AND. .NOT. land_surface ) THEN 3336 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3337 'res land_surface = .TRUE.' 3338 CALL message( 'check_parameters', 'PA0407', 1, 2, 0, 6, 0 ) 3339 ENDIF 3340 IF ( TRIM( var ) == 'qsws_liq_eb*' .AND. .NOT. land_surface ) & 3341 THEN 3342 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3343 'res land_surface = .TRUE.' 3344 CALL message( 'check_parameters', 'PA0408', 1, 2, 0, 6, 0 ) 3345 ENDIF 3346 IF ( TRIM( var ) == 'qsws_soil_eb*' .AND. .NOT. land_surface ) & 3347 THEN 3348 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3349 'res land_surface = .TRUE.' 3350 CALL message( 'check_parameters', 'PA0409', 1, 2, 0, 6, 0 ) 3351 ENDIF 3352 IF ( TRIM( var ) == 'qsws_veg_eb*' .AND. .NOT. land_surface ) & 3353 THEN 3354 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3355 'res land_surface = .TRUE.' 3356 CALL message( 'check_parameters', 'PA0410', 1, 2, 0, 6, 0 ) 3357 ENDIF 3358 3359 IF ( TRIM( var ) == 'c_liq*' ) unit = 'none' 3360 IF ( TRIM( var ) == 'c_soil*') unit = 'none' 3361 IF ( TRIM( var ) == 'c_veg*' ) unit = 'none' 3362 IF ( TRIM( var ) == 'ghf_eb*') unit = 'W/m2' 3363 IF ( TRIM( var ) == 'lai*' ) unit = 'none' 3111 3364 IF ( TRIM( var ) == 'lwp*' ) unit = 'kg/kg*m' 3112 3365 IF ( TRIM( var ) == 'pra*' ) unit = 'mm' 3113 3366 IF ( TRIM( var ) == 'prr*' ) unit = 'mm/s' 3114 3367 IF ( TRIM( var ) == 'qsws*' ) unit = 'kgm/kgs' 3368 IF ( TRIM( var ) == 'qsws_eb*' ) unit = 'W/m2' 3369 IF ( TRIM( var ) == 'qsws_liq_eb*' ) unit = 'W/m2' 3370 IF ( TRIM( var ) == 'qsws_soil_eb*' ) unit = 'W/m2' 3371 IF ( TRIM( var ) == 'qsws_veg_eb*' ) unit = 'W/m2' 3372 IF ( TRIM( var ) == 'rad_net*') unit = 'W/m2' 3373 IF ( TRIM( var ) == 'rad_sw_in*') unit = 'W/m2' 3115 3374 IF ( TRIM( var ) == 'shf*' ) unit = 'K*m/s' 3375 IF ( TRIM( var ) == 'shf_eb*') unit = 'W/m2' 3116 3376 IF ( TRIM( var ) == 't*' ) unit = 'K' 3117 3377 IF ( TRIM( var ) == 'u*' ) unit = 'm/s' … … 3129 3389 3130 3390 CASE DEFAULT 3391 3131 3392 CALL user_check_data_output( var, unit ) 3132 3393 … … 3137 3398 CALL message( 'check_parameters', 'PA0114', 1, 2, 0, 6, 0 ) 3138 3399 ELSE 3139 message_string = 'illegal value for data_output = ' //&3400 message_string = 'illegal value for data_output = "' // & 3140 3401 TRIM( data_output(i) ) // '"' 3141 3402 CALL message( 'check_parameters', 'PA0115', 1, 2, 0, 6, 0 )
Note: See TracChangeset
for help on using the changeset viewer.