Ignore:
Timestamp:
Dec 4, 2009 5:05:40 PM (12 years ago)
Author:
letzel
Message:
  • reintegrate branch letzel/masked_output into trunk; new funtionality: masked data output (not yet documented)
Location:
palm/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

    • Property svn:mergeinfo set to False
      /palm/branches/letzel/masked_output296-409
  • palm/trunk/SOURCE/check_open.f90

    r392 r410  
    55! -----------------
    66!
     7!
     8! Branch revisions:
     9! -----------------
     10! masked data output
    711!
    812! Former revisions:
     
    6064    IMPLICIT NONE
    6165
    62     CHARACTER (LEN=2)   ::  suffix
     66    CHARACTER (LEN=2)   ::  mask_char, suffix
    6367    CHARACTER (LEN=20)  ::  xtext = 'time in s'
    6468    CHARACTER (LEN=30)  ::  filename
     
    123127
    124128       CASE ( 15, 16, 17, 18, 19, 40:49, 50:59, 81:84, 101:107, 109, 111:113, &
    125               116 )
     129              116, 121:160 )
     130             
     131          IF ( .NOT. format_parallel_io) THEN
    126132         
    127           IF ( myid /= 0 )  THEN
    128              WRITE( message_string, * ) 'opening file-id ',file_id, &
    129                                         ' not allowed for PE ',myid
    130              CALL message( 'check_open', 'PA0167', 2, 2, -1, 6, 1 )
    131           ENDIF
     133             IF ( myid /= 0 )  THEN
     134                WRITE( message_string, * ) 'opening file-id ',file_id, &
     135                                           ' not allowed for PE ',myid
     136                CALL message( 'check_open', 'PA0167', 2, 2, -1, 6, 1 )
     137             ENDIF
     138             
     139          ENDIF
    132140
    133141       CASE ( 21, 22, 23 )
     
    12331241
    12341242          ENDIF
     1243
     1244       CASE ( 121:160 )
     1245!
     1246!--       Set filename depending on unit number
     1247          IF ( file_id <= 140 )  THEN
     1248             mid = file_id - 120
     1249             WRITE ( mask_char,'(I2.2)')  mid
     1250             filename = 'DATA_MASK_' // mask_char // '_NETCDF' // coupling_char
     1251             av = 0
     1252          ELSE
     1253             mid = file_id - 140
     1254             WRITE ( mask_char,'(I2.2)')  mid
     1255             filename = 'DATA_MASK_' // mask_char // '_AV_NETCDF' // &
     1256                  coupling_char
     1257             av = 1
     1258          ENDIF
     1259!
     1260!--       Inquire, if there is a NetCDF file from a previuos run. This should
     1261!--       be opened for extension, if its dimensions and variables match the
     1262!--       actual run.
     1263          INQUIRE( FILE=filename, EXIST=netcdf_extend )
     1264
     1265          IF ( netcdf_extend )  THEN
     1266!
     1267!--          Open an existing NetCDF file for output
     1268#if defined( __netcdf4 )
     1269             nc_stat = NF90_OPEN_PAR( filename, NF90_WRITE, comm2d, &
     1270                                      MPI_INFO_NULL, id_set_mask(mid,av) )
    12351271#else
    1236 
    1237        CASE ( 101:109, 111:113, 116 )
     1272             nc_stat = NF90_OPEN( filename, NF90_WRITE, id_set_mask(mid,av) )
     1273#endif
     1274             CALL handle_netcdf_error( 'check_open', 9998 )
     1275!
     1276!--          Read header information and set all ids. If there is a mismatch
     1277!--          between the previuos and the actual run, netcdf_extend is returned
     1278!--          as .FALSE.
     1279             CALL define_netcdf_header( 'ma', netcdf_extend, file_id )
     1280
     1281!
     1282!--          Remove the local file, if it can not be extended
     1283             IF ( .NOT. netcdf_extend )  THEN
     1284                nc_stat = NF90_CLOSE( id_set_mask(mid,av) )
     1285                CALL handle_netcdf_error( 'check_open', 9998 )
     1286                CALL local_system('rm ' // TRIM( filename ) )
     1287             ENDIF
     1288
     1289          ENDIF         
     1290
     1291          IF ( .NOT. netcdf_extend )  THEN
     1292!
     1293!--          Create a new NetCDF output file
     1294             SELECT CASE ( nc_format_mask(mid,av) )
     1295
     1296                CASE ( 1 )
     1297                   nc_stat = NF90_CREATE( filename, NF90_NOCLOBBER, &
     1298                        id_set_mask(mid,av) )
     1299
     1300                CASE ( 2 )
     1301#if defined( __netcdf_64bit )
     1302                   nc_stat = NF90_CREATE( filename, OR( NF90_NOCLOBBER, &
     1303                        NF90_64BIT_OFFSET ), id_set_mask(mid,av) )
     1304#else
     1305                   WRITE( message_string, * ) 'NetCDF: no 64-bit ', &
     1306                        'offset format allowed on this machine'
     1307                   CALL message( 'check_open', 'PA9998', 0, 1, 0, 6, 0 )
     1308                   nc_stat = NF90_CREATE( filename, NF90_NOCLOBBER, &
     1309                        id_set_mask(mid,av) )
     1310#endif
     1311
     1312                CASE ( 3 )
     1313#if defined( __netcdf4 )
     1314                   nc_stat = NF90_CREATE_PAR( filename, OR( NF90_NOCLOBBER, &
     1315                        NF90_NETCDF4 ), comm2d, MPI_INFO_NULL, &
     1316                        id_set_mask(mid,av) )
     1317#else
     1318                   WRITE( message_string, * ) 'NetCDF: no NetCDF 4 ', &
     1319                        'format allowed on this machine'
     1320                   CALL message( 'check_open', 'PA9998', 0, 1, 0, 6, 0 )
     1321                   nc_stat = NF90_CREATE( filename, NF90_NOCLOBBER, &
     1322                        id_set_mask(mid,av) )
     1323#endif
     1324
     1325                CASE ( 4 )
     1326#if defined( __netcdf4 )
     1327                   nc_stat = NF90_CREATE_PAR( filename, OR( NF90_NOCLOBBER, &
     1328                      NF90_CLASSIC_MODEL ), comm2d, &
     1329                      MPI_INFO_NULL, id_set_mask(mid,av) )
     1330#else
     1331                   WRITE( message_string, * ) 'NetCDF: no NetCDF 4 (Classic ', &
     1332                        'model) format allowed on this machine'
     1333                   CALL message( 'check_open', 'PA9998', 0, 1, 0, 6, 0 )
     1334                   nc_stat = NF90_CREATE( filename, NF90_NOCLOBBER, &
     1335                        id_set_mask(mid,av) )
     1336#endif
     1337
     1338                CASE DEFAULT
     1339                   WRITE( message_string, * ) 'illegal NetCDF file format: ', &
     1340                        'nc_format_mask(mid=',mid,',av=',av,')=', &
     1341                        nc_format_mask(mid,av)
     1342                   CALL message( 'check_open', 'PA9998', 2, 2, 0, 6, 0 )
     1343
     1344             END SELECT
     1345             CALL handle_netcdf_error( 'check_open', 9998 )
     1346!
     1347!--          Define the header
     1348             CALL define_netcdf_header( 'ma', netcdf_extend, file_id )
     1349
     1350          ENDIF
     1351
     1352
     1353#else
     1354
     1355       CASE ( 101:109, 111:113, 116, 121:160 )
    12381356
    12391357!
Note: See TracChangeset for help on using the changeset viewer.