Changeset 4518
- Timestamp:
- May 4, 2020 3:44:28 PM (5 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/Makefile
r4517 r4518 25 25 # ----------------- 26 26 # $Id$ 27 # Remove dependency of read_restart_data_mod on diagnostic_output_quantities_mod 28 # 29 # 4517 2020-05-03 14:29:30Z raasch 27 30 # dependencies for MPI-IO added 28 31 # … … 577 580 mod_kinds.o \ 578 581 modules.o \ 582 restart_data_mpi_io_mod.o \ 579 583 surface_layer_fluxes_mod.o 580 584 diffusion_s.o: \ … … 1063 1067 chem_modules.o \ 1064 1068 cpulog_mod.o \ 1065 diagnostic_output_quantities_mod.o \1066 1069 gust_mod.o \ 1067 1070 mod_kinds.o \ -
palm/trunk/SOURCE/data_output_2d.f90
r4514 r4518 25 25 ! ----------------- 26 26 ! $Id$ 27 ! remove double index 28 ! 29 ! 4514 2020-04-30 16:29:59Z suehring 27 30 ! Enable output of qsurf and ssurf 28 31 ! … … 891 894 DO j = nys, nyn 892 895 k = topo_top_ind(j,i,0) 893 local_pf(i,j,nzb+1) = s(k +k,j,i)896 local_pf(i,j,nzb+1) = s(k,j,i) 894 897 ENDDO 895 898 ENDDO -
palm/trunk/SOURCE/diagnostic_output_quantities_mod.f90
r4517 r4518 25 25 ! ----------------- 26 26 ! $Id$ 27 ! * Define arrays over ghost points in order to allow for standard mpi-io 28 ! treatment. By this modularization of restart-data input is possible with 29 ! the module interface. 30 ! * Bugfix: add missing restart input of wtheta_av, wq_av, wu_av, and wv_av. 31 ! 32 ! 4517 2020-05-03 14:29:30Z raasch 27 33 ! use statement for exchange horiz added, 28 34 ! bugfix for call of exchange horiz 2d … … 137 143 138 144 USE kinds 145 146 USE restart_data_mpi_io_mod, & 147 ONLY: rd_mpi_io_check_array, & 148 rrd_mpi_io, & 149 wrd_mpi_io 139 150 140 151 USE surface_mod, & … … 211 222 doq_check_data_output, & 212 223 doq_define_netcdf_grid, & 224 doq_init, & 213 225 doq_output_2d, & 214 226 doq_output_3d, & 215 227 doq_output_mask, & 216 doq_ init,&228 doq_rrd_local, & 217 229 doq_wrd_local 218 ! doq_rrd_local, &219 230 220 231 … … 255 266 END INTERFACE doq_prepare 256 267 257 ! INTERFACE doq_rrd_local 258 ! MODULE PROCEDURE doq_rrd_local 259 ! END INTERFACE doq_rrd_local 268 INTERFACE doq_rrd_local 269 MODULE PROCEDURE doq_rrd_local_ftn 270 MODULE PROCEDURE doq_rrd_local_mpi 271 END INTERFACE doq_rrd_local 260 272 261 273 INTERFACE doq_wrd_local … … 290 302 CASE ( 'ti' ) 291 303 IF ( .NOT. ALLOCATED( ti_av ) ) THEN 292 ALLOCATE( ti_av(nzb:nzt+1,nys :nyn,nxl:nxr) )304 ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 293 305 ENDIF 294 306 ti_av = 0.0_wp … … 296 308 CASE ( 'uu' ) 297 309 IF ( .NOT. ALLOCATED( uu_av ) ) THEN 298 ALLOCATE( uu_av(nzb:nzt+1,nys :nyn,nxl:nxr) )310 ALLOCATE( uu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 299 311 ENDIF 300 312 uu_av = 0.0_wp … … 302 314 CASE ( 'vv' ) 303 315 IF ( .NOT. ALLOCATED( vv_av ) ) THEN 304 ALLOCATE( vv_av(nzb:nzt+1,nys :nyn,nxl:nxr) )316 ALLOCATE( vv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 305 317 ENDIF 306 318 vv_av = 0.0_wp … … 308 320 CASE ( 'ww' ) 309 321 IF ( .NOT. ALLOCATED( ww_av ) ) THEN 310 ALLOCATE( ww_av(nzb:nzt+1,nys :nyn,nxl:nxr) )322 ALLOCATE( ww_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 311 323 ENDIF 312 324 ww_av = 0.0_wp … … 314 326 CASE ( 'wu' ) 315 327 IF ( .NOT. ALLOCATED( wu_av ) ) THEN 316 ALLOCATE( wu_av(nzb:nzt+1,nys :nyn,nxl:nxr) )328 ALLOCATE( wu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 317 329 ENDIF 318 330 wu_av = 0.0_wp … … 320 332 CASE ( 'wv' ) 321 333 IF ( .NOT. ALLOCATED( wv_av ) ) THEN 322 ALLOCATE( wv_av(nzb:nzt+1,nys :nyn,nxl:nxr) )334 ALLOCATE( wv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 323 335 ENDIF 324 336 wv_av = 0.0_wp … … 326 338 CASE ( 'wtheta' ) 327 339 IF ( .NOT. ALLOCATED( wtheta_av ) ) THEN 328 ALLOCATE( wtheta_av(nzb:nzt+1,nys :nyn,nxl:nxr) )340 ALLOCATE( wtheta_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 329 341 ENDIF 330 342 wtheta_av = 0.0_wp … … 332 344 CASE ( 'wq' ) 333 345 IF ( .NOT. ALLOCATED( wq_av ) ) THEN 334 ALLOCATE( wq_av(nzb:nzt+1,nys :nyn,nxl:nxr) )346 ALLOCATE( wq_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 335 347 ENDIF 336 348 wq_av = 0.0_wp … … 350 362 CASE ( 'wspeed' ) 351 363 IF ( .NOT. ALLOCATED( wspeed_av ) ) THEN 352 ALLOCATE( wspeed_av(nzb:nzt+1,nys :nyn,nxl:nxr) )364 ALLOCATE( wspeed_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 353 365 ENDIF 354 366 wspeed_av = 0.0_wp … … 356 368 CASE ( 'wdir' ) 357 369 IF ( .NOT. ALLOCATED( u_center_av ) ) THEN 358 ALLOCATE( u_center_av(nzb:nzt+1,nys :nyn,nxl:nxr) )370 ALLOCATE( u_center_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 359 371 ENDIF 360 372 IF ( .NOT. ALLOCATED( v_center_av ) ) THEN 361 ALLOCATE( v_center_av(nzb:nzt+1,nys :nyn,nxl:nxr) )373 ALLOCATE( v_center_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 362 374 ENDIF 363 375 u_center_av = 0.0_wp … … 634 646 635 647 IF ( .NOT. ALLOCATED( wdir_av ) ) THEN 636 ALLOCATE( wdir_av(nzb:nzt+1,nys :nyn,nxl:nxr) )648 ALLOCATE( wdir_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 637 649 ENDIF 638 650 wdir_av = 0.0_wp … … 844 856 ELSE 845 857 IF ( .NOT. ALLOCATED( ti_av ) ) THEN 846 ALLOCATE( ti_av(nzb:nzt+1,nys :nyn,nxl:nxr) )858 ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 847 859 ti_av = REAL( fill_value, KIND = wp ) 848 860 ENDIF … … 858 870 ELSE 859 871 IF ( .NOT. ALLOCATED( uu_av ) ) THEN 860 ALLOCATE( uu_av(nzb:nzt+1,nys :nyn,nxl:nxr) )872 ALLOCATE( uu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 861 873 uu_av = REAL( fill_value, KIND = wp ) 862 874 ENDIF … … 872 884 ELSE 873 885 IF ( .NOT. ALLOCATED( vv_av ) ) THEN 874 ALLOCATE( vv_av(nzb:nzt+1,nys :nyn,nxl:nxr) )886 ALLOCATE( vv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 875 887 vv_av = REAL( fill_value, KIND = wp ) 876 888 ENDIF … … 886 898 ELSE 887 899 IF ( .NOT. ALLOCATED( ww_av ) ) THEN 888 ALLOCATE( ww_av(nzb:nzt+1,nys :nyn,nxl:nxr) )900 ALLOCATE( ww_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 889 901 ww_av = REAL( fill_value, KIND = wp ) 890 902 ENDIF … … 900 912 ELSE 901 913 IF ( .NOT. ALLOCATED( wu_av ) ) THEN 902 ALLOCATE( wu_av(nzb:nzt+1,nys :nyn,nxl:nxr) )914 ALLOCATE( wu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 903 915 wu_av = REAL( fill_value, KIND = wp ) 904 916 ENDIF … … 914 926 ELSE 915 927 IF ( .NOT. ALLOCATED( wv_av ) ) THEN 916 ALLOCATE( wv_av(nzb:nzt+1,nys :nyn,nxl:nxr) )928 ALLOCATE( wv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 917 929 wv_av = REAL( fill_value, KIND = wp ) 918 930 ENDIF … … 928 940 ELSE 929 941 IF ( .NOT. ALLOCATED( wtheta_av ) ) THEN 930 ALLOCATE( wtheta_av(nzb:nzt+1,nys :nyn,nxl:nxr) )942 ALLOCATE( wtheta_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 931 943 wtheta_av = REAL( fill_value, KIND = wp ) 932 944 ENDIF … … 942 954 ELSE 943 955 IF ( .NOT. ALLOCATED( wq_av ) ) THEN 944 ALLOCATE( wq_av(nzb:nzt+1,nys :nyn,nxl:nxr) )956 ALLOCATE( wq_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 945 957 wq_av = REAL( fill_value, KIND = wp ) 946 958 ENDIF … … 1000 1012 ELSE 1001 1013 IF ( .NOT. ALLOCATED( wspeed_av ) ) THEN 1002 ALLOCATE( wspeed_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1014 ALLOCATE( wspeed_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1003 1015 wspeed_av = REAL( fill_value, KIND = wp ) 1004 1016 ENDIF … … 1014 1026 ELSE 1015 1027 IF ( .NOT. ALLOCATED( wdir_av ) ) THEN 1016 ALLOCATE( wdir_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1028 ALLOCATE( wdir_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1017 1029 wdir_av = REAL( fill_value, KIND = wp ) 1018 1030 ENDIF … … 1084 1096 ELSE 1085 1097 IF ( .NOT. ALLOCATED( ti_av ) ) THEN 1086 ALLOCATE( ti_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1098 ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1087 1099 ti_av = REAL( fill_value, KIND = wp ) 1088 1100 ENDIF … … 1096 1108 ELSE 1097 1109 IF ( .NOT. ALLOCATED( uu_av ) ) THEN 1098 ALLOCATE( uu_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1110 ALLOCATE( uu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1099 1111 uu_av = REAL( fill_value, KIND = wp ) 1100 1112 ENDIF … … 1108 1120 ELSE 1109 1121 IF ( .NOT. ALLOCATED( vv_av ) ) THEN 1110 ALLOCATE( vv_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1122 ALLOCATE( vv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1111 1123 vv_av = REAL( fill_value, KIND = wp ) 1112 1124 ENDIF … … 1120 1132 ELSE 1121 1133 IF ( .NOT. ALLOCATED( ww_av ) ) THEN 1122 ALLOCATE( ww_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1134 ALLOCATE( ww_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1123 1135 ww_av = REAL( fill_value, KIND = wp ) 1124 1136 ENDIF … … 1132 1144 ELSE 1133 1145 IF ( .NOT. ALLOCATED( wu_av ) ) THEN 1134 ALLOCATE( wu_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1146 ALLOCATE( wu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1135 1147 wu_av = REAL( fill_value, KIND = wp ) 1136 1148 ENDIF … … 1144 1156 ELSE 1145 1157 IF ( .NOT. ALLOCATED( wv_av ) ) THEN 1146 ALLOCATE( wv_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1158 ALLOCATE( wv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1147 1159 wv_av = REAL( fill_value, KIND = wp ) 1148 1160 ENDIF … … 1156 1168 ELSE 1157 1169 IF ( .NOT. ALLOCATED( wtheta_av ) ) THEN 1158 ALLOCATE( wtheta_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1170 ALLOCATE( wtheta_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1159 1171 wtheta_av = REAL( fill_value, KIND = wp ) 1160 1172 ENDIF … … 1168 1180 ELSE 1169 1181 IF ( .NOT. ALLOCATED( wq_av ) ) THEN 1170 ALLOCATE( wq_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1182 ALLOCATE( wq_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1171 1183 wq_av = REAL( fill_value, KIND = wp ) 1172 1184 ENDIF … … 1180 1192 ELSE 1181 1193 IF ( .NOT. ALLOCATED( wspeed_av ) ) THEN 1182 ALLOCATE( wspeed_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1194 ALLOCATE( wspeed_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1183 1195 wspeed_av = REAL( fill_value, KIND = wp ) 1184 1196 ENDIF … … 1192 1204 ELSE 1193 1205 IF ( .NOT. ALLOCATED( wdir_av ) ) THEN 1194 ALLOCATE( wdir_av(nzb:nzt+1,nys :nyn,nxl:nxr) )1206 ALLOCATE( wdir_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1195 1207 wdir_av = REAL( fill_value, KIND = wp ) 1196 1208 ENDIF … … 1435 1447 CASE ( 'ti' ) 1436 1448 IF ( .NOT. ALLOCATED( ti ) ) THEN 1437 ALLOCATE( ti(nzb:nzt+1,nys :nyn,nxl:nxr) )1449 ALLOCATE( ti(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1438 1450 ti = 0.0_wp 1439 1451 ENDIF … … 1442 1454 CASE ( 'uu' ) 1443 1455 IF ( .NOT. ALLOCATED( uu ) ) THEN 1444 ALLOCATE( uu(nzb:nzt+1,nys :nyn,nxl:nxr) )1456 ALLOCATE( uu(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1445 1457 uu = 0.0_wp 1446 1458 ENDIF … … 1449 1461 CASE ( 'vv' ) 1450 1462 IF ( .NOT. ALLOCATED( vv ) ) THEN 1451 ALLOCATE( vv(nzb:nzt+1,nys :nyn,nxl:nxr) )1463 ALLOCATE( vv(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1452 1464 vv = 0.0_wp 1453 1465 ENDIF … … 1456 1468 CASE ( 'ww' ) 1457 1469 IF ( .NOT. ALLOCATED( ww ) ) THEN 1458 ALLOCATE( ww(nzb:nzt+1,nys :nyn,nxl:nxr) )1470 ALLOCATE( ww(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1459 1471 ww = 0.0_wp 1460 1472 ENDIF … … 1463 1475 CASE ( 'wu' ) 1464 1476 IF ( .NOT. ALLOCATED( wu ) ) THEN 1465 ALLOCATE( wu(nzb:nzt+1,nys :nyn,nxl:nxr) )1477 ALLOCATE( wu(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1466 1478 wu = 0.0_wp 1467 1479 ENDIF … … 1470 1482 CASE ( 'wv' ) 1471 1483 IF ( .NOT. ALLOCATED( wv ) ) THEN 1472 ALLOCATE( wv(nzb:nzt+1,nys :nyn,nxl:nxr) )1484 ALLOCATE( wv(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1473 1485 wv = 0.0_wp 1474 1486 ENDIF … … 1477 1489 CASE ( 'wtheta' ) 1478 1490 IF ( .NOT. ALLOCATED( wtheta ) ) THEN 1479 ALLOCATE( wtheta(nzb:nzt+1,nys :nyn,nxl:nxr) )1491 ALLOCATE( wtheta(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1480 1492 wtheta = 0.0_wp 1481 1493 ENDIF … … 1484 1496 CASE ( 'wq' ) 1485 1497 IF ( .NOT. ALLOCATED( wq ) ) THEN 1486 ALLOCATE( wq(nzb:nzt+1,nys :nyn,nxl:nxr) )1498 ALLOCATE( wq(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1487 1499 wq = 0.0_wp 1488 1500 ENDIF … … 1491 1503 CASE ( 'theta_2m*' ) 1492 1504 IF ( .NOT. ALLOCATED( pt_2m ) ) THEN 1493 ALLOCATE( pt_2m(nys :nyn,nxl:nxr) )1505 ALLOCATE( pt_2m(nysg:nyng,nxlg:nxrg) ) 1494 1506 pt_2m = 0.0_wp 1495 1507 ENDIF … … 1498 1510 CASE ( 'wspeed_10m*' ) 1499 1511 IF ( .NOT. ALLOCATED( uv_10m ) ) THEN 1500 ALLOCATE( uv_10m(nys :nyn,nxl:nxr) )1512 ALLOCATE( uv_10m(nysg:nyng,nxlg:nxrg) ) 1501 1513 uv_10m = 0.0_wp 1502 1514 ENDIF … … 1505 1517 CASE ( 'wspeed' ) 1506 1518 IF ( .NOT. ALLOCATED( wspeed ) ) THEN 1507 ALLOCATE( wspeed(nzb:nzt+1,nys :nyn,nxl:nxr) )1519 ALLOCATE( wspeed(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1508 1520 wspeed = 0.0_wp 1509 1521 ENDIF … … 1513 1525 CASE ( 'wdir' ) 1514 1526 IF ( .NOT. ALLOCATED( u_center ) ) THEN 1515 ALLOCATE( u_center(nzb:nzt+1,nys :nyn,nxl:nxr) )1527 ALLOCATE( u_center(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1516 1528 u_center = 0.0_wp 1517 1529 ENDIF 1518 1530 IF ( .NOT. ALLOCATED( v_center ) ) THEN 1519 ALLOCATE( v_center(nzb:nzt+1,nys :nyn,nxl:nxr) )1531 ALLOCATE( v_center(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1520 1532 v_center = 0.0_wp 1521 1533 ENDIF 1522 1534 IF ( .NOT. ALLOCATED( wdir ) ) THEN 1523 ALLOCATE( wdir(nzb:nzt+1,nys :nyn,nxl:nxr) )1535 ALLOCATE( wdir(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1524 1536 wdir = 0.0_wp 1525 1537 ENDIF … … 1596 1608 uu(k,j,i) = u(k,j,i) * u(k,j,i) & 1597 1609 * MERGE( 1.0_wp, 0.0_wp, & 1598 BTEST( wall_flags_total_0(k,j,i), 1) )1610 BTEST( wall_flags_total_0(k,j,i), 1) ) 1599 1611 ENDDO 1600 1612 ENDDO … … 1608 1620 vv(k,j,i) = v(k,j,i) * v(k,j,i) & 1609 1621 * MERGE( 1.0_wp, 0.0_wp, & 1610 BTEST( wall_flags_total_0(k,j,i), 2) )1622 BTEST( wall_flags_total_0(k,j,i), 2) ) 1611 1623 ENDDO 1612 1624 ENDDO … … 1620 1632 ww(k,j,i) = w(k,j,i) * w(k,j,i) & 1621 1633 * MERGE( 1.0_wp, 0.0_wp, & 1622 BTEST( wall_flags_total_0(k,j,i), 3) )1634 BTEST( wall_flags_total_0(k,j,i), 3) ) 1623 1635 ENDDO 1624 1636 ENDDO … … 1632 1644 wu(k,j,i) = w(k,j,i) * u(k,j,i) & 1633 1645 * MERGE( 1.0_wp, 0.0_wp, & 1634 BTEST( wall_flags_total_0(k,j,i), 0) )1646 BTEST( wall_flags_total_0(k,j,i), 0) ) 1635 1647 ENDDO 1636 1648 ENDDO … … 1644 1656 wv(k,j,i) = w(k,j,i) * v(k,j,i) & 1645 1657 * MERGE( 1.0_wp, 0.0_wp, & 1646 BTEST( wall_flags_total_0(k,j,i), 0) )1658 BTEST( wall_flags_total_0(k,j,i), 0) ) 1647 1659 ENDDO 1648 1660 ENDDO … … 1656 1668 wtheta(k,j,i) = w(k,j,i) * pt(k,j,i) & 1657 1669 * MERGE( 1.0_wp, 0.0_wp, & 1658 BTEST( wall_flags_total_0(k,j,i), 0) )1670 BTEST( wall_flags_total_0(k,j,i), 0) ) 1659 1671 ENDDO 1660 1672 ENDDO … … 1668 1680 wq(k,j,i) = w(k,j,i) * q(k,j,i) & 1669 1681 * MERGE( 1.0_wp, 0.0_wp, & 1670 BTEST( wall_flags_total_0(k,j,i), 0) )1682 BTEST( wall_flags_total_0(k,j,i), 0) ) 1671 1683 ENDDO 1672 1684 ENDDO … … 1867 1879 SUBROUTINE doq_prepare 1868 1880 1869 1870 1881 USE control_parameters, & 1871 1882 ONLY: do2d, do3d, domask, masks … … 1941 1952 ! ------------ 1942 1953 !> Subroutine reads local (subdomain) restart data 1943 !> Note: With the current structure reading of non-standard array is not 1944 !> possible 1945 !> COMMENT: these arrays should be given standard index bounds! (Siggi) 1946 !------------------------------------------------------------------------------! 1947 ! SUBROUTINE doq_rrd_local( k, nxlf, nxlc, nxl_on_file, nxrf, nxrc, & 1948 ! nxr_on_file, nynf, nync, nyn_on_file, nysf, & 1949 ! nysc, nys_on_file, tmp_3d_non_standard, found ) 1950 ! 1951 ! 1952 ! USE control_parameters 1953 ! 1954 ! USE indices 1955 ! 1956 ! USE kinds 1957 ! 1958 ! USE pegrid 1959 ! 1960 ! 1961 ! IMPLICIT NONE 1962 ! 1963 ! INTEGER(iwp) :: k !< 1964 ! INTEGER(iwp) :: nxlc !< 1965 ! INTEGER(iwp) :: nxlf !< 1966 ! INTEGER(iwp) :: nxl_on_file !< 1967 ! INTEGER(iwp) :: nxrc !< 1968 ! INTEGER(iwp) :: nxrf !< 1969 ! INTEGER(iwp) :: nxr_on_file !< 1970 ! INTEGER(iwp) :: nync !< 1971 ! INTEGER(iwp) :: nynf !< 1972 ! INTEGER(iwp) :: nyn_on_file !< 1973 ! INTEGER(iwp) :: nysc !< 1974 ! INTEGER(iwp) :: nysf !< 1975 ! INTEGER(iwp) :: nys_on_file !< 1976 ! 1977 ! LOGICAL, INTENT(OUT) :: found 1978 ! 1979 ! REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: tmp_3d_non_standard !< temporary array for storing 3D data with non standard dimensions 1980 ! ! 1981 ! !-- If temporary non-standard array for reading is already allocated, 1982 ! !-- deallocate it. 1983 ! IF ( ALLOCATED( tmp_3d_non_standard ) ) DEALLOCATE( tmp_3d_non_standard ) 1984 ! 1985 ! found = .TRUE. 1986 ! 1987 ! SELECT CASE ( restart_string(1:length) ) 1988 ! 1989 ! CASE ( 'ti_av' ) 1990 ! IF ( .NOT. ALLOCATED( ti_av ) ) THEN 1991 ! ALLOCATE( ti_av(nzb:nzt+1,nys:nyn,nxl:nxr) ) 1992 ! ENDIF 1993 ! IF ( k == 1 ) THEN 1994 ! ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, & 1995 ! nxl_on_file:nxr_on_file) ) 1996 ! READ ( 13 ) tmp_3d_non_standard 1997 ! ENDIF 1998 ! ti_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf) 1999 ! 2000 ! CASE ( 'uu_av' ) 2001 ! IF ( .NOT. ALLOCATED( uu_av ) ) THEN 2002 ! ALLOCATE( uu_av(nzb:nzt+1,nys:nyn,nxl:nxr) ) 2003 ! ENDIF 2004 ! IF ( k == 1 ) THEN 2005 ! ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, & 2006 ! nxl_on_file:nxr_on_file) ) 2007 ! READ ( 13 ) tmp_3d_non_standard 2008 ! ENDIF 2009 ! uu_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf) 2010 ! 2011 ! CASE ( 'vv_av' ) 2012 ! IF ( .NOT. ALLOCATED( vv_av ) ) THEN 2013 ! ALLOCATE( vv_av(nzb:nzt+1,nys:nyn,nxl:nxr) ) 2014 ! ENDIF 2015 ! IF ( k == 1 ) THEN 2016 ! ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, & 2017 ! nxl_on_file:nxr_on_file) ) 2018 ! READ ( 13 ) tmp_3d_non_standard 2019 ! ENDIF 2020 ! vv_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf) 2021 ! 2022 ! CASE ( 'ww_av' ) 2023 ! IF ( .NOT. ALLOCATED( ww_av ) ) THEN 2024 ! ALLOCATE( ww_av(nzb:nzt+1,nys:nyn,nxl:nxr) ) 2025 ! ENDIF 2026 ! IF ( k == 1 ) THEN 2027 ! ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, & 2028 ! nxl_on_file:nxr_on_file) ) 2029 ! READ ( 13 ) tmp_3d_non_standard 2030 ! ENDIF 2031 ! ww_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf) 2032 ! 2033 ! 2034 ! CASE DEFAULT 2035 ! 2036 ! found = .FALSE. 2037 ! 2038 ! END SELECT 2039 ! 2040 ! END SUBROUTINE doq_rrd_local 1954 !------------------------------------------------------------------------------! 1955 SUBROUTINE doq_rrd_local_ftn( k, nxlf, nxlc, nxl_on_file, nxrf, nxrc, & 1956 nxr_on_file, nynf, nync, nyn_on_file, nysf, & 1957 nysc, nys_on_file, tmp_2d, tmp_3d, found ) 1958 1959 USE control_parameters 1960 1961 USE indices 1962 1963 USE kinds 1964 1965 USE pegrid 1966 1967 1968 IMPLICIT NONE 1969 1970 INTEGER(iwp) :: k !< 1971 INTEGER(iwp) :: nxlc !< 1972 INTEGER(iwp) :: nxlf !< 1973 INTEGER(iwp) :: nxl_on_file !< 1974 INTEGER(iwp) :: nxrc !< 1975 INTEGER(iwp) :: nxrf !< 1976 INTEGER(iwp) :: nxr_on_file !< 1977 INTEGER(iwp) :: nync !< 1978 INTEGER(iwp) :: nynf !< 1979 INTEGER(iwp) :: nyn_on_file !< 1980 INTEGER(iwp) :: nysc !< 1981 INTEGER(iwp) :: nysf !< 1982 INTEGER(iwp) :: nys_on_file !< 1983 1984 LOGICAL, INTENT(OUT) :: found 1985 1986 REAL(wp), DIMENSION(nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp) :: tmp_2d !< 1987 1988 REAL(wp), DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp) :: tmp_3d !< 1989 1990 1991 found = .TRUE. 1992 1993 SELECT CASE ( restart_string(1:length) ) 1994 1995 CASE ( 'pt_2m_av' ) 1996 IF ( .NOT. ALLOCATED( pt_2m_av ) ) THEN 1997 ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) ) 1998 ENDIF 1999 IF ( k == 1 ) READ ( 13 ) tmp_2d 2000 pt_2m_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2001 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2002 2003 CASE ( 'ti_av' ) 2004 IF ( .NOT. ALLOCATED( ti_av ) ) THEN 2005 ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2006 ENDIF 2007 IF ( k == 1 ) READ ( 13 ) tmp_3d 2008 ti_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2009 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2010 2011 CASE ( 'u_center_av' ) 2012 IF ( .NOT. ALLOCATED( u_center_av ) ) THEN 2013 ALLOCATE( u_center_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2014 ENDIF 2015 IF ( k == 1 ) READ ( 13 ) tmp_3d 2016 u_center_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2017 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2018 2019 CASE ( 'uu_av' ) 2020 IF ( .NOT. ALLOCATED( uu_av ) ) THEN 2021 ALLOCATE( uu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2022 ENDIF 2023 IF ( k == 1 ) READ ( 13 ) tmp_3d 2024 uu_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2025 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2026 2027 CASE ( 'uv_10m_av' ) 2028 IF ( .NOT. ALLOCATED( uv_10m_av ) ) THEN 2029 ALLOCATE( uv_10m_av(nysg:nyng,nxlg:nxrg) ) 2030 ENDIF 2031 IF ( k == 1 ) READ ( 13 ) tmp_2d 2032 uv_10m_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2033 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2034 2035 CASE ( 'v_center_av' ) 2036 IF ( .NOT. ALLOCATED( v_center_av ) ) THEN 2037 ALLOCATE( v_center_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2038 ENDIF 2039 IF ( k == 1 ) READ ( 13 ) tmp_3d 2040 v_center_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2041 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2042 2043 CASE ( 'vv_av' ) 2044 IF ( .NOT. ALLOCATED( vv_av ) ) THEN 2045 ALLOCATE( vv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2046 ENDIF 2047 IF ( k == 1 ) READ ( 13 ) tmp_3d 2048 vv_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2049 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2050 2051 CASE ( 'wtheta_av' ) 2052 IF ( .NOT. ALLOCATED( wtheta_av ) ) THEN 2053 ALLOCATE( wtheta_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2054 ENDIF 2055 IF ( k == 1 ) READ ( 13 ) tmp_3d 2056 wtheta_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2057 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2058 2059 CASE ( 'wq_av' ) 2060 IF ( .NOT. ALLOCATED( wq_av ) ) THEN 2061 ALLOCATE( wq_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2062 ENDIF 2063 IF ( k == 1 ) READ ( 13 ) tmp_3d 2064 wq_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2065 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2066 2067 CASE ( 'wspeed_av' ) 2068 IF ( .NOT. ALLOCATED( wspeed_av ) ) THEN 2069 ALLOCATE( wspeed_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2070 ENDIF 2071 IF ( k == 1 ) READ ( 13 ) tmp_3d 2072 wspeed_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2073 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2074 2075 CASE ( 'wu_av' ) 2076 IF ( .NOT. ALLOCATED( wu_av ) ) THEN 2077 ALLOCATE( wu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2078 ENDIF 2079 IF ( k == 1 ) READ ( 13 ) tmp_3d 2080 wu_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2081 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2082 2083 CASE ( 'wv_av' ) 2084 IF ( .NOT. ALLOCATED( wv_av ) ) THEN 2085 ALLOCATE( wv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2086 ENDIF 2087 IF ( k == 1 ) READ ( 13 ) tmp_3d 2088 wv_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2089 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2090 2091 CASE ( 'ww_av' ) 2092 IF ( .NOT. ALLOCATED( ww_av ) ) THEN 2093 ALLOCATE( ww_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2094 ENDIF 2095 IF ( k == 1 ) READ ( 13 ) tmp_3d 2096 ww_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 2097 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2098 2099 2100 CASE DEFAULT 2101 2102 found = .FALSE. 2103 2104 END SELECT 2105 2106 END SUBROUTINE doq_rrd_local_ftn 2107 2108 !------------------------------------------------------------------------------! 2109 ! Description: 2110 ! ------------ 2111 !> Read module-specific local restart data arrays (MPI-IO). 2112 !------------------------------------------------------------------------------! 2113 SUBROUTINE doq_rrd_local_mpi 2114 2115 LOGICAL :: array_found !< control flad indicating whether the array is found in the file or not 2116 2117 2118 CALL rd_mpi_io_check_array( 'pt_2m_av' , found = array_found ) 2119 IF ( array_found ) THEN 2120 IF ( .NOT. ALLOCATED( pt_2m_av ) ) ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) ) 2121 CALL rrd_mpi_io( 'pt_2m_av', pt_2m_av ) 2122 ENDIF 2123 2124 CALL rd_mpi_io_check_array( 'ti_av' , found = array_found ) 2125 IF ( array_found ) THEN 2126 IF ( .NOT. ALLOCATED( ti_av ) ) ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2127 CALL rrd_mpi_io( 'ti_av', ti_av ) 2128 ENDIF 2129 2130 CALL rd_mpi_io_check_array( 'u_center_av' , found = array_found ) 2131 IF ( array_found ) THEN 2132 IF ( .NOT. ALLOCATED( u_center_av ) ) ALLOCATE( u_center_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2133 CALL rrd_mpi_io( 'u_center_av', u_center_av ) 2134 ENDIF 2135 2136 CALL rd_mpi_io_check_array( 'uu_av' , found = array_found ) 2137 IF ( array_found ) THEN 2138 IF ( .NOT. ALLOCATED( uu_av ) ) ALLOCATE( uu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2139 CALL rrd_mpi_io( 'uu_av', uu_av ) 2140 ENDIF 2141 2142 CALL rd_mpi_io_check_array( 'uv_10m_av' , found = array_found ) 2143 IF ( array_found ) THEN 2144 IF ( .NOT. ALLOCATED( uv_10m_av ) ) ALLOCATE( uv_10m_av(nysg:nyng,nxlg:nxrg) ) 2145 CALL rrd_mpi_io( 'uv_10m_av', uv_10m_av ) 2146 ENDIF 2147 2148 CALL rd_mpi_io_check_array( 'v_center_av' , found = array_found ) 2149 IF ( array_found ) THEN 2150 IF ( .NOT. ALLOCATED( v_center_av ) ) ALLOCATE( v_center_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2151 CALL rrd_mpi_io( 'v_center_av', v_center_av ) 2152 ENDIF 2153 2154 CALL rd_mpi_io_check_array( 'vv_av' , found = array_found ) 2155 IF ( array_found ) THEN 2156 IF ( .NOT. ALLOCATED( vv_av ) ) ALLOCATE( vv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2157 CALL rrd_mpi_io( 'vv_av', vv_av ) 2158 ENDIF 2159 2160 CALL rd_mpi_io_check_array( 'ww_av' , found = array_found ) 2161 IF ( array_found ) THEN 2162 IF ( .NOT. ALLOCATED( ww_av ) ) ALLOCATE( ww_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2163 CALL rrd_mpi_io( 'ww_av', ww_av ) 2164 ENDIF 2165 2166 CALL rd_mpi_io_check_array( 'wu_av' , found = array_found ) 2167 IF ( array_found ) THEN 2168 IF ( .NOT. ALLOCATED( wu_av ) ) ALLOCATE( wu_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2169 CALL rrd_mpi_io( 'wu_av', wu_av ) 2170 ENDIF 2171 2172 CALL rd_mpi_io_check_array( 'wv_av' , found = array_found ) 2173 IF ( array_found ) THEN 2174 IF ( .NOT. ALLOCATED( wv_av ) ) ALLOCATE( wv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2175 CALL rrd_mpi_io( 'wv_av', wv_av ) 2176 ENDIF 2177 2178 CALL rd_mpi_io_check_array( 'wtheta_av' , found = array_found ) 2179 IF ( array_found ) THEN 2180 IF ( .NOT. ALLOCATED( wtheta_av ) ) ALLOCATE( wtheta_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2181 CALL rrd_mpi_io( 'wtheta_av', wtheta_av ) 2182 ENDIF 2183 2184 CALL rd_mpi_io_check_array( 'wq_av' , found = array_found ) 2185 IF ( array_found ) THEN 2186 IF ( .NOT. ALLOCATED( wq_av ) ) ALLOCATE( wq_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2187 CALL rrd_mpi_io( 'wq_av', wq_av ) 2188 ENDIF 2189 2190 CALL rd_mpi_io_check_array( 'wspeed_av' , found = array_found ) 2191 IF ( array_found ) THEN 2192 IF ( .NOT. ALLOCATED( wspeed_av ) ) ALLOCATE( wspeed_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2193 CALL rrd_mpi_io( 'wspeed_av', wspeed_av ) 2194 ENDIF 2195 2196 END SUBROUTINE doq_rrd_local_mpi 2041 2197 2042 2198 !------------------------------------------------------------------------------! … … 2062 2218 ENDIF 2063 2219 2220 IF ( ALLOCATED( u_center_av ) ) THEN 2221 CALL wrd_write_string( 'u_center_av' ) 2222 WRITE ( 14 ) u_center_av 2223 ENDIF 2224 2064 2225 IF ( ALLOCATED( uu_av ) ) THEN 2065 2226 CALL wrd_write_string( 'uu_av' ) … … 2072 2233 ENDIF 2073 2234 2235 IF ( ALLOCATED( v_center_av ) ) THEN 2236 CALL wrd_write_string( 'v_center_av' ) 2237 WRITE ( 14 ) v_center_av 2238 ENDIF 2239 2074 2240 IF ( ALLOCATED( vv_av ) ) THEN 2075 2241 CALL wrd_write_string( 'vv_av' ) … … 2107 2273 ENDIF 2108 2274 2109 IF ( ALLOCATED( u_center_av ) ) THEN2110 CALL wrd_write_string( 'u_center_av' )2111 WRITE ( 14 ) u_center_av2112 ENDIF2113 2114 IF ( ALLOCATED( v_center_av ) ) THEN2115 CALL wrd_write_string( 'v_center_av' )2116 WRITE ( 14 ) v_center_av2117 ENDIF2118 2119 2275 ELSEIF ( TRIM( restart_data_format_output ) == 'mpi' ) THEN 2120 2276 2121 STOP 'mpi-io for doq_wrd_local not realized' 2277 IF ( ALLOCATED( pt_2m_av ) ) CALL wrd_mpi_io( 'pt_2m_av', pt_2m_av ) 2278 IF ( ALLOCATED( ti_av ) ) CALL wrd_mpi_io( 'ti_av', ti_av ) 2279 IF ( ALLOCATED( u_center_av ) ) CALL wrd_mpi_io( 'u_center_av', u_center_av ) 2280 IF ( ALLOCATED( uu_av ) ) CALL wrd_mpi_io( 'uu_av', uu_av ) 2281 IF ( ALLOCATED( uv_10m_av ) ) CALL wrd_mpi_io( 'uv_10m_av', uv_10m_av ) 2282 IF ( ALLOCATED( vv_av ) ) CALL wrd_mpi_io( 'vv_av', vv_av ) 2283 IF ( ALLOCATED( v_center_av ) ) CALL wrd_mpi_io( 'v_center_av', v_center_av ) 2284 IF ( ALLOCATED( wtheta_av ) ) CALL wrd_mpi_io( 'wtheta_av', wtheta_av ) 2285 IF ( ALLOCATED( wq_av ) ) CALL wrd_mpi_io( 'wq_av', wq_av ) 2286 IF ( ALLOCATED( wspeed_av ) ) CALL wrd_mpi_io( 'wspeed_av', wspeed_av ) 2287 IF ( ALLOCATED( wu_av ) ) CALL wrd_mpi_io( 'wu_av', wu_av ) 2288 IF ( ALLOCATED( wv_av ) ) CALL wrd_mpi_io( 'wv_av', wv_av ) 2289 IF ( ALLOCATED( ww_av ) ) CALL wrd_mpi_io( 'ww_av', ww_av ) 2122 2290 2123 2291 ENDIF … … 2126 2294 2127 2295 2128 2129 2296 END MODULE diagnostic_output_quantities_mod -
palm/trunk/SOURCE/module_interface.f90
r4517 r4518 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Call of doq_rrd_local enabled 28 ! 29 ! 4517 2020-05-03 14:29:30Z raasch 27 30 ! added restart with MPI-IO for reading local arrays 28 31 ! … … 335 338 doq_output_2d, & 336 339 doq_output_3d, & 340 doq_rrd_local, & 337 341 doq_wrd_local 338 ! doq_rrd_local, &339 342 340 343 USE flight_mod, & … … 1878 1881 ) ! ToDo: change interface to pass variable 1879 1882 1880 !IF ( .NOT. found ) CALL doq_rrd_local( &1881 !map_index, &1882 !nxlf, nxlc, nxl_on_file, &1883 !nxrf, nxrc, nxr_on_file, &1884 !nynf, nync, nyn_on_file, &1885 !nysf, nysc, nys_on_file, &1886 ! tmp_3d_non_standard, found&1887 ! ) ! ToDo: change interface to pass variable CALL doq_wrd_local 1883 IF ( .NOT. found ) CALL doq_rrd_local( & 1884 map_index, & 1885 nxlf, nxlc, nxl_on_file, & 1886 nxrf, nxrc, nxr_on_file, & 1887 nynf, nync, nyn_on_file, & 1888 nysf, nysc, nys_on_file, & 1889 tmp_2d, tmp_3d, found & 1890 ) ! ToDo: change interface to pass variable 1888 1891 1889 1892 IF ( .NOT. found ) CALL gust_rrd_local( & … … 1994 1997 IF ( bulk_cloud_model ) CALL bcm_rrd_local 1995 1998 IF ( air_chemistry ) CALL chem_rrd_local 1996 !CALL doq_rrd_local1999 CALL doq_rrd_local 1997 2000 IF ( gust_module_enabled ) CALL gust_rrd_local 1998 2001 IF ( particle_advection ) CALL lpm_rrd_local -
palm/trunk/SOURCE/read_restart_data_mod.f90
r4517 r4518 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Move input of diagnostic output quantities to doq_rrd_local 28 ! 29 ! 4517 2020-05-03 14:29:30Z raasch 27 30 ! qsurf and ssurf added 28 31 ! … … 130 133 USE cpulog, & 131 134 ONLY: cpu_log, log_point_s 132 133 USE diagnostic_output_quantities_mod, &134 ONLY: pt_2m_av, &135 ti_av, &136 u_center_av, &137 uu_av, &138 uv_10m_av, &139 v_center_av, &140 vv_av, &141 wspeed_av, &142 ww_av143 135 144 136 USE grid_variables, & … … 1773 1765 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1774 1766 1775 CASE ( 'pt_2m_av' )1776 IF ( .NOT. ALLOCATED( pt_2m_av ) ) THEN1777 ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) )1778 ENDIF1779 IF ( k == 1 ) READ ( 13 ) tmp_2d1780 pt_2m_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1781 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1782 1783 1767 CASE ( 'q' ) 1784 1768 IF ( k == 1 ) READ ( 13 ) tmp_3d … … 1895 1879 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1896 1880 1897 CASE ( 'ti_av' )1898 IF ( .NOT. ALLOCATED( ti_av ) ) THEN1899 ALLOCATE( ti_av(nzb:nzt+1,nys:nyn,nxl:nxr) )1900 ENDIF1901 IF ( k == 1 ) THEN1902 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &1903 nxl_on_file:nxr_on_file) )1904 READ ( 13 ) tmp_3d_non_standard1905 ENDIF1906 ti_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)1907 1908 1881 CASE ( 'ts_av' ) 1909 1882 IF ( .NOT. ALLOCATED( ts_av ) ) THEN … … 1934 1907 u_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 1935 1908 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1936 1937 CASE ( 'u_center_av' )1938 IF ( .NOT. ALLOCATED( u_center_av ) ) THEN1939 ALLOCATE( u_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )1940 ENDIF1941 IF ( k == 1 ) THEN1942 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &1943 nxl_on_file:nxr_on_file) )1944 READ ( 13 ) tmp_3d_non_standard1945 ENDIF1946 u_center_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)1947 1948 CASE ( 'uu_av' )1949 IF ( .NOT. ALLOCATED( uu_av ) ) THEN1950 ALLOCATE( uu_av(nzb:nzt+1,nys:nyn,nxl:nxr) )1951 ENDIF1952 IF ( k == 1 ) THEN1953 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &1954 nxl_on_file:nxr_on_file) )1955 READ ( 13 ) tmp_3d_non_standard1956 ENDIF1957 uu_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)1958 1959 CASE ( 'uv_10m_av' )1960 IF ( .NOT. ALLOCATED( uv_10m_av ) ) THEN1961 ALLOCATE( uv_10m_av(nysg:nyng,nxlg:nxrg) )1962 ENDIF1963 IF ( k == 1 ) READ ( 13 ) tmp_2d1964 uv_10m_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1965 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1966 1909 1967 1910 CASE ( 'u_m_l' ) … … 2026 1969 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2027 1970 2028 CASE ( 'v_center_av' )2029 IF ( .NOT. ALLOCATED( v_center_av ) ) THEN2030 ALLOCATE( v_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2031 ENDIF2032 IF ( k == 1 ) THEN2033 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &2034 nxl_on_file:nxr_on_file) )2035 READ ( 13 ) tmp_3d_non_standard2036 ENDIF2037 v_center_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)2038 2039 CASE ( 'vv_av' )2040 IF ( .NOT. ALLOCATED( vv_av ) ) THEN2041 ALLOCATE( vv_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2042 ENDIF2043 IF ( k == 1 ) THEN2044 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &2045 nxl_on_file:nxr_on_file) )2046 READ ( 13 ) tmp_3d_non_standard2047 ENDIF2048 vv_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)2049 2050 1971 CASE ( 'v_m_l' ) 2051 1972 IF ( k == 1 ) THEN … … 2114 2035 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 2115 2036 2116 CASE ( 'ww_av' )2117 IF ( .NOT. ALLOCATED( ww_av ) ) THEN2118 ALLOCATE( ww_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2119 ENDIF2120 IF ( k == 1 ) THEN2121 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &2122 nxl_on_file:nxr_on_file) )2123 READ ( 13 ) tmp_3d_non_standard2124 ENDIF2125 ww_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)2126 2127 2037 CASE ( 'w_m_l' ) 2128 2038 IF ( k == 1 ) THEN … … 2164 2074 w_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3d_non_standard(:,:,nxlf-nbgp:nxrf+nbgp) 2165 2075 ENDIF 2166 2167 CASE ( 'wspeed_av' )2168 IF ( .NOT. ALLOCATED( wspeed_av ) ) THEN2169 ALLOCATE( wspeed_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2170 ENDIF2171 IF ( k == 1 ) THEN2172 ALLOCATE( tmp_3d_non_standard(nzb:nzt+1,nys_on_file:nyn_on_file, &2173 nxl_on_file:nxr_on_file) )2174 READ ( 13 ) tmp_3d_non_standard2175 ENDIF2176 wspeed_av(:,nysc:nync,nxlc:nxrc) = tmp_3d_non_standard(:,nysf:nynf,nxlf:nxrf)2177 2076 2178 2077 CASE ( 'z0_av' ) … … 2326 2225 ENDIF 2327 2226 2328 CALL rd_mpi_io_check_array( 'pt_2m_av' , found = array_found )2329 IF ( array_found ) THEN2330 IF ( .NOT. ALLOCATED( pt_2m_av ) ) ALLOCATE( pt_2m_av(nysg:nyng,nxlg:nxrg) )2331 CALL rrd_mpi_io( 'pt_2m_av', pt_2m_av )2332 ENDIF2333 2334 2227 CALL rd_mpi_io_check_array( 'q' , found = array_found ) 2335 2228 IF ( array_found ) THEN … … 2425 2318 ENDIF 2426 2319 2427 CALL rd_mpi_io_check_array( 'ti_av' , found = array_found )2428 IF ( array_found ) THEN2429 IF ( .NOT. ALLOCATED( ti_av ) ) ALLOCATE( ti_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )2430 CALL rrd_mpi_io( 'ti_av', ti_av )2431 ENDIF2432 2433 2320 CALL rd_mpi_io_check_array( 'ts_av' , found = array_found ) 2434 2321 IF ( array_found ) THEN … … 2451 2338 ENDIF 2452 2339 2453 CALL rd_mpi_io_check_array( 'u_center_av' , found = array_found )2454 IF ( array_found ) THEN2455 IF ( .NOT. ALLOCATED( u_center_av ) ) ALLOCATE( u_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2456 CALL rrd_mpi_io( 'u_center_av', u_center_av )2457 ENDIF2458 2459 CALL rd_mpi_io_check_array( 'uu_av' , found = array_found )2460 IF ( array_found ) THEN2461 IF ( .NOT. ALLOCATED( uu_av ) ) ALLOCATE( uu_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2462 CALL rrd_mpi_io( 'uu_av', uu_av )2463 ENDIF2464 2465 CALL rd_mpi_io_check_array( 'uv_10m_av' , found = array_found )2466 IF ( array_found ) THEN2467 IF ( .NOT. ALLOCATED( uv_10m_av ) ) ALLOCATE( uv_10m_av(nysg:nyng,nxlg:nxrg) )2468 CALL rrd_mpi_io( 'uv_10m_av', uv_10m_av )2469 ENDIF2470 2471 2340 CALL rd_mpi_io_check_array( 'u_m_l' , found = array_found ) 2472 2341 IF ( array_found ) THEN … … 2507 2376 ENDIF 2508 2377 2509 CALL rd_mpi_io_check_array( 'v_center_av' , found = array_found )2510 IF ( array_found ) THEN2511 IF ( .NOT. ALLOCATED( v_center_av ) ) ALLOCATE( v_center_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2512 CALL rrd_mpi_io( 'v_center_av', v_center_av )2513 ENDIF2514 2515 CALL rd_mpi_io_check_array( 'vv_av' , found = array_found )2516 IF ( array_found ) THEN2517 IF ( .NOT. ALLOCATED( vv_av ) ) ALLOCATE( vv_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2518 CALL rrd_mpi_io( 'vv_av', vv_av )2519 ENDIF2520 2521 2378 CALL rd_mpi_io_check_array( 'v_m_l' , found = array_found ) 2522 2379 IF ( array_found ) THEN … … 2562 2419 ENDIF 2563 2420 2564 CALL rd_mpi_io_check_array( 'ww_av' , found = array_found )2565 IF ( array_found ) THEN2566 IF ( .NOT. ALLOCATED( ww_av ) ) ALLOCATE( w_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2567 CALL rrd_mpi_io( 'ww_av', ww_av )2568 ENDIF2569 2570 2421 CALL rd_mpi_io_check_array( 'w_m_l' , found = array_found ) 2571 2422 IF ( array_found ) THEN … … 2590 2441 IF ( .NOT. ALLOCATED( w_m_s ) ) ALLOCATE( w_m_s(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 2591 2442 CALL rrd_mpi_io( 'w_m_s', w_m_s ) 2592 ENDIF2593 2594 CALL rd_mpi_io_check_array( 'wspeed_av' , found = array_found )2595 IF ( array_found ) THEN2596 IF ( .NOT. ALLOCATED( wspeed_av ) ) ALLOCATE( wspeed_av(nzb:nzt+1,nys:nyn,nxl:nxr) )2597 CALL rrd_mpi_io( 'wspeed_av', wspeed_av )2598 2443 ENDIF 2599 2444
Note: See TracChangeset
for help on using the changeset viewer.