Changeset 215 for palm/trunk/SOURCE


Ignore:
Timestamp:
Nov 18, 2008 9:54:31 AM (14 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:
5 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE

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

    r213 r215  
    2121User interface has been split into single files.
    2222
     23Precompilation mechanism (mbuild) completely revised: the source tarfile remains in
     24the source directory. One depository per block (given in the config-file) is
     25created. Always all files from the source directory are copied to the respective
     26depository. No additional file checks are done any more (version 2.1). The
     27depository name used contains the conditions given by mrun-option "-K".
     28(mbuild, mrun)
     29
    2330Output messages (including required stop of execution) can now be handled with
    2431the new subroutine handle_palm_message. All output messages will be replaced
    2532by this routine step by step within the next revisions.
    2633
    27 Makefile, check_parameters, local_stop, modules
     34Makefile, mbuild, mrun, check_parameters, local_stop, modules
    2835
    2936New: handle_palm_message, user_3d_data_averaging user_actions user_advec_particles user_check_data_output user_check_data_output_pr user_data_output_2d user_data_output_3d user_data_output_dvrp user_define_netcdf_grid user_dvrp_coltab user_header user_init user_init_3d_model user_init_grid user_init_particles user_init_plant_canopy user_last_actions user_module user_parin user_particle_attributes user_read_restart_data user_spectra user_statistics
     
    4754Bugfix in calculating k index in case of oceans runs. (sort_particles)
    4855
    49 advec_particles, combine_plot_fields, header, production_e
     56Bugfix: zero output of particle concentration and radius unless particles
     57have been started (data_output_2d)
     58
     59
     60advec_particles, combine_plot_fields, data_output_2d, header, production_e
  • 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
  • palm/trunk/SOURCE/data_output_2d.f90

    r108 r215  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Bugfix: zero output of particle concentration and radius unless particles
     7! have been started
    78!
    89! Former revisions:
     
    215216             CASE ( 'pc_xy', 'pc_xz', 'pc_yz' )  ! particle concentration
    216217                IF ( av == 0 )  THEN
    217                    tend = prt_count
    218                    CALL exchange_horiz( tend )
     218                   IF ( simulated_time >= particle_advection_start )  THEN
     219                      tend = prt_count
     220                      CALL exchange_horiz( tend )
     221                   ELSE
     222                      tend = 0.0
     223                   ENDIF
    219224                   DO  i = nxl-1, nxr+1
    220225                      DO  j = nys-1, nyn+1
     
    232237             CASE ( 'pr_xy', 'pr_xz', 'pr_yz' )  ! mean particle radius
    233238                IF ( av == 0 )  THEN
    234                    DO  i = nxl, nxr
    235                       DO  j = nys, nyn
    236                          DO  k = nzb, nzt+1
    237                             psi = prt_start_index(k,j,i)
    238                             s_r3 = 0.0
    239                             s_r4 = 0.0
    240                             DO  n = psi, psi+prt_count(k,j,i)-1
    241                                s_r3 = s_r3 + particles(n)%radius**3
    242                                s_r4 = s_r4 + particles(n)%radius**4
     239                   IF ( simulated_time >= particle_advection_start )  THEN
     240                      DO  i = nxl, nxr
     241                         DO  j = nys, nyn
     242                            DO  k = nzb, nzt+1
     243                               psi = prt_start_index(k,j,i)
     244                               s_r3 = 0.0
     245                               s_r4 = 0.0
     246                               DO  n = psi, psi+prt_count(k,j,i)-1
     247                                  s_r3 = s_r3 + particles(n)%radius**3
     248                                  s_r4 = s_r4 + particles(n)%radius**4
     249                               ENDDO
     250                               IF ( s_r3 /= 0.0 )  THEN
     251                                  mean_r = s_r4 / s_r3
     252                               ELSE
     253                                  mean_r = 0.0
     254                               ENDIF
     255                               tend(k,j,i) = mean_r
    243256                            ENDDO
    244                             IF ( s_r3 /= 0.0 )  THEN
    245                                mean_r = s_r4 / s_r3
    246                             ELSE
    247                                mean_r = 0.0
    248                             ENDIF
    249                             tend(k,j,i) = mean_r
    250257                         ENDDO
    251258                      ENDDO
    252                    ENDDO
    253                    CALL exchange_horiz( tend )
     259                      CALL exchange_horiz( tend )
     260                   ELSE
     261                      tend = 0.0
     262                   ENDIF
    254263                   DO  i = nxl-1, nxr+1
    255264                      DO  j = nys-1, nyn+1
  • palm/trunk/SOURCE/palm.f90

    r206 r215  
    112112    WRITE(9,*) '*** coupling_mode = "', TRIM( coupling_mode ), '"'
    113113    CALL LOCAL_FLUSH( 9 )
    114     PRINT*, '*** PE', myid, ' Global target PE:', target_id, &
    115             TRIM( coupling_mode )
     114    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
     115       PRINT*, '*** PE', myid, ' Global target PE:', target_id, &
     116               TRIM( coupling_mode )
     117    ENDIF
    116118#endif
    117119
Note: See TracChangeset for help on using the changeset viewer.