Changeset 215 for palm


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

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

Location:
palm/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SCRIPTS/mbuild

    r210 r215  
    9595     #                    ({mainprog}_current_version)
    9696     # 02/10/08 - Siggi - adapted for lcxt4
     97     # 14/11/08 - Siggi - update mechanism completely revised: source tarfile
     98     #                    remains in source directory, one depository per block
     99     #                    (given in the config-file) is created, always all files
     100     #                    from the source directory are copied to the respective
     101     #                    depository, no additional file checks are done any more
     102     #                    (version 2.1)
    97103
    98104
     
    121127 typeset  -L50 column2
    122128 typeset  -L70 column3
    123  typeset  -L40 version="MBUILD  2.0  Rev$Rev$"
     129 typeset  -L40 version="MBUILD  2.1  Rev$Rev$"
    124130
    125131    # FEHLERBEHANDLUNG
     
    141147
    142148
     149 tmp_mbuild=${working_directory}/tmp_mbuild
    143150
    144151    # SHELLSCRIPT-OPTIONEN EINLESEN
     
    187194    # HOST-IDENTIFIER (local_host) AUS KONFIGURATIONSDATEI BESTIMMEN
    188195 line=""
    189  grep  "%host_identifier"  $config_file  >  tmp_mbuild
     196 grep  "%host_identifier"  $config_file  >  $tmp_mbuild
    190197 while read line
    191198 do
     
    200207       fi
    201208    fi
    202  done < tmp_mbuild
     209 done < $tmp_mbuild
    203210
    204211 if [[ "$local_host" = "" ]]
     
    230237    # BENUTZERNAMEN AUF LOKALEM RECHNER AUS KONFIGURATIONSDATEI ERMITTELN
    231238 line=""
    232  grep  " $local_host" $config_file | grep "%remote_username"  >  tmp_mbuild
     239 grep  " $local_host" $config_file | grep "%remote_username"  >  $tmp_mbuild
    233240 while read line
    234241 do
     
    237244       local_username=`echo $line | cut -d" " -s -f2`
    238245    fi
    239  done < tmp_mbuild
     246 done < $tmp_mbuild
    240247
    241248
     
    254261    # VARIABLEN SETZEN, WEIL DIESE EVTL. IN PFADNAMEN VERWENDET WERDEN
    255262 line=""
    256  grep "%" $config_file  >  tmp_mbuild
     263 grep "%" $config_file  >  $tmp_mbuild
    257264 while read line
    258265 do
     
    264271#       eval echo \"   $var=\$$var \"   # AUSGABE ZU TESTZWECKEN
    265272    fi
    266  done < tmp_mbuild
     273 done < $tmp_mbuild
    267274
    268275    # NUN PRUEFEN, OB EIN GLOBALER QUELLTEXTPFAD VEREINBART WURDE
    269276 line=""
    270  grep "%source_path" $config_file  >  tmp_mbuild
     277 grep "%source_path" $config_file  >  $tmp_mbuild
    271278 while read line
    272279 do
     
    278285       fi
    279286    fi
    280  done < tmp_mbuild
     287 done < $tmp_mbuild
    281288
    282289 line=""
    283  grep  " $local_host" $config_file | grep "%source_path"  >  tmp_mbuild
     290 grep  " $local_host" $config_file | grep "%source_path"  >  $tmp_mbuild
    284291 while read line
    285292 do
     
    288295       local_source_path=`echo $line | cut -d" " -s -f2`
    289296    fi
    290  done < tmp_mbuild
     297 done < $tmp_mbuild
    291298
    292299 if [[ "$local_source_path" = "" ]]
     
    306313
    307314
    308      # EBENSO PFAD FUER DAS MAKE-DEPOSITORY ERMITTELN
     315
     316    # GLOBALEN DEPOSITORY-PFAD ERMITTELN
    309317 line=""
    310  grep "%depository_path" $config_file  >  tmp_mbuild
     318 grep "%depository_path" $config_file  >  $tmp_mbuild
    311319 while read line
    312320 do
     
    318326       fi
    319327    fi
    320  done < tmp_mbuild
    321 
    322  line=""
    323  grep  " $local_host" $config_file | grep "%depository_path"  >  tmp_mbuild
    324  while read line
    325  do
    326     if [[ "$line" != ""  &&  $(echo $line | cut -c1) != "#" ]]
    327     then
    328        local_depository_path=`echo $line | cut -d" " -s -f2`
    329     fi
    330  done < tmp_mbuild
    331 
    332  if [[ "$local_depository_path" = "" ]]
    333  then
    334     if [[ "$global_depository_path" != "" ]]
    335     then
    336        local_depository_path=$global_depository_path
    337     else
    338        printf "\n  +++ no depository path found in configuration file"
    339        printf "\n      for local host \"$local_host\" "
    340        printf "\n      please set \"\%depository_path\" in configuration file"
    341        locat=config_file; exit
    342     fi
    343  fi
    344  eval local_depository_path=$local_depository_path
    345  eval local_depository_path=$local_depository_path
     328 done < $tmp_mbuild
    346329
    347330
     
    395378 column1="local source path:"; column2=$local_source_path
    396379 printf "| $column1$column2 | \n"
    397  column1="make depository:"; column2=$local_depository_path
    398  printf "| $column1$column2 | \n"
    399380 printf "#------------------------------------------------------------------------# \n"
    400381
     
    405386 then
    406387
    407     cd  $local_source_path
    408 
    409 
    410        # LISTE DER ZU PRUEFENDEN QUELLTEXTDATEIEN ERSTELLEN
    411     source_code_files=`ls -1  *.$suf`
    412 
    413 
    414 
    415        # VERZEICHNIS FUER DAS MAKE-DEPOSITORY ERZEUGEN,
    416        # FALLS NOCH NICHT VORHANDEN. ANSONSTEN ALLE DATEIEN
    417        # NEUEREN DATUMS IN DIESES VERZEICHNIS KOPIEREN
    418     if [[ ! -d $local_depository_path ]]
    419     then
    420        if  mkdir $local_depository_path
    421        then
    422           printf "\n\n  *** directory for make depository:"
    423           printf "\n           $local_depository_path"
    424           printf "\n      was created\n"
    425 
    426              # MAKEFILE UND QUELLTEXTDATEIEN UNTER BEIBEHALTUNG
    427              # IHRES DATUMS INS VERZEICHNIS KOPIEREN
    428           printf "\n  *** makefile and source code files are copied to"
    429           printf "\n      $local_depository_path\n"
    430           printf "\n      copying makefile \"$makefile\" ..."
    431           cp -p  $makefile  $local_depository_path/Makefile
    432 
    433              # QUELLTEXTDATEIEN MUESSEN IM MAKEFILE AUFGEFUEHRT
    434              # SEIN
    435           for  filename  in  $source_code_files
    436           do
    437              if [[ $(grep -c $filename  $makefile) = 0 ]]
    438              then
    439                 printf "\n  +++ source code file:"
    440                 printf "\n         $filename"
    441                 printf "\n      is not listed in makefile"
    442                 locat=makefile; exit
    443              else
    444                 printf "\n      copying source code file \"$filename\" ..."
    445                 cp -p  $filename  $local_depository_path
    446              fi
    447           done
    448           printf "\n"
    449        else
    450           printf "\n  +++ directory for make depository:"
    451           printf "\n           $local_depository_path"
    452           printf "\n      cannot be created"
    453           locat=local_depository_path; exit
    454        fi
    455     else
    456  
    457        printf "\n  *** checking file status ..."
    458 
    459           # MAKEFILE KOPIEREN, FALLS NEUEREN DATUMS
    460        if [[ $makefile -nt $local_depository_path/Makefile ]]
    461        then
    462           printf "\n  *** update of \"$makefile\" "
    463           cp -f -p  $makefile  $local_depository_path/Makefile
    464           update=true
    465 
    466              # PRUEFEN, OB ALLE DATEIEN IM DEPOSITORY AUCH IM NEUEN MAKEFILE
    467              # VERZEICHNET SIND UND GEGEBENENFALLS DATEIEN LOESCHEN
    468           cd  $local_depository_path
    469           source_code_files_in_depository=`ls -1  *.$suf`
    470           for  filename  in  $source_code_files_in_depository
    471           do
    472              if [[ $(grep -c $filename  Makefile) = 0 ]]
    473              then
    474                 printf "\n  *** source code file in \"$local_depository_path\":"
    475                 printf "\n         $filename"
    476                 printf "\n      is not listed in makefile"
    477                 if [[ $silent = false ]]
    478                 then
    479                    answer=dummy
    480                    printf "\n\n"
    481                    while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    482                    do
    483                       printf " >>> delete \"$filename\" in \"$local_depository_path\" (y/n) ?  "
    484                       read  answer
    485                    done
    486                    if [[ $answer = y  ||  $answer = Y ]]
    487                    then
    488                       base=`echo $filename | cut -d. -f2`
    489                       rm -f  $filename
    490                       rm -f  ${base}.o  ${base}.mod
    491                       printf "\n  *** \"$filename\" deleted in \"$local_depository_path\" "
    492                    else
    493                       printf "\n  *** \"$filename\" not deleted in \"$local_depository_path\" "
    494                    fi
    495                 fi
    496              fi
    497           done
    498           cd  -  > /dev/null  2>&1
    499 
    500        elif [[ $local_depository_path/Makefile -nt $makefile ]]
    501        then
    502           printf "\n  *** makefile in depository is newer than"
    503           printf "\n      \"$makefile\" "
    504           if [[ $silent = false ]]
    505           then
    506              answer=dummy
    507              printf "\n\n"
    508              while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    509              do
    510                 printf " >>> update \"$makefile\" (y/n) ?  "
    511                 read  answer
    512              done
    513              if [[ $answer = y  ||  $answer = Y ]]
    514              then
    515                 cp -f -p  $local_depository_path/Makefile  $makefile
    516                 printf "\n  *** \"$makefile\" updated"
    517              else
    518                 printf "\n  *** \"$makefile\" not updated"
    519              fi
    520           fi
    521        fi
    522 
    523           # QUELLTEXTDATEIEN KOPIEREN, FALLS NEUEREN DATUMS
    524           # SIE MUESSEN IM MAKEFILE AUFGEFUEHRT SEIN
    525        for  filename  in  $source_code_files
    526        do
    527           if [[ $(grep -c $filename  $makefile) = 0 ]]
    528           then
    529              printf "\n  +++ source code file:"
    530              printf "\n         $filename"
    531              printf "\n      is not listed in makefile"
    532              locat=makefile; exit
    533           else
    534              if [[ ! -f $local_depository_path/$filename ]]
    535              then
    536                 cp -p  $filename  $local_depository_path
    537                 printf "\n  *** source code file \"$filename\" created in \"$local_depository_path\" "
    538              fi
    539              if [[ $filename -nt $local_depository_path/$filename ]]
    540              then
    541                 printf "\n  *** update of source code file \"$filename\" "
    542                 cp -f -p  $filename  $local_depository_path
    543                 update=true
    544              fi
    545           fi
    546        done
    547 
    548 
    549           # PRUEFEN, OB ALLE DATEIEN IM DEPOSITORY IM AKTUELLEN ARBEITSVERZEICHNIS VORHANDEN
    550           # ODER EVTL. NEUEREN DATUMS SIND
    551        cd  $local_depository_path
    552        source_code_files_in_depository=`ls -1  *.$suf`
    553        cd  -  > /dev/null  2>&1
    554        for  filename  in  $source_code_files_in_depository
    555        do
    556           if [[ ! -f $filename ]]
    557           then
    558              printf "\n  *** source code file \"$filename\" does not exist in current directory"
    559              if [[ $silent = false ]]
    560              then
    561                 answer=dummy
    562                 printf "\n\n"
    563                 while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    564                 do
    565                    printf " >>> create \"$filename\" in current directory (y/n) ?  "
    566                    read  answer
    567                 done
    568                 if [[ $answer = y  ||  $answer = Y ]]
    569                 then
    570                    cp -p  $local_depository_path/$filename  $filename
    571                    printf "\n  *** source code file \"$filename\" created in current directory"
    572                 else
    573                    printf "\n  *** source code file \"$filename\" not created in current directory"
    574                 fi
    575              fi
    576           elif [[ $local_depository_path/$filename -nt $filename ]]
    577           then
    578              ls -al $local_depository_path/$filename
    579              ls -al $filename
    580              printf "\n  *** source code file \"$filename\" in depository is newer than in current directory"
    581              if [[ $silent = false ]]
    582              then
    583                 answer=dummy
    584                 printf "\n\n"
    585                 while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    586                 do
    587                    printf " >>> update \"$filename\" in current directory (y/n) ?  "
    588                    read  answer
    589                 done
    590                 if [[ $answer = y  ||  $answer = Y ]]
    591                 then
    592                    cp -f -p  $local_depository_path/$filename  $filename
    593                    printf "\n  *** source code file \"$filename\" updated in current directory"
    594                 else
    595                    printf "\n  *** source code file \"$filename\" not updated in current directory"
    596                 fi
    597              fi
    598           fi
    599        done
    600 
    601        if [[ $update = false ]]
    602        then
    603           printf "\n  *** no updates necessary in \"$local_depository_path\" "
    604           if [[ $silent = false ]]
    605           then
    606              answer=dummy
    607              printf "\n\n"
    608              while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    609              do
    610                 printf " >>> continue with updates on remote hosts (y/n) ?  "
    611                 read  answer
    612              done
    613              if [[ $answer = n  ||  $answer = N ]]
    614              then
    615                 locat=user_abort; exit
    616              fi
    617           fi
    618        fi
    619     fi
    620  
    621 
    622  
    623        # QUELLTEXTDATEIEN UND MAKEFILE MIT TAR ZUSAMMENBINDEN
    624388       # IN JEDEM FALL ALLEN DATEIEN WRITE-PERMIT GEBEN, DAMIT ES AUF
    625389       # DEN REMOTE-RECHNERN NICHT EVTL. ZU PROBLEMEN BEIM UEBERSCHREIBEN KOMMT
    626     printf "\n\n  *** tar of makefile and source files in depository ..." 
    627     cd  $local_depository_path
    628     chmod u+w  Makefile  *.$suf
     390    cd  $local_source_path
     391    printf "\n\n  *** tar of makefile and source files in $local_source_path" 
    629392    tar -cf  ${mainprog}_sources.tar  Makefile  *.$suf
    630393    printf "\n"
     
    665428 printf "\n  *** scanning configuration file for host(s) ..."
    666429
    667  grep  %fopts  $config_file  >  tmp_mbuild
     430 grep  %fopts  $config_file  >  $tmp_mbuild
    668431 while read line
    669432 do
     
    672435    (( ihost = ihost + 1 ))
    673436    hostline[$ihost]="$line"
    674  done < tmp_mbuild
     437 done < $tmp_mbuild
    675438
    676439 
     
    750513    line=""
    751514    found=false
    752     grep  "$remote_host_string" $config_file | grep "%remote_username"  >  tmp_mbuild
     515    grep  "$remote_host_string" $config_file | grep "%remote_username"  >  $tmp_mbuild
    753516    while read line1
    754517    do
     
    765528       fi
    766529
    767     done < tmp_mbuild
     530    done < $tmp_mbuild
    768531
    769532    if [[ $found = false ]]
     
    778541    line=""
    779542    remote_source_path=""
    780     grep  "$remote_host_string" $config_file | grep "%source_path"  >  tmp_mbuild
     543    grep  "$remote_host_string" $config_file | grep "%source_path"  >  $tmp_mbuild
    781544    while read line1
    782545    do
     
    792555       fi
    793556
    794     done < tmp_mbuild
     557    done < $tmp_mbuild
    795558
    796559    if [[ "$remote_source_path" = "" ]]
     
    813576    remote_md=""
    814577    line=""
    815     grep  "$remote_host_string" $config_file | grep "%depository_path"  >  tmp_mbuild
     578    grep  "$remote_host_string" $config_file | grep "%depository_path"  >  $tmp_mbuild
    816579    while read line1
    817580    do
     
    827590       fi
    828591
    829     done < tmp_mbuild
     592    done < $tmp_mbuild
    830593
    831594    if [[ "$remote_md" = "" ]]
     
    843606
    844607    remote_md=$(eval echo $remote_md)
     608    [[ "$condition1" != "" ]]  &&  remote_md=${remote_md}_$condition1
     609    [[ "$condition2" != "" ]]  &&  remote_md=${remote_md}_$condition2
    845610
    846611
     
    848613    line=""
    849614    found=false
    850     grep  "$remote_host_string" $config_file | grep "%compiler_name "  >  tmp_mbuild
     615    grep  "$remote_host_string" $config_file | grep "%compiler_name "  >  $tmp_mbuild
    851616    while read line1
    852617    do
     
    863628       fi
    864629
    865     done < tmp_mbuild
     630    done < $tmp_mbuild
    866631
    867632    if [[ $found = false ]]
     
    879644       line=""
    880645       found=false
    881        grep  "$remote_host_string" $config_file | grep "%compiler_name_ser"  >  tmp_mbuild
     646       grep  "$remote_host_string" $config_file | grep "%compiler_name_ser"  >  $tmp_mbuild
    882647       while read line1
    883648       do
     
    894659          fi
    895660
    896        done < tmp_mbuild
     661       done < $tmp_mbuild
    897662
    898663       if [[ $found = false ]]
     
    911676    line=""
    912677    found=false
    913     grep  "$remote_host_string" $config_file | grep "%cpp_options"  >  tmp_mbuild
     678    grep  "$remote_host_string" $config_file | grep "%cpp_options"  >  $tmp_mbuild
    914679    while read line1
    915680    do
     
    927692       fi
    928693
    929     done < tmp_mbuild
     694    done < $tmp_mbuild
    930695
    931696    if [[ $found = false ]]
     
    963728       # NETCDF-OPTIONEN ERMITTELN
    964729    line=""
    965     grep  "$remote_host_string" $config_file | grep "%netcdf_inc"  >  tmp_mbuild
     730    grep  "$remote_host_string" $config_file | grep "%netcdf_inc"  >  $tmp_mbuild
    966731    while read line1
    967732    do
     
    978743       fi
    979744
    980     done < tmp_mbuild
     745    done < $tmp_mbuild
    981746
    982747    line=""
    983     grep  "$remote_host_string" $config_file | grep "%netcdf_lib"  >  tmp_mbuild
     748    grep  "$remote_host_string" $config_file | grep "%netcdf_lib"  >  $tmp_mbuild
    984749    while read line1
    985750    do
     
    996761       fi
    997762
    998     done < tmp_mbuild
     763    done < $tmp_mbuild
    999764
    1000765
     
    1003768    line=""
    1004769    found=false
    1005     grep  "$remote_host_string" $config_file | grep "%fopts"  >  tmp_mbuild
     770    grep  "$remote_host_string" $config_file | grep "%fopts"  >  $tmp_mbuild
    1006771    while read line1
    1007772    do
     
    1022787       fi
    1023788
    1024     done < tmp_mbuild
     789    done < $tmp_mbuild
    1025790
    1026791    if [[ $found = false ]]
     
    1036801    line=""
    1037802    found=false
    1038     grep  "$remote_host_string" $config_file | grep "%lopts"  >  tmp_mbuild
     803    grep  "$remote_host_string" $config_file | grep "%lopts"  >  $tmp_mbuild
    1039804    while read line1
    1040805    do
     
    1055820       fi
    1056821
    1057     done < tmp_mbuild
     822    done < $tmp_mbuild
    1058823
    1059824    if [[ $found = false ]]
     
    1078843    column1="make depository:"; column2=$remote_md
    1079844    printf "| $column1$column2 | \n"
     845    line=$(echo "$remote_md" | cut -c51-)
     846    while [[ "$line" != "" ]]
     847    do
     848       column1=""
     849       column2=$line
     850       printf "| $column1$column2 | \n"
     851       line=$(echo "$line" | cut -c51-)
     852    done
    1080853    if [[ $compile_utility_programs = true ]]
    1081854    then
     
    12471020                   # KOENNEN DOLLAR-ZEICHEN NICHT BENUTZT WERDEN
    12481021                remote_md=`echo $remote_md | sed 's/\$HOME\///'`
    1249                 /bin/scp  ${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
     1022                /bin/scp  ${local_source_path}/${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
    12501023             else
    1251                 scp  ${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
     1024                scp  ${local_source_path}/${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
    12521025             fi
    12531026
     
    14771250          then
    14781251
     1252                # DEPOSITORY VERZEICHNIS ERZEUGEN, FALLS NOCH NICHT VORHANDEN
     1253             eval remote_md=$remote_md
     1254             if [[ ! -d $remote_md ]]
     1255             then
     1256                if  mkdir $remote_md
     1257                then
     1258                   printf "\n\n  *** directory for make depository:"
     1259                   printf "\n           $remote_md"
     1260                   printf "\n      was created\n"
     1261                else
     1262                   printf "\n  +++ directory for make depository:"
     1263                   printf "\n           $remote_md"
     1264                   printf "\n      cannot be created"
     1265                   locat=local_depository_path; exit
     1266                fi
     1267             fi
     1268
     1269                # QUELLTEXT-DATEIEN AUS REPOSITORY INS DEPOSITORY KOPIEREN
     1270             echo " "
     1271             echo "  *** updating sources in $remote_md"
     1272             cd  $remote_md
     1273             cp  $local_source_path/${mainprog}_sources.tar  .
     1274             tar xf  ${mainprog}_sources.tar
     1275
    14791276                # MAKE MIT ZUVOR ERMITTELTEN OPTIONEN AUF LOKALEM RECHNER AUSFUEHREN
    14801277             echo " "
  • palm/trunk/SCRIPTS/mrun

    r211 r215  
    163163     #                     user can provide his/her own makefile, only
    164164     #                     default source-code filenames are allowed
     165     # 14/11/08 - Siggi  - cond1 and cond2 are part of the depository name
    165166
    166167
     
    22862287       fi
    22872288       eval local_depository_path=$local_depository_path
     2289       [[ "$cond1" != "" ]]  &&  local_depository_path=${local_depository_path}_$cond1
     2290       [[ "$cond2" != "" ]]  &&  local_depository_path=${local_depository_path}_$cond2
     2291
    22882292
    22892293       basename=`print $mainprog | cut -f1 -d"."`
  • 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.