Ignore:
Timestamp:
Mar 15, 2012 10:35:09 AM (10 years ago)
Author:
raasch
Message:

Changed:


Original routine advec_particles split into several new subroutines and renamed
lpm.
init_particles renamed lpm_init
user_advec_particles renamed user_lpm_advec,
particle_boundary_conds renamed lpm_boundary_conds,
set_particle_attributes renamed lpm_set_attributes,
user_init_particles renamed user_lpm_init,
user_particle_attributes renamed user_lpm_set_attributes
(Makefile, lpm_droplet_collision, lpm_droplet_condensation, init_3d_model, modules, palm, read_var_list, time_integration, write_var_list, deleted: advec_particles, init_particles, particle_boundary_conds, set_particle_attributes, user_advec_particles, user_init_particles, user_particle_attributes, new: lpm, lpm_advec, lpm_boundary_conds, lpm_calc_liquid_water_content, lpm_data_output_particles, lpm_droplet_collision, lpm_drollet_condensation, lpm_exchange_horiz, lpm_extend_particle_array, lpm_extend_tails, lpm_extend_tail_array, lpm_init, lpm_init_sgs_tke, lpm_pack_arrays, lpm_read_restart_file, lpm_release_set, lpm_set_attributes, lpm_sort_arrays, lpm_write_exchange_statistics, lpm_write_restart_file, user_lpm_advec, user_lpm_init, user_lpm_set_attributes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/lpm_collision_kernels.f90

    r836 r849  
    44! Current revisions:
    55! -----------------
    6 !
     6! routine collision_efficiency_rogers added (moved from former advec_particles
     7! to here)
    78!
    89! Former revisions:
     
    5960    PRIVATE
    6061
    61     PUBLIC  ckernel, init_kernels,  rclass_lbound, rclass_ubound, &
    62             recalculate_kernel           
     62    PUBLIC  ckernel, collision_efficiency_rogers, init_kernels, &
     63            rclass_lbound, rclass_ubound, recalculate_kernel           
    6364
    6465    REAL ::  epsilon, eps2, rclass_lbound, rclass_ubound, urms, urms2
     
    7273!
    7374!-- Public interfaces
     75    INTERFACE collision_efficiency_rogers
     76       MODULE PROCEDURE collision_efficiency_rogers
     77    END INTERFACE collision_efficiency_rogers
     78
    7479    INTERFACE init_kernels
    7580       MODULE PROCEDURE init_kernels
     
    851856    END SUBROUTINE turb_enhance_eff
    852857
     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
    853956 END MODULE lpm_collision_kernels_mod
Note: See TracChangeset for help on using the changeset viewer.