Ignore:
Timestamp:
Nov 18, 2008 9:54:31 AM (15 years ago)
Author:
raasch
Message:

precompilation mechanism completely revised: now one depository per configuration block, further change of output messages

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE

    • Property svn:ignore set to
      palm_sources.tar
  • palm/trunk/SOURCE/check_parameters.f90

    r214 r215  
    938938!-- Ocean version must use flux boundary conditions at the top
    939939    IF ( ocean .AND. .NOT. use_top_fluxes )  THEN
    940        IF ( myid == 0 )  PRINT*, '+++ check_parameters: use_top_fluxes ',&
    941                                     'must be .TRUE. in ocean version'
    942        CALL local_stop
     940       message_string = 'use_top_fluxes must be .TRUE. in ocean version'
     941       CALL handle_palm_message( 'check_parameters', 'PA0042', 1, 2, 0, 6, 0 )
    943942    ENDIF
    944943
     
    947946    IF ( alpha_surface /= 0.0 )  THEN
    948947       IF ( ABS( alpha_surface ) > 90.0 )  THEN
    949           IF ( myid == 0 )  PRINT*, '+++ check_parameters: ABS( alpha_surface',&
    950                                     '=', alpha_surface, ' ) must be < 90.0'
    951           CALL local_stop
     948          WRITE( message_string, * ) 'ABS( alpha_surface = ', alpha_surface, &
     949                                     ' ) must be < 90.0'
     950          CALL handle_palm_message( 'check_parameters', 'PA0043', 1, 2, 0, 6, &
     951                                    0 )
    952952       ENDIF
    953953       sloping_surface = .TRUE.
     
    960960    IF ( dt /= -1.0 )  THEN
    961961       IF ( dt <= 0.0  .AND.  dt /= -1.0 )  THEN
    962           IF ( myid == 0 )  PRINT*, '+++ check_parameters:  dt=', dt, ' <= 0.0'
    963           CALL local_stop
     962          WRITE( message_string, * ) 'dt = ', dt , ' <= 0.0'
     963          CALL handle_palm_message( 'check_parameters', 'PA0044', 1, 2, 0, 6, &
     964                                    0 )
    964965       ENDIF
    965966       dt_3d = dt
     
    982983          ENDIF
    983984       ELSE
    984           IF ( myid == 0 )  THEN
    985              PRINT*, '+++ check_parameters: cfl_factor=', cfl_factor, &
    986                          ' out of range'
    987              PRINT*, '+++                   0.0 < cfl_factor <= 1.0 is required'
    988           ENDIF
    989           CALL local_stop
     985          WRITE( message_string, * ) 'cfl_factor = ', cfl_factor, &
     986                 ' out of range & 0.0 < cfl_factor <= 1.0 is required'
     987          CALL handle_palm_message( 'check_parameters', 'PA0045', 1, 2, 0, 6, &
     988                                    0 )
    990989       ENDIF
    991990    ENDIF
     
    10051004       ELSEIF ( use_ug_for_galilei_tr .AND.                &
    10061005                ug_vertical_gradient_level(1) /= 0.0 )  THEN
    1007           IF ( myid == 0 )  THEN
    1008              PRINT*, '+++ check_parameters:'
    1009              PRINT*, '    baroclinicity (ug) not allowed'
    1010              PRINT*, '    simultaneously with galilei transformation'
    1011           ENDIF
    1012           CALL local_stop
     1006          message_string = 'baroclinicity (ug) not allowed simultaneously' // &
     1007                           ' with galilei transformation'
     1008          CALL handle_palm_message( 'check_parameters', 'PA0046', 1, 2, 0, 6, &
     1009                                    0 )
    10131010       ELSEIF ( use_ug_for_galilei_tr .AND.                &
    10141011                vg_vertical_gradient_level(1) /= 0.0 )  THEN
    1015           IF ( myid == 0 )  THEN
    1016              PRINT*, '+++ check_parameters:'
    1017              PRINT*, '    baroclinicity (vg) not allowed'
    1018              PRINT*, '    simultaneously with galilei transformation'
    1019           ENDIF
    1020           CALL local_stop
     1012          message_string = 'baroclinicity (vg) not allowed simultaneously' // &
     1013                           ' with galilei transformation'
     1014          CALL handle_palm_message( 'check_parameters', 'PA0047', 1, 2, 0, 6, &
     1015                                    0 )
    10211016       ELSE
    1022           IF ( myid == 0 )  THEN
    1023              PRINT*, '+++ WARNING: check_parameters:'
    1024              PRINT*, '    variable translation speed used for galilei-tran' // &
    1025                           'sformation, which'
    1026              PRINT*, '    may cause instabilities in stably stratified regions'
    1027           ENDIF
     1017          message_string = 'variable translation speed used for galilei-' // &
     1018             'transformation, which may cause & instabilities in stably ' // &
     1019             'stratified regions'
     1020          CALL handle_palm_message( 'check_parameters', 'PA0048', 0, 1, 0, 6, &
     1021                                    0 )
    10281022       ENDIF
    10291023    ENDIF
     
    10391033    IF ( bc_lr /= 'cyclic'  .AND.  bc_lr /= 'dirichlet/radiation'  .AND. &
    10401034         bc_lr /= 'radiation/dirichlet' )  THEN
    1041        IF ( myid == 0 )  THEN
    1042           PRINT*, '+++ check_parameters:'
    1043           PRINT*, '    unknown boundary condition: bc_lr = ', bc_lr
    1044        ENDIF
    1045        CALL local_stop
     1035       message_string = 'unknown boundary condition: bc_lr = "' // &
     1036                        TRIM( bc_lr ) // '"'
     1037       CALL handle_palm_message( 'check_parameters', 'PA0049', 1, 2, 0, 6, 0 )
    10461038    ENDIF
    10471039    IF ( bc_ns /= 'cyclic'  .AND.  bc_ns /= 'dirichlet/radiation'  .AND. &
    10481040         bc_ns /= 'radiation/dirichlet' )  THEN
    1049        IF ( myid == 0 )  THEN
    1050           PRINT*, '+++ check_parameters:'
    1051           PRINT*, '    unknown boundary condition: bc_ns = ', bc_ns
    1052        ENDIF
    1053        CALL local_stop
     1041       message_string = 'unknown boundary condition: bc_ns = "' // &
     1042                        TRIM( bc_ns ) // '"'
     1043       CALL handle_palm_message( 'check_parameters', 'PA0050', 1, 2, 0, 6, 0 )
    10541044    ENDIF
    10551045
     
    10601050    IF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  THEN
    10611051       IF ( psolver /= 'multigrid' )  THEN
    1062           IF ( myid == 0 )  THEN
    1063              PRINT*, '+++ check_parameters:'
    1064              PRINT*, '    non-cyclic lateral boundaries do not allow', &
    1065                           ' psolver = ', psolver
    1066           ENDIF
    1067           CALL local_stop
     1052          message_string = 'non-cyclic lateral boundaries do not allow ' // &
     1053                           'psolver = "' // TRIM( psolver ) // '"'
     1054          CALL handle_palm_message( 'check_parameters', 'PA0051', 1, 2, 0, 6, &
     1055                                    0 )
    10681056       ENDIF
    10691057       IF ( momentum_advec /= 'pw-scheme' )  THEN
    1070           IF ( myid == 0 )  THEN
    1071              PRINT*, '+++ check_parameters:'
    1072              PRINT*, '    non-cyclic lateral boundaries do not allow', &
    1073                           ' momentum_advec = ', momentum_advec
    1074           ENDIF
    1075           CALL local_stop
     1058          message_string = 'non-cyclic lateral boundaries do not allow ' // &
     1059                           'momentum_advec = "' // TRIM( momentum_advec ) // '"'
     1060          CALL handle_palm_message( 'check_parameters', 'PA0052', 1, 2, 0, 6, &
     1061                                    0 )
    10761062       ENDIF
    10771063       IF ( scalar_advec /= 'pw-scheme' )  THEN
    1078           IF ( myid == 0 )  THEN
    1079              PRINT*, '+++ check_parameters:'
    1080              PRINT*, '    non-cyclic lateral boundaries do not allow', &
    1081                           ' scalar_advec = ', scalar_advec
    1082           ENDIF
    1083           CALL local_stop
     1064          message_string = 'non-cyclic lateral boundaries do not allow ' // &
     1065                           'scalar_advec = "' // TRIM( scalar_advec ) // '"'
     1066          CALL handle_palm_message( 'check_parameters', 'PA0053', 1, 2, 0, 6, &
     1067                                    0 )
    10841068       ENDIF
    10851069       IF ( galilei_transformation )  THEN
    1086           IF ( myid == 0 )  THEN
    1087              PRINT*, '+++ check_parameters:'
    1088              PRINT*, '    non-cyclic lateral boundaries do not allow', &
    1089                           ' galilei_transformation = .T.'
    1090           ENDIF
    1091           CALL local_stop
    1092        ENDIF
    1093 !       IF ( conserve_volume_flow )  THEN
    1094 !          IF ( myid == 0 )  THEN
    1095 !             PRINT*, '+++ check_parameters:'
    1096 !             PRINT*, '    non-cyclic lateral boundaries do not allow', &
    1097 !                          ' conserve_volume_flow = .T.'
    1098 !          ENDIF
    1099 !          CALL local_stop
    1100 !       ENDIF
     1070          message_string = 'non-cyclic lateral boundaries do not allow ' // &
     1071                           'galilei_transformation = .T.'
     1072          CALL handle_palm_message( 'check_parameters', 'PA0054', 1, 2, 0, 6, &
     1073                                    0 )
     1074       ENDIF
    11011075    ENDIF
    11021076
     
    11061080       ibc_e_b = 1
    11071081       IF ( adjust_mixing_length  .AND.  prandtl_layer )  THEN
    1108           IF ( myid == 0 )  THEN
    1109              PRINT*, '+++ WARNING: check_parameters:'
    1110              PRINT*, '    adjust_mixing_length = TRUE and bc_e_b = ', bc_e_b
    1111           ENDIF
     1082          message_string = 'adjust_mixing_length = TRUE and bc_e_b = "neumann"'
     1083          CALL handle_palm_message( 'check_parameters', 'PA0055', 0, 1, 0, 6, &
     1084                                    0 )
    11121085       ENDIF
    11131086    ELSEIF ( bc_e_b == '(u*)**2+neumann' )  THEN
    11141087       ibc_e_b = 2
    11151088       IF ( .NOT. adjust_mixing_length  .AND.  prandtl_layer )  THEN
    1116           IF ( myid == 0 )  THEN
    1117              PRINT*, '+++ WARNING: check_parameters:'
    1118              PRINT*, '    adjust_mixing_length = FALSE and bc_e_b = ', bc_e_b
    1119           ENDIF
     1089          message_string = 'adjust_mixing_length = FALSE and bc_e_b = "' // &
     1090                           TRIM( bc_e_b ) // '"'
     1091          CALL handle_palm_message( 'check_parameters', 'PA0056', 0, 1, 0, 6, &
     1092                                    0 )
    11201093       ENDIF
    11211094       IF ( .NOT. prandtl_layer )  THEN
    11221095          bc_e_b = 'neumann'
    11231096          ibc_e_b = 1
    1124           IF ( myid == 0 )  THEN
    1125              PRINT*, '+++ WARNING: check_parameters:'
    1126              PRINT*, '    boundary condition bc_e_b changed to "', bc_e_b, '"'
    1127           ENDIF
     1097          message_string = 'boundary condition bc_e_b changed to "' // &
     1098                           TRIM( bc_e_b ) // '"'
     1099          CALL handle_palm_message( 'check_parameters', 'PA0057', 0, 1, 0, 6, &
     1100                                    0 )
    11281101       ENDIF
    11291102    ELSE
    1130        IF ( myid == 0 )  THEN
    1131           PRINT*, '+++ check_parameters:'
    1132           PRINT*, '    unknown boundary condition: bc_e_b = ', bc_e_b
    1133        ENDIF
    1134        CALL local_stop
     1103       message_string = 'unknown boundary condition: bc_e_b = "' // &
     1104                        TRIM( bc_e_b ) // '"'
     1105       CALL handle_palm_message( 'check_parameters', 'PA0058', 1, 2, 0, 6, 0 )
    11351106    ENDIF
    11361107
     
    11441115       ibc_p_b = 2
    11451116    ELSE
    1146        IF ( myid == 0 )  THEN
    1147           PRINT*, '+++ check_parameters:'
    1148           PRINT*, '    unknown boundary condition: bc_p_b = ', bc_p_b
    1149        ENDIF
    1150        CALL local_stop
     1117       message_string = 'unknown boundary condition: bc_p_b = "' // &
     1118                        TRIM( bc_p_b ) // '"'
     1119       CALL handle_palm_message( 'check_parameters', 'PA0059', 1, 2, 0, 6, 0 )
    11511120    ENDIF
    11521121    IF ( ibc_p_b == 2  .AND.  .NOT. prandtl_layer )  THEN
    1153        IF ( myid == 0 )  THEN
    1154           PRINT*, '+++ check_parameters:'
    1155           PRINT*, '    boundary condition: bc_p_b = ', TRIM( bc_p_b ), &
    1156                        ' not allowed with'
    1157           PRINT*, '    prandtl_layer = .FALSE.'
    1158        ENDIF
    1159        CALL local_stop
     1122       message_string = 'boundary condition: bc_p_b = "' // TRIM( bc_p_b ) // &
     1123                        '" not allowed with prandtl_layer = .FALSE.'
     1124       CALL handle_palm_message( 'check_parameters', 'PA0060', 1, 2, 0, 6, 0 )
    11601125    ENDIF
    11611126    IF ( bc_p_t == 'dirichlet' )  THEN
     
    11641129       ibc_p_t = 1
    11651130    ELSE
    1166        IF ( myid == 0 )  THEN
    1167           PRINT*, '+++ check_parameters:'
    1168           PRINT*, '    unknown boundary condition: bc_p_t = ', bc_p_t
    1169        ENDIF
    1170        CALL local_stop
     1131       message_string = 'unknown boundary condition: bc_p_t = "' // &
     1132                        TRIM( bc_p_t ) // '"'
     1133       CALL handle_palm_message( 'check_parameters', 'PA0061', 1, 2, 0, 6, 0 )
    11711134    ENDIF
    11721135
     
    11811144          ibc_pt_b = 1
    11821145       ELSE
    1183           IF ( myid == 0 )  THEN
    1184              PRINT*, '+++ check_parameters:'
    1185              PRINT*, '    unknown boundary condition: bc_pt_b = ', bc_pt_b
    1186           ENDIF
    1187           CALL local_stop
     1146          message_string = 'unknown boundary condition: bc_pt_b = "' // &
     1147                           TRIM( bc_pt_b ) // '"'
     1148          CALL handle_palm_message( 'check_parameters', 'PA0062', 1, 2, 0, 6, &
     1149                                    0 )
    11881150       ENDIF
    11891151    ENDIF
     
    11961158       ibc_pt_t = 2
    11971159    ELSE
    1198        IF ( myid == 0 )  THEN
    1199           PRINT*, '+++ check_parameters:'
    1200           PRINT*, '    unknown boundary condition: bc_pt_t = ', bc_pt_t
    1201        ENDIF
    1202        CALL local_stop
     1160       message_string = 'unknown boundary condition: bc_pt_t = "' // &
     1161                        TRIM( bc_pt_t ) // '"'
     1162       CALL handle_palm_message( 'check_parameters', 'PA0063', 1, 2, 0, 6, 0 )
    12031163    ENDIF
    12041164
     
    12091169       constant_top_momentumflux = .TRUE.
    12101170    ELSEIF (  .NOT. ( top_momentumflux_u == 9999999.9  .AND.  &
    1211            top_momentumflux_v == 9999999.9 ) )  THEN   
    1212        IF ( myid == 0 )  THEN
    1213           PRINT*, '+++ check_parameters:'
    1214           PRINT*, '    both, top_momentumflux_u AND top_momentumflux_v'
    1215           PRINT*, '    must be set'
    1216        ENDIF
    1217        CALL local_stop
     1171           top_momentumflux_v == 9999999.9 ) )  THEN
     1172       message_string = 'both, top_momentumflux_u AND top_momentumflux_v ' // &
     1173                        'must be set'
     1174       CALL handle_palm_message( 'check_parameters', 'PA0064', 1, 2, 0, 6, 0 )
    12181175    ENDIF
    12191176
     
    12241181    IF ( ibc_pt_b == 0  .AND.   constant_heatflux  .AND. &
    12251182         surface_heatflux /= 0.0 )  THEN
    1226        IF ( myid == 0 )  THEN
    1227           PRINT*, '+++ check_parameters:'
    1228           PRINT*, '    boundary_condition: bc_pt_b = ', bc_pt_b
    1229           PRINT*, '    is not allowed with constant_heatflux = .TRUE.'
    1230        ENDIF
    1231        CALL local_stop
     1183       message_string = 'boundary_condition: bc_pt_b = "' // TRIM( bc_pt_b ) //&
     1184                        '& is not allowed with constant_heatflux = .TRUE.'
     1185       CALL handle_palm_message( 'check_parameters', 'PA0065', 1, 2, 0, 6, 0 )
    12321186    ENDIF
    12331187    IF ( constant_heatflux  .AND.  pt_surface_initial_change /= 0.0 )  THEN
    1234        IF ( myid == 0 )  THEN
    1235           PRINT*, '+++ check_parameters: constant_heatflux = .TRUE. is not'
    1236           PRINT*, '    allowed with pt_surface_initial_change (/=0) = ', &
    1237                   pt_surface_initial_change
    1238        ENDIF
    1239        CALL local_stop
     1188       WRITE ( message_string, * )  'constant_heatflux = .TRUE. is not allo', &
     1189               'wed with pt_surface_initial_change (/=0) = ', &
     1190               pt_surface_initial_change
     1191       CALL handle_palm_message( 'check_parameters', 'PA0066', 1, 2, 0, 6, 0 )
    12401192    ENDIF
    12411193
     
    12461198    IF ( ibc_pt_t == 0  .AND.   constant_top_heatflux  .AND. &
    12471199         top_heatflux /= 0.0 )  THEN
    1248        IF ( myid == 0 )  THEN
    1249           PRINT*, '+++ check_parameters:'
    1250           PRINT*, '    boundary_condition: bc_pt_t = ', bc_pt_t
    1251           PRINT*, '    is not allowed with constant_top_heatflux = .TRUE.'
    1252        ENDIF
    1253        CALL local_stop
     1200       message_string = 'boundary_condition: bc_pt_t = "' // TRIM( bc_pt_t ) //&
     1201                        '" is not allowed with constant_top_heatflux = .TRUE.'
     1202       CALL handle_palm_message( 'check_parameters', 'PA0067', 1, 2, 0, 6, 0 )
    12541203    ENDIF
    12551204
     
    12621211          ibc_sa_t = 1
    12631212       ELSE
    1264           IF ( myid == 0 )  THEN
    1265              PRINT*, '+++ check_parameters:'
    1266              PRINT*, '    unknown boundary condition: bc_sa_t = ', bc_sa_t
    1267           ENDIF
    1268           CALL local_stop
     1213          message_string = 'unknown boundary condition: bc_sa_t = "' // &
     1214                           TRIM( bc_sa_t ) // '"'
     1215          CALL handle_palm_message( 'check_parameters', 'PA0068', 1, 2, 0, 6, &
     1216                                    0 )
    12691217       ENDIF
    12701218
    12711219       IF ( top_salinityflux == 9999999.9 )  constant_top_salinityflux = .FALSE.
    12721220       IF ( ibc_sa_t == 1  .AND.   top_salinityflux == 9999999.9 )  THEN
    1273           IF ( myid == 0 )  THEN
    1274              PRINT*, '+++ check_parameters:'
    1275              PRINT*, '    boundary_condition: bc_sa_t = ', bc_sa_t
    1276              PRINT*, '    requires to set top_salinityflux '
    1277           ENDIF
    1278           CALL local_stop
     1221          message_string = 'boundary condition: bc_sa_t = "' // &
     1222                           TRIM( bc_sa_t ) // '" requires to set ' // &
     1223                           'top_salinityflux'
     1224          CALL handle_palm_message( 'check_parameters', 'PA0069', 1, 2, 0, 6, &
     1225                                    0 )
    12791226       ENDIF
    12801227
     
    12851232       IF ( ibc_sa_t == 0  .AND.   constant_top_salinityflux  .AND. &
    12861233            top_salinityflux /= 0.0 )  THEN
    1287           IF ( myid == 0 )  THEN
    1288              PRINT*, '+++ check_parameters:'
    1289              PRINT*, '    boundary_condition: bc_sa_t = ', bc_sa_t
    1290              PRINT*, '    is not allowed with constant_top_salinityflux = ', &
    1291                           '.TRUE.'
    1292           ENDIF
    1293           CALL local_stop
     1234          message_string = 'boundary condition: bc_sa_t = "' // &
     1235                           TRIM( bc_sa_t ) // '" is not allowed with ' // &
     1236                           'constant_top_salinityflux = .TRUE.'
     1237          CALL handle_palm_message( 'check_parameters', 'PA0070', 1, 2, 0, 6, &
     1238                                    0 )
    12941239       ENDIF
    12951240
     
    13101255          ibc_q_b = 1
    13111256       ELSE
    1312           IF ( myid == 0 )  THEN
    1313              PRINT*, '+++ check_parameters:'
    1314              PRINT*, '    unknown boundary condition: bc_', sq, '_b = ', bc_q_b
    1315           ENDIF
    1316           CALL local_stop
     1257          message_string = 'unknown boundary condition: bc_' // TRIM( sq ) // &
     1258                           '_b ="' // TRIM( bc_q_b ) // '"'
     1259          CALL handle_palm_message( 'check_parameters', 'PA0071', 1, 2, 0, 6, &
     1260                                    0 )
    13171261       ENDIF
    13181262       IF ( bc_q_t == 'dirichlet' )  THEN
     
    13211265          ibc_q_t = 1
    13221266       ELSE
    1323           IF ( myid == 0 )  THEN
    1324              PRINT*, '+++ check_parameters:'
    1325              PRINT*, '    unknown boundary condition: bc_', sq, '_t = ', bc_q_t
    1326           ENDIF
    1327           CALL local_stop
     1267          message_string = 'unknown boundary condition: bc_' // TRIM( sq ) // &
     1268                           '_t ="' // TRIM( bc_q_t ) // '"'
     1269          CALL handle_palm_message( 'check_parameters', 'PA0072', 1, 2, 0, 6, &
     1270                                    0 )
    13281271       ENDIF
    13291272
     
    13351278!--    forbidden.
    13361279       IF ( ibc_q_b == 0  .AND.  constant_waterflux )  THEN
    1337           IF ( myid == 0 )  THEN
    1338              PRINT*, '+++ check_parameters:'
    1339              PRINT*, '    boundary_condition: bc_', sq, '_b = ', bc_q_b
    1340              PRINT*, '    is not allowed with prescribed surface flux'
    1341           ENDIF
    1342           CALL local_stop
     1280          message_string = 'boundary condition: bc_' // TRIM( sq ) // '_b ' // &
     1281                           '= "' // TRIM( bc_q_b ) // '" is not allowed wi' // &
     1282                           'th prescribed surface flux'
     1283          CALL handle_palm_message( 'check_parameters', 'PA0073', 1, 2, 0, 6, &
     1284                                    0 )
    13431285       ENDIF
    13441286       IF ( constant_waterflux  .AND.  q_surface_initial_change /= 0.0 )  THEN
    1345           IF ( myid == 0 )  THEN
    1346              PRINT*, '+++ check_parameters: a prescribed surface flux is not'
    1347              PRINT*, '    allowed with ', sq, '_surface_initial_change (/=0)', &
    1348                      ' = ', q_surface_initial_change
    1349           ENDIF
    1350           CALL local_stop
     1287          WRITE( message_string, * )  'a prescribed surface flux is not allo', &
     1288                 'wed with ', sq, '_surface_initial_change (/=0) = ', &
     1289                 q_surface_initial_change
     1290          CALL handle_palm_message( 'check_parameters', 'PA0074', 1, 2, 0, 6, &
     1291                                    0 )
    13511292       ENDIF
    13521293       
     
    13601301       ibc_uv_b = 1
    13611302       IF ( prandtl_layer )  THEN
    1362           IF ( myid == 0 )  THEN
    1363              PRINT*, '+++ check_parameters:'
    1364              PRINT*, '    boundary condition: bc_uv_b = ', TRIM( bc_uv_b ), &
    1365                           ' is not allowed with'
    1366              PRINT*, '    prandtl_layer = .TRUE.'
    1367           ENDIF
    1368           CALL local_stop
     1303          message_string = 'boundary condition: bc_uv_b = "' // &
     1304               TRIM( bc_uv_b ) // '" is not allowed with prandtl_layer = .TRUE.'
     1305          CALL handle_palm_message( 'check_parameters', 'PA0075', 1, 2, 0, 6, &
     1306                                    0 )
    13691307       ENDIF
    13701308    ELSE
    1371        IF ( myid == 0 )  THEN
    1372           PRINT*, '+++ check_parameters:'
    1373           PRINT*, '    unknown boundary condition: bc_uv_b = ', bc_uv_b
    1374        ENDIF
    1375        CALL local_stop
    1376     ENDIF
     1309       message_string = 'unknown boundary condition: bc_uv_b = "' // &
     1310                        TRIM( bc_uv_b ) // '"'
     1311       CALL handle_palm_message( 'check_parameters', 'PA0076', 1, 2, 0, 6, 0 )
     1312    ENDIF
     1313
    13771314    IF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
    13781315       bc_uv_t = 'neumann'
     
    13841321          ibc_uv_t = 1
    13851322       ELSE
    1386           IF ( myid == 0 )  THEN
    1387              PRINT*, '+++ check_parameters:'
    1388              PRINT*, '    unknown boundary condition: bc_uv_t = ', bc_uv_t
    1389           ENDIF
    1390           CALL local_stop
     1323          message_string = 'unknown boundary condition: bc_uv_t = "' // &
     1324                           TRIM( bc_uv_t ) // '"'
     1325          CALL handle_palm_message( 'check_parameters', 'PA0077', 1, 2, 0, 6, &
     1326                                    0 )
    13911327       ENDIF
    13921328    ENDIF
     
    14031339       IF ( rayleigh_damping_factor < 0.0 .OR. rayleigh_damping_factor > 1.0 ) &
    14041340       THEN
    1405           IF ( myid == 0 )  THEN
    1406              PRINT*, '+++ check_parameters:'
    1407              PRINT*, '    rayleigh_damping_factor = ', rayleigh_damping_factor,&
    1408                           ' out of range [0.0,1.0]'
    1409           ENDIF
    1410           CALL local_stop
     1341          WRITE( message_string, * )  'rayleigh_damping_factor = ', &
     1342                              rayleigh_damping_factor, ' out of range [0.0,1.0]'
     1343          CALL handle_palm_message( 'check_parameters', 'PA0078', 1, 2, 0, 6, &
     1344                                    0 )
    14111345       ENDIF
    14121346    ENDIF
     
    14221356          IF ( rayleigh_damping_height < 0.0  .OR. &
    14231357               rayleigh_damping_height > zu(nzt) )  THEN
    1424              IF ( myid == 0 )  THEN
    1425                 PRINT*, '+++ check_parameters:'
    1426                 PRINT*, '    rayleigh_damping_height = ', rayleigh_damping_height,&
    1427                      ' out of range [0.0,', zu(nzt), ']'
    1428              ENDIF
    1429              CALL local_stop
     1358             WRITE( message_string, * )  'rayleigh_damping_height = ', &
     1359                   rayleigh_damping_height, ' out of range [0.0,', zu(nzt), ']'
     1360             CALL handle_palm_message( 'check_parameters', 'PA0079', 1, 2, 0, &
     1361                                       6, 0 )
    14301362          ENDIF
    14311363       ELSE
    14321364          IF ( rayleigh_damping_height > 0.0  .OR. &
    14331365               rayleigh_damping_height < zu(nzb) )  THEN
    1434              IF ( myid == 0 )  THEN
    1435                 PRINT*, '+++ check_parameters:'
    1436                 PRINT*, '    rayleigh_damping_height = ', rayleigh_damping_height,&
    1437                      ' out of range [0.0,', zu(nzb), ']'
    1438              ENDIF
    1439              CALL local_stop
     1366             WRITE( message_string, * )  'rayleigh_damping_height = ', &
     1367                   rayleigh_damping_height, ' out of range [0.0,', zu(nzb), ']'
     1368             CALL handle_palm_message( 'check_parameters', 'PA0079', 1, 2, 0, &
     1369                                       6, 0 )
    14401370          ENDIF
    14411371       ENDIF
     
    14471377         overshoot_limit_w < 0.0  .OR.  overshoot_limit_pt < 0.0  .OR. &
    14481378         overshoot_limit_e < 0.0 )  THEN
    1449        IF ( myid == 0 )  THEN
    1450           PRINT*, '+++ check_parameters:'
    1451           PRINT*, '    overshoot_limit_... < 0.0 is not allowed'
    1452        ENDIF
    1453        CALL local_stop
     1379       message_string = 'overshoot_limit_... < 0.0 is not allowed'
     1380       CALL handle_palm_message( 'check_parameters', 'PA0080', 1, 2, 0, 6, 0 )
    14541381    ENDIF
    14551382    IF ( ups_limit_u < 0.0 .OR. ups_limit_v < 0.0 .OR. ups_limit_w < 0.0 .OR. &
    14561383         ups_limit_pt < 0.0 .OR. ups_limit_e < 0.0 )  THEN
    1457        IF ( myid == 0 )  THEN
    1458           PRINT*, '+++ check_parameters:'
    1459           PRINT*, '    ups_limit_... < 0.0 is not allowed'
    1460        ENDIF
    1461        CALL local_stop
     1384       message_string = 'ups_limit_... < 0.0 is not allowed'
     1385       CALL handle_palm_message( 'check_parameters', 'PA0081', 1, 2, 0, 6, 0 )
    14621386    ENDIF
    14631387
     
    14671391!-- be opened (cf. check_open)
    14681392    IF ( statistic_regions > 9  .OR.  statistic_regions < 0 )  THEN
    1469        IF ( myid == 0 )  THEN
    1470           PRINT*, '+++ check_parameters: Number of statistic_regions = ', &
    1471                        statistic_regions+1
    1472           PRINT*, '    Only 10 regions are allowed'
    1473        ENDIF
    1474        CALL local_stop
     1393       WRITE ( message_string, * ) 'number of statistic_regions = ', &
     1394                   statistic_regions+1, ' but only 10 regions are allowed'
     1395       CALL handle_palm_message( 'check_parameters', 'PA0082', 1, 2, 0, 6, 0 )
    14751396    ENDIF
    14761397    IF ( normalizing_region > statistic_regions  .OR. &
    14771398         normalizing_region < 0)  THEN
    1478        IF ( myid == 0 )  THEN
    1479           PRINT*, '+++ check_parameters: normalizing_region = ', &
    1480                        normalizing_region, ' is unknown'
    1481           PRINT*, '    Must be <= ', statistic_regions
    1482        ENDIF
    1483        CALL local_stop
     1399       WRITE ( message_string, * ) 'normalizing_region = ', &
     1400                normalizing_region, ' must be >= 0 and <= ',statistic_regions, &
     1401                ' (value of statistic_regions)'
     1402       CALL handle_palm_message( 'check_parameters', 'PA0083', 1, 2, 0, 6, 0 )
    14841403    ENDIF
    14851404
     
    14891408    IF ( dt_sort_particles /= 0.0  .AND.  cloud_droplets )  THEN
    14901409       dt_sort_particles = 0.0
    1491        IF ( myid == 0 )  THEN
    1492           PRINT*, '+++ WARNING: check_parameters:'
    1493           PRINT*, '    dt_sort_particles is reset to 0.0 because ', &
    1494                        'of cloud_droplets = .TRUE.'
    1495        ENDIF
     1410       message_string = 'dt_sort_particles is reset to 0.0 because of cloud' //&
     1411                        '_droplets = .TRUE.'
     1412       CALL handle_palm_message( 'check_parameters', 'PA0084', 0, 1, 0, 6, 0 )
    14961413    ENDIF
    14971414
     
    15301447!-- spectra)
    15311448    IF ( averaging_interval > dt_data_output_av )  THEN
    1532        IF ( myid == 0 )  THEN
    1533           PRINT*, '+++ check_parameters: average_interval=',              &
    1534                        averaging_interval, ' must be <= dt_data_output=', &
    1535                        dt_data_output
    1536        ENDIF
    1537        CALL local_stop
     1449       WRITE( message_string, * )  'averaging_interval = ', &
     1450             averaging_interval, ' must be <= dt_data_output = ', dt_data_output
     1451       CALL handle_palm_message( 'check_parameters', 'PA0085', 1, 2, 0, 6, 0 )
    15381452    ENDIF
    15391453
     
    15431457
    15441458    IF ( averaging_interval_pr > dt_dopr )  THEN
    1545        IF ( myid == 0 )  THEN
    1546           PRINT*, '+++ check_parameters: averaging_interval_pr=', &
    1547                        averaging_interval_pr, ' must be <= dt_dopr=', dt_dopr
    1548        ENDIF
    1549        CALL local_stop
     1459       WRITE( message_string, * )  'averaging_interval_pr = ', &
     1460             averaging_interval_pr, ' must be <= dt_dopr = ', dt_dopr
     1461       CALL handle_palm_message( 'check_parameters', 'PA0086', 1, 2, 0, 6, 0 )
    15501462    ENDIF
    15511463
     
    15551467
    15561468    IF ( averaging_interval_sp > dt_dosp )  THEN
    1557        IF ( myid == 0 )  THEN
    1558           PRINT*, '+++ check_parameters: averaging_interval_sp=', &
    1559                        averaging_interval_sp, ' must be <= dt_dosp=', dt_dosp
    1560        ENDIF
    1561        CALL local_stop
     1469       WRITE( message_string, * )  'averaging_interval_sp = ', &
     1470             averaging_interval_sp, ' must be <= dt_dosp = ', dt_dosp
     1471       CALL handle_palm_message( 'check_parameters', 'PA0087', 1, 2, 0, 6, 0 )
    15621472    ENDIF
    15631473
     
    15821492!-- Check the sample rate for averaging (first for 3d-data, then for profiles)
    15831493    IF ( dt_averaging_input > averaging_interval )  THEN
    1584        IF ( myid == 0 )  THEN
    1585           PRINT*, '+++ check_parameters: dt_averaging_input=',                &
    1586                        dt_averaging_input, ' must be <= averaging_interval=', &
    1587                        averaging_interval
    1588        ENDIF
    1589        CALL local_stop
     1494       WRITE( message_string, * )  'dt_averaging_input = ', &
     1495                dt_averaging_input, ' must be <= averaging_interval = ', &
     1496                averaging_interval
     1497       CALL handle_palm_message( 'check_parameters', 'PA0088', 1, 2, 0, 6, 0 )
    15901498    ENDIF
    15911499
    15921500    IF ( dt_averaging_input_pr > averaging_interval_pr )  THEN
    1593        IF ( myid == 0 )  THEN
    1594           PRINT*, '+++ check_parameters: dt_averaging_input_pr=', &
    1595                        dt_averaging_input_pr,                     &
    1596                        ' must be <= averaging_interval_pr=',      &
    1597                        averaging_interval_pr
    1598        ENDIF
    1599        CALL local_stop
     1501       WRITE( message_string, * )  'dt_averaging_input_pr = ', &
     1502                dt_averaging_input_pr, ' must be <= averaging_interval_pr = ', &
     1503                averaging_interval_pr
     1504       CALL handle_palm_message( 'check_parameters', 'PA0089', 1, 2, 0, 6, 0 )
    16001505    ENDIF
    16011506
     
    16071512       ELSE
    16081513          IF ( precipitation_amount_interval > dt_do2d_xy )  THEN
    1609              IF ( myid == 0 )  PRINT*, '+++ check_parameters: ',              &
    1610                                        'precipitation_amount_interval =',     &
    1611                                         precipitation_amount_interval,        &
    1612                                        ' must not be larger than dt_do2d_xy', &
    1613                                        ' = ', dt_do2d_xy   
    1614        CALL local_stop
     1514             WRITE( message_string, * )  'precipitation_amount_interval = ', &
     1515                 precipitation_amount_interval, ' must not be larger than ', &
     1516                 'dt_do2d_xy = ', dt_do2d_xy
     1517             CALL handle_palm_message( 'check_parameters', 'PA0090', 1, 2, 0, &
     1518                                       6, 0 )
    16151519          ENDIF
    16161520       ENDIF
     
    17781682          CASE ( 'sa', '#sa' )
    17791683             IF ( .NOT. ocean )  THEN
    1780                 IF ( myid == 0 )  THEN
    1781                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1782                            data_output_pr(i),                          &
    1783                            '    is not implemented for ocean = FALSE'
    1784                 ENDIF
    1785                 CALL local_stop
     1684                message_string = 'data_output_pr = ' // &
     1685                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1686                                 'lemented for ocean = .FALSE.'
     1687                CALL handle_palm_message( 'check_parameters', 'PA0091', 1, 2, &
     1688                                          0, 6, 0 )
    17861689             ELSE
    17871690                dopr_index(i) = 23
     
    18481751          CASE ( 'q', '#q' )
    18491752             IF ( .NOT. humidity )  THEN
    1850                 IF ( myid == 0 )  THEN
    1851                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1852                            data_output_pr(i),                          &
    1853                            '    is not implemented for humidity = FALSE'
    1854                 ENDIF
    1855                 CALL local_stop
     1753                message_string = 'data_output_pr = ' // &
     1754                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1755                                 'lemented for humidity = .FALSE.'
     1756                CALL handle_palm_message( 'check_parameters', 'PA0092', 1, 2, &
     1757                                          0, 6, 0 )
    18561758             ELSE
    18571759                dopr_index(i) = 41
     
    18681770          CASE ( 's', '#s' )
    18691771             IF ( .NOT. passive_scalar )  THEN
    1870                 IF ( myid == 0 )  THEN
    1871                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1872                            data_output_pr(i),                          &
    1873                            '    is not implemented for passive_scalar = FALSE'
    1874                 ENDIF
    1875                 CALL local_stop
     1772                message_string = 'data_output_pr = ' // &
     1773                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1774                                 'lemented for passive_scalar = .FALSE.'
     1775                CALL handle_palm_message( 'check_parameters', 'PA0093', 1, 2, &
     1776                                          0, 6, 0 )
    18761777             ELSE
    18771778                dopr_index(i) = 41
     
    19111812          CASE ( 'lpt', '#lpt' )
    19121813             IF ( .NOT. cloud_physics ) THEN
    1913                 IF ( myid == 0 )  THEN
    1914                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1915                            data_output_pr(i),                          &
    1916                            '    is not implemented for cloud_physics = FALSE'
    1917                 ENDIF
    1918                 CALL local_stop
     1814                message_string = 'data_output_pr = ' // &
     1815                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1816                                 'lemented for cloud_physics = .FALSE.'
     1817                CALL handle_palm_message( 'check_parameters', 'PA0094', 1, 2, &
     1818                                          0, 6, 0 )
    19191819             ELSE
    19201820                dopr_index(i) = 4
     
    19571857          CASE ( 'w"q"' )
    19581858             IF ( .NOT. humidity )  THEN
    1959                 IF ( myid == 0 )  THEN
    1960                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1961                            data_output_pr(i),                          &
    1962                            '    is not implemented for humidity = FALSE'
    1963                 ENDIF
    1964                 CALL local_stop
     1859                message_string = 'data_output_pr = ' // &
     1860                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1861                                 'lemented for humidity = .FALSE.'
     1862                CALL handle_palm_message( 'check_parameters', 'PA0092', 1, 2, &
     1863                                          0, 6, 0 )
    19651864             ELSE
    19661865                dopr_index(i) = 48
     
    19711870          CASE ( 'w*q*' )
    19721871             IF ( .NOT. humidity )  THEN
    1973                 IF ( myid == 0 )  THEN
    1974                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1975                            data_output_pr(i),                          &
    1976                            '    is not implemented for humidity = FALSE'
    1977                 ENDIF
    1978                 CALL local_stop
     1872                message_string = 'data_output_pr = ' // &
     1873                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1874                                 'lemented for humidity = .FALSE.'
     1875                CALL handle_palm_message( 'check_parameters', 'PA0092', 1, 2, &
     1876                                          0, 6, 0 )
    19791877             ELSE
    19801878                dopr_index(i) = 49
     
    19851883          CASE ( 'wq' )
    19861884             IF ( .NOT. humidity )  THEN
    1987                 IF ( myid == 0 )  THEN
    1988                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    1989                            data_output_pr(i),                          &
    1990                            '    is not implemented for humidity = FALSE'
    1991                 ENDIF
    1992                 CALL local_stop
     1885                message_string = 'data_output_pr = ' // &
     1886                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1887                                 'lemented for humidity = .FALSE.'
     1888                CALL handle_palm_message( 'check_parameters', 'PA0092', 1, 2, &
     1889                                          0, 6, 0 )
    19931890             ELSE
    19941891                dopr_index(i) = 50
     
    19991896          CASE ( 'w"s"' )
    20001897             IF ( .NOT. passive_scalar ) THEN
    2001                 IF ( myid == 0 )  THEN
    2002                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2003                            data_output_pr(i),                          &
    2004                            '    is not implemented for passive_scalar = FALSE'
    2005                 ENDIF
    2006                 CALL local_stop
     1898                message_string = 'data_output_pr = ' // &
     1899                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1900                                 'lemented for passive_scalar = .FALSE.'
     1901                CALL handle_palm_message( 'check_parameters', 'PA0093', 1, 2, &
     1902                                          0, 6, 0 )
    20071903             ELSE
    20081904                dopr_index(i) = 48
     
    20131909          CASE ( 'w*s*' )
    20141910             IF ( .NOT. passive_scalar ) THEN
    2015                 IF ( myid == 0 )  THEN
    2016                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2017                            data_output_pr(i),                          &
    2018                            '    is not implemented for passive_scalar = FALSE'
    2019                 ENDIF
    2020                 CALL local_stop
     1911                message_string = 'data_output_pr = ' // &
     1912                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1913                                 'lemented for passive_scalar = .FALSE.'
     1914                CALL handle_palm_message( 'check_parameters', 'PA0093', 1, 2, &
     1915                                          0, 6, 0 )
    20211916             ELSE
    20221917                dopr_index(i) = 49
     
    20271922          CASE ( 'ws' )
    20281923             IF ( .NOT. passive_scalar ) THEN
    2029                 IF ( myid == 0 )  THEN
    2030                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2031                            data_output_pr(i),                          &
    2032                            '    is not implemented for passive_scalar = FALSE'
    2033                 ENDIF
    2034                 CALL local_stop
     1924                message_string = 'data_output_pr = ' // &
     1925                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1926                                 'lemented for passive_scalar = .FALSE.'
     1927                CALL handle_palm_message( 'check_parameters', 'PA0093', 1, 2, &
     1928                                          0, 6, 0 )
    20351929             ELSE
    20361930                dopr_index(i) = 50
     
    20501944                hom(:,2,51,:) = SPREAD( zw, 2, statistic_regions+1 )
    20511945             ELSE
    2052                 IF ( myid == 0 )  THEN
    2053                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2054                            data_output_pr(i),                          &
    2055                            '    is not implemented for cloud_physics = FALSE', &
    2056                            '    and                    humidity      = FALSE'
    2057                 ENDIF
    2058                 CALL local_stop                   
     1946                message_string = 'data_output_pr = ' // &
     1947                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1948                                 'lemented for cloud_physics = .FALSE. an&' // &
     1949                                 'd humidity = .FALSE.'
     1950                CALL handle_palm_message( 'check_parameters', 'PA0095', 1, 2, &
     1951                                          0, 6, 0 )
    20591952             ENDIF
    20601953
     
    20701963                hom(:,2,52,:) = SPREAD( zw, 2, statistic_regions+1 )
    20711964             ELSE
    2072                 IF ( myid == 0 )  THEN
    2073                    PRINT*, '+++ check_parameters:  data_output_pr = ',         &
    2074                            data_output_pr(i),                                  &
    2075                            '    is not implemented for cloud_physics = FALSE', &
    2076                            '                       and humidity      = FALSE'
    2077                 ENDIF
    2078                 CALL local_stop                   
     1965                message_string = 'data_output_pr = ' // &
     1966                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1967                                 'lemented for cloud_physics = .FALSE. an&' // &
     1968                                 'd humidity = .FALSE.'
     1969                CALL handle_palm_message( 'check_parameters', 'PA0095', 1, 2, &
     1970                                          0, 6, 0 )
    20791971             ENDIF
    20801972
     
    20901982                hom(:,2,53,:) = SPREAD( zw, 2, statistic_regions+1 )
    20911983             ELSE
    2092                 IF ( myid == 0 )  THEN
    2093                    PRINT*, '+++ check_parameters:  data_output_pr = ',         &
    2094                            data_output_pr(i),                                  &
    2095                            '    is not implemented for cloud_physics = FALSE', &
    2096                            '                       and humidity      = FALSE'
    2097                 ENDIF
    2098                 CALL local_stop                   
     1984                message_string = 'data_output_pr = ' // &
     1985                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1986                                 'lemented for cloud_physics = .FALSE. an&' // &
     1987                                 'd humidity = .FALSE.'
     1988                CALL handle_palm_message( 'check_parameters', 'PA0095', 1, 2, &
     1989                                          0, 6, 0 )
    20991990             ENDIF
    21001991
    21011992          CASE ( 'ql' )
    21021993             IF ( .NOT. cloud_physics  .AND.  .NOT. cloud_droplets )  THEN
    2103                 IF ( myid == 0 )  THEN
    2104                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2105                            data_output_pr(i),                          &
    2106                            '    is not implemented for cloud_physics = FALSE'
    2107                 ENDIF
    2108                 CALL local_stop
     1994                message_string = 'data_output_pr = ' // &
     1995                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     1996                                 'lemented for cloud_physics = .FALSE. or'  // &
     1997                                 '&cloud_droplets = .FALSE.'
     1998                CALL handle_palm_message( 'check_parameters', 'PA0096', 1, 2, &
     1999                                          0, 6, 0 )
    21092000             ELSE
    21102001                dopr_index(i) = 54
     
    21652056          CASE ( 'w"sa"' )
    21662057             IF ( .NOT. ocean ) THEN
    2167                 IF ( myid == 0 )  THEN
    2168                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2169                            data_output_pr(i),                          &
    2170                            '    is not implemented for ocean = FALSE'
    2171                 ENDIF
    2172                 CALL local_stop
     2058                message_string = 'data_output_pr = ' // &
     2059                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     2060                                 'lemented for ocean = .FALSE.'
     2061                CALL handle_palm_message( 'check_parameters', 'PA0091', 1, 2, &
     2062                                          0, 6, 0 )
    21732063             ELSE
    21742064                dopr_index(i) = 65
     
    21792069          CASE ( 'w*sa*' )
    21802070             IF ( .NOT. ocean ) THEN
    2181                 IF ( myid == 0 )  THEN
    2182                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2183                            data_output_pr(i),                          &
    2184                            '    is not implemented for ocean = FALSE'
    2185                 ENDIF
    2186                 CALL local_stop
     2071                message_string = 'data_output_pr = ' // &
     2072                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     2073                                 'lemented for ocean = .FALSE.'
     2074                CALL handle_palm_message( 'check_parameters', 'PA0091', 1, 2, &
     2075                                          0, 6, 0 )
    21872076             ELSE
    21882077                dopr_index(i) = 66
     
    21932082          CASE ( 'wsa' )
    21942083             IF ( .NOT. ocean ) THEN
    2195                 IF ( myid == 0 )  THEN
    2196                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2197                            data_output_pr(i),                          &
    2198                            '    is not implemented for ocean = FALSE'
    2199                 ENDIF
    2200                 CALL local_stop
     2084                message_string = 'data_output_pr = ' // &
     2085                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     2086                                 'lemented for ocean = .FALSE.'
     2087                CALL handle_palm_message( 'check_parameters', 'PA0091', 1, 2, &
     2088                                          0, 6, 0 )
    22012089             ELSE
    22022090                dopr_index(i) = 67
     
    22172105          CASE ( 'q*2' )
    22182106             IF ( .NOT. humidity )  THEN
    2219                 IF ( myid == 0 )  THEN
    2220                    PRINT*, '+++ check_parameters:  data_output_pr = ', &
    2221                            data_output_pr(i),                          &
    2222                            '    is not implemented for humidity = FALSE'
    2223                 ENDIF
    2224                 CALL local_stop
     2107                message_string = 'data_output_pr = ' // &
     2108                                 TRIM( data_output_pr(i) ) // ' is not imp' // &
     2109                                 'lemented for humidity = .FALSE.'
     2110                CALL handle_palm_message( 'check_parameters', 'PA0092', 1, 2, &
     2111                                          0, 6, 0 )
    22252112             ELSE
    22262113                dopr_index(i) = 70
     
    22342121
    22352122             IF ( unit == 'illegal' )  THEN
    2236                 IF ( myid == 0 )  THEN
    2237                    IF ( data_output_pr_user(1) /= ' ' )  THEN
    2238                       PRINT*, '+++ check_parameters:  illegal value for data_',&
    2239                                    'output_pr or data_output_pr_user: "',      &
    2240                                    TRIM( data_output_pr(i) ), '"'
    2241                    ELSE
    2242                       PRINT*, '+++ check_parameters:  illegal value for data_',&
    2243                                    'output_pr: "', TRIM( data_output_pr(i) ),'"'
    2244                    ENDIF
     2123                IF ( data_output_pr_user(1) /= ' ' )  THEN
     2124                   message_string = 'illegal value for data_output_pr or ' // &
     2125                                    'data_output_pr_user = "' // &
     2126                                    TRIM( data_output_pr(i) ) // '"'
     2127                   CALL handle_palm_message( 'check_parameters', 'PA0097', 1, &
     2128                                             2, 0, 6, 0 )
     2129                ELSE
     2130                   message_string = 'illegal value for data_output_pr = "' // &
     2131                                    TRIM( data_output_pr(i) ) // '"'
     2132                   CALL handle_palm_message( 'check_parameters', 'PA0098', 1, &
     2133                                             2, 0, 6, 0 )
    22452134                ENDIF
    2246                 CALL local_stop
    22472135             ENDIF
    22482136
     
    22792167          cross_uymax = zu(nzt+1)
    22802168       ELSEIF ( z_max_do1d < zu(nzb+1)  .OR.  z_max_do1d > zu(nzt+1) )  THEN
    2281           IF ( myid == 0 )  PRINT*, '+++ check_parameters:  z_max_do1d=', &
    2282                                     z_max_do1d,' must be >= ', zu(nzb+1),  &
    2283                                     ' or <= ', zu(nzt+1)
    2284           CALL local_stop
     2169          WRITE( message_string, * )  'z_max_do1d = ', z_max_do1d, ' must ', &
     2170                 'be >= ', zu(nzb+1), ' or <= ', zu(nzt+1)
     2171          CALL handle_palm_message( 'check_parameters', 'PA0099', 1, 2, 0, 6, &
     2172                                    0 )
    22852173       ELSE
    22862174          cross_uymax = z_max_do1d
     
    22982186
    22992187          CASE DEFAULT
    2300              IF ( myid == 0 )  THEN
    2301                 PRINT*, '+++ check_parameters: unknown normalize method'
    2302                 PRINT*, '    cross_normalized_x="',cross_normalized_x(i),'"'
    2303              ENDIF
    2304              CALL local_stop
     2188             message_string = 'unknown normalization method cross_normali' // &
     2189                              'zed_x = "' // TRIM( cross_normalized_x(i) ) // &
     2190                              '"'
     2191             CALL handle_palm_message( 'check_parameters', 'PA0100', 1, 2, 0, &
     2192                                       6, 0 )
    23052193
    23062194       END SELECT
     
    23112199
    23122200          CASE DEFAULT
    2313              IF ( myid == 0 )  THEN
    2314                 PRINT*, '+++ check_parameters: unknown normalize method'
    2315                 PRINT*, '    cross_normalized_y="',cross_normalized_y(i),'"'
    2316              ENDIF
    2317              CALL local_stop
     2201             message_string = 'unknown normalization method cross_normali' // &
     2202                              'zed_y = "' // TRIM( cross_normalized_y(i) ) // &
     2203                              '"'
     2204             CALL handle_palm_message( 'check_parameters', 'PA0101', 1, 2, 0, &
     2205                                       6, 0 )
    23182206
    23192207       END SELECT
     
    23232211    IF ( z_max_do1d_normalized /= -1.0  .AND.  z_max_do1d_normalized <= 0.0 ) &
    23242212    THEN
    2325        IF ( myid == 0 )  PRINT*,'+++ check_parameters:  z_max_do1d_normalize', &
    2326                                 'd=', z_max_do1d_normalized, ' must be >= 0.0'
    2327        CALL local_stop
     2213       WRITE( message_string, * )  'z_max_do1d_normalized = ', &
     2214                                  z_max_do1d_normalized, ' must be >= 0.0'
     2215       CALL handle_palm_message( 'check_parameters', 'PA0101', 1, 2, 0, 6, 0 )
    23282216    ENDIF
    23292217
     
    23392227       DO  WHILE ( data_output_user(j) /= ' '  .AND.  j <= 100 )
    23402228          IF ( i > 100 )  THEN
    2341              IF ( myid == 0 )  THEN
    2342                 PRINT*, '+++ check_parameters: number of output quantitities', &
    2343                              ' given by data_output and data_output_user'
    2344                 PRINT*, '                      exceeds the limit of 100'
    2345              ENDIF
    2346              CALL local_stop
     2229             message_string = 'number of output quantitities given by data' // &
     2230                '_output and data_output_user exceeds the limit of 100'
     2231             CALL handle_palm_message( 'check_parameters', 'PA0102', 1, 2, 0, &
     2232                                       6, 0 )
    23472233          ENDIF
    23482234          data_output(i) = data_output_user(j)
     
    23852271          CASE ( 'e' )
    23862272             IF ( constant_diffusion )  THEN
    2387                 IF ( myid == 0 )  THEN
    2388                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2389                                 '" requires constant_diffusion = .FALSE.'
    2390                 ENDIF
    2391                 CALL local_stop
     2273                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2274                                 'res constant_diffusion = .FALSE.'
     2275                CALL handle_palm_message( 'check_parameters', 'PA0103', 1, 2, &
     2276                                          0, 6, 0 )
    23922277             ENDIF
    23932278             unit = 'm2/s2'
     
    23952280          CASE ( 'pc', 'pr' )
    23962281             IF ( .NOT. particle_advection )  THEN
    2397                 IF ( myid == 0 )  THEN
    2398                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2399                                 '" requires a "particles_par"-NAMELIST'
    2400                    PRINT*, '                      in the parameter file (PARIN)'
    2401                 ENDIF
    2402                 CALL local_stop
     2282                message_string = 'output of "' // TRIM( var ) // '" requir' // &
     2283                   'es a "particles_par"-NAMELIST in the parameter file (PARIN)'
     2284                CALL handle_palm_message( 'check_parameters', 'PA0104', 1, 2, &
     2285                                          0, 6, 0 )
    24032286             ENDIF
    24042287             IF ( TRIM( var ) == 'pc' )  unit = 'number'
     
    24072290          CASE ( 'q', 'vpt' )
    24082291             IF ( .NOT. humidity )  THEN
    2409                 IF ( myid == 0 )  THEN
    2410                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2411                                 '" requires humidity = .TRUE.'
    2412                 ENDIF
    2413                 CALL local_stop
     2292                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2293                                 'res humidity = .TRUE.'
     2294                CALL handle_palm_message( 'check_parameters', 'PA0105', 1, 2, &
     2295                                          0, 6, 0 )
    24142296             ENDIF
    24152297             IF ( TRIM( var ) == 'q'   )  unit = 'kg/kg'
     
    24182300          CASE ( 'ql' )
    24192301             IF ( .NOT. ( cloud_physics  .OR.  cloud_droplets ) )  THEN
    2420                 IF ( myid == 0 )  THEN
    2421                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2422                                 '" requires cloud_physics = .TRUE.'
    2423                    PRINT*, '                      or cloud_droplets = .TRUE.'
    2424                 ENDIF
    2425                 CALL local_stop
     2302                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2303                         'res cloud_physics = .TRUE. or cloud_droplets = .TRUE.'
     2304                CALL handle_palm_message( 'check_parameters', 'PA0106', 1, 2, &
     2305                                          0, 6, 0 )
    24262306             ENDIF
    24272307             unit = 'kg/kg'
     
    24292309          CASE ( 'ql_c', 'ql_v', 'ql_vp' )
    24302310             IF ( .NOT. cloud_droplets )  THEN
    2431                 IF ( myid == 0 )  THEN
    2432                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2433                                 '" requires cloud_droplets = .TRUE.'
    2434                 ENDIF
    2435                 CALL local_stop
     2311                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2312                                 'res cloud_droplets = .TRUE.'
     2313                CALL handle_palm_message( 'check_parameters', 'PA0107', 1, 2, &
     2314                                          0, 6, 0 )
    24362315             ENDIF
    24372316             IF ( TRIM( var ) == 'ql_c'  )  unit = 'kg/kg'
     
    24412320          CASE ( 'qv' )
    24422321             IF ( .NOT. cloud_physics )  THEN
    2443                 IF ( myid == 0 )  THEN
    2444                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2445                                 '" requires cloud_physics = .TRUE.'
    2446                 ENDIF
    2447                 CALL local_stop
     2322                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2323                                 'res cloud_physics = .TRUE.'
     2324                CALL handle_palm_message( 'check_parameters', 'PA0108', 1, 2, &
     2325                                          0, 6, 0 )
    24482326             ENDIF
    24492327             unit = 'kg/kg'
     
    24512329          CASE ( 'rho' )
    24522330             IF ( .NOT. ocean )  THEN
    2453                 IF ( myid == 0 )  THEN
    2454                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2455                                 '" requires ocean = .TRUE.'
    2456                 ENDIF
    2457                 CALL local_stop
     2331                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2332                                 'res ocean = .TRUE.'
     2333                CALL handle_palm_message( 'check_parameters', 'PA0109', 1, 2, &
     2334                                          0, 6, 0 )
    24582335             ENDIF
    24592336             unit = 'kg/m3'
     
    24612338          CASE ( 's' )
    24622339             IF ( .NOT. passive_scalar )  THEN
    2463                 IF ( myid == 0 )  THEN
    2464                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2465                                 '" requires passive_scalar = .TRUE.'
    2466                 ENDIF
    2467                 CALL local_stop
     2340                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2341                                 'res passive_scalar = .TRUE.'
     2342                CALL handle_palm_message( 'check_parameters', 'PA0110', 1, 2, &
     2343                                          0, 6, 0 )
    24682344             ENDIF
    24692345             unit = 'conc'
     
    24712347          CASE ( 'sa' )
    24722348             IF ( .NOT. ocean )  THEN
    2473                 IF ( myid == 0 )  THEN
    2474                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2475                                 '" requires ocean = .TRUE.'
    2476                 ENDIF
    2477                 CALL local_stop
     2349                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2350                                 'res ocean = .TRUE.'
     2351                CALL handle_palm_message( 'check_parameters', 'PA0109', 1, 2, &
     2352                                          0, 6, 0 )
    24782353             ENDIF
    24792354             unit = 'psu'
     
    24812356          CASE ( 'u*', 't*', 'lwp*', 'pra*', 'prr*', 'z0*' )
    24822357             IF ( k == 0  .OR.  data_output(i)(ilen-2:ilen) /= '_xy' )  THEN
    2483                 IF ( myid == 0 )  THEN
    2484                    PRINT*, '+++ check_parameters:  illegal value for data_',&
    2485                                 'output: "', TRIM( var ), '" is only allowed'
    2486                    PRINT*, '                       for horizontal cross section'
    2487                 ENDIF
    2488                 CALL local_stop
     2358                message_string = 'illegal value for data_output: "' // &
     2359                                 TRIM( var ) // '" & only 2d-horizontal ' // &
     2360                                 'cross sections are allowed for this value'
     2361                CALL handle_palm_message( 'check_parameters', 'PA0111', 1, 2, &
     2362                                          0, 6, 0 )
    24892363             ENDIF
    24902364             IF ( TRIM( var ) == 'lwp*'  .AND.  .NOT. cloud_physics )  THEN
    2491                 IF ( myid == 0 )  THEN
    2492                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2493                                 '" requires cloud_physics = .TRUE.'
    2494                 ENDIF
    2495                 CALL local_stop
     2365                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2366                                 'res cloud_physics = .TRUE.'
     2367                CALL handle_palm_message( 'check_parameters', 'PA0108', 1, 2, &
     2368                                          0, 6, 0 )
    24962369             ENDIF
    24972370             IF ( TRIM( var ) == 'pra*'  .AND.  .NOT. precipitation )  THEN
    2498                 IF ( myid == 0 )  THEN
    2499                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2500                                 '" requires precipitation = .TRUE.'
    2501                 ENDIF
    2502                 CALL local_stop
     2371                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2372                                 'res precipitation = .TRUE.'
     2373                CALL handle_palm_message( 'check_parameters', 'PA0112', 1, 2, &
     2374                                          0, 6, 0 )
    25032375             ENDIF
    25042376             IF ( TRIM( var ) == 'pra*'  .AND.  j == 1 )  THEN
    2505                 IF ( myid == 0 )  THEN
    2506                    PRINT*, '+++ check_parameters: temporal averaging of ', &
    2507                            ' precipitation amount "', TRIM( var ),         &
    2508                            '" not possible'
    2509                 ENDIF
    2510                 CALL local_stop
     2377                message_string = 'temporal averaging of precipitation ' // &
     2378                          'amount "' // TRIM( var ) // '" is not possible'
     2379                CALL handle_palm_message( 'check_parameters', 'PA0113', 1, 2, &
     2380                                          0, 6, 0 )
    25112381             ENDIF
    25122382             IF ( TRIM( var ) == 'prr*'  .AND.  .NOT. precipitation )  THEN
    2513                 IF ( myid == 0 )  THEN
    2514                    PRINT*, '+++ check_parameters: output of "', TRIM( var ), &
    2515                                 '" requires precipitation = .TRUE.'
    2516                 ENDIF
    2517                 CALL local_stop
     2383                message_string = 'output of "' // TRIM( var ) // '" requi' // &
     2384                                 'res precipitation = .TRUE.'
     2385                CALL handle_palm_message( 'check_parameters', 'PA0112', 1, 2, &
     2386                                          0, 6, 0 )
    25182387             ENDIF
    25192388
     
    25382407
    25392408             IF ( unit == 'illegal' )  THEN
    2540                 IF ( myid == 0 )  THEN
    2541                    IF ( data_output_user(1) /= ' ' )  THEN
    2542                       PRINT*, '+++ check_parameters:  illegal value for data_',&
    2543                                    'output or data_output_user: "',            &
    2544                                    TRIM( data_output(i) ), '"'
    2545                    ELSE
    2546                       PRINT*, '+++ check_parameters:  illegal value for data_',&
    2547                                    'output: "', TRIM( data_output(i) ), '"'
    2548                    ENDIF
     2409                IF ( data_output_user(1) /= ' ' )  THEN
     2410                   message_string = 'illegal value for data_output or ' // &
     2411                         'data_output_user = "' // TRIM( data_output(i) ) // '"'
     2412                   CALL handle_palm_message( 'check_parameters', 'PA0114', 1, &
     2413                                             2, 0, 6, 0 )
     2414                ELSE
     2415                   message_string = 'illegal value for data_output =' // &
     2416                                    TRIM( data_output(i) ) // '"'
     2417                   CALL handle_palm_message( 'check_parameters', 'PA0115', 1, &
     2418                                             2, 0, 6, 0 )
    25492419                ENDIF
    2550                 CALL local_stop
    25512420             ENDIF
    25522421
     
    26112480    IF ( z_max_do2d == -1.0 )  z_max_do2d = zu(nzt)
    26122481    IF ( z_max_do2d < zu(nzb+1)  .OR.  z_max_do2d > zu(nzt) )  THEN
    2613        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  z_max_do2d=',        &
    2614                                  z_max_do2d, ' must be >= ', zu(nzb+1),      &
    2615                                  '(zu(nzb+1)) and <= ', zu(nzt), ' (zu(nzt))'
    2616        CALL local_stop
     2482       WRITE( message_string, * )  'z_max_do2d = ', z_max_do2d, &
     2483                    ' must be >= ', zu(nzb+1), '(zu(nzb+1)) and <= ', zu(nzt), &
     2484                    ' (zu(nzt))'
     2485       CALL handle_palm_message( 'check_parameters', 'PA0116', 1, 2, 0, 6, 0 )
    26172486    ENDIF
    26182487
     
    26272496!--    Compression only permissible on T3E machines
    26282497       IF ( host(1:3) /= 't3e' )  THEN
    2629           IF ( myid == 0 )  THEN
    2630              PRINT*, '+++ check_parameters: do3d_compress = .TRUE. not allow', &
    2631                           'ed on host "', TRIM( host ), '"'
    2632           ENDIF
    2633           CALL local_stop
     2498          message_string = 'do3d_compress = .TRUE. not allowed on host "' // &
     2499                           TRIM( host ) // '"'
     2500          CALL handle_palm_message( 'check_parameters', 'PA0117', 1, 2, 0, 6, &
     2501                                    0 )
    26342502       ENDIF
    26352503
     
    26402508          IF ( LLT( do3d_comp_prec(i)(ilen:ilen), '0' ) .OR. &
    26412509               LGT( do3d_comp_prec(i)(ilen:ilen), '9' ) )  THEN
    2642              IF ( myid == 0 )  THEN
    2643                 PRINT*, '+++ check_parameters: illegal precision: ', &
    2644                         'do3d_comp_prec(', i, ')="', TRIM(do3d_comp_prec(i)),'"'
    2645              ENDIF
    2646              CALL local_stop
     2510             WRITE( message_string, * )  'illegal precision: do3d_comp_prec', &
     2511                                   '(', i, ') = "', TRIM(do3d_comp_prec(i)),'"'
     2512             CALL handle_palm_message( 'check_parameters', 'PA0118', 1, 2, 0, &
     2513                                       6, 0 )
    26472514          ENDIF
    26482515
     
    26642531
    26652532             CASE DEFAULT
    2666                 IF ( myid == 0 )  THEN
    2667                    PRINT*, '+++ check_parameters: unknown variable in ', &
    2668                                'assignment'
    2669                    PRINT*, '    do3d_comp_prec(', i, ')="', &
    2670                            TRIM( do3d_comp_prec(i) ),'"'
    2671                 ENDIF
    2672                 CALL local_stop               
     2533                WRITE( message_string, * )  'unknown variable "', &
     2534                     TRIM( do3d_comp_prec(i) ), '" given for do3d_comp_prec(', &
     2535                     i, ')'
     2536                CALL handle_palm_message( 'check_parameters', 'PA0119', 1, 2, &
     2537                                          0, 6, 0 )
    26732538
    26742539          END SELECT
     
    27022567
    27032568             CASE DEFAULT
    2704                 IF ( myid == 0 )  THEN
    2705                    PRINT*, '+++ check_parameters:'
    2706                    PRINT*, '    unknown value for data_output_format "', &
    2707                                 TRIM( data_output_format(i) ),'"'
    2708                 ENDIF
    2709                 CALL local_stop               
     2569                message_string = 'unknown value for data_output_format "' // &
     2570                                 TRIM( data_output_format(i) ) // '"'
     2571                CALL handle_palm_message( 'check_parameters', 'PA0120', 1, 2, &
     2572                                          0, 6, 0 )
    27102573
    27112574          END SELECT
     
    27272590    IF ( km_constant /= -1.0 )  THEN
    27282591       IF ( km_constant < 0.0 )  THEN
    2729           IF ( myid == 0 )  PRINT*, '+++ check_parameters:  km_constant=', &
    2730                                     km_constant, ' < 0.0'
    2731           CALL local_stop
     2592          WRITE( message_string, * )  'km_constant = ', km_constant, ' < 0.0'
     2593          CALL handle_palm_message( 'check_parameters', 'PA0121', 1, 2, 0, 6, &
     2594                                    0 )
    27322595       ELSE
    27332596          IF ( prandtl_number < 0.0 )  THEN
    2734              IF ( myid == 0 )  PRINT*,'+++ check_parameters:  prandtl_number=',&
    2735                                       prandtl_number, ' < 0.0'
    2736              CALL local_stop
     2597             WRITE( message_string, * )  'prandtl_number = ', prandtl_number, &
     2598                                         ' < 0.0'
     2599             CALL handle_palm_message( 'check_parameters', 'PA0122', 1, 2, 0, &
     2600                                       6, 0 )
    27372601          ENDIF
    27382602          constant_diffusion = .TRUE.
    27392603
    27402604          IF ( prandtl_layer )  THEN
    2741              IF ( myid == 0 )  PRINT*, '+++ check_parameters:  prandtl_layer ',&
    2742                                        'is not allowed with fixed value of km'
    2743              CALL local_stop
     2605             message_string = 'prandtl_layer is not allowed with fixed ' // &
     2606                              'value of km'
     2607             CALL handle_palm_message( 'check_parameters', 'PA0123', 1, 2, 0, &
     2608                                       6, 0 )
    27442609          ENDIF
    27452610       ENDIF
     
    27582623       ENDIF
    27592624       IF ( outflow_damping_width <= 0  .OR.  outflow_damping_width > nx )  THEN
    2760           IF ( myid == 0 )  PRINT*, '+++ check_parameters: outflow_damping w',&
    2761                                     'idth out of range'
    2762           CALL local_stop
     2625          message_string = 'outflow_damping width out of range'
     2626          CALL handle_palm_message( 'check_parameters', 'PA0124', 1, 2, 0, 6, &
     2627                                    0 )
    27632628       ENDIF
    27642629    ENDIF
     
    27722637       ENDIF
    27732638       IF ( outflow_damping_width <= 0  .OR.  outflow_damping_width > ny )  THEN
    2774           IF ( myid == 0 )  PRINT*, '+++ check_parameters: outflow_damping w',&
    2775                                     'idth out of range'
    2776           CALL local_stop
     2639          message_string = 'outflow_damping width out of range'
     2640          CALL handle_palm_message( 'check_parameters', 'PA0124', 1, 2, 0, 6, &
     2641                                    0 )
    27772642       ENDIF
    27782643    ENDIF
     
    27812646!-- Check value range for rif
    27822647    IF ( rif_min >= rif_max )  THEN
    2783        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  rif_min=', rif_min, &
    2784                                  ' must be less than rif_max=', rif_max
    2785        CALL local_stop
     2648       WRITE( message_string, * )  'rif_min = ', rif_min, ' must be less ', &
     2649                                   'than rif_max = ', rif_max
     2650       CALL handle_palm_message( 'check_parameters', 'PA0125', 1, 2, 0, 6, 0 )
    27862651    ENDIF
    27872652
     
    27972662       ENDIF
    27982663    ELSEIF ( disturbance_level_b < zu(3) )  THEN
    2799        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  disturbance_level_b=',&
    2800                                  disturbance_level_b, ' must be >= ',zu(3),    &
    2801                                  '(zu(3))'
    2802        CALL local_stop
     2664       WRITE( message_string, * )  'disturbance_level_b = ', &
     2665                           disturbance_level_b, ' must be >= ', zu(3), '(zu(3))'
     2666       CALL handle_palm_message( 'check_parameters', 'PA0126', 1, 2, 0, 6, 0 )
    28032667    ELSEIF ( disturbance_level_b > zu(nzt-2) )  THEN
    2804        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  disturbance_level_b=',&
    2805                                  disturbance_level_b, ' must be <= ',zu(nzt-2),&
    2806                                  '(zu(nzt-2))'
    2807        CALL local_stop
     2668       WRITE( message_string, * )  'disturbance_level_b = ', &
     2669                   disturbance_level_b, ' must be <= ', zu(nzt-2), '(zu(nzt-2))'
     2670       CALL handle_palm_message( 'check_parameters', 'PA0127', 1, 2, 0, 6, 0 )
    28082671    ELSE
    28092672       DO  k = 3, nzt-2
     
    28242687       ENDIF
    28252688    ELSEIF ( disturbance_level_t > zu(nzt-2) )  THEN
    2826        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  disturbance_level_t=',&
    2827                                  disturbance_level_t, ' must be <= ',zu(nzt-2),&
    2828                                  '(zu(nzt-2))'
    2829        CALL local_stop
     2689       WRITE( message_string, * )  'disturbance_level_t = ', &
     2690                   disturbance_level_t, ' must be <= ', zu(nzt-2), '(zu(nzt-2))'
     2691       CALL handle_palm_message( 'check_parameters', 'PA0128', 1, 2, 0, 6, 0 )
    28302692    ELSEIF ( disturbance_level_t < disturbance_level_b )  THEN
    2831        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  disturbance_level_t=',&
    2832                                  disturbance_level_t, ' must be >= ',          &
    2833                                  'disturbance_level_b=', disturbance_level_b
    2834        CALL local_stop
     2693       WRITE( message_string, * )  'disturbance_level_t = ', &
     2694                   disturbance_level_t, ' must be >= disturbance_level_b = ', &
     2695                   disturbance_level_b
     2696       CALL handle_palm_message( 'check_parameters', 'PA0129', 1, 2, 0, 6, 0 )
    28352697    ELSE
    28362698       DO  k = 3, nzt-2
     
    28472709!-- z-direction.
    28482710    IF ( disturbance_level_ind_t < disturbance_level_ind_b )  THEN
    2849        IF ( myid == 0 )  PRINT*, '+++ check_parameters:  ',                &
    2850                                  'disturbance_level_ind_t=',               &
    2851                                  disturbance_level_ind_t, ' must be >= ',  &
    2852                                  'disturbance_level_ind_b=',               &
    2853                                  disturbance_level_ind_b
    2854        CALL local_stop
     2711       WRITE( message_string, * )  'disturbance_level_ind_t = ', &
     2712                disturbance_level_ind_t, ' must be >= disturbance_level_b = ', &
     2713                disturbance_level_b
     2714       CALL handle_palm_message( 'check_parameters', 'PA0130', 1, 2, 0, 6, 0 )
    28552715    ENDIF
    28562716
     
    28682728       IF ( inflow_disturbance_begin < 0  .OR.  inflow_disturbance_begin > nx )&
    28692729       THEN
    2870           IF ( myid == 0 )  PRINT*, '+++ check_parameters: inflow_disturbance',&
    2871                                     '_begin out of range'
    2872           CALL local_stop
     2730          message_string = 'inflow_disturbance_begin out of range'
     2731          CALL handle_palm_message( 'check_parameters', 'PA0131', 1, 2, 0, 6, &
     2732                                    0 )
    28732733       ENDIF
    28742734       IF ( inflow_disturbance_end == -1 )  THEN
     
    28772737       IF ( inflow_disturbance_end < 0  .OR.  inflow_disturbance_end > nx )    &
    28782738       THEN
    2879           IF ( myid == 0 )  PRINT*, '+++ check_parameters: inflow_disturbance',&
    2880                                     '_end out of range'
    2881           CALL local_stop
     2739          message_string = 'inflow_disturbance_end out of range'
     2740          CALL handle_palm_message( 'check_parameters', 'PA0132', 1, 2, 0, 6, &
     2741                                    0 )
    28822742       ENDIF
    28832743    ELSEIF ( bc_ns /= 'cyclic' )  THEN
     
    28872747       IF ( inflow_disturbance_begin < 0  .OR.  inflow_disturbance_begin > ny )&
    28882748       THEN
    2889           IF ( myid == 0 )  PRINT*, '+++ check_parameters: inflow_disturbance',&
    2890                                     '_begin out of range'
    2891           CALL local_stop
     2749          message_string = 'inflow_disturbance_begin out of range'
     2750          CALL handle_palm_message( 'check_parameters', 'PA0131', 1, 2, 0, 6, &
     2751                                    0 )
    28922752       ENDIF
    28932753       IF ( inflow_disturbance_end == -1 )  THEN
     
    28962756       IF ( inflow_disturbance_end < 0  .OR.  inflow_disturbance_end > ny )    &
    28972757       THEN
    2898           IF ( myid == 0 )  PRINT*, '+++ check_parameters: inflow_disturbance',&
    2899                                     '_end out of range'
    2900           CALL local_stop
     2758          message_string = 'inflow_disturbance_end out of range'
     2759          CALL handle_palm_message( 'check_parameters', 'PA0132', 1, 2, 0, 6, &
     2760                                    0 )
    29012761       ENDIF
    29022762    ENDIF
     
    29212781!-- boundary (so far, a turbulent inflow is realized from the left side only)
    29222782    IF ( turbulent_inflow  .AND.  bc_lr /= 'dirichlet/radiation' )  THEN
    2923        IF ( myid == 0 )  THEN
    2924           PRINT*, '+++ check_parameters:'
    2925           PRINT*, '    turbulent_inflow = .T. requires a Dirichlet condition', &
    2926                   ' at the inflow boundary'
    2927        ENDIF
    2928        CALL local_stop
     2783       message_string = 'turbulent_inflow = .T. requires a Dirichlet ' // &
     2784                        'condition at the inflow boundary'
     2785       CALL handle_palm_message( 'check_parameters', 'PA0133', 1, 2, 0, 6, 0 )
    29292786    ENDIF
    29302787
     
    29382795       ELSE
    29392796          IF ( recycling_width < dx  .OR.  recycling_width > nx * dx )  THEN
    2940              IF ( myid == 0 )  THEN
    2941                 PRINT*, '+++ check_parameters:'
    2942                 PRINT*, '    illegal value for recycling_width: ', &
    2943                         recycling_width
    2944              ENDIF
    2945              CALL local_stop
     2797             WRITE( message_string, * )  'illegal value for recycling_width:', &
     2798                                         ' ', recycling_width
     2799             CALL handle_palm_message( 'check_parameters', 'PA0134', 1, 2, 0, &
     2800                                       6, 0 )
    29462801          ENDIF
    29472802       ENDIF
     
    29552810    IF ( random_generator /= 'system-specific'  .AND. &
    29562811         random_generator /= 'numerical-recipes' )  THEN
    2957        IF ( myid == 0 )  THEN
    2958           PRINT*, '+++ check_parameters:'
    2959           PRINT*, '    unknown random generator: random_generator=', &
    2960                   random_generator
    2961        ENDIF
    2962        CALL local_stop
     2812       message_string = 'unknown random generator: random_generator = "' // &
     2813                        TRIM( random_generator ) // '"'
     2814       CALL handle_palm_message( 'check_parameters', 'PA0135', 1, 2, 0, 6, 0 )
    29632815    ENDIF
    29642816
     
    29702822          damp_level_ind_1d = nzt + 1
    29712823       ELSEIF ( damp_level_1d < 0.0  .OR.  damp_level_1d > zu(nzt+1) )  THEN
    2972           IF ( myid == 0 )  PRINT*, '+++ check_parameters:  damp_level_1d=', &
    2973                                     damp_level_1d, ' must be > 0.0 and < ',  &
    2974                                     'zu(nzt+1)', zu(nzt+1)
    2975           CALL local_stop
     2824          WRITE( message_string, * )  'damp_level_1d = ', damp_level_1d, &
     2825                 ' must be > 0.0 and < ', zu(nzt+1), '(zu(nzt+1))'
     2826          CALL handle_palm_message( 'check_parameters', 'PA0136', 1, 2, 0, 6, &
     2827                                    0 )
    29762828       ELSE
    29772829          DO  k = 1, nzt+1
     
    29832835       ENDIF
    29842836    ENDIF
     2837
    29852838!
    29862839!-- Check some other 1d-model parameters
    29872840    IF ( TRIM( mixing_length_1d ) /= 'as_in_3d_model'  .AND. &
    29882841         TRIM( mixing_length_1d ) /= 'blackadar' )  THEN
    2989        IF ( myid == 0 )  PRINT*, '+++ check_parameters: mixing_length_1d = "', &
    2990                                  TRIM( mixing_length_1d ), '" is unknown'
    2991        CALL local_stop
     2842       message_string = 'mixing_length_1d = "' // TRIM( mixing_length_1d ) // &
     2843                        '" is unknown'
     2844       CALL handle_palm_message( 'check_parameters', 'PA0137', 1, 2, 0, 6, 0 )
    29922845    ENDIF
    29932846    IF ( TRIM( dissipation_1d ) /= 'as_in_3d_model'  .AND. &
    29942847         TRIM( dissipation_1d ) /= 'detering' )  THEN
    2995        IF ( myid == 0 )  PRINT*, '+++ check_parameters: dissipation_1d = "', &
    2996                                  TRIM( dissipation_1d ), '" is unknown'
    2997        CALL local_stop
     2848       message_string = 'dissipation_1d = "' // TRIM( dissipation_1d ) // &
     2849                        '" is unknown'
     2850       CALL handle_palm_message( 'check_parameters', 'PA0138', 1, 2, 0, 6, 0 )
    29982851    ENDIF
    29992852
     
    30272880!--    MPP_TREMAIN gives the remaining CPU time only in steps of 30 seconds
    30282881       IF ( termination_time_needed <= 30.0 )  THEN
    3029           IF ( myid == 0 )  THEN
    3030              PRINT*, '+++ check_parameters:  termination_time_needed', &
    3031                       termination_time_needed
    3032              PRINT*, '                       must be > 30.0 on host "', host, &
    3033                      '"'
    3034           ENDIF
    3035           CALL local_stop
     2882          WRITE( message_string, * )  'termination_time_needed = ', &
     2883                 termination_time_needed, ' must be > 30.0 on host "', &
     2884                 TRIM( host ), '"'
     2885          CALL handle_palm_message( 'check_parameters', 'PA0139', 1, 2, 0, 6, &
     2886                                    0 )
    30362887       ENDIF
    30372888    ELSEIF ( host(1:3) == 'ibm' )  THEN
     
    30412892!--    copying of files, etc.) has to be regarded
    30422893       IF ( termination_time_needed < 300.0 )  THEN
    3043           IF ( myid == 0 )  THEN
    3044              PRINT*, '+++ WARNING: check_parameters:  termination_time_',  &
    3045                          'needed', termination_time_needed
    3046              PRINT*, '                                should be >= 300.0', &
    3047                          ' on host "', host, '"'
    3048           ENDIF
     2894          WRITE( message_string, * )  'termination_time_needed = ', &
     2895                 termination_time_needed, ' should be >= 300.0 on host "', &
     2896                 TRIM( host ), '"'
     2897          CALL handle_palm_message( 'check_parameters', 'PA0140', 1, 2, 0, 6, &
     2898                                    0 )
    30492899       ENDIF
    30502900    ENDIF
Note: See TracChangeset for help on using the changeset viewer.