Changeset 3004 for palm/trunk/SOURCE/data_output_2d.f90
- Timestamp:
- Apr 27, 2018 12:33:25 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/data_output_2d.f90
r2963 r3004 25 25 ! ----------------- 26 26 ! $Id$ 27 ! precipitation_rate removed, case prr*_xy removed, to_be_resorted have to point 28 ! to ql_vp_av and not to ql_vp, allocation checks implemented (averaged data 29 ! will be assigned to fill values if no allocation happened so far) 30 ! 31 ! 2963 2018-04-12 14:47:44Z suehring 27 32 ! Introduce index for vegetation/wall, pavement/green-wall and water/window 28 33 ! surfaces, for clearer access of surface fraction, albedo, emissivity, etc. . … … 211 216 USE arrays_3d, & 212 217 ONLY: dzw, e, heatflux_output_conversion, nc, nr, p, pt, & 213 precipitation_amount, pr ecipitation_rate,&214 prr, q, qc, ql, ql_c, ql_v, ql_vp, qr, rho_ocean, s, sa,&215 tend, u, v, vpt, w, zu, zw,waterflux_output_conversion218 precipitation_amount, prr, q, qc, ql, ql_c, ql_v, ql_vp, qr, & 219 rho_ocean, s, sa, tend, u, v, vpt, w, zu, zw, & 220 waterflux_output_conversion 216 221 217 222 USE averaging … … 241 246 242 247 USE indices, & 243 ONLY: nbgp, nx, nxl, nxr, ny, nyn, nys, nz, nzb, nzt, wall_flags_0 248 ONLY: nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, nz, & 249 nzb, nzt, wall_flags_0 244 250 245 251 USE kinds … … 516 522 to_be_resorted => e 517 523 ELSE 524 IF ( .NOT. ALLOCATED( e_av ) ) THEN 525 ALLOCATE( e_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 526 e_av = REAL( fill_value, KIND = wp ) 527 ENDIF 518 528 to_be_resorted => e_av 519 529 ENDIF … … 524 534 to_be_resorted => pt 525 535 ELSE 536 IF ( .NOT. ALLOCATED( lpt_av ) ) THEN 537 ALLOCATE( lpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 538 lpt_av = REAL( fill_value, KIND = wp ) 539 ENDIF 526 540 to_be_resorted => lpt_av 527 541 ENDIF … … 537 551 ENDDO 538 552 ELSE 553 IF ( .NOT. ALLOCATED( lwp_av ) ) THEN 554 ALLOCATE( lwp_av(nysg:nyng,nxlg:nxrg) ) 555 lwp_av = REAL( fill_value, KIND = wp ) 556 ENDIF 539 557 DO i = nxl, nxr 540 558 DO j = nys, nyn … … 551 569 to_be_resorted => nc 552 570 ELSE 571 IF ( .NOT. ALLOCATED( nc_av ) ) THEN 572 ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 573 nc_av = REAL( fill_value, KIND = wp ) 574 ENDIF 553 575 to_be_resorted => nc_av 554 576 ENDIF … … 559 581 to_be_resorted => nr 560 582 ELSE 583 IF ( .NOT. ALLOCATED( nr_av ) ) THEN 584 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 585 nr_av = REAL( fill_value, KIND = wp ) 586 ENDIF 561 587 to_be_resorted => nr_av 562 588 ENDIF … … 581 607 ENDDO 582 608 ELSE 609 IF ( .NOT. ALLOCATED( ghf_av ) ) THEN 610 ALLOCATE( ghf_av(nysg:nyng,nxlg:nxrg) ) 611 ghf_av = REAL( fill_value, KIND = wp ) 612 ENDIF 583 613 DO i = nxl, nxr 584 614 DO j = nys, nyn … … 610 640 ENDDO 611 641 ELSE 642 IF ( .NOT. ALLOCATED( ol_av ) ) THEN 643 ALLOCATE( ol_av(nysg:nyng,nxlg:nxrg) ) 644 ol_av = REAL( fill_value, KIND = wp ) 645 ENDIF 612 646 DO i = nxl, nxr 613 647 DO j = nys, nyn … … 625 659 to_be_resorted => p 626 660 ELSE 661 IF ( .NOT. ALLOCATED( p_av ) ) THEN 662 ALLOCATE( p_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 663 p_av = REAL( fill_value, KIND = wp ) 664 ENDIF 627 665 IF ( psolver /= 'sor' ) CALL exchange_horiz( p_av, nbgp ) 628 666 to_be_resorted => p_av … … 647 685 resorted = .TRUE. 648 686 ELSE 687 IF ( .NOT. ALLOCATED( pc_av ) ) THEN 688 ALLOCATE( pc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 689 pc_av = REAL( fill_value, KIND = wp ) 690 ENDIF 649 691 ! CALL exchange_horiz( pc_av, nbgp ) 650 692 to_be_resorted => pc_av … … 692 734 resorted = .TRUE. 693 735 ELSE 736 IF ( .NOT. ALLOCATED( pr_av ) ) THEN 737 ALLOCATE( pr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 738 pr_av = REAL( fill_value, KIND = wp ) 739 ENDIF 694 740 ! CALL exchange_horiz( pr_av, nbgp ) 695 741 to_be_resorted => pr_av … … 704 750 ENDDO 705 751 precipitation_amount = 0.0_wp ! reset for next integ. interval 706 resorted = .TRUE.707 two_d = .TRUE.708 level_z(nzb+1) = zu(nzb+1)709 710 CASE ( 'prr*_xy' ) ! 2d-array711 IF ( av == 0 ) THEN712 ! CALL exchange_horiz_2d( prr(nzb+1,:,:) )713 DO i = nxl, nxr714 DO j = nys, nyn715 local_pf(i,j,nzb+1) = prr(nzb+1,j,i) * hyrho(nzb+1)716 ENDDO717 ENDDO718 ELSE719 ! CALL exchange_horiz_2d( prr_av(nzb+1,:,:) )720 DO i = nxl, nxr721 DO j = nys, nyn722 local_pf(i,j,nzb+1) = prr_av(nzb+1,j,i) * hyrho(nzb+1)723 ENDDO724 ENDDO725 ENDIF726 752 resorted = .TRUE. 727 753 two_d = .TRUE. … … 739 765 ENDDO 740 766 ELSE 767 IF ( .NOT. ALLOCATED( prr_av ) ) THEN 768 ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 769 prr_av = REAL( fill_value, KIND = wp ) 770 ENDIF 741 771 ! CALL exchange_horiz( prr_av, nbgp ) 742 772 DO i = nxl, nxr … … 768 798 ENDIF 769 799 ELSE 800 IF ( .NOT. ALLOCATED( pt_av ) ) THEN 801 ALLOCATE( pt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 802 pt_av = REAL( fill_value, KIND = wp ) 803 ENDIF 770 804 to_be_resorted => pt_av 771 805 ENDIF … … 776 810 to_be_resorted => q 777 811 ELSE 812 IF ( .NOT. ALLOCATED( q_av ) ) THEN 813 ALLOCATE( q_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 814 q_av = REAL( fill_value, KIND = wp ) 815 ENDIF 778 816 to_be_resorted => q_av 779 817 ENDIF … … 784 822 to_be_resorted => qc 785 823 ELSE 824 IF ( .NOT. ALLOCATED( qc_av ) ) THEN 825 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 826 qc_av = REAL( fill_value, KIND = wp ) 827 ENDIF 786 828 to_be_resorted => qc_av 787 829 ENDIF … … 792 834 to_be_resorted => ql 793 835 ELSE 836 IF ( .NOT. ALLOCATED( ql_av ) ) THEN 837 ALLOCATE( ql_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 838 ql_av = REAL( fill_value, KIND = wp ) 839 ENDIF 794 840 to_be_resorted => ql_av 795 841 ENDIF … … 800 846 to_be_resorted => ql_c 801 847 ELSE 848 IF ( .NOT. ALLOCATED( ql_c_av ) ) THEN 849 ALLOCATE( ql_c_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 850 ql_c_av = REAL( fill_value, KIND = wp ) 851 ENDIF 802 852 to_be_resorted => ql_c_av 803 853 ENDIF … … 808 858 to_be_resorted => ql_v 809 859 ELSE 860 IF ( .NOT. ALLOCATED( ql_v_av ) ) THEN 861 ALLOCATE( ql_v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 862 ql_v_av = REAL( fill_value, KIND = wp ) 863 ENDIF 810 864 to_be_resorted => ql_v_av 811 865 ENDIF … … 844 898 resorted = .TRUE. 845 899 ELSE 900 IF ( .NOT. ALLOCATED( ql_vp_av ) ) THEN 901 ALLOCATE( ql_vp_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 902 ql_vp_av = REAL( fill_value, KIND = wp ) 903 ENDIF 846 904 ! CALL exchange_horiz( ql_vp_av, nbgp ) 847 to_be_resorted => ql_vp 905 to_be_resorted => ql_vp_av 848 906 ENDIF 849 907 IF ( mode == 'xy' ) level_z = zu … … 853 911 to_be_resorted => qr 854 912 ELSE 913 IF ( .NOT. ALLOCATED( qr_av ) ) THEN 914 ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 915 qr_av = REAL( fill_value, KIND = wp ) 916 ENDIF 855 917 to_be_resorted => qr_av 856 918 ENDIF … … 883 945 ENDDO 884 946 ELSE 947 IF ( .NOT. ALLOCATED( qsws_av ) ) THEN 948 ALLOCATE( qsws_av(nysg:nyng,nxlg:nxrg) ) 949 qsws_av = REAL( fill_value, KIND = wp ) 950 ENDIF 885 951 DO i = nxl, nxr 886 952 DO j = nys, nyn … … 904 970 resorted = .TRUE. 905 971 ELSE 972 IF ( .NOT. ALLOCATED( qv_av ) ) THEN 973 ALLOCATE( qv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 974 qv_av = REAL( fill_value, KIND = wp ) 975 ENDIF 906 976 to_be_resorted => qv_av 907 977 ENDIF … … 928 998 ENDDO 929 999 ELSE 1000 IF ( .NOT. ALLOCATED( r_a_av ) ) THEN 1001 ALLOCATE( r_a_av(nysg:nyng,nxlg:nxrg) ) 1002 r_a_av = REAL( fill_value, KIND = wp ) 1003 ENDIF 930 1004 DO i = nxl, nxr 931 1005 DO j = nys, nyn … … 942 1016 to_be_resorted => rho_ocean 943 1017 ELSE 1018 IF ( .NOT. ALLOCATED( rho_ocean_av ) ) THEN 1019 ALLOCATE( rho_ocean_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1020 rho_ocean_av = REAL( fill_value, KIND = wp ) 1021 ENDIF 944 1022 to_be_resorted => rho_ocean_av 945 1023 ENDIF … … 949 1027 to_be_resorted => s 950 1028 ELSE 1029 IF ( .NOT. ALLOCATED( s_av ) ) THEN 1030 ALLOCATE( s_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1031 s_av = REAL( fill_value, KIND = wp ) 1032 ENDIF 951 1033 to_be_resorted => s_av 952 1034 ENDIF … … 956 1038 to_be_resorted => sa 957 1039 ELSE 1040 IF ( .NOT. ALLOCATED( sa_av ) ) THEN 1041 ALLOCATE( sa_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1042 sa_av = REAL( fill_value, KIND = wp ) 1043 ENDIF 958 1044 to_be_resorted => sa_av 959 1045 ENDIF … … 985 1071 ENDDO 986 1072 ELSE 1073 IF ( .NOT. ALLOCATED( shf_av ) ) THEN 1074 ALLOCATE( shf_av(nysg:nyng,nxlg:nxrg) ) 1075 shf_av = REAL( fill_value, KIND = wp ) 1076 ENDIF 987 1077 DO i = nxl, nxr 988 1078 DO j = nys, nyn … … 1013 1103 ENDDO 1014 1104 ELSE 1105 IF ( .NOT. ALLOCATED( ssws_av ) ) THEN 1106 ALLOCATE( ssws_av(nysg:nyng,nxlg:nxrg) ) 1107 ssws_av = REAL( fill_value, KIND = wp ) 1108 ENDIF 1015 1109 DO i = nxl, nxr 1016 1110 DO j = nys, nyn … … 1041 1135 ENDDO 1042 1136 ELSE 1137 IF ( .NOT. ALLOCATED( ts_av ) ) THEN 1138 ALLOCATE( ts_av(nysg:nyng,nxlg:nxrg) ) 1139 ts_av = REAL( fill_value, KIND = wp ) 1140 ENDIF 1043 1141 DO i = nxl, nxr 1044 1142 DO j = nys, nyn … … 1072 1170 1073 1171 ELSE 1172 IF ( .NOT. ALLOCATED( tsurf_av ) ) THEN 1173 ALLOCATE( tsurf_av(nysg:nyng,nxlg:nxrg) ) 1174 tsurf_av = REAL( fill_value, KIND = wp ) 1175 ENDIF 1074 1176 DO i = nxl, nxr 1075 1177 DO j = nys, nyn … … 1087 1189 to_be_resorted => u 1088 1190 ELSE 1191 IF ( .NOT. ALLOCATED( u_av ) ) THEN 1192 ALLOCATE( u_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1193 u_av = REAL( fill_value, KIND = wp ) 1194 ENDIF 1089 1195 to_be_resorted => u_av 1090 1196 ENDIF … … 1115 1221 ENDDO 1116 1222 ELSE 1223 IF ( .NOT. ALLOCATED( us_av ) ) THEN 1224 ALLOCATE( us_av(nysg:nyng,nxlg:nxrg) ) 1225 us_av = REAL( fill_value, KIND = wp ) 1226 ENDIF 1117 1227 DO i = nxl, nxr 1118 1228 DO j = nys, nyn … … 1130 1240 to_be_resorted => v 1131 1241 ELSE 1242 IF ( .NOT. ALLOCATED( v_av ) ) THEN 1243 ALLOCATE( v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1244 v_av = REAL( fill_value, KIND = wp ) 1245 ENDIF 1132 1246 to_be_resorted => v_av 1133 1247 ENDIF … … 1144 1258 to_be_resorted => vpt 1145 1259 ELSE 1260 IF ( .NOT. ALLOCATED( vpt_av ) ) THEN 1261 ALLOCATE( vpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1262 vpt_av = REAL( fill_value, KIND = wp ) 1263 ENDIF 1146 1264 to_be_resorted => vpt_av 1147 1265 ENDIF … … 1153 1271 to_be_resorted => w 1154 1272 ELSE 1273 IF ( .NOT. ALLOCATED( w_av ) ) THEN 1274 ALLOCATE( w_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 1275 w_av = REAL( fill_value, KIND = wp ) 1276 ENDIF 1155 1277 to_be_resorted => w_av 1156 1278 ENDIF … … 1175 1297 ENDDO 1176 1298 ELSE 1299 IF ( .NOT. ALLOCATED( z0_av ) ) THEN 1300 ALLOCATE( z0_av(nysg:nyng,nxlg:nxrg) ) 1301 z0_av = REAL( fill_value, KIND = wp ) 1302 ENDIF 1177 1303 DO i = nxl, nxr 1178 1304 DO j = nys, nyn … … 1203 1329 ENDDO 1204 1330 ELSE 1331 IF ( .NOT. ALLOCATED( z0h_av ) ) THEN 1332 ALLOCATE( z0h_av(nysg:nyng,nxlg:nxrg) ) 1333 z0h_av = REAL( fill_value, KIND = wp ) 1334 ENDIF 1205 1335 DO i = nxl, nxr 1206 1336 DO j = nys, nyn … … 1231 1361 ENDDO 1232 1362 ELSE 1363 IF ( .NOT. ALLOCATED( z0q_av ) ) THEN 1364 ALLOCATE( z0q_av(nysg:nyng,nxlg:nxrg) ) 1365 z0q_av = REAL( fill_value, KIND = wp ) 1366 ENDIF 1233 1367 DO i = nxl, nxr 1234 1368 DO j = nys, nyn
Note: See TracChangeset
for help on using the changeset viewer.