Changeset 849 for palm/trunk/SOURCE/lpm_collision_kernels.f90
- Timestamp:
- Mar 15, 2012 10:35:09 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/lpm_collision_kernels.f90
r836 r849 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! routine collision_efficiency_rogers added (moved from former advec_particles 7 ! to here) 7 8 ! 8 9 ! Former revisions: … … 59 60 PRIVATE 60 61 61 PUBLIC ckernel, init_kernels, rclass_lbound, rclass_ubound, &62 r ecalculate_kernel62 PUBLIC ckernel, collision_efficiency_rogers, init_kernels, & 63 rclass_lbound, rclass_ubound, recalculate_kernel 63 64 64 65 REAL :: epsilon, eps2, rclass_lbound, rclass_ubound, urms, urms2 … … 72 73 ! 73 74 !-- Public interfaces 75 INTERFACE collision_efficiency_rogers 76 MODULE PROCEDURE collision_efficiency_rogers 77 END INTERFACE collision_efficiency_rogers 78 74 79 INTERFACE init_kernels 75 80 MODULE PROCEDURE init_kernels … … 851 856 END SUBROUTINE turb_enhance_eff 852 857 858 859 860 SUBROUTINE collision_efficiency_rogers( mean_r, r, e) 861 !------------------------------------------------------------------------------! 862 ! Collision efficiencies from table 8.2 in Rogers and Yau (1989, 3rd edition). 863 ! Values are calculated from table by bilinear interpolation. 864 !------------------------------------------------------------------------------! 865 866 IMPLICIT NONE 867 868 INTEGER :: i, j, k 869 870 LOGICAL, SAVE :: first = .TRUE. 871 872 REAL :: aa, bb, cc, dd, dx, dy, e, gg, mean_r, mean_rm, r, & 873 rm, x, y 874 875 REAL, DIMENSION(1:9), SAVE :: collected_r = 0.0 876 REAL, DIMENSION(1:19), SAVE :: collector_r = 0.0 877 REAL, DIMENSION(1:9,1:19), SAVE :: ef = 0.0 878 879 mean_rm = mean_r * 1.0E06 880 rm = r * 1.0E06 881 882 IF ( first ) THEN 883 884 collected_r = (/ 2.0, 3.0, 4.0, 6.0, 8.0, 10.0, 15.0, 20.0, 25.0 /) 885 collector_r = (/ 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, & 886 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 1000.0, & 887 1400.0, 1800.0, 2400.0, 3000.0 /) 888 889 ef(:,1) = (/0.017, 0.027, 0.037, 0.052, 0.052, 0.052, 0.052, 0.0, & 890 0.0 /) 891 ef(:,2) = (/0.001, 0.016, 0.027, 0.060, 0.12, 0.17, 0.17, 0.17, 0.0 /) 892 ef(:,3) = (/0.001, 0.001, 0.02, 0.13, 0.28, 0.37, 0.54, 0.55, 0.47/) 893 ef(:,4) = (/0.001, 0.001, 0.02, 0.23, 0.4, 0.55, 0.7, 0.75, 0.75/) 894 ef(:,5) = (/0.01, 0.01, 0.03, 0.3, 0.4, 0.58, 0.73, 0.75, 0.79/) 895 ef(:,6) = (/0.01, 0.01, 0.13, 0.38, 0.57, 0.68, 0.80, 0.86, 0.91/) 896 ef(:,7) = (/0.01, 0.085, 0.23, 0.52, 0.68, 0.76, 0.86, 0.92, 0.95/) 897 ef(:,8) = (/0.01, 0.14, 0.32, 0.60, 0.73, 0.81, 0.90, 0.94, 0.96/) 898 ef(:,9) = (/0.025, 0.25, 0.43, 0.66, 0.78, 0.83, 0.92, 0.95, 0.96/) 899 ef(:,10)= (/0.039, 0.3, 0.46, 0.69, 0.81, 0.87, 0.93, 0.95, 0.96/) 900 ef(:,11)= (/0.095, 0.33, 0.51, 0.72, 0.82, 0.87, 0.93, 0.96, 0.97/) 901 ef(:,12)= (/0.098, 0.36, 0.51, 0.73, 0.83, 0.88, 0.93, 0.96, 0.97/) 902 ef(:,13)= (/0.1, 0.36, 0.52, 0.74, 0.83, 0.88, 0.93, 0.96, 0.97/) 903 ef(:,14)= (/0.17, 0.4, 0.54, 0.72, 0.83, 0.88, 0.94, 0.98, 1.0 /) 904 ef(:,15)= (/0.15, 0.37, 0.52, 0.74, 0.82, 0.88, 0.94, 0.98, 1.0 /) 905 ef(:,16)= (/0.11, 0.34, 0.49, 0.71, 0.83, 0.88, 0.94, 0.95, 1.0 /) 906 ef(:,17)= (/0.08, 0.29, 0.45, 0.68, 0.8, 0.86, 0.96, 0.94, 1.0 /) 907 ef(:,18)= (/0.04, 0.22, 0.39, 0.62, 0.75, 0.83, 0.92, 0.96, 1.0 /) 908 ef(:,19)= (/0.02, 0.16, 0.33, 0.55, 0.71, 0.81, 0.90, 0.94, 1.0 /) 909 910 ENDIF 911 912 DO k = 1, 8 913 IF ( collected_r(k) <= mean_rm ) i = k 914 ENDDO 915 916 DO k = 1, 18 917 IF ( collector_r(k) <= rm ) j = k 918 ENDDO 919 920 IF ( rm < 10.0 ) THEN 921 e = 0.0 922 ELSEIF ( mean_rm < 2.0 ) THEN 923 e = 0.001 924 ELSEIF ( mean_rm >= 25.0 ) THEN 925 IF( j <= 2 ) e = 0.0 926 IF( j == 3 ) e = 0.47 927 IF( j == 4 ) e = 0.8 928 IF( j == 5 ) e = 0.9 929 IF( j >=6 ) e = 1.0 930 ELSEIF ( rm >= 3000.0 ) THEN 931 IF( i == 1 ) e = 0.02 932 IF( i == 2 ) e = 0.16 933 IF( i == 3 ) e = 0.33 934 IF( i == 4 ) e = 0.55 935 IF( i == 5 ) e = 0.71 936 IF( i == 6 ) e = 0.81 937 IF( i == 7 ) e = 0.90 938 IF( i >= 8 ) e = 0.94 939 ELSE 940 x = mean_rm - collected_r(i) 941 y = rm - collector_r(j) 942 dx = collected_r(i+1) - collected_r(i) 943 dy = collector_r(j+1) - collector_r(j) 944 aa = x**2 + y**2 945 bb = ( dx - x )**2 + y**2 946 cc = x**2 + ( dy - y )**2 947 dd = ( dx - x )**2 + ( dy - y )**2 948 gg = aa + bb + cc + dd 949 950 e = ( (gg-aa)*ef(i,j) + (gg-bb)*ef(i+1,j) + (gg-cc)*ef(i,j+1) + & 951 (gg-dd)*ef(i+1,j+1) ) / (3.0*gg) 952 ENDIF 953 954 END SUBROUTINE collision_efficiency_rogers 955 853 956 END MODULE lpm_collision_kernels_mod
Note: See TracChangeset
for help on using the changeset viewer.