Changeset 4671 for palm/trunk/SOURCE/sum_up_3d_data.f90
- Timestamp:
- Sep 9, 2020 8:27:58 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/sum_up_3d_data.f90
r4591 r4671 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of downward facing USM and LSM surfaces 28 ! 29 ! 4591 2020-07-06 15:56:08Z raasch 27 30 ! File re-formatted to follow the PALM coding standard 28 31 ! … … 441 444 ! 442 445 !-- Check whether grid point is a natural- or urban-type surface. 443 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)444 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)446 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 447 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 445 448 ! 446 449 !-- In order to avoid double-counting of surface properties, always assume that … … 449 452 !-- would be visible from above 450 453 IF ( match_lsm .AND. .NOT. match_usm ) THEN 451 m = surf_lsm_h %end_index(j,i)452 ghf_av(j,i) = ghf_av(j,i) + surf_lsm_h %ghf(m)453 ELSEIF ( match_usm ) THEN 454 m = surf_usm_h %end_index(j,i)455 ghf_av(j,i) = ghf_av(j,i) + surf_usm_h %frac(m,ind_veg_wall) * &456 surf_usm_h %wghf_eb(m) + &457 surf_usm_h %frac(m,ind_pav_green) * &458 surf_usm_h %wghf_eb_green(m) + &459 surf_usm_h %frac(m,ind_wat_win) * &460 surf_usm_h %wghf_eb_window(m)454 m = surf_lsm_h(0)%end_index(j,i) 455 ghf_av(j,i) = ghf_av(j,i) + surf_lsm_h(0)%ghf(m) 456 ELSEIF ( match_usm ) THEN 457 m = surf_usm_h(0)%end_index(j,i) 458 ghf_av(j,i) = ghf_av(j,i) + surf_usm_h(0)%frac(m,ind_veg_wall) * & 459 surf_usm_h(0)%wghf_eb(m) + & 460 surf_usm_h(0)%frac(m,ind_pav_green) * & 461 surf_usm_h(0)%wghf_eb_green(m) + & 462 surf_usm_h(0)%frac(m,ind_wat_win) * & 463 surf_usm_h(0)%wghf_eb_window(m) 461 464 ENDIF 462 465 ENDDO … … 501 504 DO j = nys, nyn 502 505 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 503 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)504 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)506 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 507 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 505 508 506 509 IF ( match_def ) THEN … … 508 511 ol_av(j,i) = ol_av(j,i) + surf_def_h(0)%ol(m) 509 512 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 510 m = surf_lsm_h %end_index(j,i)511 ol_av(j,i) = ol_av(j,i) + surf_lsm_h %ol(m)512 ELSEIF ( match_usm ) THEN 513 m = surf_usm_h %end_index(j,i)514 ol_av(j,i) = ol_av(j,i) + surf_usm_h %ol(m)513 m = surf_lsm_h(0)%end_index(j,i) 514 ol_av(j,i) = ol_av(j,i) + surf_lsm_h(0)%ol(m) 515 ELSEIF ( match_usm ) THEN 516 m = surf_usm_h(0)%end_index(j,i) 517 ol_av(j,i) = ol_av(j,i) + surf_usm_h(0)%ol(m) 515 518 ENDIF 516 519 ENDDO … … 659 662 DO j = nys, nyn 660 663 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 661 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)662 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)664 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 665 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 663 666 664 667 IF ( match_def ) THEN … … 666 669 qsurf_av(j,i) = qsurf_av(j,i) + surf_def_h(0)%q_surface(m) 667 670 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 668 m = surf_lsm_h %end_index(j,i)669 qsurf_av(j,i) = qsurf_av(j,i) + surf_lsm_h %q_surface(m)670 ELSEIF ( match_usm ) THEN 671 m = surf_usm_h %end_index(j,i)672 qsurf_av(j,i) = qsurf_av(j,i) + surf_usm_h %q_surface(m)671 m = surf_lsm_h(0)%end_index(j,i) 672 qsurf_av(j,i) = qsurf_av(j,i) + surf_lsm_h(0)%q_surface(m) 673 ELSEIF ( match_usm ) THEN 674 m = surf_usm_h(0)%end_index(j,i) 675 qsurf_av(j,i) = qsurf_av(j,i) + surf_usm_h(0)%q_surface(m) 673 676 ENDIF 674 677 ENDDO … … 685 688 DO j = nys, nyn 686 689 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 687 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)688 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)690 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 691 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 689 692 690 693 IF ( match_def ) THEN … … 693 696 waterflux_output_conversion(nzb) 694 697 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 695 m = surf_lsm_h %end_index(j,i)696 qsws_av(j,i) = qsws_av(j,i) + surf_lsm_h %qsws(m) * l_v698 m = surf_lsm_h(0)%end_index(j,i) 699 qsws_av(j,i) = qsws_av(j,i) + surf_lsm_h(0)%qsws(m) * l_v 697 700 ELSEIF ( match_usm .AND. .NOT. match_lsm ) THEN 698 m = surf_usm_h %end_index(j,i)699 qsws_av(j,i) = qsws_av(j,i) + surf_usm_h %qsws(m) * l_v701 m = surf_usm_h(0)%end_index(j,i) 702 qsws_av(j,i) = qsws_av(j,i) + surf_usm_h(0)%qsws(m) * l_v 700 703 ENDIF 701 704 ENDDO … … 718 721 DO i = nxl, nxr 719 722 DO j = nys, nyn 720 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)721 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)723 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 724 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 722 725 723 726 IF ( match_lsm .AND. .NOT. match_usm ) THEN 724 m = surf_lsm_h %end_index(j,i)725 r_a_av(j,i) = r_a_av(j,i) + surf_lsm_h %r_a(m)726 ELSEIF ( match_usm ) THEN 727 m = surf_usm_h %end_index(j,i)728 r_a_av(j,i) = r_a_av(j,i) + surf_usm_h %frac(m,ind_veg_wall) * &729 surf_usm_h %r_a(m) + &730 surf_usm_h %frac(m,ind_pav_green) * &731 surf_usm_h %r_a_green(m) + &732 surf_usm_h %frac(m,ind_wat_win) * &733 surf_usm_h %r_a_window(m)727 m = surf_lsm_h(0)%end_index(j,i) 728 r_a_av(j,i) = r_a_av(j,i) + surf_lsm_h(0)%r_a(m) 729 ELSEIF ( match_usm ) THEN 730 m = surf_usm_h(0)%end_index(j,i) 731 r_a_av(j,i) = r_a_av(j,i) + surf_usm_h(0)%frac(m,ind_veg_wall) * & 732 surf_usm_h(0)%r_a(m) + & 733 surf_usm_h(0)%frac(m,ind_pav_green) * & 734 surf_usm_h(0)%r_a_green(m) + & 735 surf_usm_h(0)%frac(m,ind_wat_win) * & 736 surf_usm_h(0)%r_a_window(m) 734 737 ENDIF 735 738 ENDDO … … 756 759 DO j = nys, nyn 757 760 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 758 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)759 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)761 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 762 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 760 763 761 764 IF ( match_def ) THEN … … 764 767 heatflux_output_conversion(nzb) 765 768 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 766 m = surf_lsm_h %end_index(j,i)767 shf_av(j,i) = shf_av(j,i) + surf_lsm_h %shf(m) * c_p768 ELSEIF ( match_usm ) THEN 769 m = surf_usm_h %end_index(j,i)770 shf_av(j,i) = shf_av(j,i) + surf_usm_h %shf(m) * c_p769 m = surf_lsm_h(0)%end_index(j,i) 770 shf_av(j,i) = shf_av(j,i) + surf_lsm_h(0)%shf(m) * c_p 771 ELSEIF ( match_usm ) THEN 772 m = surf_usm_h(0)%end_index(j,i) 773 shf_av(j,i) = shf_av(j,i) + surf_usm_h(0)%shf(m) * c_p 771 774 ENDIF 772 775 ENDDO … … 789 792 DO j = nys, nyn 790 793 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 791 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)792 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)794 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 795 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 793 796 794 797 IF ( match_def ) THEN … … 796 799 ssws_av(j,i) = ssws_av(j,i) + surf_def_h(0)%ssws(m) 797 800 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 798 m = surf_lsm_h %end_index(j,i)799 ssws_av(j,i) = ssws_av(j,i) + surf_lsm_h %ssws(m)800 ELSEIF ( match_usm ) THEN 801 m = surf_usm_h %end_index(j,i)802 ssws_av(j,i) = ssws_av(j,i) + surf_usm_h %ssws(m)801 m = surf_lsm_h(0)%end_index(j,i) 802 ssws_av(j,i) = ssws_av(j,i) + surf_lsm_h(0)%ssws(m) 803 ELSEIF ( match_usm ) THEN 804 m = surf_usm_h(0)%end_index(j,i) 805 ssws_av(j,i) = ssws_av(j,i) + surf_usm_h(0)%ssws(m) 803 806 ENDIF 804 807 ENDDO … … 811 814 DO j = nys, nyn 812 815 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 813 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)814 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)816 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 817 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 815 818 816 819 IF ( match_def ) THEN … … 818 821 ts_av(j,i) = ts_av(j,i) + surf_def_h(0)%ts(m) 819 822 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 820 m = surf_lsm_h %end_index(j,i)821 ts_av(j,i) = ts_av(j,i) + surf_lsm_h %ts(m)822 ELSEIF ( match_usm ) THEN 823 m = surf_usm_h %end_index(j,i)824 ts_av(j,i) = ts_av(j,i) + surf_usm_h %ts(m)823 m = surf_lsm_h(0)%end_index(j,i) 824 ts_av(j,i) = ts_av(j,i) + surf_lsm_h(0)%ts(m) 825 ELSEIF ( match_usm ) THEN 826 m = surf_usm_h(0)%end_index(j,i) 827 ts_av(j,i) = ts_av(j,i) + surf_usm_h(0)%ts(m) 825 828 ENDIF 826 829 ENDDO … … 833 836 DO j = nys, nyn 834 837 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 835 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)836 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)838 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 839 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 837 840 838 841 IF ( match_def ) THEN … … 840 843 tsurf_av(j,i) = tsurf_av(j,i) + surf_def_h(0)%pt_surface(m) 841 844 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 842 m = surf_lsm_h %end_index(j,i)843 tsurf_av(j,i) = tsurf_av(j,i) + surf_lsm_h %pt_surface(m)844 ELSEIF ( match_usm ) THEN 845 m = surf_usm_h %end_index(j,i)846 tsurf_av(j,i) = tsurf_av(j,i) + surf_usm_h %pt_surface(m)845 m = surf_lsm_h(0)%end_index(j,i) 846 tsurf_av(j,i) = tsurf_av(j,i) + surf_lsm_h(0)%pt_surface(m) 847 ELSEIF ( match_usm ) THEN 848 m = surf_usm_h(0)%end_index(j,i) 849 tsurf_av(j,i) = tsurf_av(j,i) + surf_usm_h(0)%pt_surface(m) 847 850 ENDIF 848 851 ENDDO … … 866 869 DO j = nys, nyn 867 870 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 868 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)869 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)871 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 872 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 870 873 871 874 IF ( match_def ) THEN … … 873 876 us_av(j,i) = us_av(j,i) + surf_def_h(0)%us(m) 874 877 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 875 m = surf_lsm_h %end_index(j,i)876 us_av(j,i) = us_av(j,i) + surf_lsm_h %us(m)877 ELSEIF ( match_usm ) THEN 878 m = surf_usm_h %end_index(j,i)879 us_av(j,i) = us_av(j,i) + surf_usm_h %us(m)878 m = surf_lsm_h(0)%end_index(j,i) 879 us_av(j,i) = us_av(j,i) + surf_lsm_h(0)%us(m) 880 ELSEIF ( match_usm ) THEN 881 m = surf_usm_h(0)%end_index(j,i) 882 us_av(j,i) = us_av(j,i) + surf_usm_h(0)%us(m) 880 883 ENDIF 881 884 ENDDO … … 921 924 DO j = nys, nyn 922 925 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 923 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)924 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)926 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 927 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 925 928 926 929 IF ( match_def ) THEN … … 928 931 z0_av(j,i) = z0_av(j,i) + surf_def_h(0)%z0(m) 929 932 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 930 m = surf_lsm_h %end_index(j,i)931 z0_av(j,i) = z0_av(j,i) + surf_lsm_h %z0(m)932 ELSEIF ( match_usm ) THEN 933 m = surf_usm_h %end_index(j,i)934 z0_av(j,i) = z0_av(j,i) + surf_usm_h %z0(m)933 m = surf_lsm_h(0)%end_index(j,i) 934 z0_av(j,i) = z0_av(j,i) + surf_lsm_h(0)%z0(m) 935 ELSEIF ( match_usm ) THEN 936 m = surf_usm_h(0)%end_index(j,i) 937 z0_av(j,i) = z0_av(j,i) + surf_usm_h(0)%z0(m) 935 938 ENDIF 936 939 ENDDO … … 943 946 DO j = nys, nyn 944 947 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 945 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)946 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)948 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 949 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 947 950 948 951 IF ( match_def ) THEN … … 950 953 z0h_av(j,i) = z0h_av(j,i) + surf_def_h(0)%z0h(m) 951 954 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 952 m = surf_lsm_h %end_index(j,i)953 z0h_av(j,i) = z0h_av(j,i) + surf_lsm_h %z0h(m)954 ELSEIF ( match_usm ) THEN 955 m = surf_usm_h %end_index(j,i)956 z0h_av(j,i) = z0h_av(j,i) + surf_usm_h %z0h(m)955 m = surf_lsm_h(0)%end_index(j,i) 956 z0h_av(j,i) = z0h_av(j,i) + surf_lsm_h(0)%z0h(m) 957 ELSEIF ( match_usm ) THEN 958 m = surf_usm_h(0)%end_index(j,i) 959 z0h_av(j,i) = z0h_av(j,i) + surf_usm_h(0)%z0h(m) 957 960 ENDIF 958 961 ENDDO … … 965 968 DO j = nys, nyn 966 969 match_def = surf_def_h(0)%start_index(j,i) <= surf_def_h(0)%end_index(j,i) 967 match_lsm = surf_lsm_h %start_index(j,i) <= surf_lsm_h%end_index(j,i)968 match_usm = surf_usm_h %start_index(j,i) <= surf_usm_h%end_index(j,i)970 match_lsm = surf_lsm_h(0)%start_index(j,i) <= surf_lsm_h(0)%end_index(j,i) 971 match_usm = surf_usm_h(0)%start_index(j,i) <= surf_usm_h(0)%end_index(j,i) 969 972 970 973 IF ( match_def ) THEN … … 972 975 z0q_av(j,i) = z0q_av(j,i) + surf_def_h(0)%z0q(m) 973 976 ELSEIF ( match_lsm .AND. .NOT. match_usm ) THEN 974 m = surf_lsm_h %end_index(j,i)975 z0q_av(j,i) = z0q_av(j,i) + surf_lsm_h %z0q(m)976 ELSEIF ( match_usm ) THEN 977 m = surf_usm_h %end_index(j,i)978 z0q_av(j,i) = z0q_av(j,i) + surf_usm_h %z0q(m)977 m = surf_lsm_h(0)%end_index(j,i) 978 z0q_av(j,i) = z0q_av(j,i) + surf_lsm_h(0)%z0q(m) 979 ELSEIF ( match_usm ) THEN 980 m = surf_usm_h(0)%end_index(j,i) 981 z0q_av(j,i) = z0q_av(j,i) + surf_usm_h(0)%z0q(m) 979 982 ENDIF 980 983 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.