Ignore:
Timestamp:
Nov 13, 2008 10:26:18 AM (13 years ago)
Author:
raasch
Message:

Output message can be handled with new subroutine handle_palm_message. All output messages will be replaced by this routine step by step within the next revisions

File:
1 edited

Legend:

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

    r206 r213  
    44! Actual revisions:
    55! -----------------
     6! Output of messages replaced by message handling routine.
    67! Implementation of an MPI-1 coupling: replaced myid with target_id,
    78! deleted __mpi2 directives
     
    109110!-- Warning, if host is not set
    110111    IF ( host(1:1) == ' ' )  THEN
    111        IF ( myid == 0 )  THEN
    112           PRINT*, '+++ WARNING: check_parameters:'
    113           PRINT*, '    "host" is not set. Please check that environment', &
    114                        ' variable "localhost"'
    115           PRINT*, '    is set before running PALM'
    116        ENDIF
     112       message_string = '"host" is not set. Please check that environment ' // &
     113                        'variable "localhost" & is set before running PALM'
     114       CALL handle_palm_message( 'check_parameters', 'PA0001', 0, 0, 0, 6, 0 )
    117115    ENDIF
    118116
     
    122120         coupling_mode /= 'atmosphere_to_ocean'  .AND.  &
    123121         coupling_mode /= 'ocean_to_atmosphere' )  THEN
    124        IF ( myid == 0 )  THEN
    125           PRINT*, '+++ check_parameters:'
    126           PRINT*, '    illegal coupling mode: ', TRIM( coupling_mode )
    127        ENDIF
    128        CALL local_stop
     122       message_string = 'illegal coupling mode: ' // TRIM( coupling_mode )
     123       CALL handle_palm_message( 'check_parameters', 'PA0002', 1, 2, 0, 6, 0 )
    129124    ENDIF
    130125
     
    132127!-- Check dt_coupling, restart_time, dt_restart, end_time, dx, dy, nx and ny
    133128    IF ( coupling_mode /= 'uncoupled' )  THEN
     129
    134130       IF ( dt_coupling == 9999999.9 )  THEN
    135           IF ( myid == 0 )  THEN
    136              PRINT*, '+++ check_parameters:'
    137              PRINT*, '    dt_coupling is not set but required for coupling ', &
    138                   'mode: ', TRIM( coupling_mode )
    139           ENDIF
    140           CALL local_stop
    141        ENDIF
     131          message_string = 'dt_coupling is not set but required for coup' // &
     132                           'ling mode "' //  TRIM( coupling_mode ) // '"'
     133          CALL handle_palm_message( 'check_parameters', 'PA0003', 1, 2, 0, 6, &
     134                                    0 )
     135       ENDIF
     136
    142137#if defined( __parallel )
    143138       CALL MPI_SEND( dt_coupling, 1, MPI_REAL, target_id, 11, comm_inter, &
     
    146141                      status, ierr )
    147142       IF ( dt_coupling /= remote )  THEN
    148           IF ( myid == 0 )  THEN
    149              PRINT*, '+++ check_parameters:'
    150              PRINT*, '    TRIM( coupling_mode ): dt_coupling = ', dt_coupling
    151              PRINT*, '    is not equal to dt_coupling_remote = ', remote
    152           ENDIF
    153           CALL local_stop
     143          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     144                 '": dt_coupling = ', dt_coupling, '& is not equal to ',       &
     145                 'dt_coupling_remote = ', remote
     146          CALL handle_palm_message( 'check_parameters', 'PA0004', 1, 2, 0, 6, &
     147                                    0 )
    154148       ENDIF
    155149       IF ( dt_coupling <= 0.0 )  THEN
     
    158152                         status, ierr )
    159153          dt_coupling = MAX( dt_max, remote )
    160           IF ( myid == 0 )  THEN
    161              PRINT*, '+++ check_parameters:'
    162              PRINT*, '    TRIM( coupling_mode ): dt_coupling <= 0.0'
    163              PRINT*, '    is not allowed and is reset to MAX(dt_max(A,O)) = ', &
    164                   dt_coupling
    165           ENDIF
    166        ENDIF
     154          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     155                 '": dt_coupling <= 0.0 & is not allowed and is reset to ',    &
     156                 'MAX(dt_max(A,O)) = ', dt_coupling
     157          CALL handle_palm_message( 'check_parameters', 'PA0005', 0, 1, 0, 6, &
     158                                    0 )
     159       ENDIF
     160
    167161       CALL MPI_SEND( restart_time, 1, MPI_REAL, target_id, 12, comm_inter, &
    168162                      ierr )
     
    170164                      status, ierr )
    171165       IF ( restart_time /= remote )  THEN
    172           IF ( myid == 0 )  THEN
    173              PRINT*, '+++ check_parameters:'
    174              PRINT*, '    TRIM( coupling_mode ): restart_time = ', restart_time
    175              PRINT*, '    is not equal to restart_time_remote = ', remote
    176           ENDIF
    177           CALL local_stop
    178        ENDIF
     166          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     167                 '": restart_time = ', restart_time, '& is not equal to ',     &
     168                 'restart_time_remote = ', remote
     169          CALL handle_palm_message( 'check_parameters', 'PA0006', 1, 2, 0, 6, &
     170                                    0 )
     171       ENDIF
     172
    179173       CALL MPI_SEND( dt_restart, 1, MPI_REAL, target_id, 13, comm_inter, &
    180174                      ierr )
     
    182176                      status, ierr )
    183177       IF ( dt_restart /= remote )  THEN
    184           IF ( myid == 0 )  THEN
    185              PRINT*, '+++ check_parameters:'
    186              PRINT*, '    TRIM( coupling_mode ): dt_restart = ', dt_restart
    187              PRINT*, '    is not equal to dt_restart_remote = ', remote
    188           ENDIF
    189           CALL local_stop
    190        ENDIF
     178          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     179                 '": dt_restart = ', dt_restart, '& is not equal to ',         &
     180                 'dt_restart_remote = ', remote
     181          CALL handle_palm_message( 'check_parameters', 'PA0007', 1, 2, 0, 6, &
     182                                    0 )
     183       ENDIF
     184
    191185       CALL MPI_SEND( end_time, 1, MPI_REAL, target_id, 14, comm_inter, ierr )
    192186       CALL MPI_RECV( remote, 1, MPI_REAL, target_id, 14, comm_inter, &
    193187                      status, ierr )
    194188       IF ( end_time /= remote )  THEN
    195           IF ( myid == 0 )  THEN
    196              PRINT*, '+++ check_parameters:'
    197              PRINT*, '    TRIM( coupling_mode ): end_time = ', end_time
    198              PRINT*, '    is not equal to end_time_remote = ', remote
    199           ENDIF
    200           CALL local_stop
    201        ENDIF
     189          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     190                 '": end_time = ', end_time, '& is not equal to ',             &
     191                 'end_time_remote = ', remote
     192          CALL handle_palm_message( 'check_parameters', 'PA0008', 1, 2, 0, 6, &
     193                                    0 )
     194       ENDIF
     195
    202196       CALL MPI_SEND( dx, 1, MPI_REAL, target_id, 15, comm_inter, ierr )
    203197       CALL MPI_RECV( remote, 1, MPI_REAL, target_id, 15, comm_inter, &
    204198                      status, ierr )
    205199       IF ( dx /= remote )  THEN
    206           IF ( myid == 0 )  THEN
    207              PRINT*, '+++ check_parameters:'
    208              PRINT*, '    TRIM( coupling_mode ): dx = ', dx
    209              PRINT*, '    is not equal to dx_remote = ', remote
    210           ENDIF
    211           CALL local_stop
    212        ENDIF
     200          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     201                 '":  dx = ', dx, '& is not equal to dx_remote = ', remote
     202          CALL handle_palm_message( 'check_parameters', 'PA0009', 1, 2, 0, 6, &
     203                                    0 )
     204       ENDIF
     205
    213206       CALL MPI_SEND( dy, 1, MPI_REAL, target_id, 16, comm_inter, ierr )
    214207       CALL MPI_RECV( remote, 1, MPI_REAL, target_id, 16, comm_inter, &
    215208                      status, ierr )
    216209       IF ( dy /= remote )  THEN
    217           IF ( myid == 0 )  THEN
    218              PRINT*, '+++ check_parameters:'
    219              PRINT*, '    TRIM( coupling_mode ): dy = ', dy
    220              PRINT*, '    is not equal to dy_remote = ', remote
    221           ENDIF
    222           CALL local_stop
    223        ENDIF
     210          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     211                 '":  dy = ', dy, '& is not equal to dy_remote = ', remote
     212          CALL handle_palm_message( 'check_parameters', 'PA0010', 1, 2, 0, 6, &
     213                                    0 )
     214       ENDIF
     215
    224216       CALL MPI_SEND( nx, 1, MPI_INTEGER, target_id, 17, comm_inter, ierr )
    225217       CALL MPI_RECV( iremote, 1, MPI_INTEGER, target_id, 17, comm_inter, &
    226218                      status, ierr )
    227219       IF ( nx /= iremote )  THEN
    228           IF ( myid == 0 )  THEN
    229              PRINT*, '+++ check_parameters:'
    230              PRINT*, '    TRIM( coupling_mode ): nx = ', nx
    231              PRINT*, '    is not equal to nx_remote = ', iremote
    232           ENDIF
    233           CALL local_stop
    234        ENDIF
     220          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     221                 '": nx = ', nx, '& is not equal to nx_remote = ', iremote
     222          CALL handle_palm_message( 'check_parameters', 'PA0011', 1, 2, 0, 6, &
     223                                    0 )
     224       ENDIF
     225
    235226       CALL MPI_SEND( ny, 1, MPI_INTEGER, target_id, 18, comm_inter, ierr )
    236227       CALL MPI_RECV( iremote, 1, MPI_INTEGER, target_id, 18, comm_inter, &
    237228                      status, ierr )
    238229       IF ( ny /= iremote )  THEN
    239           IF ( myid == 0 )  THEN
    240              PRINT*, '+++ check_parameters:'
    241              PRINT*, '    TRIM( coupling_mode ): ny = ', ny
    242              PRINT*, '    is not equal to ny_remote = ', iremote
    243           ENDIF
    244           CALL local_stop
     230          WRITE( message_string, * ) 'coupling mode "', TRIM( coupling_mode ), &
     231                 '": ny = ', ny, '& is not equal to ny_remote = ', iremote
     232          CALL handle_palm_message( 'check_parameters', 'PA0012', 1, 2, 0, 6, &
     233                                    0 )
    245234       ENDIF
    246235#endif
     
    291280    IF ( loop_optimization /= 'noopt'  .AND.  loop_optimization /= 'cache' &
    292281         .AND.  loop_optimization /= 'vector' )  THEN
    293        IF ( myid == 0 )  THEN
    294           PRINT*, '+++ check_parameters:'
    295           PRINT*, '    illegal value given for loop_optimization: ', &
    296                   TRIM( loop_optimization )
    297        ENDIF
    298        CALL local_stop
     282       message_string = 'illegal value given for loop_optimization: "' // &
     283                        TRIM( loop_optimization ) // '"'
     284       CALL handle_palm_message( 'check_parameters', 'PA0013', 1, 2, 0, 6, 0 )
    299285    ENDIF
    300286
     
    334320       ENDIF
    335321       IF ( action /= ' ' )  THEN
    336           IF ( myid == 0 )  THEN
    337              PRINT*, '+++ check_parameters:'
    338              PRINT*, '    a non-flat topography does not allow ', TRIM( action )
    339           ENDIF
    340           CALL local_stop
     322          message_string = 'a non-flat topography does not allow ' // &
     323                           TRIM( action )
     324          CALL handle_palm_message( 'check_parameters', 'PA0014', 1, 2, 0, 6, &
     325                                    0 )
    341326       ENDIF
    342327    ENDIF
     
    353338       ENDIF
    354339       IF ( action /= ' ' )  THEN
    355           IF ( myid == 0 )  THEN
    356              PRINT*, '+++ check_parameters:'
    357              PRINT*, '    ocean = .T. does not allow ', TRIM( action )
    358           ENDIF
    359           CALL local_stop
     340          message_string = 'ocean = .T. does not allow ' // TRIM( action )
     341          CALL handle_palm_message( 'check_parameters', 'PA0015', 1, 2, 0, 6, &
     342                                    0 )
    360343       ENDIF
    361344    ENDIF
     
    366349    IF ( psolver /= 'poisfft'  .AND.  psolver /= 'poisfft_hybrid'  .AND. &
    367350         psolver /= 'sor'  .AND.  psolver /= 'multigrid' )  THEN
    368        IF ( myid == 0 )  THEN
    369           PRINT*, '+++ check_parameters:'
    370           PRINT*, '    unknown solver for perturbation pressure: psolver=', &
    371                   psolver
    372        ENDIF
    373        CALL local_stop
     351       message_string = 'unknown solver for perturbation pressure: psolver' // &
     352                        ' = "' // TRIM( psolver ) // '"'
     353       CALL handle_palm_message( 'check_parameters', 'PA0016', 1, 2, 0, 6, 0 )
    374354    ENDIF
    375355
    376356#if defined( __parallel )
    377357    IF ( psolver == 'poisfft_hybrid'  .AND.  pdims(2) /= 1 )  THEN
    378        IF ( myid == 0 )  THEN
    379           PRINT*, '+++ check_parameters:'
    380           PRINT*, '    psolver="', TRIM( psolver ), '" only works for a ', &
    381                        '1d domain-decomposition along x'
    382           PRINT*, '    please do not set npey/=1 in the parameter file'
    383        ENDIF
    384        CALL local_stop
     358       message_string = 'psolver = "' // TRIM( psolver ) // '" only works ' // &
     359                        'for a 1d domain-decomposition along x & please do' // &
     360                        ' not set npey/=1 in the parameter file'
     361       CALL handle_palm_message( 'check_parameters', 'PA0017', 1, 2, 0, 6, 0 )
    385362    ENDIF
    386363    IF ( psolver == 'poisfft_hybrid'  .AND.                     &
     
    388365          psolver == 'multigrid'      .AND.                     &
    389366         ( nxra > nxr  .OR.  nyna > nyn ) )  THEN
    390        IF ( myid == 0 )  THEN
    391           PRINT*, '+++ check_parameters:'
    392           PRINT*, '    psolver="', TRIM( psolver ), '" does not work for ', &
    393                        'subdomains with unequal size'
    394           PRINT*, '    please set grid_matching = ''strict'' in the parameter',&
    395                        ' file'
    396        ENDIF
    397        CALL local_stop
     367       message_string = 'psolver = "' // TRIM( psolver ) // '" does not ' // &
     368                        'work for subdomains with unequal size & please ' // &
     369                        'set grid_matching = ''strict'' in the parameter file'
     370       CALL handle_palm_message( 'check_parameters', 'PA0018', 1, 2, 0, 6, 0 )
    398371    ENDIF
    399372#else
    400373    IF ( psolver == 'poisfft_hybrid' )  THEN
    401        IF ( myid == 0 )  THEN
    402           PRINT*, '+++ check_parameters:'
    403           PRINT*, '    psolver="', TRIM( psolver ), '" only works for a ', &
    404                        'parallel environment'
    405        ENDIF
    406        CALL local_stop
     374       message_string = 'psolver = "' // TRIM( psolver ) // '" only works' // &
     375                        ' for a parallel environment'
     376       CALL handle_palm_message( 'check_parameters', 'PA0019', 1, 2, 0, 6, 0 )
    407377    ENDIF
    408378#endif
     
    414384          gamma_mg = 1
    415385       ELSE
    416           IF ( myid == 0 )  THEN
    417              PRINT*, '+++ check_parameters:'
    418              PRINT*, '    unknown multigrid cycle: cycle_mg=', cycle_mg
    419           ENDIF
    420           CALL local_stop
     386          message_string = 'unknown multigrid cycle: cycle_mg = "' // &
     387                           TRIM( cycle_mg ) // '"'
     388          CALL handle_palm_message( 'check_parameters', 'PA0020', 1, 2, 0, 6, &
     389                                    0 )
    421390       ENDIF
    422391    ENDIF
     
    425394         fft_method /= 'temperton-algorithm'  .AND.  &
    426395         fft_method /= 'system-specific' )  THEN
    427        IF ( myid == 0 )  THEN
    428           PRINT*, '+++ check_parameters:'
    429           PRINT*, '    unknown fft-algorithm: fft_method=', fft_method
    430        ENDIF
    431        CALL local_stop
     396       message_string = 'unknown fft-algorithm: fft_method = "' // &
     397                        TRIM( fft_method ) // '"'
     398       CALL handle_palm_message( 'check_parameters', 'PA0021', 1, 2, 0, 6, 0 )
    432399    ENDIF
    433400
Note: See TracChangeset for help on using the changeset viewer.