Changeset 3173
- Timestamp:
- Jul 26, 2018 12:55:23 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/chemistry_model_mod.f90
r3045 r3173 27 27 ! ----------------- 28 28 ! $Id$ 29 ! Revise output of surface quantities in case of overhanging structures 30 ! 31 ! 3045 2018-05-28 07:55:41Z Giersch 29 32 ! error messages revised 30 33 ! … … 1257 1260 CHARACTER (LEN=*) :: variable !< 1258 1261 1262 LOGICAL :: match_def !< flag indicating natural-type surface 1263 LOGICAL :: match_lsm !< flag indicating natural-type surface 1264 LOGICAL :: match_usm !< flag indicating urban-type surface 1259 1265 1260 1266 INTEGER(iwp) :: i !< grid index x direction … … 1288 1294 ENDDO 1289 1295 ELSEIF ( TRIM(variable(4:)) == TRIM('cssws*') ) THEN 1290 DO m = 1, surf_def_h(0)%ns 1291 i = surf_def_h(0)%i(m) 1292 j = surf_def_h(0)%j(m) 1293 chem_species(lsp)%cssws_av(j,i) = chem_species(lsp)%cssws_av(j,i) + surf_def_h(0)%cssws(lsp,m) 1294 ENDDO 1295 DO m = 1, surf_lsm_h%ns 1296 i = surf_lsm_h%i(m) 1297 j = surf_lsm_h%j(m) 1298 chem_species(lsp)%cssws_av(j,i) = chem_species(lsp)%cssws_av(j,i) + surf_lsm_h%cssws(lsp,m) 1296 DO i = nxl, nxr 1297 DO j = nys, nyn 1298 match_def = surf_def_h(0)%start_index(j,i) <= & 1299 surf_def_h(0)%end_index(j,i) 1300 match_lsm = surf_lsm_h%start_index(j,i) <= & 1301 surf_lsm_h%end_index(j,i) 1302 match_usm = surf_usm_h%start_index(j,i) <= & 1303 surf_usm_h%end_index(j,i) 1304 1305 IF ( match_def ) THEN 1306 m = surf_def_h(0)%end_index(j,i) 1307 chem_species(lsp)%cssws_av(j,i) = & 1308 chem_species(lsp)%cssws_av(j,i) + & 1309 surf_def_h(0)%cssws(lsp,m) 1310 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1311 m = surf_lsm_h%end_index(j,i) 1312 chem_species(lsp)%cssws_av(j,i) = & 1313 chem_species(lsp)%cssws_av(j,i) + & 1314 surf_lsm_h%cssws(lsp,m) 1315 ELSEIF ( match_usm ) THEN 1316 m = surf_usm_h%end_index(j,i) 1317 chem_species(lsp)%cssws_av(j,i) = & 1318 chem_species(lsp)%cssws_av(j,i) + & 1319 surf_usm_h%cssws(lsp,m) 1320 ENDIF 1321 ENDDO 1299 1322 ENDDO 1300 DO m = 1, surf_usm_h%ns1301 i = surf_usm_h%i(m)1302 j = surf_usm_h%j(m)1303 chem_species(lsp)%cssws_av(j,i) = chem_species(lsp)%cssws_av(j,i) + surf_usm_h%cssws(lsp,m)1304 ENDDO1305 1306 1323 ENDIF 1307 1324 ENDDO -
palm/trunk/SOURCE/radiation_model_mod.f90
r3172 r3173 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Revise output of surface radiation quantities in case of overhanging 31 ! structures 32 ! 33 ! 3172 2018-07-26 12:06:06Z suehring 30 34 ! Bugfixes: 31 35 ! - temporal work-around for calculation of effective radiative surface … … 7497 7501 CHARACTER (LEN=*) :: variable !< 7498 7502 7503 LOGICAL :: match_lsm !< flag indicating natural-type surface 7504 LOGICAL :: match_usm !< flag indicating urban-type surface 7505 7499 7506 INTEGER(iwp) :: i !< 7500 7507 INTEGER(iwp) :: j !< … … 7597 7604 DO i = nxl, nxr 7598 7605 DO j = nys, nyn 7599 DO m = surf_lsm_h%start_index(j,i), & 7600 surf_lsm_h%end_index(j,i) 7606 match_lsm = surf_lsm_h%start_index(j,i) <= & 7607 surf_lsm_h%end_index(j,i) 7608 match_usm = surf_usm_h%start_index(j,i) <= & 7609 surf_usm_h%end_index(j,i) 7610 7611 IF ( match_lsm .AND. .NOT. match_usm ) THEN 7612 m = surf_lsm_h%end_index(j,i) 7601 7613 rad_net_av(j,i) = rad_net_av(j,i) + & 7602 surf_lsm_h%rad_net(m) 7603 ENDDO 7604 DO m = surf_usm_h%start_index(j,i), & 7605 surf_usm_h%end_index(j,i) 7614 surf_lsm_h%rad_net(m) 7615 ELSEIF ( match_usm ) THEN 7616 m = surf_usm_h%end_index(j,i) 7606 7617 rad_net_av(j,i) = rad_net_av(j,i) + & 7607 7608 END DO7618 surf_usm_h%rad_net(m) 7619 ENDIF 7609 7620 ENDDO 7610 7621 ENDDO … … 7615 7626 DO i = nxl, nxr 7616 7627 DO j = nys, nyn 7617 DO m = surf_lsm_h%start_index(j,i), & 7618 surf_lsm_h%end_index(j,i) 7628 match_lsm = surf_lsm_h%start_index(j,i) <= & 7629 surf_lsm_h%end_index(j,i) 7630 match_usm = surf_usm_h%start_index(j,i) <= & 7631 surf_usm_h%end_index(j,i) 7632 7633 IF ( match_lsm .AND. .NOT. match_usm ) THEN 7634 m = surf_lsm_h%end_index(j,i) 7619 7635 rad_lw_in_xy_av(j,i) = rad_lw_in_xy_av(j,i) + & 7620 surf_lsm_h%rad_lw_in(m) 7621 ENDDO 7622 DO m = surf_usm_h%start_index(j,i), & 7623 surf_usm_h%end_index(j,i) 7636 surf_lsm_h%rad_lw_in(m) 7637 ELSEIF ( match_usm ) THEN 7638 m = surf_usm_h%end_index(j,i) 7624 7639 rad_lw_in_xy_av(j,i) = rad_lw_in_xy_av(j,i) + & 7625 7626 END DO7640 surf_usm_h%rad_lw_in(m) 7641 ENDIF 7627 7642 ENDDO 7628 7643 ENDDO … … 7633 7648 DO i = nxl, nxr 7634 7649 DO j = nys, nyn 7635 DO m = surf_lsm_h%start_index(j,i), & 7636 surf_lsm_h%end_index(j,i) 7650 match_lsm = surf_lsm_h%start_index(j,i) <= & 7651 surf_lsm_h%end_index(j,i) 7652 match_usm = surf_usm_h%start_index(j,i) <= & 7653 surf_usm_h%end_index(j,i) 7654 7655 IF ( match_lsm .AND. .NOT. match_usm ) THEN 7656 m = surf_lsm_h%end_index(j,i) 7637 7657 rad_lw_out_xy_av(j,i) = rad_lw_out_xy_av(j,i) + & 7638 surf_lsm_h%rad_lw_out(m) 7639 ENDDO 7640 DO m = surf_usm_h%start_index(j,i), & 7641 surf_usm_h%end_index(j,i) 7658 surf_lsm_h%rad_lw_out(m) 7659 ELSEIF ( match_usm ) THEN 7660 m = surf_usm_h%end_index(j,i) 7642 7661 rad_lw_out_xy_av(j,i) = rad_lw_out_xy_av(j,i) + & 7643 7644 END DO7662 surf_usm_h%rad_lw_out(m) 7663 ENDIF 7645 7664 ENDDO 7646 7665 ENDDO … … 7651 7670 DO i = nxl, nxr 7652 7671 DO j = nys, nyn 7653 DO m = surf_lsm_h%start_index(j,i), & 7654 surf_lsm_h%end_index(j,i) 7672 match_lsm = surf_lsm_h%start_index(j,i) <= & 7673 surf_lsm_h%end_index(j,i) 7674 match_usm = surf_usm_h%start_index(j,i) <= & 7675 surf_usm_h%end_index(j,i) 7676 7677 IF ( match_lsm .AND. .NOT. match_usm ) THEN 7678 m = surf_lsm_h%end_index(j,i) 7655 7679 rad_sw_in_xy_av(j,i) = rad_sw_in_xy_av(j,i) + & 7656 surf_lsm_h%rad_sw_in(m) 7657 ENDDO 7658 DO m = surf_usm_h%start_index(j,i), & 7659 surf_usm_h%end_index(j,i) 7680 surf_lsm_h%rad_sw_in(m) 7681 ELSEIF ( match_usm ) THEN 7682 m = surf_usm_h%end_index(j,i) 7660 7683 rad_sw_in_xy_av(j,i) = rad_sw_in_xy_av(j,i) + & 7661 7684 surf_usm_h%rad_sw_in(m) 7662 END DO7685 ENDIF 7663 7686 ENDDO 7664 7687 ENDDO … … 7669 7692 DO i = nxl, nxr 7670 7693 DO j = nys, nyn 7671 DO m = surf_lsm_h%start_index(j,i), & 7672 surf_lsm_h%end_index(j,i) 7694 match_lsm = surf_lsm_h%start_index(j,i) <= & 7695 surf_lsm_h%end_index(j,i) 7696 match_usm = surf_usm_h%start_index(j,i) <= & 7697 surf_usm_h%end_index(j,i) 7698 7699 IF ( match_lsm .AND. .NOT. match_usm ) THEN 7700 m = surf_lsm_h%end_index(j,i) 7673 7701 rad_sw_out_xy_av(j,i) = rad_sw_out_xy_av(j,i) + & 7674 surf_lsm_h%rad_sw_out(m) 7675 ENDDO 7676 DO m = surf_usm_h%start_index(j,i), & 7677 surf_usm_h%end_index(j,i) 7702 surf_lsm_h%rad_sw_out(m) 7703 ELSEIF ( match_usm ) THEN 7704 m = surf_usm_h%end_index(j,i) 7678 7705 rad_sw_out_xy_av(j,i) = rad_sw_out_xy_av(j,i) + & 7679 7680 END DO7706 surf_usm_h%rad_sw_out(m) 7707 ENDIF 7681 7708 ENDDO 7682 7709 ENDDO -
palm/trunk/SOURCE/sum_up_3d_data.f90
r3170 r3173 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Bugfix for last commit 28 ! 29 ! 3170 2018-07-25 15:19:37Z suehring 27 30 ! Revise output of surface quantities in case of overhanging structures 28 31 ! … … 595 598 IF ( match_lsm .AND. .NOT. match_usm ) THEN 596 599 m = surf_lsm_h%end_index(j,i) 597 tsurf_av(j,i) = tsurf_av(j,i) +&600 ghf_av(j,i) = ghf_av(j,i) + & 598 601 surf_lsm_h%ghf(m) 599 602 ELSEIF ( match_usm ) THEN 600 603 m = surf_usm_h%end_index(j,i) 601 tsurf_av(j,i) = tsurf_av(j,i) +&604 ghf_av(j,i) = ghf_av(j,i) + & 602 605 surf_usm_h%frac(ind_veg_wall,m) * & 603 606 surf_usm_h%wghf_eb(m) + & … … 678 681 IF ( match_def ) THEN 679 682 m = surf_def_h(0)%end_index(j,i) 680 tsurf_av(j,i) = tsurf_av(j,i) +&683 ol_av(j,i) = ol_av(j,i) + & 681 684 surf_def_h(0)%ol(m) 682 685 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 683 686 m = surf_lsm_h%end_index(j,i) 684 tsurf_av(j,i) = tsurf_av(j,i) +&687 ol_av(j,i) = ol_av(j,i) + & 685 688 surf_lsm_h%ol(m) 686 689 ELSEIF ( match_usm ) THEN 687 690 m = surf_usm_h%end_index(j,i) 688 tsurf_av(j,i) = tsurf_av(j,i) +&691 ol_av(j,i) = ol_av(j,i) + & 689 692 surf_usm_h%ol(m) 690 693 ENDIF … … 884 887 IF ( match_def ) THEN 885 888 m = surf_def_h(0)%end_index(j,i) 886 tsurf_av(j,i) = tsurf_av(j,i) +&889 qsws_av(j,i) = qsws_av(j,i) + & 887 890 surf_def_h(0)%qsws(m) * & 888 891 waterflux_output_conversion(k) 889 892 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 890 893 m = surf_lsm_h%end_index(j,i) 891 tsurf_av(j,i) = tsurf_av(j,i) +&894 qsws_av(j,i) = qsws_av(j,i) + & 892 895 surf_lsm_h%qsws(m) * l_v 893 896 ELSEIF ( match_usm ) THEN 894 897 m = surf_usm_h%end_index(j,i) 895 tsurf_av(j,i) = tsurf_av(j,i) +&898 qsws_av(j,i) = qsws_av(j,i) + & 896 899 surf_usm_h%qsws(m) * l_v 897 900 ENDIF … … 922 925 IF ( match_lsm .AND. .NOT. match_usm ) THEN 923 926 m = surf_lsm_h%end_index(j,i) 924 tsurf_av(j,i) = tsurf_av(j,i) +&927 r_a_av(j,i) = r_a_av(j,i) + & 925 928 surf_lsm_h%r_a(m) 926 929 ELSEIF ( match_usm ) THEN 927 930 m = surf_usm_h%end_index(j,i) 928 tsurf_av(j,i) = tsurf_av(j,i) +&931 r_a_av(j,i) = r_a_av(j,i) + & 929 932 surf_usm_h%frac(ind_veg_wall,m) * & 930 933 surf_usm_h%r_a(m) + & … … 988 991 IF ( match_def ) THEN 989 992 m = surf_def_h(0)%end_index(j,i) 990 tsurf_av(j,i) = tsurf_av(j,i) +&993 shf_av(j,i) = shf_av(j,i) + & 991 994 surf_def_h(0)%shf(m) * & 992 995 heatflux_output_conversion(k) 993 996 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 994 997 m = surf_lsm_h%end_index(j,i) 995 tsurf_av(j,i) = tsurf_av(j,i) +&998 shf_av(j,i) = shf_av(j,i) + & 996 999 surf_lsm_h%shf(m) * cp 997 1000 ELSEIF ( match_usm ) THEN 998 1001 m = surf_usm_h%end_index(j,i) 999 tsurf_av(j,i) = tsurf_av(j,i) +&1002 shf_av(j,i) = shf_av(j,i) + & 1000 1003 surf_usm_h%shf(m) * cp 1001 1004 ENDIF … … 1017 1020 IF ( match_def ) THEN 1018 1021 m = surf_def_h(0)%end_index(j,i) 1019 tsurf_av(j,i) = tsurf_av(j,i) +&1022 ssws_av(j,i) = ssws_av(j,i) + & 1020 1023 surf_def_h(0)%ssws(m) 1021 1024 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1022 1025 m = surf_lsm_h%end_index(j,i) 1023 tsurf_av(j,i) = tsurf_av(j,i) +&1026 ssws_av(j,i) = ssws_av(j,i) + & 1024 1027 surf_lsm_h%ssws(m) 1025 1028 ELSEIF ( match_usm ) THEN 1026 1029 m = surf_usm_h%end_index(j,i) 1027 tsurf_av(j,i) = tsurf_av(j,i) +&1030 ssws_av(j,i) = ssws_av(j,i) + & 1028 1031 surf_usm_h%ssws(m) 1029 1032 ENDIF … … 1045 1048 IF ( match_def ) THEN 1046 1049 m = surf_def_h(0)%end_index(j,i) 1047 ts urf_av(j,i) = tsurf_av(j,i) +&1050 ts_av(j,i) = ts_av(j,i) + & 1048 1051 surf_def_h(0)%ts(m) 1049 1052 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1050 1053 m = surf_lsm_h%end_index(j,i) 1051 ts urf_av(j,i) = tsurf_av(j,i) +&1054 ts_av(j,i) = ts_av(j,i) + & 1052 1055 surf_lsm_h%ts(m) 1053 1056 ELSEIF ( match_usm ) THEN 1054 1057 m = surf_usm_h%end_index(j,i) 1055 ts urf_av(j,i) = tsurf_av(j,i) +&1058 ts_av(j,i) = ts_av(j,i) + & 1056 1059 surf_usm_h%ts(m) 1057 1060 ENDIF … … 1112 1115 IF ( match_def ) THEN 1113 1116 m = surf_def_h(0)%end_index(j,i) 1114 tsurf_av(j,i) = tsurf_av(j,i) +&1117 us_av(j,i) = us_av(j,i) + & 1115 1118 surf_def_h(0)%us(m) 1116 1119 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1117 1120 m = surf_lsm_h%end_index(j,i) 1118 tsurf_av(j,i) = tsurf_av(j,i) +&1121 us_av(j,i) = us_av(j,i) + & 1119 1122 surf_lsm_h%us(m) 1120 1123 ELSEIF ( match_usm ) THEN 1121 1124 m = surf_usm_h%end_index(j,i) 1122 tsurf_av(j,i) = tsurf_av(j,i) +&1125 us_av(j,i) = us_av(j,i) + & 1123 1126 surf_usm_h%us(m) 1124 1127 ENDIF … … 1173 1176 IF ( match_def ) THEN 1174 1177 m = surf_def_h(0)%end_index(j,i) 1175 tsurf_av(j,i) = tsurf_av(j,i) +&1178 z0_av(j,i) = z0_av(j,i) + & 1176 1179 surf_def_h(0)%z0(m) 1177 1180 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1178 1181 m = surf_lsm_h%end_index(j,i) 1179 tsurf_av(j,i) = tsurf_av(j,i) +&1182 z0_av(j,i) = z0_av(j,i) + & 1180 1183 surf_lsm_h%z0(m) 1181 1184 ELSEIF ( match_usm ) THEN 1182 1185 m = surf_usm_h%end_index(j,i) 1183 tsurf_av(j,i) = tsurf_av(j,i) +&1186 z0_av(j,i) = z0_av(j,i) + & 1184 1187 surf_usm_h%z0(m) 1185 1188 ENDIF … … 1201 1204 IF ( match_def ) THEN 1202 1205 m = surf_def_h(0)%end_index(j,i) 1203 tsurf_av(j,i) = tsurf_av(j,i) +&1206 z0h_av(j,i) = z0h_av(j,i) + & 1204 1207 surf_def_h(0)%z0h(m) 1205 1208 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1206 1209 m = surf_lsm_h%end_index(j,i) 1207 tsurf_av(j,i) = tsurf_av(j,i) +&1210 z0h_av(j,i) = z0h_av(j,i) + & 1208 1211 surf_lsm_h%z0h(m) 1209 1212 ELSEIF ( match_usm ) THEN 1210 1213 m = surf_usm_h%end_index(j,i) 1211 tsurf_av(j,i) = tsurf_av(j,i) +&1214 z0h_av(j,i) = z0h_av(j,i) + & 1212 1215 surf_usm_h%z0h(m) 1213 1216 ENDIF … … 1229 1232 IF ( match_def ) THEN 1230 1233 m = surf_def_h(0)%end_index(j,i) 1231 tsurf_av(j,i) = tsurf_av(j,i) +&1234 z0q_av(j,i) = z0q_av(j,i) + & 1232 1235 surf_def_h(0)%z0q(m) 1233 1236 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 1234 1237 m = surf_lsm_h%end_index(j,i) 1235 tsurf_av(j,i) = tsurf_av(j,i) +&1238 z0q_av(j,i) = z0q_av(j,i) + & 1236 1239 surf_lsm_h%z0q(m) 1237 1240 ELSEIF ( match_usm ) THEN 1238 1241 m = surf_usm_h%end_index(j,i) 1239 tsurf_av(j,i) = tsurf_av(j,i) +&1242 z0q_av(j,i) = z0q_av(j,i) + & 1240 1243 surf_usm_h%z0q(m) 1241 1244 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.