Changeset 4671 for palm/trunk/SOURCE/flow_statistics.f90
- Timestamp:
- Sep 9, 2020 8:27:58 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/flow_statistics.f90
r4646 r4671 24 24 ! ----------------- 25 25 ! $Id$ 26 ! Implementation of downward facing USM and LSM surfaces 27 ! 28 ! 4646 2020-08-24 16:02:40Z raasch 26 29 ! file re-formatted to follow the PALM coding standard 27 30 ! … … 523 526 !$ACC PRESENT(e, u, v, w, km, kh, p, pt) & 524 527 !$ACC PRESENT(ddx, ddy, ddzu, ddzw) & 525 !$ACC PRESENT(surf_def_h(0), surf_lsm_h , surf_usm_h) &528 !$ACC PRESENT(surf_def_h(0), surf_lsm_h(0), surf_usm_h(0)) & 526 529 !$ACC PRESENT(sums_l) 527 530 DO i = nxl, nxr … … 685 688 surf_def_h(0)%pt_surface(m) * rmask(j,i,sr) 686 689 ENDIF 687 IF ( surf_lsm_h %end_index(j,i) >= surf_lsm_h%start_index(j,i) ) THEN688 m = surf_lsm_h %start_index(j,i)690 IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) ) THEN 691 m = surf_lsm_h(0)%start_index(j,i) 689 692 !$ACC ATOMIC 690 693 sums_l(nzb,pr_palm,tn) = sums_l(nzb,pr_palm,tn) + & 691 surf_lsm_h %us(m) * rmask(j,i,sr)694 surf_lsm_h(0)%us(m) * rmask(j,i,sr) 692 695 !$ACC ATOMIC 693 696 sums_l(nzb+1,pr_palm,tn) = sums_l(nzb+1,pr_palm,tn) + & 694 surf_lsm_h %usws(m) * rmask(j,i,sr)697 surf_lsm_h(0)%usws(m) * rmask(j,i,sr) 695 698 !$ACC ATOMIC 696 699 sums_l(nzb+2,pr_palm,tn) = sums_l(nzb+2,pr_palm,tn) + & 697 surf_lsm_h %vsws(m) * rmask(j,i,sr)700 surf_lsm_h(0)%vsws(m) * rmask(j,i,sr) 698 701 !$ACC ATOMIC 699 702 sums_l(nzb+3,pr_palm,tn) = sums_l(nzb+3,pr_palm,tn) + & 700 surf_lsm_h %ts(m) * rmask(j,i,sr)703 surf_lsm_h(0)%ts(m) * rmask(j,i,sr) 701 704 #ifndef _OPENACC 702 705 IF ( humidity ) THEN 703 706 sums_l(nzb+12,pr_palm,tn) = sums_l(nzb+12,pr_palm,tn) + & 704 surf_lsm_h %qs(m) * rmask(j,i,sr)707 surf_lsm_h(0)%qs(m) * rmask(j,i,sr) 705 708 ENDIF 706 709 IF ( passive_scalar ) THEN 707 710 sums_l(nzb+13,pr_palm,tn) = sums_l(nzb+13,pr_palm,tn) + & 708 surf_lsm_h %ss(m) * rmask(j,i,sr)711 surf_lsm_h(0)%ss(m) * rmask(j,i,sr) 709 712 ENDIF 710 713 #endif … … 713 716 !$ACC ATOMIC 714 717 sums_l(nzb+14,pr_palm,tn) = sums_l(nzb+14,pr_palm,tn) + & 715 surf_lsm_h %pt_surface(m) * rmask(j,i,sr)718 surf_lsm_h(0)%pt_surface(m) * rmask(j,i,sr) 716 719 ENDIF 717 IF ( surf_usm_h %end_index(j,i) >= surf_usm_h%start_index(j,i) ) THEN718 m = surf_usm_h %start_index(j,i)720 IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) ) THEN 721 m = surf_usm_h(0)%start_index(j,i) 719 722 !$ACC ATOMIC 720 723 sums_l(nzb,pr_palm,tn) = sums_l(nzb,pr_palm,tn) + & 721 surf_usm_h %us(m) * rmask(j,i,sr)724 surf_usm_h(0)%us(m) * rmask(j,i,sr) 722 725 !$ACC ATOMIC 723 726 sums_l(nzb+1,pr_palm,tn) = sums_l(nzb+1,pr_palm,tn) + & 724 surf_usm_h %usws(m) * rmask(j,i,sr)727 surf_usm_h(0)%usws(m) * rmask(j,i,sr) 725 728 !$ACC ATOMIC 726 729 sums_l(nzb+2,pr_palm,tn) = sums_l(nzb+2,pr_palm,tn) + & 727 surf_usm_h %vsws(m) * rmask(j,i,sr)730 surf_usm_h(0)%vsws(m) * rmask(j,i,sr) 728 731 !$ACC ATOMIC 729 732 sums_l(nzb+3,pr_palm,tn) = sums_l(nzb+3,pr_palm,tn) + & 730 surf_usm_h %ts(m) * rmask(j,i,sr)733 surf_usm_h(0)%ts(m) * rmask(j,i,sr) 731 734 #ifndef _OPENACC 732 735 IF ( humidity ) THEN 733 736 sums_l(nzb+12,pr_palm,tn) = sums_l(nzb+12,pr_palm,tn) + & 734 surf_usm_h %qs(m) * rmask(j,i,sr)737 surf_usm_h(0)%qs(m) * rmask(j,i,sr) 735 738 ENDIF 736 739 IF ( passive_scalar ) THEN 737 740 sums_l(nzb+13,pr_palm,tn) = sums_l(nzb+13,pr_palm,tn) + & 738 surf_usm_h %ss(m) * rmask(j,i,sr)741 surf_usm_h(0)%ss(m) * rmask(j,i,sr) 739 742 ENDIF 740 743 #endif … … 743 746 !$ACC ATOMIC 744 747 sums_l(nzb+14,pr_palm,tn) = sums_l(nzb+14,pr_palm,tn) + & 745 surf_usm_h %pt_surface(m) * rmask(j,i,sr)748 surf_usm_h(0)%pt_surface(m) * rmask(j,i,sr) 746 749 ENDIF 747 750 ENDDO !j-loop … … 816 819 !$ACC PRESENT(wall_flags_total_0, rmask, ddzu, rho_air_zw, hom(:,1,1:4,sr)) & 817 820 !$ACC PRESENT(heatflux_output_conversion, momentumflux_output_conversion) & 818 !$ACC PRESENT(surf_def_h(0:2), surf_lsm_h , surf_usm_h) &821 !$ACC PRESENT(surf_def_h(0:2), surf_lsm_h(0:1), surf_usm_h(0:1) & 819 822 !$ACC PRESENT(sums_l) 820 823 DO i = nxl, nxr … … 988 991 989 992 ENDIF 990 ENDDO 991 IF ( surf_lsm_h%end_index(j,i) >= surf_lsm_h%start_index(j,i) ) THEN 992 m = surf_lsm_h%start_index(j,i) 993 !$ACC ATOMIC 994 sums_l(nzb,12,tn) = sums_l(nzb,12,tn) + & 995 momentumflux_output_conversion(nzb) * & 996 surf_lsm_h%usws(m) * rmask(j,i,sr) ! w"u" 997 !$ACC ATOMIC 998 sums_l(nzb,14,tn) = sums_l(nzb,14,tn) + & 999 momentumflux_output_conversion(nzb) * & 1000 surf_lsm_h%vsws(m) * rmask(j,i,sr) ! w"v" 1001 !$ACC ATOMIC 1002 sums_l(nzb,16,tn) = sums_l(nzb,16,tn) + & 1003 heatflux_output_conversion(nzb) * & 1004 surf_lsm_h%shf(m) * rmask(j,i,sr) ! w"pt" 993 IF ( surf_lsm_h(l)%end_index(j,i) >= surf_lsm_h(l)%start_index(j,i) ) THEN 994 m = surf_lsm_h(l)%start_index(j,i) 995 !$ACC ATOMIC 996 sums_l(nzb,12,tn) = sums_l(nzb,12,tn) + & 997 momentumflux_output_conversion(nzb) * & 998 surf_lsm_h(l)%usws(m) * rmask(j,i,sr) ! w"u" 999 !$ACC ATOMIC 1000 sums_l(nzb,14,tn) = sums_l(nzb,14,tn) + & 1001 momentumflux_output_conversion(nzb) * & 1002 surf_lsm_h(l)%vsws(m) * rmask(j,i,sr) ! w"v" 1003 !$ACC ATOMIC 1004 sums_l(nzb,16,tn) = sums_l(nzb,16,tn) + & 1005 heatflux_output_conversion(nzb) * & 1006 surf_lsm_h(l)%shf(m) * rmask(j,i,sr) ! w"pt" 1005 1007 #if 0 1006 sums_l(nzb,58,tn) = sums_l(nzb,58,tn) + &1007 0.0_wp * rmask(j,i,sr) ! u"pt"1008 sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + &1009 0.0_wp * rmask(j,i,sr) ! v"pt"1008 sums_l(nzb,58,tn) = sums_l(nzb,58,tn) + & 1009 0.0_wp * rmask(j,i,sr) ! u"pt" 1010 sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + & 1011 0.0_wp * rmask(j,i,sr) ! v"pt" 1010 1012 #endif 1011 1013 #ifndef _OPENACC 1012 IF ( ocean_mode ) THEN 1013 sums_l(nzb,65,tn) = sums_l(nzb,65,tn) + & 1014 surf_lsm_h%sasws(m) * rmask(j,i,sr) ! w"sa" 1014 IF ( ocean_mode ) THEN 1015 sums_l(nzb,65,tn) = sums_l(nzb,65,tn) + & 1016 surf_lsm_h(l)%sasws(m) * rmask(j,i,sr) ! w"sa" 1017 ENDIF 1018 IF ( humidity ) THEN 1019 sums_l(nzb,48,tn) = sums_l(nzb,48,tn) + & 1020 waterflux_output_conversion(nzb) * & 1021 surf_lsm_h(l)%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1022 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1023 ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) * surf_lsm_h(l)%shf(m) + & 1024 0.61_wp * pt(nzb,j,i) * surf_lsm_h(l)%qsws(m) ) & 1025 * heatflux_output_conversion(nzb) 1026 IF ( cloud_droplets ) THEN 1027 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1028 ( 1.0_wp + 0.61_wp * q(nzb,j,i) - & 1029 ql(nzb,j,i) ) * surf_lsm_h(l)%shf(m) + & 1030 0.61_wp * pt(nzb,j,i) * surf_lsm_h(l)%qsws(m) ) & 1031 * heatflux_output_conversion(nzb) 1032 ENDIF 1033 IF ( bulk_cloud_model ) THEN 1034 ! 1035 !-- Formula does not work if ql(nzb) /= 0.0 1036 sums_l(nzb,51,tn) = sums_l(nzb,51,tn) + & 1037 waterflux_output_conversion(nzb) * & 1038 surf_lsm_h(l)%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1039 ENDIF 1040 ENDIF 1041 IF ( passive_scalar ) THEN 1042 sums_l(nzb,117,tn) = sums_l(nzb,117,tn) + & 1043 surf_lsm_h(l)%ssws(m) * rmask(j,i,sr) ! w"s" 1044 ENDIF 1045 #endif 1046 1015 1047 ENDIF 1016 IF ( humidity ) THEN 1017 sums_l(nzb,48,tn) = sums_l(nzb,48,tn) + & 1018 waterflux_output_conversion(nzb) * & 1019 surf_lsm_h%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1020 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1021 ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) * surf_lsm_h%shf(m) + & 1022 0.61_wp * pt(nzb,j,i) * surf_lsm_h%qsws(m) ) & 1023 * heatflux_output_conversion(nzb) 1024 IF ( cloud_droplets ) THEN 1025 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1026 ( 1.0_wp + 0.61_wp * q(nzb,j,i) - & 1027 ql(nzb,j,i) ) * surf_lsm_h%shf(m) + & 1028 0.61_wp * pt(nzb,j,i) * surf_lsm_h%qsws(m) ) & 1029 * heatflux_output_conversion(nzb) 1030 ENDIF 1031 IF ( bulk_cloud_model ) THEN 1032 ! 1033 !-- Formula does not work if ql(nzb) /= 0.0 1034 sums_l(nzb,51,tn) = sums_l(nzb,51,tn) + & 1035 waterflux_output_conversion(nzb) * & 1036 surf_lsm_h%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1037 ENDIF 1038 ENDIF 1039 IF ( passive_scalar ) THEN 1040 sums_l(nzb,117,tn) = sums_l(nzb,117,tn) + & 1041 surf_lsm_h%ssws(m) * rmask(j,i,sr) ! w"s" 1042 ENDIF 1043 #endif 1044 1045 ENDIF 1046 IF ( surf_usm_h%end_index(j,i) >= surf_usm_h%start_index(j,i) ) THEN 1047 m = surf_usm_h%start_index(j,i) 1048 !$ACC ATOMIC 1049 sums_l(nzb,12,tn) = sums_l(nzb,12,tn) + & 1050 momentumflux_output_conversion(nzb) * & 1051 surf_usm_h%usws(m) * rmask(j,i,sr) ! w"u" 1052 !$ACC ATOMIC 1053 sums_l(nzb,14,tn) = sums_l(nzb,14,tn) + & 1054 momentumflux_output_conversion(nzb) * & 1055 surf_usm_h%vsws(m) * rmask(j,i,sr) ! w"v" 1056 !$ACC ATOMIC 1057 sums_l(nzb,16,tn) = sums_l(nzb,16,tn) + & 1058 heatflux_output_conversion(nzb) * & 1059 surf_usm_h%shf(m) * rmask(j,i,sr) ! w"pt" 1048 IF ( surf_usm_h(l)%end_index(j,i) >= surf_usm_h(l)%start_index(j,i) ) THEN 1049 m = surf_usm_h(l)%start_index(j,i) 1050 !$ACC ATOMIC 1051 sums_l(nzb,12,tn) = sums_l(nzb,12,tn) + & 1052 momentumflux_output_conversion(nzb) * & 1053 surf_usm_h(l)%usws(m) * rmask(j,i,sr) ! w"u" 1054 !$ACC ATOMIC 1055 sums_l(nzb,14,tn) = sums_l(nzb,14,tn) + & 1056 momentumflux_output_conversion(nzb) * & 1057 surf_usm_h(l)%vsws(m) * rmask(j,i,sr) ! w"v" 1058 !$ACC ATOMIC 1059 sums_l(nzb,16,tn) = sums_l(nzb,16,tn) + & 1060 heatflux_output_conversion(nzb) * & 1061 surf_usm_h(l)%shf(m) * rmask(j,i,sr) ! w"pt" 1060 1062 #if 0 1061 sums_l(nzb,58,tn) = sums_l(nzb,58,tn) + 0.0_wp * rmask(j,i,sr) ! u"pt"1062 sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + 0.0_wp * rmask(j,i,sr) ! v"pt"1063 sums_l(nzb,58,tn) = sums_l(nzb,58,tn) + 0.0_wp * rmask(j,i,sr) ! u"pt" 1064 sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + 0.0_wp * rmask(j,i,sr) ! v"pt" 1063 1065 #endif 1064 1066 #ifndef _OPENACC 1065 IF ( ocean_mode ) THEN 1066 sums_l(nzb,65,tn) = sums_l(nzb,65,tn) + & 1067 surf_usm_h%sasws(m) * rmask(j,i,sr) ! w"sa" 1067 IF ( ocean_mode ) THEN 1068 sums_l(nzb,65,tn) = sums_l(nzb,65,tn) + & 1069 surf_usm_h(l)%sasws(m) * rmask(j,i,sr) ! w"sa" 1070 ENDIF 1071 IF ( humidity ) THEN 1072 sums_l(nzb,48,tn) = sums_l(nzb,48,tn) + & 1073 waterflux_output_conversion(nzb) * & 1074 surf_usm_h(l)%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1075 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1076 ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) * & 1077 surf_usm_h(l)%shf(m) + 0.61_wp * pt(nzb,j,i) * & 1078 surf_usm_h(l)%qsws(m) ) & 1079 * heatflux_output_conversion(nzb) 1080 IF ( cloud_droplets ) THEN 1081 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1082 ( 1.0_wp + 0.61_wp * q(nzb,j,i) - & 1083 ql(nzb,j,i) ) * surf_usm_h(l)%shf(m) + & 1084 0.61_wp * pt(nzb,j,i) * surf_usm_h(l)%qsws(m) ) & 1085 * heatflux_output_conversion(nzb) 1086 ENDIF 1087 IF ( bulk_cloud_model ) THEN 1088 ! 1089 !-- Formula does not work if ql(nzb) /= 0.0 1090 sums_l(nzb,51,tn) = sums_l(nzb,51,tn) + & 1091 waterflux_output_conversion(nzb) * & 1092 surf_usm_h(l)%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1093 ENDIF 1094 ENDIF 1095 IF ( passive_scalar ) THEN 1096 sums_l(nzb,117,tn) = sums_l(nzb,117,tn) + & 1097 surf_usm_h(l)%ssws(m) * rmask(j,i,sr) ! w"s" 1098 ENDIF 1099 #endif 1100 1068 1101 ENDIF 1069 IF ( humidity ) THEN 1070 sums_l(nzb,48,tn) = sums_l(nzb,48,tn) + & 1071 waterflux_output_conversion(nzb) * & 1072 surf_usm_h%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1073 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1074 ( 1.0_wp + 0.61_wp * q(nzb,j,i) ) * & 1075 surf_usm_h%shf(m) + 0.61_wp * pt(nzb,j,i) * & 1076 surf_usm_h%qsws(m) ) & 1077 * heatflux_output_conversion(nzb) 1078 IF ( cloud_droplets ) THEN 1079 sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + ( & 1080 ( 1.0_wp + 0.61_wp * q(nzb,j,i) - & 1081 ql(nzb,j,i) ) * surf_usm_h%shf(m) + & 1082 0.61_wp * pt(nzb,j,i) * surf_usm_h%qsws(m) ) & 1083 * heatflux_output_conversion(nzb) 1084 ENDIF 1085 IF ( bulk_cloud_model ) THEN 1086 ! 1087 !-- Formula does not work if ql(nzb) /= 0.0 1088 sums_l(nzb,51,tn) = sums_l(nzb,51,tn) + & 1089 waterflux_output_conversion(nzb) * & 1090 surf_usm_h%qsws(m) * rmask(j,i,sr) ! w"q" (w"qv") 1091 ENDIF 1092 ENDIF 1093 IF ( passive_scalar ) THEN 1094 sums_l(nzb,117,tn) = sums_l(nzb,117,tn) + & 1095 surf_usm_h%ssws(m) * rmask(j,i,sr) ! w"s" 1096 ENDIF 1097 #endif 1098 1099 ENDIF 1100 1102 ENDDO 1101 1103 ENDIF 1102 1104 … … 1107 1109 sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_def_h(0)%ol(m) * rmask(j,i,sr) ! L 1108 1110 ENDIF 1109 IF ( surf_lsm_h %end_index(j,i) >= surf_lsm_h%start_index(j,i) ) THEN1110 m = surf_lsm_h %start_index(j,i)1111 sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_lsm_h %ol(m) * rmask(j,i,sr) ! L1112 ENDIF 1113 IF ( surf_usm_h %end_index(j,i) >= surf_usm_h%start_index(j,i) ) THEN1114 m = surf_usm_h %start_index(j,i)1115 sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_usm_h %ol(m) * rmask(j,i,sr) ! L1111 IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) ) THEN 1112 m = surf_lsm_h(0)%start_index(j,i) 1113 sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_lsm_h(0)%ol(m) * rmask(j,i,sr) ! L 1114 ENDIF 1115 IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) ) THEN 1116 m = surf_usm_h(0)%start_index(j,i) 1117 sums_l(nzb,112,tn) = sums_l(nzb,112,tn) + surf_usm_h(0)%ol(m) * rmask(j,i,sr) ! L 1116 1118 ENDIF 1117 1119 ENDIF … … 1131 1133 surf_def_h(0)%rad_sw_out(m) * rmask(j,i,sr) 1132 1134 ENDIF 1133 IF ( surf_lsm_h %end_index(j,i) >= surf_lsm_h%start_index(j,i) ) THEN1134 m = surf_lsm_h %start_index(j,i)1135 IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) ) THEN 1136 m = surf_lsm_h(0)%start_index(j,i) 1135 1137 sums_l(nzb,99,tn) = sums_l(nzb,99,tn) + & 1136 surf_lsm_h %rad_net(m) * rmask(j,i,sr)1138 surf_lsm_h(0)%rad_net(m) * rmask(j,i,sr) 1137 1139 sums_l(nzb,100,tn) = sums_l(nzb,100,tn) + & 1138 surf_lsm_h %rad_lw_in(m) * rmask(j,i,sr)1140 surf_lsm_h(0)%rad_lw_in(m) * rmask(j,i,sr) 1139 1141 sums_l(nzb,101,tn) = sums_l(nzb,101,tn) + & 1140 surf_lsm_h %rad_lw_out(m) * rmask(j,i,sr)1142 surf_lsm_h(0)%rad_lw_out(m) * rmask(j,i,sr) 1141 1143 sums_l(nzb,102,tn) = sums_l(nzb,102,tn) + & 1142 surf_lsm_h %rad_sw_in(m) * rmask(j,i,sr)1144 surf_lsm_h(0)%rad_sw_in(m) * rmask(j,i,sr) 1143 1145 sums_l(nzb,103,tn) = sums_l(nzb,103,tn) + & 1144 surf_lsm_h %rad_sw_out(m) * rmask(j,i,sr)1145 ENDIF 1146 IF ( surf_usm_h %end_index(j,i) >= surf_usm_h%start_index(j,i) ) THEN1147 m = surf_usm_h %start_index(j,i)1146 surf_lsm_h(0)%rad_sw_out(m) * rmask(j,i,sr) 1147 ENDIF 1148 IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) ) THEN 1149 m = surf_usm_h(0)%start_index(j,i) 1148 1150 sums_l(nzb,99,tn) = sums_l(nzb,99,tn) + & 1149 surf_usm_h %rad_net(m) * rmask(j,i,sr)1151 surf_usm_h(0)%rad_net(m) * rmask(j,i,sr) 1150 1152 sums_l(nzb,100,tn) = sums_l(nzb,100,tn) + & 1151 surf_usm_h %rad_lw_in(m) * rmask(j,i,sr)1153 surf_usm_h(0)%rad_lw_in(m) * rmask(j,i,sr) 1152 1154 sums_l(nzb,101,tn) = sums_l(nzb,101,tn) + & 1153 surf_usm_h %rad_lw_out(m) * rmask(j,i,sr)1155 surf_usm_h(0)%rad_lw_out(m) * rmask(j,i,sr) 1154 1156 sums_l(nzb,102,tn) = sums_l(nzb,102,tn) + & 1155 surf_usm_h %rad_sw_in(m) * rmask(j,i,sr)1157 surf_usm_h(0)%rad_sw_in(m) * rmask(j,i,sr) 1156 1158 sums_l(nzb,103,tn) = sums_l(nzb,103,tn) + & 1157 surf_usm_h %rad_sw_out(m) * rmask(j,i,sr)1159 surf_usm_h(0)%rad_sw_out(m) * rmask(j,i,sr) 1158 1160 ENDIF 1159 1161 … … 1172 1174 surf_def_h(0)%rrtm_asdir(m,0) * rmask(j,i,sr) 1173 1175 ENDIF 1174 IF ( surf_lsm_h %end_index(j,i) >= surf_lsm_h%start_index(j,i) ) THEN1175 m = surf_lsm_h %start_index(j,i)1176 IF ( surf_lsm_h(0)%end_index(j,i) >= surf_lsm_h(0)%start_index(j,i) ) THEN 1177 m = surf_lsm_h(0)%start_index(j,i) 1176 1178 sums_l(nzb,108,tn) = sums_l(nzb,108,tn) + & 1177 SUM( surf_lsm_h %frac(m,:) * &1178 surf_lsm_h %rrtm_aldif(m,:) ) * rmask(j,i,sr)1179 SUM( surf_lsm_h(0)%frac(m,:) * & 1180 surf_lsm_h(0)%rrtm_aldif(m,:) ) * rmask(j,i,sr) 1179 1181 sums_l(nzb,109,tn) = sums_l(nzb,109,tn) + & 1180 SUM( surf_lsm_h %frac(m,:) * &1181 surf_lsm_h %rrtm_aldir(m,:) ) * rmask(j,i,sr)1182 SUM( surf_lsm_h(0)%frac(m,:) * & 1183 surf_lsm_h(0)%rrtm_aldir(m,:) ) * rmask(j,i,sr) 1182 1184 sums_l(nzb,110,tn) = sums_l(nzb,110,tn) + & 1183 SUM( surf_lsm_h %frac(m,:) * &1184 surf_lsm_h %rrtm_asdif(m,:) ) * rmask(j,i,sr)1185 SUM( surf_lsm_h(0)%frac(m,:) * & 1186 surf_lsm_h(0)%rrtm_asdif(m,:) ) * rmask(j,i,sr) 1185 1187 sums_l(nzb,111,tn) = sums_l(nzb,111,tn) + & 1186 SUM( surf_lsm_h %frac(m,:) * &1187 surf_lsm_h %rrtm_asdir(m,:) ) * rmask(j,i,sr)1188 SUM( surf_lsm_h(0)%frac(m,:) * & 1189 surf_lsm_h(0)%rrtm_asdir(m,:) ) * rmask(j,i,sr) 1188 1190 ENDIF 1189 IF ( surf_usm_h %end_index(j,i) >= surf_usm_h%start_index(j,i) ) THEN1190 m = surf_usm_h %start_index(j,i)1191 IF ( surf_usm_h(0)%end_index(j,i) >= surf_usm_h(0)%start_index(j,i) ) THEN 1192 m = surf_usm_h(0)%start_index(j,i) 1191 1193 sums_l(nzb,108,tn) = sums_l(nzb,108,tn) + & 1192 SUM( surf_usm_h %frac(m,:) * &1193 surf_usm_h %rrtm_aldif(m,:) ) * rmask(j,i,sr)1194 SUM( surf_usm_h(0)%frac(m,:) * & 1195 surf_usm_h(0)%rrtm_aldif(m,:) ) * rmask(j,i,sr) 1194 1196 sums_l(nzb,109,tn) = sums_l(nzb,109,tn) + & 1195 SUM( surf_usm_h %frac(m,:) * &1196 surf_usm_h %rrtm_aldir(m,:) ) * rmask(j,i,sr)1197 SUM( surf_usm_h(0)%frac(m,:) * & 1198 surf_usm_h(0)%rrtm_aldir(m,:) ) * rmask(j,i,sr) 1197 1199 sums_l(nzb,110,tn) = sums_l(nzb,110,tn) + & 1198 SUM( surf_usm_h %frac(m,:) * &1199 surf_usm_h %rrtm_asdif(m,:) ) * rmask(j,i,sr)1200 SUM( surf_usm_h(0)%frac(m,:) * & 1201 surf_usm_h(0)%rrtm_asdif(m,:) ) * rmask(j,i,sr) 1200 1202 sums_l(nzb,111,tn) = sums_l(nzb,111,tn) + & 1201 SUM( surf_usm_h %frac(m,:) * &1202 surf_usm_h %rrtm_asdir(m,:) ) * rmask(j,i,sr)1203 SUM( surf_usm_h(0)%frac(m,:) * & 1204 surf_usm_h(0)%rrtm_asdir(m,:) ) * rmask(j,i,sr) 1203 1205 ENDIF 1204 1206 … … 1405 1407 !$ tn = omp_get_thread_num() 1406 1408 !$OMP DO 1407 DO m = 1, surf_lsm_h %ns1408 i = surf_lsm_h %i(m)1409 j = surf_lsm_h %j(m)1409 DO m = 1, surf_lsm_h(0)%ns 1410 i = surf_lsm_h(0)%i(m) 1411 j = surf_lsm_h(0)%j(m) 1410 1412 1411 1413 IF ( i >= nxl .AND. i <= nxr .AND. j >= nys .AND. j <= nyn ) THEN 1412 sums_l(nzb,93,tn) = sums_l(nzb,93,tn) + surf_lsm_h %ghf(m) * rmask(j,i,sr)1413 sums_l(nzb,94,tn) = sums_l(nzb,94,tn) + surf_lsm_h %qsws_liq(m) * rmask(j,i,sr)1414 sums_l(nzb,95,tn) = sums_l(nzb,95,tn) + surf_lsm_h %qsws_soil(m) * rmask(j,i,sr)1415 sums_l(nzb,96,tn) = sums_l(nzb,96,tn) + surf_lsm_h %qsws_veg(m) * rmask(j,i,sr)1416 sums_l(nzb,97,tn) = sums_l(nzb,97,tn) + surf_lsm_h %r_a(m) * rmask(j,i,sr)1417 sums_l(nzb,98,tn) = sums_l(nzb,98,tn) + surf_lsm_h %r_s(m) * rmask(j,i,sr)1414 sums_l(nzb,93,tn) = sums_l(nzb,93,tn) + surf_lsm_h(0)%ghf(m) * rmask(j,i,sr) 1415 sums_l(nzb,94,tn) = sums_l(nzb,94,tn) + surf_lsm_h(0)%qsws_liq(m) * rmask(j,i,sr) 1416 sums_l(nzb,95,tn) = sums_l(nzb,95,tn) + surf_lsm_h(0)%qsws_soil(m) * rmask(j,i,sr) 1417 sums_l(nzb,96,tn) = sums_l(nzb,96,tn) + surf_lsm_h(0)%qsws_veg(m) * rmask(j,i,sr) 1418 sums_l(nzb,97,tn) = sums_l(nzb,97,tn) + surf_lsm_h(0)%r_a(m) * rmask(j,i,sr) 1419 sums_l(nzb,98,tn) = sums_l(nzb,98,tn) + surf_lsm_h(0)%r_s(m) * rmask(j,i,sr) 1418 1420 ENDIF 1419 1421 ENDDO … … 1424 1426 !$ tn = omp_get_thread_num() 1425 1427 !$OMP DO 1426 DO m = 1, surf_lsm_h %ns1427 1428 i = surf_lsm_h %i(m)1429 j = surf_lsm_h %j(m)1428 DO m = 1, surf_lsm_h(0)%ns 1429 1430 i = surf_lsm_h(0)%i(m) 1431 j = surf_lsm_h(0)%j(m) 1430 1432 1431 1433 IF ( i >= nxl .AND. i <= nxr .AND. j >= nys .AND. j <= nyn ) THEN 1432 1434 1433 1435 DO k = nzb_soil, nzt_soil 1434 sums_l(k,89,tn) = sums_l(k,89,tn) + t_soil_h %var_2d(k,m) * rmask(j,i,sr)1435 sums_l(k,91,tn) = sums_l(k,91,tn) + m_soil_h %var_2d(k,m) * rmask(j,i,sr)1436 sums_l(k,89,tn) = sums_l(k,89,tn) + t_soil_h(0)%var_2d(k,m) * rmask(j,i,sr) 1437 sums_l(k,91,tn) = sums_l(k,91,tn) + m_soil_h(0)%var_2d(k,m) * rmask(j,i,sr) 1436 1438 ENDDO 1437 1439 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.