Changeset 410 for palm/trunk/SOURCE
- Timestamp:
- Dec 4, 2009 5:05:40 PM (15 years ago)
- Location:
- palm/trunk
- Files:
-
- 13 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk
-
Property
svn:mergeinfo
set to
False
/palm/branches/letzel/masked_output 296-409
-
Property
svn:mergeinfo
set to
False
-
palm/trunk/SOURCE/Makefile
r305 r410 5 5 # ----------------- 6 6 # +set_particle_attributes, set_slicer_attributes_dvrp 7 # 8 # Branch revisions: 9 # ----------------- 10 # +data_output_mask, init_masks, user_data_output_mask 7 11 # 8 12 # Former revisions: … … 55 59 close_file.f90 compute_vpt.f90 coriolis.f90 cpu_log.f90 \ 56 60 cpu_statistics.f90 data_log.f90 data_output_dvrp.f90 \ 57 data_output_ profiles.f90 data_output_ptseries.f90 \61 data_output_mask.f90 data_output_profiles.f90 data_output_ptseries.f90 \ 58 62 data_output_spectra.f90 data_output_tseries.f90 data_output_2d.f90 \ 59 63 data_output_3d.f90 diffusion_e.f90 diffusion_s.f90 diffusion_u.f90 \ 60 64 diffusion_v.f90 diffusion_w.f90 diffusivities.f90 disturb_field.f90 \ 61 disturb_heatflux.f90 eqn_state_seawater.f90 exchange_horiz.f90 exchange_horiz_2d.f90 \ 65 disturb_heatflux.f90 eqn_state_seawater.f90 exchange_horiz.f90 \ 66 exchange_horiz_2d.f90 \ 62 67 fft_xy.f90 flow_statistics.f90 global_min_max.f90 \ 63 68 header.f90 impact_of_latent_heat.f90 inflow_turbulence.f90 \ 64 69 init_1d_model.f90 init_3d_model.f90 init_advec.f90 \ 65 70 init_cloud_physics.f90 init_coupling.f90 init_dvrp.f90 init_grid.f90 \ 66 init_ ocean.f90 init_particles.f90 init_pegrid.f90 \71 init_masks.f90 init_ocean.f90 init_particles.f90 init_pegrid.f90 \ 67 72 init_pt_anomaly.f90 init_rankine.f90 init_slope.f90 \ 68 73 interaction_droplets_ptq.f90 local_flush.f90 local_getenv.f90 \ … … 83 88 user_check_data_output.f90 user_check_data_output_pr.f90 \ 84 89 user_check_parameters.f90 user_data_output_2d.f90 \ 85 user_data_output_3d.f90 user_data_output_dvrp.f90 \90 user_data_output_3d.f90 user_data_output_dvrp.f90 user_data_output_mask.f90 \ 86 91 user_define_netcdf_grid.f90 user_dvrp_coltab.f90 user_header.f90 \ 87 92 user_init.f90 user_init_3d_model.f90 user_init_grid.f90 \ … … 100 105 check_for_restart.o check_open.o check_parameters.o close_file.o \ 101 106 compute_vpt.o coriolis.o cpu_log.o cpu_statistics.o data_log.o \ 102 data_output_dvrp.o data_output_profiles.o data_output_ptseries.o \ 107 data_output_dvrp.o data_output_mask.o data_output_profiles.o \ 108 data_output_ptseries.o \ 103 109 data_output_spectra.o data_output_tseries.o data_output_2d.o \ 104 110 data_output_3d.o diffusion_e.o diffusion_s.o diffusion_u.o \ … … 107 113 flow_statistics.o global_min_max.o header.o impact_of_latent_heat.o \ 108 114 inflow_turbulence.o init_1d_model.o init_3d_model.o init_advec.o init_cloud_physics.o \ 109 init_coupling.o init_dvrp.o init_grid.o init_ ocean.o init_particles.o init_pegrid.o \115 init_coupling.o init_dvrp.o init_grid.o init_masks.o init_ocean.o init_particles.o init_pegrid.o \ 110 116 init_pt_anomaly.o init_rankine.o init_slope.o \ 111 117 interaction_droplets_ptq.o local_flush.o local_getenv.o local_stop.o \ … … 124 130 user_advec_particles.o user_check_data_output.o \ 125 131 user_check_data_output_pr.o user_check_parameters.o \ 126 user_data_output_2d.o user_data_output_3d.o user_data_output_ dvrp.o \132 user_data_output_2d.o user_data_output_3d.o user_data_output_mask.o user_data_output_dvrp.o \ 127 133 user_define_netcdf_grid.o user_dvrp_coltab.o user_header.o \ 128 134 user_init.o user_init_3d_model.o user_init_grid.o \ … … 190 196 data_log.o: modules.o 191 197 data_output_dvrp.o: modules.o 198 data_output_mask.o: modules.o 192 199 data_output_profiles.o: modules.o 193 200 data_output_ptseries.o: modules.o … … 220 227 init_dvrp.o: modules.o 221 228 init_grid.o: modules.o 229 init_masks.o: modules.o 222 230 init_ocean.o: modules.o eqn_state_seawater.o 223 231 init_particles.o: modules.o random_function.o … … 282 290 user_data_output_2d.o: modules.o user_module.o 283 291 user_data_output_3d.o: modules.o user_module.o 292 user_data_output_mask.o: modules.o user_module.o 284 293 user_data_output_dvrp.o: modules.o user_module.o 285 294 user_define_netcdf_grid.o: modules.o user_module.o -
palm/trunk/SOURCE/check_open.f90
r392 r410 5 5 ! ----------------- 6 6 ! 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! masked data output 7 11 ! 8 12 ! Former revisions: … … 60 64 IMPLICIT NONE 61 65 62 CHARACTER (LEN=2) :: suffix66 CHARACTER (LEN=2) :: mask_char, suffix 63 67 CHARACTER (LEN=20) :: xtext = 'time in s' 64 68 CHARACTER (LEN=30) :: filename … … 123 127 124 128 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 126 132 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 132 140 133 141 CASE ( 21, 22, 23 ) … … 1233 1241 1234 1242 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) ) 1235 1271 #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 ) 1238 1356 1239 1357 ! -
palm/trunk/SOURCE/check_parameters.f90
r407 r410 5 5 ! ----------------- 6 6 ! Enabled passive scalar/humidity wall fluxes for non-flat topography 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! Masked data output 7 11 ! 8 12 ! Former revisions: … … 1477 1481 IF ( dt_do3d == 9999999.9 ) dt_do3d = dt_data_output 1478 1482 IF ( dt_data_output_av == 9999999.9 ) dt_data_output_av = dt_data_output 1483 DO mid = 1, 20 1484 IF ( dt_domask(mid) == 9999999.9 ) dt_domask(mid) = dt_data_output 1485 ENDDO 1479 1486 ENDIF 1480 1487 … … 1495 1502 IF ( skip_time_data_output_av == 9999999.9 ) & 1496 1503 skip_time_data_output_av = skip_time_data_output 1504 DO mid = 1, 20 1505 IF ( skip_time_domask(mid) == 9999999.9 ) & 1506 skip_time_domask(mid) = skip_time_data_output 1507 ENDDO 1497 1508 1498 1509 ! … … 2647 2658 2648 2659 ! 2660 !-- Check mask conditions 2661 IF ( masks < 0 .OR. masks > max_masks ) THEN 2662 WRITE( message_string, * ) 'illegal value: masks must be >= 0 and ', & 2663 '<= ', max_masks, ' (=max_masks)' 2664 CALL message( 'check_parameters', 'PA9998', 1, 2, 0, 6, 0 ) 2665 ENDIF 2666 IF ( masks > 0 ) THEN 2667 mask_scale(1) = mask_scale_x 2668 mask_scale(2) = mask_scale_y 2669 mask_scale(3) = mask_scale_z 2670 IF ( ANY( mask_scale <= 0.0 ) ) THEN 2671 WRITE( message_string, * ) & 2672 'illegal value: mask_scale_x, mask_scale_y and mask_scale_z', & 2673 'must be > 0.0' 2674 CALL message( 'check_parameters', 'PA9998', 1, 2, 0, 6, 0 ) 2675 ENDIF 2676 ! 2677 !-- Generate masks for masked data output 2678 CALL init_masks 2679 ENDIF 2680 2681 ! 2649 2682 !-- Check netcdf precison 2650 2683 ldum = .FALSE. -
palm/trunk/SOURCE/close_file.f90
r392 r410 5 5 ! ----------------- 6 6 ! 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! masked data output 7 11 ! 8 12 ! Former revisions: … … 59 63 CHARACTER (LEN=80) :: rtext, title, utext = '', xtext = '', ytext = '' 60 64 61 INTEGER :: a nzzeile, cranz, cross_count, cross_numbers, dimx, dimy, &65 INTEGER :: av, anzzeile, cranz, cross_count, cross_numbers, dimx, dimy, & 62 66 fid, file_id, j, k, legpos = 1, planz, timodex = 1 63 67 INTEGER, DIMENSION(100) :: klist, lstyle, cucol … … 94 98 ! 95 99 !-- Close all open unit numbers 96 DO fid = 1, 1 16100 DO fid = 1, 160 97 101 98 102 IF ( openfile(fid)%opened .OR. openfile(fid)%opened_before ) THEN … … 493 497 nc_stat = NF90_CLOSE( id_set_3d(1) ) 494 498 CALL handle_netcdf_error( 'close_file', 353 ) 499 ENDIF 500 501 CASE ( 121:160 ) 502 503 IF ( format_parallel_io ) THEN 504 ! 505 !-- decompose fid into mid and av 506 IF ( fid <= 140 ) THEN 507 mid = fid - 120 508 av = 0 509 ELSE 510 mid = fid - 140 511 av = 1 512 ENDIF 513 nc_stat = NF90_CLOSE( id_set_mask(mid,av) ) 514 CALL handle_netcdf_error( 'close_file', 9998 ) 515 516 ELSEIF ( myid == 0 .AND. netcdf_output ) THEN 517 ! 518 !-- decompose fid into mid and av 519 IF ( fid <= 140 ) THEN 520 mid = fid - 120 521 av = 0 522 ELSE 523 mid = fid - 140 524 av = 1 525 ENDIF 526 nc_stat = NF90_CLOSE( id_set_mask(mid,av) ) 527 CALL handle_netcdf_error( 'close_file', 9998 ) 528 495 529 ENDIF 496 530 -
palm/trunk/SOURCE/header.f90
r392 r410 6 6 ! 7 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! Masked data output: + dt_domask, mask_01~20_x|y|z, mask_01~20_x|y|z_loop, 11 ! mask_scale|_x|y|z, masks, netcdf_format_mask[_av], skip_time_domask 12 ! 8 13 ! Former revisions: 9 14 ! ----------------- … … 105 110 CHARACTER (LEN=70) :: char1, char2, dopr_chr, & 106 111 do2d_xy, do2d_xz, do2d_yz, do3d_chr, & 107 run_classification112 domask_chr, run_classification 108 113 CHARACTER (LEN=86) :: coordinates, gradients, learde, slices, & 109 114 temperatures, ugcomponent, vgcomponent 110 115 CHARACTER (LEN=85) :: roben, runten 111 116 112 INTEGER :: av, bh, blx, bly, bxl, bxr, byn, bys, ch, cwx, cwy, cxl, cxr, & 113 cyn, cys, i, ihost, io, j, l, ll, m, mpi_type 117 CHARACTER (LEN=1), DIMENSION(1:3) :: dir = (/ 'x', 'y', 'z' /) 118 119 INTEGER :: av, bh, blx, bly, bxl, bxr, byn, bys, ch, count, cwx, cwy, & 120 cxl, cxr, cyn, cys, dim, i, ihost, io, j, l, ll, m, mpi_type 114 121 REAL :: cpuseconds_per_simulated_second 115 122 … … 988 995 ENDIF 989 996 997 ENDDO 998 999 ! 1000 !-- masked arrays 1001 IF ( masks > 0 ) WRITE ( io, 345 ) & 1002 mask_scale_x, mask_scale_y, mask_scale_z 1003 DO mid = 1, masks 1004 DO av = 0, 1 1005 1006 i = 1 1007 domask_chr = '' 1008 DO WHILE ( domask(mid,av,i) /= ' ' ) 1009 domask_chr = TRIM( domask_chr ) // ' ' // & 1010 TRIM( domask(mid,av,i) ) // ',' 1011 i = i + 1 1012 ENDDO 1013 1014 IF ( domask_chr /= '' ) THEN 1015 IF ( av == 0 ) THEN 1016 WRITE ( io, 346 ) '', mid 1017 ELSE 1018 WRITE ( io, 346 ) ' (time-averaged)', mid 1019 ENDIF 1020 1021 output_format = '' 1022 IF ( netcdf_output ) THEN 1023 SELECT CASE ( nc_format_mask(mid,av) ) 1024 CASE ( 1 ) 1025 output_format = 'netcdf (classic format)' 1026 CASE ( 2 ) 1027 output_format = 'netcdf (64bit offset format)' 1028 CASE ( 3 ) 1029 output_format = 'netcdf (NetCDF 4 format)' 1030 CASE ( 4 ) 1031 output_format = 'netcdf (NetCDF 4 classic model format)' 1032 END SELECT 1033 ENDIF 1034 WRITE ( io, 344 ) output_format 1035 1036 IF ( av == 0 ) THEN 1037 WRITE ( io, 347 ) domask_chr, dt_domask(mid) 1038 ELSE 1039 WRITE ( io, 348 ) domask_chr, dt_data_output_av, & 1040 averaging_interval, dt_averaging_input 1041 ENDIF 1042 1043 IF ( av == 0 ) THEN 1044 IF ( skip_time_domask(mid) /= 0.0 ) THEN 1045 WRITE ( io, 339 ) skip_time_domask(mid) 1046 ENDIF 1047 ELSE 1048 IF ( skip_time_data_output_av /= 0.0 ) THEN 1049 WRITE ( io, 339 ) skip_time_data_output_av 1050 ENDIF 1051 ENDIF 1052 ! 1053 !-- output locations 1054 DO dim = 1, 3 1055 IF ( mask(mid,dim,1) >= 0.0 ) THEN 1056 count = 0 1057 DO WHILE ( mask(mid,dim,count+1) >= 0.0 ) 1058 count = count + 1 1059 ENDDO 1060 WRITE ( io, 349 ) dir(dim), dir(dim), mid, dir(dim), & 1061 mask(mid,dim,:count) 1062 ELSEIF ( mask_loop(mid,dim,1) < 0.0 .AND. & 1063 mask_loop(mid,dim,2) < 0.0 .AND. & 1064 mask_loop(mid,dim,3) == 0.0 ) THEN 1065 WRITE ( io, 350 ) dir(dim), dir(dim) 1066 ELSEIF ( mask_loop(mid,dim,3) == 0.0 ) THEN 1067 WRITE ( io, 351 ) dir(dim), dir(dim), mid, dir(dim), & 1068 mask_loop(mid,dim,1:2) 1069 ELSE 1070 WRITE ( io, 351 ) dir(dim), dir(dim), mid, dir(dim), & 1071 mask_loop(mid,dim,1:3) 1072 ENDIF 1073 ENDDO 1074 ENDIF 1075 1076 ENDDO 990 1077 ENDDO 991 1078 … … 1619 1706 ' Upper output limit at ',F8.2,' m (GP ',I4,')'/) 1620 1707 344 FORMAT (' Output format: ',A/) 1708 345 FORMAT (/' Scaling lengths for output locations of all subsequent mask IDs:',/ & 1709 ' mask_scale_x (in x-direction): ',F9.3, ' m',/ & 1710 ' mask_scale_y (in y-direction): ',F9.3, ' m',/ & 1711 ' mask_scale_z (in z-direction): ',F9.3, ' m' ) 1712 346 FORMAT (/' Masked data output',A,' for mask ID ',I2, ':') 1713 347 FORMAT (' Variables: ',A/ & 1714 ' Output every ',F8.2,' s') 1715 348 FORMAT (' Variables: ',A/ & 1716 ' Output every ',F8.2,' s'/ & 1717 ' Time averaged over ',F8.2,' s'/ & 1718 ' Averaging input every ',F8.2,' s') 1719 349 FORMAT (/' Output locations in ',A,'-direction in multiples of ', & 1720 'mask_scale_',A,' predefined by array mask_',I2.2,'_',A,':'/ & 1721 13(' ',8(F8.2,',')/) ) 1722 350 FORMAT (/' Output locations in ',A,'-direction: ', & 1723 'all gridpoints along ',A,'-direction (default).' ) 1724 351 FORMAT (/' Output locations in ',A,'-direction in multiples of ', & 1725 'mask_scale_',A,' constructed from array mask_',I2.2,'_',A,'_loop:'/ & 1726 ' loop begin:',F8.2,', end:',F8.2,', stride:',F8.2 ) 1621 1727 #if defined( __dvrp_graphics ) 1622 1728 360 FORMAT (' Plot-Sequence with dvrp-software:'/ & -
palm/trunk/SOURCE/modules.f90
r405 r410 8 8 ! initial data assignments to some dvrp arrays changed due to error messages 9 9 ! from gfortran compiler 10 ! 11 ! Branch revisions: 12 ! ----------------- 13 ! Masked data output: + dt_domask, mask_01~20_x|y|z, mask_01~20_x|y|z_loop, 14 ! mask_scale|_x|y|z, masks, netcdf_format_mask[_av], skip_time_domask 10 15 ! 11 16 ! Former revisions: … … 281 286 TYPE(file_status), DIMENSION(200) :: openfile = file_status(.FALSE.,.FALSE.) 282 287 288 289 INTEGER, PARAMETER :: mask_xyz_dimension = 100, max_masks = 20 283 290 284 291 CHARACTER (LEN=1) :: cycle_mg = 'w', timestep_reason = ' ' … … 322 329 CHARACTER (LEN=11), DIMENSION(100) :: data_output = ' ', & 323 330 data_output_user = ' ', doav = ' ' 331 CHARACTER (LEN=10), DIMENSION(100) :: & 332 data_output_mask_01 = ' ', data_output_mask_02 = ' ', & 333 data_output_mask_03 = ' ', data_output_mask_04 = ' ', & 334 data_output_mask_05 = ' ', data_output_mask_06 = ' ', & 335 data_output_mask_07 = ' ', data_output_mask_08 = ' ', & 336 data_output_mask_09 = ' ', data_output_mask_10 = ' ', & 337 data_output_mask_11 = ' ', data_output_mask_12 = ' ', & 338 data_output_mask_13 = ' ', data_output_mask_14 = ' ', & 339 data_output_mask_15 = ' ', data_output_mask_16 = ' ', & 340 data_output_mask_17 = ' ', data_output_mask_18 = ' ', & 341 data_output_mask_19 = ' ', data_output_mask_20 = ' ', & 342 data_output_mask_user_01 = ' ', data_output_mask_user_02 = ' ', & 343 data_output_mask_user_03 = ' ', data_output_mask_user_04 = ' ', & 344 data_output_mask_user_05 = ' ', data_output_mask_user_06 = ' ', & 345 data_output_mask_user_07 = ' ', data_output_mask_user_08 = ' ', & 346 data_output_mask_user_09 = ' ', data_output_mask_user_10 = ' ', & 347 data_output_mask_user_11 = ' ', data_output_mask_user_12 = ' ', & 348 data_output_mask_user_13 = ' ', data_output_mask_user_14 = ' ', & 349 data_output_mask_user_15 = ' ', data_output_mask_user_16 = ' ', & 350 data_output_mask_user_17 = ' ', data_output_mask_user_18 = ' ', & 351 data_output_mask_user_19 = ' ', data_output_mask_user_20 = ' ' 352 324 353 CHARACTER (LEN=10), DIMENSION(300) :: data_output_pr = ' ' 325 354 CHARACTER (LEN=10), DIMENSION(200) :: data_output_pr_user = ' ' 326 CHARACTER (LEN=20), DIMENSION(10) :: netcdf_precision = ' ' 327 355 CHARACTER (LEN=20), DIMENSION(50) :: netcdf_precision = ' ' 356 357 CHARACTER (LEN=10), DIMENSION(max_masks,0:1,100) :: domask = ' ' 328 358 CHARACTER (LEN=10), DIMENSION(0:1,100) :: do2d = ' ', do3d = ' ' 329 359 … … 341 371 inflow_disturbance_begin = -1, inflow_disturbance_end = -1, & 342 372 intermediate_timestep_count, intermediate_timestep_count_max, & 343 iran = -1234567, last_dt_change = 0, maximum_grid_level, & 373 iran = -1234567, last_dt_change = 0, masks = 0, & 374 maximum_grid_level, & 344 375 max_pr_user = 0, mgcycles = 0, mg_cycles = -1, & 345 mg_switch_to_pe0_level = 0, ngsrb = 2, nsor = 20, &376 mg_switch_to_pe0_level = 0, mid, ngsrb = 2, nsor = 20, & 346 377 nsor_ini = 100, n_sor, normalizing_region = 0, & 347 378 nz_do1d, nz_do3d = -9999, outflow_damping_width = -1, & … … 354 385 do2d_xz_time_count(0:1), do2d_yz_time_count(0:1), & 355 386 do3d_no(0:1) = 0, do3d_time_count(0:1), & 387 domask_no(max_masks,0:1) = 0, domask_time_count(max_masks,0:1),& 356 388 lad_vertical_gradient_level_ind(10) = -9999, & 389 mask_size(max_masks,3) = -1, mask_size_l(max_masks,3) = -1, & 390 mask_start_l(max_masks,3) = -1, & 391 nc_format_mask(1:max_masks,0:1), & 392 netcdf_format_mask(1:max_masks) = 1, & 393 netcdf_format_mask_av(1:max_masks) = 1, & 357 394 pt_vertical_gradient_level_ind(10) = -9999, & 358 395 q_vertical_gradient_level_ind(10) = -9999, & … … 364 401 365 402 INTEGER, DIMENSION(:), ALLOCATABLE :: grid_level_count 403 404 INTEGER, DIMENSION(:,:), ALLOCATABLE :: mask_i, mask_j, mask_k 405 INTEGER, DIMENSION(:,:), ALLOCATABLE :: & 406 mask_i_global, mask_j_global, mask_k_global 366 407 367 408 LOGICAL :: adjust_mixing_length = .FALSE., avs_output = .FALSE., & … … 381 422 disturbance_created = .FALSE., & 382 423 first_call_advec_particles = .TRUE., & 383 force_print_header = .FALSE., galilei_transformation = .FALSE.,& 424 force_print_header = .FALSE., format_parallel_io = .FALSE., & 425 galilei_transformation = .FALSE.,& 384 426 humidity = .FALSE., humidity_remote = .FALSE., & 385 427 inflow_l = .FALSE., inflow_n = .FALSE., & … … 439 481 km_damp_max = -1.0, lad_surface = 0.0, & 440 482 leaf_surface_concentration = 0.0, long_filter_factor = 0.0, & 441 maximum_cpu_time_allowed = 0.0, molecular_viscosity = 1.461E-5, & 483 mask_scale_x = 1.0, mask_scale_y = 1.0, mask_scale_z = 1.0, & 484 maximum_cpu_time_allowed = 0.0, & 485 molecular_viscosity = 1.461E-5, & 442 486 old_dt = 1.0E-10, omega = 7.29212E-5, omega_sor = 1.8, & 443 487 overshoot_limit_e = 0.0, overshoot_limit_pt = 0.0, & … … 480 524 REAL :: do2d_xy_last_time(0:1) = -1.0, do2d_xz_last_time(0:1) = -1.0, & 481 525 do2d_yz_last_time(0:1) = -1.0, dpdxy(1:2) = 0.0, & 482 lad_vertical_gradient(10) = 0.0,&526 dt_domask(max_masks) = 9999999.9, lad_vertical_gradient(10) = 0.0,& 483 527 lad_vertical_gradient_level(10) = -9999999.9, & 528 mask_scale(3), & 484 529 pt_vertical_gradient(10) = 0.0, & 485 530 pt_vertical_gradient_level(10) = -9999999.9, & … … 489 534 s_vertical_gradient_level(10) = -1.0, & 490 535 sa_vertical_gradient(10) = 0.0, & 491 sa_vertical_gradient_level(10) = -9999999.9, threshold(20) = 0.0, & 536 sa_vertical_gradient_level(10) = -9999999.9, & 537 skip_time_domask(max_masks) = 9999999.9, threshold(20) = 0.0, & 538 time_domask(max_masks) = 0.0, & 492 539 tsc(10) = (/ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /), & 493 540 ug_vertical_gradient(10) = 0.0, & … … 502 549 REAL, DIMENSION(:), ALLOCATABLE :: dp_smooth_factor 503 550 551 REAL, DIMENSION(mask_xyz_dimension) :: & 552 mask_01_x = -1.0, mask_02_x = -1.0, mask_03_x = -1.0, mask_04_x = -1.0, & 553 mask_05_x = -1.0, mask_06_x = -1.0, mask_07_x = -1.0, mask_08_x = -1.0, & 554 mask_09_x = -1.0, mask_10_x = -1.0, mask_11_x = -1.0, mask_12_x = -1.0, & 555 mask_13_x = -1.0, mask_14_x = -1.0, mask_15_x = -1.0, mask_16_x = -1.0, & 556 mask_17_x = -1.0, mask_18_x = -1.0, mask_19_x = -1.0, mask_20_x = -1.0, & 557 mask_01_y = -1.0, mask_02_y = -1.0, mask_03_y = -1.0, mask_04_y = -1.0, & 558 mask_05_y = -1.0, mask_06_y = -1.0, mask_07_y = -1.0, mask_08_y = -1.0, & 559 mask_09_y = -1.0, mask_10_y = -1.0, mask_11_y = -1.0, mask_12_y = -1.0, & 560 mask_13_y = -1.0, mask_14_y = -1.0, mask_15_y = -1.0, mask_16_y = -1.0, & 561 mask_17_y = -1.0, mask_18_y = -1.0, mask_19_y = -1.0, mask_20_y = -1.0, & 562 mask_01_z = -1.0, mask_02_z = -1.0, mask_03_z = -1.0, mask_04_z = -1.0, & 563 mask_05_z = -1.0, mask_06_z = -1.0, mask_07_z = -1.0, mask_08_z = -1.0, & 564 mask_09_z = -1.0, mask_10_z = -1.0, mask_11_z = -1.0, mask_12_z = -1.0, & 565 mask_13_z = -1.0, mask_14_z = -1.0, mask_15_z = -1.0, mask_16_z = -1.0, & 566 mask_17_z = -1.0, mask_18_z = -1.0, mask_19_z = -1.0, mask_20_z = -1.0 567 REAL, DIMENSION(3) :: & 568 mask_01_x_loop = (/ -1.0, -1.0, 0.0 /), & 569 mask_02_x_loop = (/ -1.0, -1.0, 0.0 /), & 570 mask_03_x_loop = (/ -1.0, -1.0, 0.0 /), & 571 mask_04_x_loop = (/ -1.0, -1.0, 0.0 /), & 572 mask_05_x_loop = (/ -1.0, -1.0, 0.0 /), & 573 mask_06_x_loop = (/ -1.0, -1.0, 0.0 /), & 574 mask_07_x_loop = (/ -1.0, -1.0, 0.0 /), & 575 mask_08_x_loop = (/ -1.0, -1.0, 0.0 /), & 576 mask_09_x_loop = (/ -1.0, -1.0, 0.0 /), & 577 mask_10_x_loop = (/ -1.0, -1.0, 0.0 /), & 578 mask_11_x_loop = (/ -1.0, -1.0, 0.0 /), & 579 mask_12_x_loop = (/ -1.0, -1.0, 0.0 /), & 580 mask_13_x_loop = (/ -1.0, -1.0, 0.0 /), & 581 mask_14_x_loop = (/ -1.0, -1.0, 0.0 /), & 582 mask_15_x_loop = (/ -1.0, -1.0, 0.0 /), & 583 mask_16_x_loop = (/ -1.0, -1.0, 0.0 /), & 584 mask_17_x_loop = (/ -1.0, -1.0, 0.0 /), & 585 mask_18_x_loop = (/ -1.0, -1.0, 0.0 /), & 586 mask_19_x_loop = (/ -1.0, -1.0, 0.0 /), & 587 mask_20_x_loop = (/ -1.0, -1.0, 0.0 /), & 588 mask_01_y_loop = (/ -1.0, -1.0, 0.0 /), & 589 mask_02_y_loop = (/ -1.0, -1.0, 0.0 /), & 590 mask_03_y_loop = (/ -1.0, -1.0, 0.0 /), & 591 mask_04_y_loop = (/ -1.0, -1.0, 0.0 /), & 592 mask_05_y_loop = (/ -1.0, -1.0, 0.0 /), & 593 mask_06_y_loop = (/ -1.0, -1.0, 0.0 /), & 594 mask_07_y_loop = (/ -1.0, -1.0, 0.0 /), & 595 mask_08_y_loop = (/ -1.0, -1.0, 0.0 /), & 596 mask_09_y_loop = (/ -1.0, -1.0, 0.0 /), & 597 mask_10_y_loop = (/ -1.0, -1.0, 0.0 /), & 598 mask_11_y_loop = (/ -1.0, -1.0, 0.0 /), & 599 mask_12_y_loop = (/ -1.0, -1.0, 0.0 /), & 600 mask_13_y_loop = (/ -1.0, -1.0, 0.0 /), & 601 mask_14_y_loop = (/ -1.0, -1.0, 0.0 /), & 602 mask_15_y_loop = (/ -1.0, -1.0, 0.0 /), & 603 mask_16_y_loop = (/ -1.0, -1.0, 0.0 /), & 604 mask_17_y_loop = (/ -1.0, -1.0, 0.0 /), & 605 mask_18_y_loop = (/ -1.0, -1.0, 0.0 /), & 606 mask_19_y_loop = (/ -1.0, -1.0, 0.0 /), & 607 mask_20_y_loop = (/ -1.0, -1.0, 0.0 /), & 608 mask_01_z_loop = (/ -1.0, -1.0, 0.0 /), & 609 mask_02_z_loop = (/ -1.0, -1.0, 0.0 /), & 610 mask_03_z_loop = (/ -1.0, -1.0, 0.0 /), & 611 mask_04_z_loop = (/ -1.0, -1.0, 0.0 /), & 612 mask_05_z_loop = (/ -1.0, -1.0, 0.0 /), & 613 mask_06_z_loop = (/ -1.0, -1.0, 0.0 /), & 614 mask_07_z_loop = (/ -1.0, -1.0, 0.0 /), & 615 mask_08_z_loop = (/ -1.0, -1.0, 0.0 /), & 616 mask_09_z_loop = (/ -1.0, -1.0, 0.0 /), & 617 mask_10_z_loop = (/ -1.0, -1.0, 0.0 /), & 618 mask_11_z_loop = (/ -1.0, -1.0, 0.0 /), & 619 mask_12_z_loop = (/ -1.0, -1.0, 0.0 /), & 620 mask_13_z_loop = (/ -1.0, -1.0, 0.0 /), & 621 mask_14_z_loop = (/ -1.0, -1.0, 0.0 /), & 622 mask_15_z_loop = (/ -1.0, -1.0, 0.0 /), & 623 mask_16_z_loop = (/ -1.0, -1.0, 0.0 /), & 624 mask_17_z_loop = (/ -1.0, -1.0, 0.0 /), & 625 mask_18_z_loop = (/ -1.0, -1.0, 0.0 /), & 626 mask_19_z_loop = (/ -1.0, -1.0, 0.0 /), & 627 mask_20_z_loop = (/ -1.0, -1.0, 0.0 /) 628 ! 629 !-- internal mask arrays ("mask,dimension,selection") 630 REAL, DIMENSION(:,:,:), ALLOCATABLE :: mask, mask_loop 504 631 505 632 SAVE … … 832 959 !------------------------------------------------------------------------------! 833 960 961 USE control_parameters 834 962 #if defined( __netcdf ) 835 963 USE netcdf … … 934 1062 id_var_zw_xy, id_var_zw_xz, id_var_zw_yz, id_var_zw_3d 935 1063 936 INTEGER, DIMENSION(10) :: id_var_dospx, id_var_dospy , nc_precision1064 INTEGER, DIMENSION(10) :: id_var_dospx, id_var_dospy 937 1065 INTEGER, DIMENSION(20) :: id_var_prt 1066 INTEGER, DIMENSION(50) :: nc_precision 938 1067 INTEGER, DIMENSION(dopr_norm_num) :: id_var_norm_dopr 939 1068 … … 944 1073 INTEGER, DIMENSION(dots_max,0:9) :: id_var_dots 945 1074 1075 ! 1076 !-- masked output 1077 CHARACTER (LEN=7), DIMENSION(max_masks,0:1,100) :: domask_unit 1078 946 1079 LOGICAL :: output_for_t0 = .FALSE. 1080 1081 INTEGER, DIMENSION(1:max_masks,0:1) :: id_dim_time_mask, id_dim_x_mask, & 1082 id_dim_xu_mask, id_dim_y_mask, id_dim_yv_mask, id_dim_zu_mask, & 1083 id_dim_zw_mask, & 1084 id_set_mask, & 1085 id_var_time_mask, id_var_x_mask, id_var_xu_mask, & 1086 id_var_y_mask, id_var_yv_mask, id_var_zu_mask, id_var_zw_mask, & 1087 id_var_zusi_mask, id_var_zwwi_mask 1088 1089 INTEGER, DIMENSION(1:max_masks,0:1,100) :: id_var_domask 947 1090 948 1091 SAVE -
palm/trunk/SOURCE/netcdf.f90
r392 r410 8 8 ! ------------------ 9 9 ! 10 ! 11 ! Branch revisions: 12 ! ----------------- 13 ! masked data output 10 14 ! 11 15 ! Former revisions: … … 94 98 CHARACTER (LEN=2000) :: var_list, var_list_old 95 99 96 INTEGER :: av, i, id_x, id_y, id_z, j, ns, ns_old, nz_old100 INTEGER :: av, file_id, i, id_x, id_y, id_z, j, ns, ns_old, nz_old 97 101 98 102 INTEGER, DIMENSION(1) :: id_dim_time_old, id_dim_x_yz_old, & 99 103 id_dim_y_xz_old, id_dim_zu_sp_old, & 100 id_dim_zu_xy_old, id_dim_zu_3d_old 104 id_dim_zu_xy_old, id_dim_zu_3d_old, & 105 id_dim_zu_mask_old 101 106 102 107 LOGICAL :: found … … 108 113 REAL, DIMENSION(1) :: last_time_coordinate 109 114 110 REAL, DIMENSION(:), ALLOCATABLE :: netcdf_data 115 REAL, DIMENSION(:), ALLOCATABLE :: netcdf_data 116 REAL, DIMENSION(:,:), ALLOCATABLE :: netcdf_data_2d 117 111 118 112 119 … … 161 168 CASE ( 'prt' ) 162 169 nc_precision(8) = j 170 CASE ( 'masks' ) 171 nc_precision(11:50) = j 172 CASE ( 'mask01' ) 173 nc_precision(11) = j 174 CASE ( 'mask02' ) 175 nc_precision(12) = j 176 CASE ( 'mask03' ) 177 nc_precision(13) = j 178 CASE ( 'mask04' ) 179 nc_precision(14) = j 180 CASE ( 'mask05' ) 181 nc_precision(15) = j 182 CASE ( 'mask06' ) 183 nc_precision(16) = j 184 CASE ( 'mask07' ) 185 nc_precision(17) = j 186 CASE ( 'mask08' ) 187 nc_precision(18) = j 188 CASE ( 'mask09' ) 189 nc_precision(19) = j 190 CASE ( 'mask10' ) 191 nc_precision(20) = j 192 CASE ( 'mask11' ) 193 nc_precision(21) = j 194 CASE ( 'mask12' ) 195 nc_precision(22) = j 196 CASE ( 'mask13' ) 197 nc_precision(23) = j 198 CASE ( 'mask14' ) 199 nc_precision(24) = j 200 CASE ( 'mask15' ) 201 nc_precision(25) = j 202 CASE ( 'mask16' ) 203 nc_precision(26) = j 204 CASE ( 'mask17' ) 205 nc_precision(27) = j 206 CASE ( 'mask18' ) 207 nc_precision(28) = j 208 CASE ( 'mask19' ) 209 nc_precision(29) = j 210 CASE ( 'mask20' ) 211 nc_precision(30) = j 212 CASE ( 'maskav01' ) 213 nc_precision(31) = j 214 CASE ( 'maskav02' ) 215 nc_precision(32) = j 216 CASE ( 'maskav03' ) 217 nc_precision(33) = j 218 CASE ( 'maskav04' ) 219 nc_precision(34) = j 220 CASE ( 'maskav05' ) 221 nc_precision(35) = j 222 CASE ( 'maskav06' ) 223 nc_precision(36) = j 224 CASE ( 'maskav07' ) 225 nc_precision(37) = j 226 CASE ( 'maskav08' ) 227 nc_precision(38) = j 228 CASE ( 'maskav09' ) 229 nc_precision(39) = j 230 CASE ( 'maskav10' ) 231 nc_precision(40) = j 232 CASE ( 'maskav11' ) 233 nc_precision(41) = j 234 CASE ( 'maskav12' ) 235 nc_precision(42) = j 236 CASE ( 'maskav13' ) 237 nc_precision(43) = j 238 CASE ( 'maskav14' ) 239 nc_precision(44) = j 240 CASE ( 'maskav15' ) 241 nc_precision(45) = j 242 CASE ( 'maskav16' ) 243 nc_precision(46) = j 244 CASE ( 'maskav17' ) 245 nc_precision(47) = j 246 CASE ( 'maskav18' ) 247 nc_precision(48) = j 248 CASE ( 'maskav19' ) 249 nc_precision(49) = j 250 CASE ( 'maskav20' ) 251 nc_precision(50) = j 163 252 CASE ( 'all' ) 164 253 nc_precision = j … … 173 262 174 263 i = i + 1 175 IF ( i > 10 ) EXIT264 IF ( i > 50 ) EXIT 176 265 ENDDO 177 266 … … 191 280 192 281 ! 193 !-- Select the mode to be processed. Possibilities are 3d, xy, xz, yz,282 !-- Select the mode to be processed. Possibilities are 3d, mask, xy, xz, yz, 194 283 !-- pr and ts. 195 284 SELECT CASE ( mode ) 285 286 CASE ( 'ma_new' ) 287 288 ! 289 !-- decompose actual parameter file_id (=formal parameter av) into 290 !-- mid and av 291 file_id = av 292 IF ( file_id <= 140 ) THEN 293 mid = file_id - 120 294 av = 0 295 ELSE 296 mid = file_id - 140 297 av = 1 298 ENDIF 299 300 ! 301 !-- Define some global attributes of the dataset 302 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), NF90_GLOBAL, & 303 'Conventions', 'COARDS' ) 304 CALL handle_netcdf_error( 'netcdf', 9998 ) 305 306 IF ( av == 0 ) THEN 307 time_average_text = ' ' 308 ELSE 309 WRITE (time_average_text, '('', '',F7.1,'' s average'')') & 310 averaging_interval 311 ENDIF 312 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), NF90_GLOBAL, 'title', & 313 TRIM( run_description_header ) // & 314 TRIM( time_average_text ) ) 315 CALL handle_netcdf_error( 'netcdf', 9998 ) 316 IF ( av == 1 ) THEN 317 WRITE ( time_average_text,'(F7.1,'' s avg'')' ) averaging_interval 318 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), NF90_GLOBAL, & 319 'time_avg', TRIM( time_average_text ) ) 320 CALL handle_netcdf_error( 'netcdf', 9998 ) 321 ENDIF 322 323 ! 324 !-- Define time coordinate for volume data (unlimited dimension) 325 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'time', NF90_UNLIMITED, & 326 id_dim_time_mask(mid,av) ) 327 CALL handle_netcdf_error( 'netcdf', 9998 ) 328 329 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'time', NF90_DOUBLE, & 330 id_dim_time_mask(mid,av), & 331 id_var_time_mask(mid,av) ) 332 CALL handle_netcdf_error( 'netcdf', 9998 ) 333 334 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 335 id_var_time_mask(mid,av), 'units', & 336 'seconds') 337 CALL handle_netcdf_error( 'netcdf', 9998 ) 338 339 ! 340 !-- Define spatial dimensions and coordinates: 341 !-- Define vertical coordinate grid (zu grid) 342 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'zu_3d', & 343 mask_size(mid,3), id_dim_zu_mask(mid,av) ) 344 CALL handle_netcdf_error( 'netcdf', 9998 ) 345 346 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'zu_3d', NF90_DOUBLE, & 347 id_dim_zu_mask(mid,av), & 348 id_var_zu_mask(mid,av) ) 349 CALL handle_netcdf_error( 'netcdf', 9998 ) 350 351 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), id_var_zu_mask(mid,av), & 352 'units', 'meters' ) 353 CALL handle_netcdf_error( 'netcdf', 9998 ) 354 355 ! 356 !-- Define vertical coordinate grid (zw grid) 357 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'zw_3d', & 358 mask_size(mid,3), id_dim_zw_mask(mid,av) ) 359 CALL handle_netcdf_error( 'netcdf', 9998 ) 360 361 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'zw_3d', NF90_DOUBLE, & 362 id_dim_zw_mask(mid,av), & 363 id_var_zw_mask(mid,av) ) 364 CALL handle_netcdf_error( 'netcdf', 9998 ) 365 366 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), id_var_zw_mask(mid,av), & 367 'units', 'meters' ) 368 CALL handle_netcdf_error( 'netcdf', 9998 ) 369 370 ! 371 !-- Define x-axis (for scalar position) 372 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'x', & 373 mask_size(mid,1), id_dim_x_mask(mid,av) ) 374 CALL handle_netcdf_error( 'netcdf', 9998 ) 375 376 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'x', NF90_DOUBLE, & 377 id_dim_x_mask(mid,av), id_var_x_mask(mid,av) ) 378 CALL handle_netcdf_error( 'netcdf', 9998 ) 379 380 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), id_var_x_mask(mid,av), & 381 'units', 'meters' ) 382 CALL handle_netcdf_error( 'netcdf', 9998 ) 383 384 ! 385 !-- Define x-axis (for u position) 386 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'xu', & 387 mask_size(mid,1), id_dim_xu_mask(mid,av) ) 388 CALL handle_netcdf_error( 'netcdf', 9998 ) 389 390 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'xu', NF90_DOUBLE, & 391 id_dim_xu_mask(mid,av), & 392 id_var_xu_mask(mid,av) ) 393 CALL handle_netcdf_error( 'netcdf', 9998 ) 394 395 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), id_var_xu_mask(mid,av), & 396 'units', 'meters' ) 397 CALL handle_netcdf_error( 'netcdf', 9998 ) 398 399 ! 400 !-- Define y-axis (for scalar position) 401 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'y', & 402 mask_size(mid,2), id_dim_y_mask(mid,av) ) 403 CALL handle_netcdf_error( 'netcdf', 9998 ) 404 405 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'y', NF90_DOUBLE, & 406 id_dim_y_mask(mid,av), id_var_y_mask(mid,av) ) 407 CALL handle_netcdf_error( 'netcdf', 9998 ) 408 409 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), id_var_y_mask(mid,av), & 410 'units', 'meters' ) 411 CALL handle_netcdf_error( 'netcdf', 9998 ) 412 413 ! 414 !-- Define y-axis (for v position) 415 nc_stat = NF90_DEF_DIM( id_set_mask(mid,av), 'yv', & 416 mask_size(mid,2), id_dim_yv_mask(mid,av) ) 417 CALL handle_netcdf_error( 'netcdf', 9998 ) 418 419 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'yv', NF90_DOUBLE, & 420 id_dim_yv_mask(mid,av), & 421 id_var_yv_mask(mid,av) ) 422 CALL handle_netcdf_error( 'netcdf', 9998 ) 423 424 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), id_var_yv_mask(mid,av), & 425 'units', 'meters' ) 426 CALL handle_netcdf_error( 'netcdf', 9998 ) 427 428 ! 429 !-- In case of non-flat topography define 2d-arrays containing the height 430 !-- informations 431 IF ( TRIM( topography ) /= 'flat' ) THEN 432 ! 433 !-- Define zusi = zu(nzb_s_inner) 434 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'zusi', NF90_DOUBLE, & 435 (/ id_dim_x_mask(mid,av), & 436 id_dim_y_mask(mid,av) /), & 437 id_var_zusi_mask(mid,av) ) 438 CALL handle_netcdf_error( 'netcdf', 9998 ) 439 440 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 441 id_var_zusi_mask(mid,av), & 442 'units', 'meters' ) 443 CALL handle_netcdf_error( 'netcdf', 9998 ) 444 445 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 446 id_var_zusi_mask(mid,av), & 447 'long_name', 'zu(nzb_s_inner)' ) 448 CALL handle_netcdf_error( 'netcdf', 9998 ) 449 450 ! 451 !-- Define zwwi = zw(nzb_w_inner) 452 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), 'zwwi', NF90_DOUBLE, & 453 (/ id_dim_x_mask(mid,av), & 454 id_dim_y_mask(mid,av) /), & 455 id_var_zwwi_mask(mid,av) ) 456 CALL handle_netcdf_error( 'netcdf', 9998 ) 457 458 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 459 id_var_zwwi_mask(mid,av), & 460 'units', 'meters' ) 461 CALL handle_netcdf_error( 'netcdf', 9998 ) 462 463 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 464 id_var_zwwi_mask(mid,av), & 465 'long_name', 'zw(nzb_w_inner)' ) 466 CALL handle_netcdf_error( 'netcdf', 9998 ) 467 468 ENDIF 469 470 471 ! 472 !-- Define the variables 473 var_list = ';' 474 i = 1 475 476 DO WHILE ( domask(mid,av,i)(1:1) /= ' ' ) 477 478 ! 479 !-- Check for the grid 480 found = .TRUE. 481 SELECT CASE ( domask(mid,av,i) ) 482 ! 483 !-- Most variables are defined on the scalar grid 484 CASE ( 'e', 'p', 'pc', 'pr', 'pt', 'q', 'ql', 'ql_c', 'ql_v', & 485 'ql_vp', 'qv', 'rho', 's', 'sa', 'vpt' ) 486 487 grid_x = 'x' 488 grid_y = 'y' 489 grid_z = 'zu' 490 ! 491 !-- u grid 492 CASE ( 'u' ) 493 494 grid_x = 'xu' 495 grid_y = 'y' 496 grid_z = 'zu' 497 ! 498 !-- v grid 499 CASE ( 'v' ) 500 501 grid_x = 'x' 502 grid_y = 'yv' 503 grid_z = 'zu' 504 ! 505 !-- w grid 506 CASE ( 'w' ) 507 508 grid_x = 'x' 509 grid_y = 'y' 510 grid_z = 'zw' 511 512 CASE DEFAULT 513 ! 514 !-- Check for user-defined quantities 515 CALL user_define_netcdf_grid( domask(mid,av,i), found, & 516 grid_x, grid_y, grid_z ) 517 518 END SELECT 519 520 ! 521 !-- Select the respective dimension ids 522 IF ( grid_x == 'x' ) THEN 523 id_x = id_dim_x_mask(mid,av) 524 ELSEIF ( grid_x == 'xu' ) THEN 525 id_x = id_dim_xu_mask(mid,av) 526 ENDIF 527 528 IF ( grid_y == 'y' ) THEN 529 id_y = id_dim_y_mask(mid,av) 530 ELSEIF ( grid_y == 'yv' ) THEN 531 id_y = id_dim_yv_mask(mid,av) 532 ENDIF 533 534 IF ( grid_z == 'zu' ) THEN 535 id_z = id_dim_zu_mask(mid,av) 536 ELSEIF ( grid_z == 'zw' ) THEN 537 id_z = id_dim_zw_mask(mid,av) 538 ENDIF 539 540 ! 541 !-- Define the grid 542 nc_stat = NF90_DEF_VAR( id_set_mask(mid,av), domask(mid,av,i), & 543 nc_precision(10+mid+av*20), & 544 (/ id_x, id_y, id_z, & 545 id_dim_time_mask(mid,av) /), & 546 id_var_domask(mid,av,i) ) 547 548 IF ( .NOT. found ) THEN 549 WRITE ( message_string, * ) 'no grid defined for', & 550 ' variable ', TRIM( domask(mid,av,i) ) 551 CALL message( 'define_netcdf_header', 'PA9998', 0, 1, 0, 6, 0 ) 552 ENDIF 553 554 var_list = TRIM( var_list ) // TRIM( domask(mid,av,i) ) // ';' 555 556 CALL handle_netcdf_error( 'netcdf', 9998 ) 557 ! 558 !-- Store the 'real' name of the variable (with *, for example) 559 !-- in the long_name attribute. This is evaluated by Ferret, 560 !-- for example. 561 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 562 id_var_domask(mid,av,i), & 563 'long_name', domask(mid,av,i) ) 564 CALL handle_netcdf_error( 'netcdf', 9998 ) 565 ! 566 !-- Define the variable's unit 567 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), & 568 id_var_domask(mid,av,i), & 569 'units', TRIM( domask_unit(mid,av,i) ) ) 570 CALL handle_netcdf_error( 'netcdf', 9998 ) 571 572 i = i + 1 573 574 ENDDO 575 576 ! 577 !-- No arrays to output 578 IF ( i == 1 ) RETURN 579 580 ! 581 !-- Write the list of variables as global attribute (this is used by 582 !-- restart runs and by combine_plot_fields) 583 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), NF90_GLOBAL, & 584 'VAR_LIST', var_list ) 585 CALL handle_netcdf_error( 'netcdf', 9998 ) 586 587 ! 588 !-- Leave NetCDF define mode 589 nc_stat = NF90_ENDDEF( id_set_mask(mid,av) ) 590 CALL handle_netcdf_error( 'netcdf', 9998 ) 591 592 ! 593 !-- Write data for x (shifted by +dx/2) and xu axis 594 ALLOCATE( netcdf_data(mask_size(mid,1)) ) 595 596 netcdf_data = ( mask_i_global(mid,:mask_size(mid,1)) + 0.5 ) * dx 597 598 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), id_var_x_mask(mid,av), & 599 netcdf_data, start = (/ 1 /), & 600 count = (/ mask_size(mid,1) /) ) 601 CALL handle_netcdf_error( 'netcdf', 9998 ) 602 603 netcdf_data = mask_i_global(mid,:mask_size(mid,1)) * dx 604 605 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), id_var_xu_mask(mid,av),& 606 netcdf_data, start = (/ 1 /), & 607 count = (/ mask_size(mid,1) /) ) 608 CALL handle_netcdf_error( 'netcdf', 9998 ) 609 610 DEALLOCATE( netcdf_data ) 611 612 ! 613 !-- Write data for y (shifted by +dy/2) and yv axis 614 ALLOCATE( netcdf_data(mask_size(mid,2)) ) 615 616 netcdf_data = ( mask_j_global(mid,:mask_size(mid,2)) + 0.5 ) * dy 617 618 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), id_var_y_mask(mid,av), & 619 netcdf_data, start = (/ 1 /), & 620 count = (/ mask_size(mid,2) /)) 621 CALL handle_netcdf_error( 'netcdf', 9998 ) 622 623 netcdf_data = mask_j_global(mid,:mask_size(mid,2)) * dy 624 625 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), id_var_yv_mask(mid,av), & 626 netcdf_data, start = (/ 1 /), & 627 count = (/ mask_size(mid,2) /)) 628 CALL handle_netcdf_error( 'netcdf', 9998 ) 629 630 DEALLOCATE( netcdf_data ) 631 632 ! 633 !-- Write zu and zw data (vertical axes) 634 ALLOCATE( netcdf_data(mask_size(mid,3)) ) 635 636 netcdf_data = zu( mask_k_global(mid,:mask_size(mid,3)) ) 637 638 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), id_var_zu_mask(mid,av), & 639 netcdf_data, start = (/ 1 /), & 640 count = (/ mask_size(mid,3) /) ) 641 CALL handle_netcdf_error( 'netcdf', 9998 ) 642 643 netcdf_data = zw( mask_k_global(mid,:mask_size(mid,3)) ) 644 645 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), id_var_zw_mask(mid,av), & 646 netcdf_data, start = (/ 1 /), & 647 count = (/ mask_size(mid,3) /) ) 648 CALL handle_netcdf_error( 'netcdf', 9998 ) 649 650 DEALLOCATE( netcdf_data ) 651 652 ! 653 !-- In case of non-flat topography write height information 654 IF ( TRIM( topography ) /= 'flat' ) THEN 655 656 ALLOCATE( netcdf_data_2d(mask_size(mid,1),mask_size(mid,2)) ) 657 netcdf_data_2d = zu_s_inner( mask_i_global(mid,:mask_size(mid,1)),& 658 mask_j_global(mid,:mask_size(mid,2)) ) 659 660 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), & 661 id_var_zusi_mask(mid,av), & 662 netcdf_data_2d, & 663 start = (/ 1, 1 /), & 664 count = (/ mask_size(mid,1), & 665 mask_size(mid,2) /) ) 666 CALL handle_netcdf_error( 'netcdf', 9998 ) 667 668 netcdf_data_2d = zw_w_inner( mask_i_global(mid,:mask_size(mid,1)),& 669 mask_j_global(mid,:mask_size(mid,2)) ) 670 671 nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), & 672 id_var_zwwi_mask(mid,av), & 673 netcdf_data_2d, & 674 start = (/ 1, 1 /), & 675 count = (/ mask_size(mid,1), & 676 mask_size(mid,2) /) ) 677 CALL handle_netcdf_error( 'netcdf', 9998 ) 678 679 DEALLOCATE( netcdf_data_2d ) 680 681 ENDIF 682 ! 683 !-- restore original parameter file_id (=formal parameter av) into av 684 av = file_id 685 686 687 CASE ( 'ma_ext' ) 688 689 ! 690 !-- decompose actual parameter file_id (=formal parameter av) into 691 !-- mid and av 692 file_id = av 693 IF ( file_id <= 140 ) THEN 694 mid = file_id - 120 695 av = 0 696 ELSE 697 mid = file_id - 140 698 av = 1 699 ENDIF 700 701 ! 702 !-- Get the list of variables and compare with the actual run. 703 !-- First var_list_old has to be reset, since GET_ATT does not assign 704 !-- trailing blanks. 705 var_list_old = ' ' 706 nc_stat = NF90_GET_ATT( id_set_mask(mid,av), NF90_GLOBAL, 'VAR_LIST',& 707 var_list_old ) 708 CALL handle_netcdf_error( 'netcdf', 9998 ) 709 710 var_list = ';' 711 i = 1 712 DO WHILE ( domask(mid,av,i)(1:1) /= ' ' ) 713 var_list = TRIM(var_list) // TRIM( domask(mid,av,i) ) // ';' 714 i = i + 1 715 ENDDO 716 717 IF ( av == 0 ) THEN 718 var = '(mask)' 719 ELSE 720 var = '(mask_av)' 721 ENDIF 722 723 IF ( TRIM( var_list ) /= TRIM( var_list_old ) ) THEN 724 WRITE ( message_string, * ) 'NetCDF file for ', TRIM( var ), & 725 ' data for mask', mid, ' from previous run found,', & 726 '&but this file cannot be extended due to variable ', & 727 'mismatch.&New file is created instead.' 728 CALL message( 'define_netcdf_header', 'PA9998', 0, 1, 0, 6, 0 ) 729 extend = .FALSE. 730 RETURN 731 ENDIF 732 733 ! 734 !-- Get and compare the number of vertical gridpoints 735 nc_stat = NF90_INQ_VARID( id_set_mask(mid,av), 'zu', & 736 id_var_zu_mask(mid,av) ) 737 CALL handle_netcdf_error( 'netcdf', 9998 ) 738 739 nc_stat = NF90_INQUIRE_VARIABLE( id_set_mask(mid,av), & 740 id_var_zu_mask(mid,av), & 741 dimids = id_dim_zu_mask_old ) 742 CALL handle_netcdf_error( 'netcdf', 9998 ) 743 id_dim_zu_mask(mid,av) = id_dim_zu_mask_old(1) 744 745 nc_stat = NF90_INQUIRE_DIMENSION( id_set_mask(mid,av), & 746 id_dim_zu_mask(mid,av), & 747 len = nz_old ) 748 CALL handle_netcdf_error( 'netcdf', 9998 ) 749 750 IF ( mask_size(mid,3) /= nz_old ) THEN 751 WRITE ( message_string, * ) 'NetCDF file for ', TRIM( var ), & 752 ' data for mask', mid, ' from previous run found,', & 753 '&but this file cannot be extended due to mismatch in ', & 754 ' number of&vertical grid points.', & 755 '&New file is created instead.' 756 CALL message( 'define_netcdf_header', 'PA9998', 0, 1, 0, 6, 0 ) 757 extend = .FALSE. 758 RETURN 759 ENDIF 760 761 ! 762 !-- Get the id of the time coordinate (unlimited coordinate) and its 763 !-- last index on the file. The next time level is plmask..count+1. 764 !-- The current time must be larger than the last output time 765 !-- on the file. 766 nc_stat = NF90_INQ_VARID( id_set_mask(mid,av), 'time', & 767 id_var_time_mask(mid,av) ) 768 CALL handle_netcdf_error( 'netcdf', 9998 ) 769 770 nc_stat = NF90_INQUIRE_VARIABLE( id_set_mask(mid,av), & 771 id_var_time_mask(mid,av), & 772 dimids = id_dim_time_old ) 773 CALL handle_netcdf_error( 'netcdf', 9998 ) 774 id_dim_time_mask(mid,av) = id_dim_time_old(1) 775 776 nc_stat = NF90_INQUIRE_DIMENSION( id_set_mask(mid,av), & 777 id_dim_time_mask(mid,av), & 778 len = domask_time_count(mid,av) ) 779 CALL handle_netcdf_error( 'netcdf', 9998 ) 780 781 nc_stat = NF90_GET_VAR( id_set_mask(mid,av), & 782 id_var_time_mask(mid,av), & 783 last_time_coordinate, & 784 start = (/ domask_time_count(mid,av) /), & 785 count = (/ 1 /) ) 786 CALL handle_netcdf_error( 'netcdf', 9998 ) 787 788 IF ( last_time_coordinate(1) >= simulated_time ) THEN 789 WRITE ( message_string, * ) 'NetCDF file for ', TRIM( var ), & 790 ' data for mask', mid, ' from previous run found,', & 791 '&but this file cannot be extended because the current ', & 792 'output time&is less or equal than the last output time ', & 793 'on this file.&New file is created instead.' 794 CALL message( 'define_netcdf_header', 'PA9998', 0, 1, 0, 6, 0 ) 795 domask_time_count(mid,av) = 0 796 extend = .FALSE. 797 RETURN 798 ENDIF 799 800 ! 801 !-- Dataset seems to be extendable. 802 !-- Now get the variable ids. 803 i = 1 804 DO WHILE ( domask(mid,av,i)(1:1) /= ' ' ) 805 nc_stat = NF90_INQ_VARID( id_set_mask(mid,av), & 806 TRIM( domask(mid,av,i) ), & 807 id_var_domask(mid,av,i) ) 808 CALL handle_netcdf_error( 'netcdf', 9998 ) 809 i = i + 1 810 ENDDO 811 812 ! 813 !-- Update the title attribute on file 814 !-- In order to avoid 'data mode' errors if updated attributes are larger 815 !-- than their original size, NF90_PUT_ATT is called in 'define mode' 816 !-- enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 817 !-- performance loss due to data copying; an alternative strategy would be 818 !-- to ensure equal attribute size in a job chain. Maybe revise later. 819 IF ( av == 0 ) THEN 820 time_average_text = ' ' 821 ELSE 822 WRITE (time_average_text, '('', '',F7.1,'' s average'')') & 823 averaging_interval 824 ENDIF 825 nc_stat = NF90_REDEF( id_set_mask(mid,av) ) 826 CALL handle_netcdf_error( 'netcdf', 9998 ) 827 nc_stat = NF90_PUT_ATT( id_set_mask(mid,av), NF90_GLOBAL, 'title', & 828 TRIM( run_description_header ) // & 829 TRIM( time_average_text ) ) 830 CALL handle_netcdf_error( 'netcdf', 9998 ) 831 nc_stat = NF90_ENDDEF( id_set_mask(mid,av) ) 832 CALL handle_netcdf_error( 'netcdf', 9998 ) 833 WRITE ( message_string, * ) 'NetCDF file for ', TRIM( var ), & 834 ' data for mask', mid, ' from previous run found.', & 835 '&This file will be extended.' 836 CALL message( 'define_netcdf_header', 'PA9998', 0, 0, 0, 6, 0 ) 837 ! 838 !-- restore original parameter file_id (=formal parameter av) into av 839 av = file_id 840 196 841 197 842 CASE ( '3d_new' ) -
palm/trunk/SOURCE/parin.f90
r407 r410 5 5 ! ----------------- 6 6 ! +wall_humidityflux, wall_scalarflux 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! Masked data output: + dt_domask, mask_01~20_x|y|z, mask_01~20_x|y|z_loop, 11 ! mask_scale_x|y|z, masks, netcdf_format_mask[_av], skip_time_domask 7 12 ! 8 13 ! Former revisions: … … 108 113 lad_vertical_gradient, lad_vertical_gradient_level, & 109 114 leaf_surface_concentration, long_filter_factor, & 110 loop_optimization, mixing_length_1d, m omentum_advec, &115 loop_optimization, mixing_length_1d, masks, momentum_advec, & 111 116 netcdf_precision, nsor_ini, nx, ny, & 112 117 nz, ocean, omega, outflow_damping_width, overshoot_limit_e, & … … 140 145 cross_normalized_y, cross_profiles, cross_ts_uymax, & 141 146 cross_ts_uymin, cross_xtext, cycle_mg, data_output, & 142 data_output_format, data_output_pr, & 147 data_output_format, & 148 data_output_mask_01, data_output_mask_02, & 149 data_output_mask_03, data_output_mask_04, & 150 data_output_mask_05, data_output_mask_06, & 151 data_output_mask_07, data_output_mask_08, & 152 data_output_mask_09, data_output_mask_10, & 153 data_output_mask_11, data_output_mask_12, & 154 data_output_mask_13, data_output_mask_14, & 155 data_output_mask_15, data_output_mask_16, & 156 data_output_mask_17, data_output_mask_18, & 157 data_output_mask_19, data_output_mask_20, & 158 data_output_pr, & 143 159 data_output_2d_on_each_pe, disturbance_amplitude, & 144 160 disturbance_energy_limit, disturbance_level_b, & … … 146 162 do3d_compress, do3d_comp_prec, dt, dt_averaging_input, & 147 163 dt_averaging_input_pr, dt_coupling, dt_data_output, & 148 dt_data_output_av, dt_disturb, dt_do pr, &164 dt_data_output_av, dt_disturb, dt_domask, dt_dopr, & 149 165 dt_dopr_listing, dt_dots, dt_do2d_xy, dt_do2d_xz, & 150 166 dt_do2d_yz, dt_do3d, dt_max, dt_restart, dt_run_control,& 151 end_time, force_print_header, mg_cycles, & 152 mg_switch_to_pe0_level, netcdf_64bit, netcdf_64bit_3d, & 167 end_time, force_print_header, & 168 mask_scale_x, mask_scale_y, mask_scale_z, & 169 mask_01_x, mask_02_x, mask_03_x, mask_04_x, & 170 mask_05_x, mask_06_x, mask_07_x, mask_08_x, & 171 mask_09_x, mask_10_x, mask_11_x, mask_12_x, & 172 mask_13_x, mask_14_x, mask_15_x, mask_16_x, & 173 mask_17_x, mask_18_x, mask_19_x, mask_20_x, & 174 mask_01_y, mask_02_y, mask_03_y, mask_04_y, & 175 mask_05_y, mask_06_y, mask_07_y, mask_08_y, & 176 mask_09_y, mask_10_y, mask_11_y, mask_12_y, & 177 mask_13_y, mask_14_y, mask_15_y, mask_16_y, & 178 mask_17_y, mask_18_y, mask_19_y, mask_20_y, & 179 mask_01_z, mask_02_z, mask_03_z, mask_04_z, & 180 mask_05_z, mask_06_z, mask_07_z, mask_08_z, & 181 mask_09_z, mask_10_z, mask_11_z, mask_12_z, & 182 mask_13_z, mask_14_z, mask_15_z, mask_16_z, & 183 mask_17_z, mask_18_z, mask_19_z, mask_20_z, & 184 mask_01_x_loop, mask_02_x_loop, mask_03_x_loop, & 185 mask_04_x_loop, mask_05_x_loop, mask_06_x_loop, & 186 mask_07_x_loop, mask_08_x_loop, mask_09_x_loop, & 187 mask_10_x_loop, mask_11_x_loop, mask_12_x_loop, & 188 mask_13_x_loop, mask_14_x_loop, mask_15_x_loop, & 189 mask_16_x_loop, mask_17_x_loop, mask_18_x_loop, & 190 mask_19_x_loop, mask_20_x_loop, & 191 mask_01_y_loop, mask_02_y_loop, mask_03_y_loop, & 192 mask_04_y_loop, mask_05_y_loop, mask_06_y_loop, & 193 mask_07_y_loop, mask_08_y_loop, mask_09_y_loop, & 194 mask_10_y_loop, mask_11_y_loop, mask_12_y_loop, & 195 mask_13_y_loop, mask_14_y_loop, mask_15_y_loop, & 196 mask_16_y_loop, mask_17_y_loop, mask_18_y_loop, & 197 mask_19_y_loop, mask_20_y_loop, & 198 mask_01_z_loop, mask_02_z_loop, mask_03_z_loop, & 199 mask_04_z_loop, mask_05_z_loop, mask_06_z_loop, & 200 mask_07_z_loop, mask_08_z_loop, mask_09_z_loop, & 201 mask_10_z_loop, mask_11_z_loop, mask_12_z_loop, & 202 mask_13_z_loop, mask_14_z_loop, mask_15_z_loop, & 203 mask_16_z_loop, mask_17_z_loop, mask_18_z_loop, & 204 mask_19_z_loop, mask_20_z_loop, & 205 mg_cycles, mg_switch_to_pe0_level, & 206 netcdf_64bit, netcdf_64bit_3d, & 207 netcdf_format_mask, netcdf_format_mask_av, & 153 208 ngsrb, normalizing_region, npex, npey, nsor, nz_do3d, & 154 209 omega_sor, & … … 160 215 skip_time_data_output_av, skip_time_dopr, & 161 216 skip_time_do2d_xy, skip_time_do2d_xz, & 162 skip_time_do2d_yz, skip_time_do3d, &217 skip_time_do2d_yz, skip_time_do3d, skip_time_domask, & 163 218 termination_time_needed, use_prior_plot1d_parameters, & 164 219 z_max_do1d, z_max_do1d_normalized, z_max_do2d -
palm/trunk/SOURCE/production_e.f90
r392 r410 635 635 USE indices 636 636 USE statistics 637 637 USE pegrid 638 638 IMPLICIT NONE 639 639 … … 988 988 989 989 DO k = nzb_diff_s_inner(j,i), nzt_diff 990 IF ( pt(k,j,i) == 0.0 .OR. dd2zu(k) == 0.0 ) & 991 WRITE (*,'(6(I4,1X),F6.2,1X,F6.2)') & 992 myid, i, j, nzb_diff_s_inner(j,i), nzt_diff, k, pt(k,j,i), dd2zu(k) 990 993 tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * & 991 994 ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k) -
palm/trunk/SOURCE/read_3d_binary.f90
r392 r410 181 181 DO k = 1, j 182 182 WRITE (9,*) 'k = ', k 183 WRITE (9,'(6(A,I 2))') 'nxlfa = ', nxlfa(files_to_be_opened,k), &183 WRITE (9,'(6(A,I4))') 'nxlfa = ', nxlfa(files_to_be_opened,k), & 184 184 ' nxrfa = ', nxrfa(files_to_be_opened,k), & 185 185 ' offset_xa = ', offset_xa(files_to_be_opened,k), & -
palm/trunk/SOURCE/time_integration.f90
r398 r410 5 5 ! ----------------- 6 6 ! Bugfix: exchange of ghost points for prho included 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! masked data output 7 11 ! 8 12 ! Former revisions: … … 324 328 time_do3d = time_do3d + dt_3d 325 329 ENDIF 330 DO mid = 1, masks 331 IF ( simulated_time >= skip_time_domask(mid) ) THEN 332 time_domask(mid)= time_domask(mid) + dt_3d 333 ENDIF 334 ENDDO 326 335 time_dvrp = time_dvrp + dt_3d 327 336 IF ( simulated_time >= skip_time_dosp ) THEN … … 399 408 400 409 ! 401 !-- Sum-up 3d-arrays for later output of time-averaged data410 !-- Sum-up 3d-arrays for later output of time-averaged 2d/3d/masked data 402 411 IF ( averaging_interval /= 0.0 .AND. & 403 412 ( dt_data_output_av - time_do_av ) <= averaging_interval .AND. & … … 495 504 496 505 ! 497 !-- Output of time-averaged 2d/3d-data 506 !-- masked data output 507 DO mid = 1, masks 508 IF ( time_domask(mid) >= dt_domask(mid) ) THEN 509 CALL data_output_mask( 0 ) 510 time_domask(mid) = MOD( time_domask(mid), & 511 MAX( dt_domask(mid), dt_3d ) ) 512 ENDIF 513 ENDDO 514 515 ! 516 !-- Output of time-averaged 2d/3d/masked data 498 517 IF ( time_do_av >= dt_data_output_av ) THEN 499 518 CALL average_3d_data … … 502 521 CALL data_output_2d( 'yz', 1 ) 503 522 CALL data_output_3d( 1 ) 523 DO mid = 1, masks 524 CALL data_output_mask( 1 ) 525 ENDDO 504 526 time_do_av = MOD( time_do_av, MAX( dt_data_output_av, dt_3d ) ) 505 527 ENDIF -
palm/trunk/SOURCE/user_parin.f90
r392 r410 5 5 ! ----------------- 6 6 ! 7 ! 8 ! Branch revisions: 9 ! ----------------- 10 ! masked data output 7 11 ! 8 12 ! Former revisions: … … 35 39 36 40 37 NAMELIST /userpar/ data_output_pr_user, data_output_user, region 41 NAMELIST /userpar/ data_output_pr_user, data_output_user, region, & 42 data_output_mask_user_01, data_output_mask_user_02, & 43 data_output_mask_user_03, data_output_mask_user_04, & 44 data_output_mask_user_05, data_output_mask_user_06, & 45 data_output_mask_user_07, data_output_mask_user_08, & 46 data_output_mask_user_09, data_output_mask_user_10, & 47 data_output_mask_user_11, data_output_mask_user_12, & 48 data_output_mask_user_13, data_output_mask_user_14, & 49 data_output_mask_user_15, data_output_mask_user_16, & 50 data_output_mask_user_17, data_output_mask_user_18, & 51 data_output_mask_user_19, data_output_mask_user_20 38 52 39 53 !
Note: See TracChangeset
for help on using the changeset viewer.