Changeset 4116 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jul 24, 2019 3:17:16 PM (5 years ago)
Author:
gronemeier
Message:

bugfix: check for empty file list in data_ouput_module when starting output

File:
1 edited

Legend:

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

    r4113 r4116  
    142142
    143143   INTEGER(iwp) ::  debug_output_unit  !< Fortran Unit Number of the debug-output file
    144    INTEGER(iwp) ::  nf                 !< number of files
     144   INTEGER      ::  nf = 0             !< number of files
    145145   INTEGER      ::  master_rank = 0    !< master rank for tasks to be executed by single PE only
    146146   INTEGER      ::  output_group_comm  !< MPI communicator addressing all MPI ranks which participate in output
     
    282282   WRITE( debug_output_unit, '(A)' ) REPEAT( separation_string // ' ', 4 )
    283283
    284    IF ( .NOT. ALLOCATED( files) )  THEN
     284   IF ( .NOT. ALLOCATED( files ) .OR. nf == 0 )  THEN
    285285
    286286      WRITE( debug_output_unit, '(A)' ) 'database is empty'
     
    293293                                        ',(": ")'
    294294
    295       nf = SIZE( files )
    296295      DO  f = 1, nf
    297296
     
    679678   return_value = 0
    680679
     680   CALL internal_message( 'debug', routine_name // ': define file "' // TRIM( filename ) // '"' )
     681
    681682   !-- Allocate file list or extend it by 1
    682683   IF ( .NOT. ALLOCATED( files ) ) THEN
     
    768769   return_value = 0
    769770
     771   CALL internal_message( 'debug', routine_name //                  &
     772                          ': define dimension "' // TRIM( name ) // &
     773                          '" in file "' // TRIM( filename ) // '"' )
     774
    770775   dimension%name      = TRIM( name )
    771776   dimension%data_type = TRIM( output_type )
     
    782787      IF ( PRESENT( mask ) )  THEN
    783788         return_value = 1
    784          CALL internal_message( 'error', routine_name //                            &
    785                                          ': unlimited dimension' // TRIM( name ) // &
    786                                          ' in file ' // TRIM( filename ) // ' cannot be masked' )
     789         CALL internal_message( 'error', routine_name //                              &
     790                                         ': unlimited dimension "' // TRIM( name ) // &
     791                                         '" in file "' // TRIM( filename ) // '" cannot be masked' )
    787792      ENDIF
    788793
     
    982987
    983988      return_value = 1
    984       CALL internal_message( 'error', routine_name //          &
    985                              ': dimension ' // TRIM( name ) // &
    986                              ': At least one but no more than two bounds must be given' )
     989      CALL internal_message( 'error', routine_name //                                       &
     990                             ': at least one but no more than two bounds must be given ' // &
     991                             '(dimension "' // TRIM( name ) //                              &
     992                             '", file "' // TRIM( filename ) //                             &
     993                             '")!' )
    987994
    988995   ENDIF
     
    10651072      IF ( f > nf )  THEN
    10661073         return_value = 1
    1067          CALL internal_message( 'error', routine_name // &
    1068                                          ': file "' // TRIM( filename ) // '" not found' )
     1074         CALL internal_message( 'error', routine_name //                           &
     1075                                ': file not found (dimension "' // TRIM( name ) // &
     1076                                '", file "' // TRIM( filename ) // '")!' )
    10691077      ENDIF
    10701078
     
    11041112
    11051113   return_value = 0
     1114
     1115   CALL internal_message( 'debug', routine_name //                  &
     1116                          ': define variable "' // TRIM( name ) // &
     1117                          '" in file "' // TRIM( filename ) // '"' )
    11061118
    11071119   variable%name = TRIM( name )
     
    11581170                  IF ( .NOT. found )  THEN
    11591171                     return_value = 1
    1160                      CALL internal_message( 'error',                               &
    1161                                             routine_name //                        &
    1162                                             ': variable "' // TRIM( name ) //      &
    1163                                             '" in file "' // TRIM( filename ) //   &
    1164                                             '": required dimension "' //           &
    1165                                             TRIM( variable%dimension_names(i) ) // &
    1166                                             '" not defined' )
     1172                     CALL internal_message( 'error',                                            &
     1173                                            routine_name //                                     &
     1174                                            ': required dimension "' //                         &
     1175                                            TRIM( variable%dimension_names(i) ) //              &
     1176                                            '" for variable "' // TRIM( name ) //               &
     1177                                            '" is not defined in file "' // TRIM( filename ) // &
     1178                                            '"!' )
    11671179                     EXIT
    11681180                  ENDIF
     
    11731185
    11741186            return_value = 1
    1175             CALL internal_message( 'error', routine_name //                   &
    1176                                             ': file "' // TRIM( filename ) // &
    1177                                             '" has no dimensions defined' )
     1187            CALL internal_message( 'error', routine_name //                        &
     1188                                   ': cannot define variable "' // TRIM( name ) // &
     1189                                   '" in file "' // TRIM( filename ) //            &
     1190                                   '" because no dimensions defined in file.' )
    11781191
    11791192         ENDIF
     
    11931206                  IF ( files(f)%variables(i)%name == variable%name )  THEN
    11941207                     return_value = 1
    1195                      CALL internal_message( 'error', routine_name //                      &
    1196                                                      ': variable "' // TRIM( name ) //    &
    1197                                                      '" in file "' // TRIM( filename ) // &
    1198                                                      '": variable already exists' )
     1208                     CALL internal_message( 'error', routine_name //          &
     1209                                            ': variable "' // TRIM( name ) // &
     1210                                            '" already exists in file "' //  &
     1211                                            TRIM( filename ) // '"!' )
    11991212                     EXIT
    12001213                  ENDIF
     
    12271240   IF ( f > nf )  THEN
    12281241      return_value = 1
    1229       CALL internal_message( 'error', routine_name //                    &
    1230                                       ': variable "' // TRIM( name ) //  &
    1231                                       '": file "' // TRIM( filename ) // &
    1232                                       '" not found' )
     1242      CALL internal_message( 'error', routine_name //                           &
     1243                             ': file not found (variable "' // TRIM( name ) //  &
     1244                             '", file "' // TRIM( filename ) // '")!' )
    12331245   ENDIF
    12341246
     
    12711283   IF ( PRESENT( variable ) )  THEN
    12721284      return_value = dom_def_att_save( TRIM( filename ), TRIM( variable ), &
    1273                                            attribute=attribute, append=append_internal )
     1285                                       attribute=attribute, append=append_internal )
    12741286   ELSE
    12751287      return_value = dom_def_att_save( TRIM( filename ), &
    1276                                            attribute=attribute, append=append_internal )
     1288                                       attribute=attribute, append=append_internal )
    12771289   ENDIF
    12781290
     
    15741586   return_value = 0
    15751587   found = .FALSE.
     1588
     1589   IF ( PRESENT( variable_name ) )  THEN
     1590      CALL internal_message( 'debug', routine_name //                            &
     1591                             ': define attribute "' // TRIM( attribute%name ) // &
     1592                             '" of variable "' // TRIM( variable_name ) //       &
     1593                             '" in file "' // TRIM( filename ) // '"' )
     1594   ELSE
     1595      CALL internal_message( 'debug', routine_name //                            &
     1596                             ': define attribute "' // TRIM( attribute%name ) // &
     1597                             '" in file "' // TRIM( filename ) // '"' )
     1598   ENDIF
    15761599
    15771600   DO  f = 1, nf
     
    17721795      CALL internal_message( 'error',                                         &
    17731796                             routine_name //                                  &
    1774                              ': requested file "' // TRIM( variable_name ) // &
     1797                             ': requested file "' // TRIM( filename ) //      &
    17751798                             '" for attribute "' // TRIM( attribute%name ) // &
    17761799                             '" does not exist' )
     
    18151838
    18161839
     1840   return_value = 0
     1841   CALL internal_message( 'debug', routine_name // ': start' )
     1842
    18171843   !-- Clear database from empty files and unused dimensions
    1818    return_value = cleanup_database()
     1844   IF ( nf > 0 )  return_value = cleanup_database()
    18191845
    18201846   IF ( return_value == 0 )  THEN
Note: See TracChangeset for help on using the changeset viewer.